diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 64a36fb4c17b..70f333da19f9 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -350,6 +350,10 @@ This prevents nesting levels from getting deeper then they need to be. - [tgui/README.md](../tgui/README.md) - [tgui/tutorial-and-examples.md](../tgui/docs/tutorial-and-examples.md) +### Don't create code that hangs references + +This is part of the larger issue of hard deletes, read this file for more info: [Guide to Harddels](HARDDEL_GUIDE.md)) + ### Other Notes - Code should be modular where possible; if you are working on a new addition, then strongly consider putting it in its own file unless it makes sense to put it with similar ones (i.e. a new tool would go in the "tools.dm" file) diff --git a/.github/HARDDEL_GUIDE.md b/.github/HARDDEL_GUIDE.md new file mode 100644 index 000000000000..4790150ea0d2 --- /dev/null +++ b/.github/HARDDEL_GUIDE.md @@ -0,0 +1,265 @@ +# Hard Deletes +1. [What is hard deletion](#What-is-hard-deletion) +2. [Causes of hard deletes](#causes-of-hard-deletes) +3. [Detecting hard deletes](#detecting-hard-deletes) +4. [Techniques for fixing hard deletes](#techniques-for-fixing-hard-deletes) +5. [Help my code is erroring how fix](#help-my-code-is-erroring-how-fix) + +## What is Hard Deletion +Hard deletion is a very expensive operation that basically clears all references to some "thing" from memory. Objects that undergo this process are referred to as hard deletes, or simply harddels + +What follows is a discussion of the theory behind this, why we would ever do it, and the what we do to avoid doing it as often as possible + +I'm gonna be using words like references and garbage collection, but don't worry, it's not complex, just a bit hard to pierce + +### Why do we need to Hard Delete? + +Ok so let's say you're some guy called Jerry, and you're writing a programming language + +You want your coders to be able to pass around objects without doing a full copy. So you'll store the pack of data somewhere in memory + +```dm +/someobject + var/id = 42 + var/name = "some shit" +``` + +Then you want them to be able to pass that object into say a proc, without doing a full copy. So you let them pass in the object's location in memory instead +This is called passing something by reference + +```dm +someshit(someobject) //This isn't making a copy of someobject, it's passing in a reference to it +``` + +This of course means they can store that location in memory in another object's vars, or in a list, or whatever + +```dm +/datum + var/reference + +/proc/someshit(mem_location) + var/datum/some_obj = new() + some_obj.reference = mem_location +``` + +But what happens when you get rid of the object we're passing around references to? If we just cleared it out from memory, everything that holds a reference to it would suddenly be pointing to nowhere, or worse, something totally different! + +So then, you've gotta do something to clean up these references when you want to delete an object + +We could hold a list of references to everything that references us, but god, that'd get really expensive wouldn't it + +Why not keep count of how many times we're referenced then? If an object's ref count is ever 0, nothing whatsoever cares about it, so we can freely get rid of it + +But if something's holding onto a reference to us, we're not gonna have any idea where or what it is + +So I guess you should scan all of memory for that reference? + +```dm +del(someobject) //We now need to scan memory until we find the thing holding a ref to us, and clear it +``` + +This pattern is about how BYOND handles this problem of hanging references, or Garbage Collection + +It's not a broken system, but as you can imagine scanning all of memory gets expensive fast + +What can we do to help that? + +### How we can avoid hard deletes + +If hard deletion is so slow, we're gonna need to clean up all our references ourselves + +In our codebase we do this with `/datum/proc/Destroy()`, a proc called by `qdel()`, whose purpose I will explain later + +This procs only job is cleaning up references to the object it's called on. Nothing more, nothing else. Don't let me catch you giving it side effects + +There's a long long list of things this does, since we use it a TON. So I can't really give you a short description. It will always move the object to nullspace though + +## Causes Of Hard Deletes + +Now that you know the theory, let's go over what can actually cause hard deletes. Some of this is obvious, some of it's much less so. + +The BYOND reference has a list [Here](https://secure.byond.com/docs/ref/#/DM/garbage), but it's not a complete one + +* Stored in a var +* An item in a list, or associated with a list item +* Has a tag +* Is on the map (always true for turfs) +* Inside another atom's contents +* Inside an atom's vis_contents +* A temporary value in a still-running proc +* Is a mob with a key +* Is an image object attached to an atom + +Let's briefly go over the more painful ones yeah? + +### Sleeping procs + +Any proc that calls `sleep()`, `spawn()`, or anything that creates a seperate "thread" (not technically a thread, but it's the same in these terms. Not gonna cause any race conditions tho) will hang references to any var inside it. This includes the usr it started from, the src it was called on, and any vars created as a part of processing + +### Static vars + +`/static` and `/global` vars count for this too, they'll hang references just as well as anything. Be wary of this, these suckers can be a pain to solve + +### Range() and View() like procs + +Some internal BYOND procs will hold references to objects passed into them for a time after the proc is finished doing work, because they cache the returned info to make some code faster. You should never run into this issue, since we wait for what should be long enough to avoid this issue as a part of garbage collection + +This is what `qdel()` does by the by, it literally just means queue deletion. A reference to the object gets put into a queue, and if it still exists after 5 minutes or so, we hard delete it + +### Walk() procs + +Calling `walk()` on something will put it in an internal queue, which it'll remain in until `walk(thing, 0)` is called on it, which removes it from the queue + +This sort is very cheap to harddel, since BYOND prioritizes checking this queue first when it's clearing refs, but it should be avoided since it causes false positives + +You can read more about how BYOND prioritizes these things [Here](https://www.patreon.com/posts/diving-for-35855766) + +## Detecting Hard Deletes + +For very simple hard deletes, simple inspection should be enough to find them. Look at what the object does during `Initialize()`, and see if it's doing anything it doesn't undo later. +If that fails, search the object's typepath, and look and see if anything is holding a reference to it without regard for the object deleting + +BYOND currently doesn't have the capability to give us information about where a hard delete is. Fortunately we can search for most all of then ourselves. +The procs to perform this search are hidden behind compile time defines, since they'd be way too risky to expose to admin button pressing + +If you're having issues solving a harddel and want to perform this check yourself, go to `_compile_options.dm` and uncomment `TESTING`, `REFERENCE_TRACKING`, and `GC_FAILURE_HARD_LOOKUP` + +You can read more about what each of these do in that file, but the long and short of it is if something would hard delete our code will search for the reference (This will look like your game crashing, just hold out) and print information about anything it finds to the runtime log, which you can find inside the round folder inside `/data/logs/year/month/day` + +It'll tell you what object is holding the ref if it's in an object, or what pattern of list transversal was required to find the ref if it's hiding in a list of some sort + +## Techniques For Fixing Hard Deletes + +Once you've found the issue, it becomes a matter of making sure the ref is cleared as a part of Destroy(). I'm gonna walk you through a few patterns and discuss how you might go about fixing them + +### Our Tools + +First and simplest we have `Destroy()`. Use this to clean up after yourself for simple cases + +```dm +/someobject/Initialize() + . = ..() + GLOB.somethings += src //We add ourselves to some global list + +/someobject/Destroy() + GLOB.somethings -= src //So when we Destroy() clean yourself from the list + return ..() +``` + +Next, and slightly more complex, pairs of objects that reference each other + +This is helpful when for cases where both objects "own" each other + +```dm +/someobject + var/someotherobject/buddy + +/someotherobject + var/someobject/friend + +/someobject/Initialize() + if(!buddy) + buddy = new() + buddy.friend = src + +/someotherobject/Initialize() + if(!friend) + friend = new() + friend.buddy = src + +/someobject/Destroy() + if(buddy) + buddy.friend = null //Make sure to clear their ref to you + buddy = null //We clear our ref to them to make sure nothing goes wrong + +/someotherobject/Destroy() + if(friend) + friend.buddy = null //Make sure to clear their ref to you + friend = null //We clear our ref to them to make sure nothing goes wrong +``` + +Something similar can be accomplished with `QDELETED()`, a define that checks to see if something has started being `Destroy()`'d yet, and `QDEL_NULL()`, a define that `qdel()`'s a var and then sets it to null + +Now let's discuss something a bit more complex, weakrefs + +You'll need a bit of context, so let's do that now + +BYOND has an internal bit of behavior that looks like this + +`var/string = "\ref[someobject]"` + +This essentially gets that object's position in memory directly. Unlike normal references, this doesn't count for hard deletes. You can retrieve the object in question by using `locate()` + +`var/someobject/someobj = locate(string)` + +This has some flaws however, since the bit of memory we're pointing to might change, which would cause issues. Fortunately we've developed a datum to handle worrying about this for you, `/datum/weakref` + +You can create one using the `WEAKREF()` proc, and use weakref.resolve() to retrieve the actual object + +This should be used for things that your object doesn't "own", but still cares about + +For instance, a paper bin would own the paper inside it, but the paper inside it would just hold a weakref to the bin + +There's no need to clean these up, just make sure you account for it being null, since it'll return that if the object doesn't exist or has been queued for deletion + +```dm +/someobject + var/datum/weakref/our_coin + +/someobject/proc/set_coin(/obj/item/coin/new_coin) + our_coin = WEAKREF(new_coin) + +/someobject/proc/get_value() + if(!our_coin) + return 0 + + var/obj/item/coin/potential_coin = our_coin.resolve() + if(!potential_coin) + our_coin = null //Remember to clear the weakref if we get nothing + return 0 + return potential_coin.value +``` + +Now, for the worst case scenario + +Let's say you've got a var that's used too often to be weakref'd without making the code too expensive + +You can't hold a paired reference to it because it's not like it would ever care about you outside of just clearing the ref + +So then, we want to temporarily remember to clear a reference when it's deleted + +This is where I might lose you, but we're gonna use signals + +`qdel()`, the proc that sets off this whole deletion business, sends a signal called `COMSIG_PARENT_QDELETING` + +We can listen for that signal, and if we hear it clear whatever reference we may have + +Here's an example + +```dm +/somemob + var/mob/target + +/somemob/proc/set_target(new_target) + if(target) + UnregisterSignal(target, COMSIG_PARENT_QDELETING) //We need to make sure any old signals are cleared + target = new_target + if(target) + RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/clear_target) //Call clear_target if target is ever qdel()'d + +/somemob/proc/clear_target(datum/source) + SIGNAL_HANDLER + set_target(null) +``` + +This really should be your last resort, since signals have some limitations. If some subtype of somemob also registered for parent_qdeleting on the same target you'd get a runtime, since signals don't support it + +But if you can't do anything else for reasons of conversion ease, or hot code, this will work + +## Help My Code Is Erroring How Fix + +First, do a quick check. + +Are you doing anything to the object in `Initialize()` that you don't undo in `Destroy()`? I don't mean like, setting its name, but are you adding it to any lists, stuff like that + +If this fails, you're just gonna have to read over this doc. You can skip the theory if you'd like, but it's all pretty important for having an understanding of this problem diff --git a/.github/TICK_ORDER.md b/.github/TICK_ORDER.md new file mode 100644 index 000000000000..5c27617db4ce --- /dev/null +++ b/.github/TICK_ORDER.md @@ -0,0 +1,21 @@ +The byond tick proceeds as follows: +1. procs sleeping via walk() are resumed (i dont know why these are first) + +2. normal sleeping procs are resumed, in the order they went to sleep in the first place, this is where the MC wakes up and processes subsystems. a consequence of this is that the MC almost never resumes before other sleeping procs, because it only goes to sleep for 1 tick 99% of the time, and 99% of procs either go to sleep for less time than the MC (which guarantees that they entered the sleep queue earlier when its time to wake up) and/or were called synchronously from the MC's execution, almost all of the time the MC is the last sleeping proc to resume in any given tick. This is good because it means the MC can account for the cost of previous resuming procs in the tick, and minimizes overtime. + +3. control is passed to byond after all of our code's procs stop execution for this tick + +4. a few small things happen in byond internals + +5. SendMaps is called for this tick, which processes the game state for all clients connected to the game and handles sending them changes +in appearances within their view range. This is expensive and takes up a significant portion of our tick, about 0.45% per connected player +as of 3/20/2022. meaning that with 50 players, 22.5% of our tick is being used up by just SendMaps, after all of our code has stopped executing. Thats only the average across all rounds, for most highpop rounds it can look like 0.6% of the tick per player, which is 30% for 50 players. + +6. After SendMaps ends, client verbs sent to the server are executed, and its the last major step before the next tick begins. +During the course of the tick, a client can send a command to the server saying that they have executed any verb. The actual code defined +for that /verb/name() proc isnt executed until this point, and the way the MC is designed makes this especially likely to make verbs +"overrun" the bounds of the tick they executed in, stopping the other tick from starting and thus delaying the MC firing in that tick. + +The master controller can derive how much of the tick was used in: procs executing before it woke up (because of world.tick_usage), and SendMaps (because of world.map_cpu, since this is a running average you cant derive the tick spent on maptick on any particular tick). It cannot derive how much of the tick was used for sleeping procs resuming after the MC ran, or for verbs executing after SendMaps. + +It is for these reasons why you should heavily limit processing done in verbs, while procs resuming after the MC are rare, verbs are not, and are much more likely to cause overtime since theyre literally at the end of the tick. If you make a verb, try to offload any expensive work to the beginning of the next tick via a verb management subsystem. diff --git a/.github/workflows/autowiki.yml b/.github/workflows/autowiki.yml index 72c5b8816ce0..b36db1444bbe 100644 --- a/.github/workflows/autowiki.yml +++ b/.github/workflows/autowiki.yml @@ -9,7 +9,7 @@ permissions: jobs: autowiki: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: "Check for AUTOWIKI_USERNAME" id: secrets_set diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 20378d43932b..54384fb14e95 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -11,8 +11,9 @@ on: - master jobs: run_linters: + if: "!contains(github.event.head_commit.message, '[ci skip]')" name: Run Linters - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: @@ -59,15 +60,16 @@ jobs: python-version: "3.9" - name: Run Check Regex run: | - tools/bootstrap/python -m ci.check_regex --log-changes-only + tools/bootstrap/python -m ci.check_regex --log-changes-only --github-actions - name: Annotate Regex Matches if: always() run: | cat check_regex_output.txt compile_all_maps: + if: "!contains(github.event.head_commit.message, '[ci skip]')" name: Compile Maps - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Python setup @@ -90,54 +92,22 @@ jobs: tools/build/build --ci dm -DCIBUILDING -DCITESTING -DALL_MAPS -DFULL_INIT run_all_tests: + if: "!contains(github.event.head_commit.message, '[ci skip]')" name: Integration Tests - runs-on: ubuntu-20.04 - strategy: - fail-fast: false - services: - mysql: - image: mysql:latest - env: - MYSQL_ROOT_PASSWORD: root - ports: - - 3306 - options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 - steps: - - uses: actions/checkout@v3 - - name: Setup cache - id: cache-byond - uses: actions/cache@v3 - with: - path: ~/BYOND - key: ${{ runner.os }}-byond-cache-${{ hashFiles('Dockerfile') }} - - name: Install BYOND - if: steps.cache-byond.outputs.cache-hit != 'true' - run: bash tools/ci/install_byond.sh - - name: Setup database - run: | - sudo systemctl start mysql - mysql -u root -proot -e 'CREATE DATABASE tg_ci;' - mysql -u root -proot tg_ci < SQL/tgstation_schema.sql - mysql -u root -proot -e 'CREATE DATABASE tg_ci_prefixed;' - mysql -u root -proot tg_ci_prefixed < SQL/tgstation_schema_prefixed.sql - - name: Install rust-g - run: | - sudo dpkg --add-architecture i386 - sudo apt update || true - sudo apt install -o APT::Immediate-Configure=false libssl1.1:i386 - bash tools/ci/install_rust_g.sh - - name: Install auxmos - run: | - bash tools/ci/install_auxmos.sh - - name: Compile Tests - run: | - bash tools/ci/install_byond.sh - source $HOME/BYOND/byond/bin/byondsetup - tools/build/build --ci dm -DCIBUILDING -DANSICOLORS - - name: Run Tests - run: | - source $HOME/BYOND/byond/bin/byondsetup - bash tools/ci/run_server.sh + uses: ./.github/workflows/run_integration_tests.yml + +# run_alternate_tests: +# if: "!contains(github.event.head_commit.message, '[ci skip]')" +# name: Alternate Tests +# strategy: +# fail-fast: false +# matrix: +# major: [515] +# minor: [1614] +# uses: ./.github/workflows/run_integration_tests.yml +# with: +# major: ${{ matrix.major }} +# minor: ${{ matrix.minor }} test_windows: if: "!contains(github.event.head_commit.message, '[ci skip]')" diff --git a/.github/workflows/compile_changelogs.yml b/.github/workflows/compile_changelogs.yml index 70b4ac9a9331..48071cb3adde 100644 --- a/.github/workflows/compile_changelogs.yml +++ b/.github/workflows/compile_changelogs.yml @@ -8,7 +8,7 @@ on: jobs: compile: name: "Compile changelogs" - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: "Check for ACTION_ENABLER secret and pass it to output if it exists to be checked by later steps" id: value_holder diff --git a/.github/workflows/docker_publish.yml b/.github/workflows/docker_publish.yml index 6c14be7547b6..1d7c299831a2 100644 --- a/.github/workflows/docker_publish.yml +++ b/.github/workflows/docker_publish.yml @@ -9,7 +9,7 @@ on: jobs: publish: if: "!contains(github.event.head_commit.message, '[ci skip]')" - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/generate_documentation.yml b/.github/workflows/generate_documentation.yml index 8011516d27a2..e987d05ad2a9 100644 --- a/.github/workflows/generate_documentation.yml +++ b/.github/workflows/generate_documentation.yml @@ -21,7 +21,7 @@ jobs: environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Restore SpacemanDMM cache diff --git a/.github/workflows/make_changelogs.yml b/.github/workflows/make_changelogs.yml index aceb4aee3130..1a30c8183e35 100644 --- a/.github/workflows/make_changelogs.yml +++ b/.github/workflows/make_changelogs.yml @@ -7,7 +7,7 @@ on: jobs: MakeCL: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, '[ci skip]')" steps: - name: Checkout diff --git a/.github/workflows/round_id_linker.yml b/.github/workflows/round_id_linker.yml index bd4d02c17983..3885068be756 100644 --- a/.github/workflows/round_id_linker.yml +++ b/.github/workflows/round_id_linker.yml @@ -5,7 +5,7 @@ on: jobs: link_rounds: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: shiptest-ss13/round_linker@v2.0.0 with: diff --git a/.github/workflows/run_integration_tests.yml b/.github/workflows/run_integration_tests.yml new file mode 100644 index 000000000000..53f5df377591 --- /dev/null +++ b/.github/workflows/run_integration_tests.yml @@ -0,0 +1,61 @@ +# This is a reusable workflow to run integration tests. +# This is run for every single map in ci_suite.yml. You might want to edit that instead. +name: Run Integration Tests +on: + workflow_call: + inputs: + major: + required: false + type: string + minor: + required: false + type: string +jobs: + run_integration_tests: + runs-on: ubuntu-latest + services: + mysql: + image: mysql:latest + env: + MYSQL_ROOT_PASSWORD: root + ports: + - 3306 + options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + steps: + - uses: actions/checkout@v3 + - name: Setup cache + id: cache-byond + uses: actions/cache@v3 + with: + path: ~/BYOND + key: ${{ runner.os }}-byond-cache-${{ hashFiles('Dockerfile') }} + - name: Setup database + run: | + sudo systemctl start mysql + mysql -u root -proot -e 'CREATE DATABASE tg_ci;' + mysql -u root -proot tg_ci < SQL/tgstation_schema.sql + mysql -u root -proot -e 'CREATE DATABASE tg_ci_prefixed;' + mysql -u root -proot tg_ci_prefixed < SQL/tgstation_schema_prefixed.sql + - name: Install rust-g + run: | + sudo dpkg --add-architecture i386 + sudo apt update || true + sudo apt install -o APT::Immediate-Configure=false libssl-dev:i386 + bash tools/ci/install_rust_g.sh + - name: Install auxmos + run: | + bash tools/ci/install_auxmos.sh + - name: Configure version + if: ${{ inputs.major }} + run: | + echo "BYOND_MAJOR=${{ inputs.major }}" >> $GITHUB_ENV + echo "BYOND_MINOR=${{ inputs.minor }}" >> $GITHUB_ENV + - name: Compile Tests + run: | + bash tools/ci/install_byond.sh + source $HOME/BYOND/byond/bin/byondsetup + tools/build/build --ci dm -DCIBUILDING -DANSICOLORS + - name: Run Tests + run: | + source $HOME/BYOND/byond/bin/byondsetup + bash tools/ci/run_server.sh diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 01209a2828e3..a19c1911c18e 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -10,7 +10,7 @@ permissions: jobs: stale: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/stale@v4 diff --git a/.github/workflows/update_tgs_dmapi.yml b/.github/workflows/update_tgs_dmapi.yml index 9f863ce8c123..8aa77d0d6310 100644 --- a/.github/workflows/update_tgs_dmapi.yml +++ b/.github/workflows/update_tgs_dmapi.yml @@ -7,7 +7,7 @@ on: jobs: update-dmapi: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest name: Update the TGS DMAPI steps: - name: Clone diff --git a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm new file mode 100644 index 000000000000..d393dadb3b64 --- /dev/null +++ b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm @@ -0,0 +1,4064 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"am" = ( +/obj/structure/fluff/beach_umbrella{ + pixel_x = -18; + pixel_y = -6 + }, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"ar" = ( +/obj/structure/table/wood, +/obj/structure/curtain/cloth, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"bm" = ( +/obj/structure/chair/plastic, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"br" = ( +/obj/structure/table/wood, +/obj/structure/curtain/cloth, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = 4; + pixel_y = 10 + }, +/obj/item/reagent_containers/food/snacks/pizzaslice/custom{ + pixel_x = -2; + pixel_y = 2 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"bs" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"bA" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"bO" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 5 + }, +/obj/effect/turf_decal/weather/sand, +/obj/effect/decal/cleanable/dirt/dust{ + layer = 2.01 + }, +/turf/open/floor/carpet/cyan{ + baseturfs = /turf/open/floor/plating/beach/sand + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"ca" = ( +/obj/structure/chair/plastic{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"cg" = ( +/obj/effect/turf_decal/weather/sand/corner{ + dir = 4 + }, +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/plating/grass/beach/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"cs" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"ct" = ( +/obj/structure/chair/plastic{ + dir = 8 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"cu" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"cA" = ( +/obj/structure/table/wood, +/obj/item/circuitboard/machine/ore_redemption, +/obj/item/paper/pamphlet{ + pixel_x = 10; + pixel_y = 3 + }, +/obj/item/paper/pamphlet{ + pixel_x = 7; + pixel_y = -1 + }, +/obj/item/flashlight/lamp{ + pixel_x = -5; + pixel_y = 2 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"cF" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"cL" = ( +/obj/structure/chair/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"dl" = ( +/obj/structure/railing/wood{ + dir = 10 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"dx" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/bed/double{ + dir = 1 + }, +/obj/item/bedsheet/double/green{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"dJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"dZ" = ( +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"ed" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 8 + }, +/turf/closed/wall/concrete, +/area/overmap_encounter/planetoid/beachplanet/explored) +"ef" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"eD" = ( +/obj/structure/railing/wood{ + dir = 4 + }, +/obj/effect/turf_decal/weather/sand, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"eZ" = ( +/obj/item/melee/roastingstick, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"fq" = ( +/obj/structure/bonfire/prelit, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"ft" = ( +/obj/machinery/door/airlock/wood{ + name = "Villa 4" + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"fz" = ( +/obj/effect/turf_decal/weather/sand/corner{ + dir = 1 + }, +/obj/structure/bonfire/prelit, +/turf/open/floor/plating/dirt{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"gi" = ( +/obj/structure/curtain/cloth, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"gm" = ( +/obj/structure/table/wood, +/obj/structure/curtain/cloth, +/obj/item/flashlight/lamp/bananalamp{ + pixel_y = 5 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"gr" = ( +/obj/structure/table/wood, +/obj/structure/curtain/cloth, +/obj/item/nullrod/tribal_knife, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"gQ" = ( +/obj/structure/flora/ausbushes/genericbush, +/turf/open/floor/plating/grass/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"hi" = ( +/obj/effect/turf_decal/weather/sand/corner, +/obj/structure/fence/cut, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"hm" = ( +/obj/structure/flora/tree/palm{ + icon_state = "palm2" + }, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"hF" = ( +/obj/structure/flora/tree/palm{ + icon_state = "palm2"; + pixel_x = 18 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"hJ" = ( +/obj/structure/chair/plastic{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"il" = ( +/obj/effect/turf_decal/weather/sand, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"ix" = ( +/obj/effect/turf_decal/weather/sand/corner{ + dir = 8 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"iS" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/plating/dirt/dark{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"iW" = ( +/obj/structure/railing/wood{ + dir = 1 + }, +/obj/structure/closet/crate/freezer{ + name = "BBQ Supplies" + }, +/obj/item/reagent_containers/food/snacks/meat/rawbacon, +/obj/item/reagent_containers/food/snacks/meat/rawbacon, +/obj/item/reagent_containers/food/snacks/meat/rawbacon, +/obj/item/reagent_containers/food/snacks/meat/rawbacon, +/obj/item/reagent_containers/food/snacks/meat/slab/killertomato, +/obj/item/reagent_containers/food/snacks/meat/slab/killertomato, +/obj/item/reagent_containers/food/snacks/meat/slab/killertomato, +/obj/item/reagent_containers/food/snacks/meat/slab/killertomato, +/obj/item/reagent_containers/food/snacks/meat/slab/human, +/obj/item/reagent_containers/food/snacks/meat/slab/human, +/obj/item/reagent_containers/food/snacks/meat/slab/human, +/obj/item/reagent_containers/food/snacks/meat/slab/human, +/obj/item/reagent_containers/food/snacks/sausage, +/obj/item/reagent_containers/food/snacks/sausage, +/obj/item/reagent_containers/food/snacks/sausage, +/obj/item/reagent_containers/food/snacks/sausage, +/obj/item/reagent_containers/food/snacks/bun, +/obj/item/reagent_containers/food/snacks/bun, +/obj/item/reagent_containers/food/snacks/bun, +/obj/item/reagent_containers/food/snacks/bun, +/turf/open/floor/plating/asteroid/sand/lit, +/area/ruin/beach/float_resort) +"iX" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/item/circuitboard/machine/autolathe, +/turf/open/floor/plating/grass/beach/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"iZ" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"jh" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 6 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust{ + layer = 2.01 + }, +/turf/open/floor/carpet/orange{ + baseturfs = /turf/open/floor/plating/beach/sand + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"jQ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"kh" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"ki" = ( +/obj/structure/railing/corner/wood{ + dir = 4 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"kp" = ( +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"kw" = ( +/obj/item/stack/sheet/mineral/sandstone, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"kG" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/weather/sand, +/obj/effect/turf_decal/weather/sand{ + dir = 8 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"kW" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/reagent_containers/food/drinks/bottle/sake, +/obj/item/clothing/under/costume/mech_suit/white, +/obj/item/clothing/glasses/sunglasses{ + name = "blastglasses" + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"lb" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair/wood{ + dir = 1 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"ln" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"ls" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"lP" = ( +/obj/structure/railing/wood{ + dir = 5 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"mj" = ( +/obj/structure/railing/corner/wood{ + dir = 1 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"mo" = ( +/obj/structure/railing/wood{ + dir = 1 + }, +/obj/structure/railing/wood{ + dir = 4 + }, +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"mH" = ( +/obj/structure/railing/corner/wood, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"nf" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"ng" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"nw" = ( +/obj/structure/railing/wood{ + dir = 4 + }, +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"nD" = ( +/obj/structure/flora/ausbushes/genericbush, +/turf/open/floor/plating/grass/beach/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"nT" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/obj/effect/turf_decal/weather/sand, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"og" = ( +/obj/structure/flora/tree/palm{ + icon_state = "palm2" + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"op" = ( +/obj/structure/flora/junglebush/large, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"oJ" = ( +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 1 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"oM" = ( +/obj/structure/fence/door/opened, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"pm" = ( +/obj/structure/chair/stool/bar{ + dir = 8 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 5 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"pq" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 6 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust{ + layer = 2.01 + }, +/obj/structure/fluff/beach_umbrella{ + pixel_x = -18; + pixel_y = 13 + }, +/turf/open/floor/carpet/blue{ + baseturfs = /turf/open/floor/plating/beach/sand + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"pr" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"pA" = ( +/obj/effect/turf_decal/weather/sand, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"pH" = ( +/obj/effect/turf_decal/weather/sand/corner{ + dir = 8 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"pI" = ( +/obj/effect/turf_decal/weather/sand, +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"pM" = ( +/obj/structure/flora/tree/jungle, +/turf/open/floor/plating/grass/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"pY" = ( +/obj/item/tank/internals/plasma{ + pixel_x = -6; + pixel_y = 25 + }, +/turf/open/floor/plating/grass/beach/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"qe" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"qi" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/weather/sand{ + dir = 1 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"ql" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"qp" = ( +/obj/machinery/door/airlock/wood{ + name = "Villa 2" + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"qS" = ( +/obj/structure/table, +/obj/item/newspaper, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"qY" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair/plastic{ + dir = 1 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"rg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"rj" = ( +/obj/structure/railing/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"rk" = ( +/obj/structure/destructible/tribal_torch/lit, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"rM" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"rS" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"rV" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 5 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"rZ" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 5 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"sz" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"sI" = ( +/obj/structure/toilet{ + pixel_y = 13 + }, +/obj/structure/curtain/cloth, +/turf/open/floor/plasteel, +/area/ruin/beach/float_resort/villa) +"sW" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"tj" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"tA" = ( +/obj/structure/railing/corner/wood{ + dir = 8 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"tD" = ( +/obj/machinery/door/airlock/wood{ + name = "Villa 3" + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"uc" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/organ/heart/cybernetic/ipc, +/obj/item/instrument/piano_synth, +/obj/item/reagent_containers/syringe/contraband/space_drugs, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"uk" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 6 + }, +/turf/open/floor/plating/dirt{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"uV" = ( +/obj/structure/chair/plastic, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"va" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"vs" = ( +/obj/effect/turf_decal/weather/sand/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt/corner, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"vN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"wa" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = -13 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"we" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/genericbush, +/turf/open/floor/plating/grass/beach/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"wf" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/weather/sand, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"wn" = ( +/obj/structure/chair/comfy/black, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"wp" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/weather/sand{ + dir = 1 + }, +/obj/item/candle, +/obj/effect/spawner/lootdrop/donut, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"wx" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/plating/grass/beach/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"wE" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/storage/bag/money/vault, +/obj/item/reagent_containers/glass/mortar, +/obj/item/pestle, +/obj/item/clothing/suit/cardborg, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"xr" = ( +/obj/structure/chair/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"xO" = ( +/obj/structure/fence/cut, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"xT" = ( +/obj/structure/railing/wood{ + dir = 9 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"xZ" = ( +/obj/structure/chair/stool/bar{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"yt" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"yw" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/bed/double, +/obj/item/bedsheet/double/green, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"yW" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"zf" = ( +/obj/item/reagent_containers/glass/bucket/wooden{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"zj" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"zO" = ( +/obj/structure/chair/stool/bar{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood, +/obj/structure/railing/wood{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Aa" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = 13; + pixel_y = 6 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"Ac" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Al" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"As" = ( +/obj/item/fishing_rod, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"Ax" = ( +/obj/structure/table/wood, +/obj/structure/curtain/cloth, +/obj/item/reagent_containers/food/snacks/hotcrossbun, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"Ay" = ( +/obj/structure/fence/cut, +/obj/effect/turf_decal/weather/sand/corner{ + dir = 1 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"AF" = ( +/obj/structure/railing/wood{ + dir = 4 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Ba" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Bb" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 10 + }, +/turf/open/floor/plating/dirt{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Bw" = ( +/obj/structure/table/wood, +/obj/structure/curtain/cloth, +/obj/machinery/microwave{ + pixel_x = 3; + pixel_y = 6 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"BG" = ( +/obj/machinery/door/airlock/wood{ + name = "Villa 1" + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"BH" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = -13 + }, +/obj/item/stock_parts/matter_bin{ + pixel_x = 9; + pixel_y = 6 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"BV" = ( +/obj/structure/railing/wood{ + dir = 5 + }, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/asteroid/sand/lit, +/area/ruin/beach/float_resort) +"Ch" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Cn" = ( +/obj/structure/chair/plastic{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Cq" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood, +/obj/item/candle, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Cs" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/turf/open/floor/plating/dirt{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"CB" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/head/bearpelt, +/obj/item/stock_parts/scanning_module/adv, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + pixel_x = 4; + pixel_y = 7 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"CV" = ( +/obj/structure/curtain/cloth, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"Dc" = ( +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Df" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 9 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Dg" = ( +/obj/structure/railing/wood{ + dir = 6 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Di" = ( +/obj/structure/railing/wood, +/obj/structure/railing/wood{ + dir = 4 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Dr" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 6 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"DI" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"DQ" = ( +/obj/effect/turf_decal/weather/sand/corner, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"DW" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/railing/wood{ + dir = 1 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Ee" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Ey" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"ED" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 9 + }, +/obj/structure/railing/wood{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Fb" = ( +/obj/docking_port/stationary{ + dir = 2; + dwidth = 4; + height = 4; + width = 9 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Fk" = ( +/obj/structure/chair/sofa/right{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Fs" = ( +/obj/effect/spawner/structure/window, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/ruin/beach/float_resort) +"Fu" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"FB" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/weather/sand{ + dir = 8 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 1 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"FH" = ( +/obj/structure/flora/junglebush/large, +/turf/open/floor/plating/grass/beach/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Ga" = ( +/obj/effect/turf_decal/weather/sand/corner{ + dir = 1 + }, +/obj/structure/railing/wood{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Gb" = ( +/obj/item/tank/internals/plasma, +/turf/open/floor/plating/grass/beach/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Gv" = ( +/obj/effect/turf_decal/sand/plating, +/obj/item/toy/beach_ball, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Gy" = ( +/obj/structure/sink/kitchen{ + pixel_y = 16 + }, +/obj/item/reagent_containers/food/drinks/bottle/wine{ + pixel_x = -14; + pixel_y = 14 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"GF" = ( +/obj/structure/curtain/cloth, +/obj/structure/table/wood, +/obj/item/binoculars, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"GG" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 1 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"GS" = ( +/obj/structure/curtain/cloth, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/mug/tea, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"Ho" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"HO" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"HQ" = ( +/obj/structure/flora/ausbushes/genericbush, +/turf/open/floor/plating/dirt/dark{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"HS" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Ij" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/shaker{ + pixel_x = -6; + pixel_y = 11 + }, +/obj/item/reagent_containers/glass/rag{ + pixel_x = 9; + pixel_y = 22 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Io" = ( +/obj/structure/chair/sofa/left{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Iz" = ( +/obj/structure/table/wood, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Ja" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/condiment/ketchup{ + pixel_y = 18 + }, +/obj/item/reagent_containers/food/condiment/mayonnaise{ + pixel_x = -8; + pixel_y = 16 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Je" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/turf/closed/wall/concrete, +/area/overmap_encounter/planetoid/beachplanet/explored) +"JB" = ( +/obj/machinery/door/airlock/wood{ + name = "Reception" + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"JC" = ( +/obj/structure/railing/wood{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola{ + name = "Ocean Cola"; + pixel_y = 16 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola{ + name = "Ocean Cola"; + pixel_x = 8; + pixel_y = 16 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola{ + name = "Ocean Cola"; + pixel_x = 4; + pixel_y = 13 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola{ + name = "Ocean Cola"; + pixel_x = -4; + pixel_y = 13 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"JQ" = ( +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"JX" = ( +/obj/structure/chair/stool/bar{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Ka" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 9 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust{ + layer = 2.01 + }, +/turf/open/floor/carpet/blue{ + baseturfs = /turf/open/floor/plating/beach/sand + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Kv" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 9 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"KE" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/obj/effect/turf_decal/weather/sand, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"KO" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 6 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/plating/dirt{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"KQ" = ( +/obj/item/reagent_containers/food/drinks/bottle/whiskey{ + pixel_x = 10; + pixel_y = -4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"Ld" = ( +/obj/effect/turf_decal/weather/sand/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/sand/corner{ + dir = 8 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"LC" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 1 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"LJ" = ( +/obj/structure/railing/wood{ + dir = 1 + }, +/obj/structure/railing/wood{ + dir = 8 + }, +/obj/structure/railing/wood{ + dir = 4 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Md" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/structure/curtain/cloth, +/turf/open/floor/plasteel, +/area/ruin/beach/float_resort/villa) +"Mn" = ( +/obj/structure/railing/wood{ + dir = 1 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Mw" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"My" = ( +/obj/structure/chair/stool/bar{ + dir = 1 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Mz" = ( +/obj/structure/railing/wood{ + dir = 4 + }, +/obj/structure/chair/stool/bar{ + dir = 1 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"ML" = ( +/obj/effect/turf_decal/weather/sand/corner{ + dir = 4 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"MV" = ( +/obj/effect/turf_decal/weather/sand/corner{ + dir = 8 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"NC" = ( +/turf/open/floor/wood{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"ND" = ( +/obj/effect/turf_decal/weather/sand/corner, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"NN" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/obj/structure/flora/ausbushes/grassybush, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"NS" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 10 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust{ + layer = 2.01 + }, +/turf/open/floor/carpet/cyan{ + baseturfs = /turf/open/floor/plating/beach/sand + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"NU" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 9 + }, +/obj/effect/turf_decal/weather/sand, +/obj/effect/decal/cleanable/dirt/dust{ + layer = 2.01 + }, +/turf/open/floor/carpet/orange{ + baseturfs = /turf/open/floor/plating/beach/sand + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"NV" = ( +/turf/closed/wall/mineral/wood/nonmetal, +/area/ruin/beach/float_resort/villa) +"Op" = ( +/obj/structure/table/wood, +/obj/item/candle, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"OE" = ( +/turf/open/floor/plating/grass/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"OH" = ( +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"OL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"OT" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/plating/grass/beach/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Pc" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 9 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust{ + layer = 2.01 + }, +/turf/open/floor/carpet/red, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Pe" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 6 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Ph" = ( +/obj/structure/fence/cut, +/obj/effect/turf_decal/weather/sand/corner{ + dir = 4 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Ps" = ( +/obj/structure/railing/wood{ + layer = 2.08 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"PB" = ( +/obj/effect/turf_decal/weather/sand/corner{ + dir = 1 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"PE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"PU" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 1 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"PV" = ( +/obj/effect/turf_decal/weather/sand, +/turf/open/floor/plating/dirt{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Qj" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 9 + }, +/turf/open/floor/plating/dirt{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Qs" = ( +/obj/structure/flora/tree/jungle, +/turf/open/floor/plating/grass/beach/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Qx" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"QF" = ( +/obj/structure/railing/wood{ + dir = 9 + }, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/asteroid/sand/lit, +/area/ruin/beach/float_resort) +"QH" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 8 + }, +/obj/structure/fence/cut, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"QS" = ( +/obj/structure/flora/tree/palm{ + icon_state = "palm2"; + pixel_x = -1 + }, +/obj/effect/overlay/coconut, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"QV" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 10 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/plating/dirt{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Rs" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 6 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust{ + layer = 2.01 + }, +/obj/structure/fluff/beach_umbrella{ + pixel_x = -18; + pixel_y = 13 + }, +/turf/open/floor/carpet/red, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Rt" = ( +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"RF" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 8 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 1 + }, +/turf/open/floor/plating/dirt{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"RR" = ( +/turf/closed/wall/mineral/wood/nonmetal, +/area/ruin/beach/float_resort) +"Sf" = ( +/obj/structure/railing/wood, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"SD" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/weather/sand{ + dir = 8 + }, +/obj/structure/fence{ + dir = 4 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"SF" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort/villa) +"SH" = ( +/obj/item/fishing_rod, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Tc" = ( +/obj/structure/chair/stool/bar{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Td" = ( +/obj/structure/railing/wood{ + dir = 4 + }, +/obj/structure/chair/stool/bar{ + dir = 8 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Tr" = ( +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"TF" = ( +/obj/machinery/grill, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"TQ" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"TU" = ( +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"TZ" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 5 + }, +/turf/open/floor/plating/dirt{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"UA" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/weather/sand{ + dir = 8 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/beachplanet/explored) +"UV" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/obj/effect/turf_decal/weather/sand/corner, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Va" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Vb" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Vl" = ( +/turf/open/floor/plating/grass/beach/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Vr" = ( +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Vz" = ( +/turf/open/floor/plating/dirt/dark{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"VD" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"VM" = ( +/obj/item/shovel/spade, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"VY" = ( +/obj/item/reagent_containers/glass/bucket/wooden{ + pixel_y = 8 + }, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Wj" = ( +/obj/structure/table/wood, +/obj/item/paper/pamphlet, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Wt" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/weather/sand, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Wv" = ( +/obj/structure/railing/corner/wood{ + dir = 1 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 6 + }, +/turf/open/water/beach, +/area/overmap_encounter/planetoid/beachplanet/explored) +"WV" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/beach/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Xf" = ( +/obj/structure/table/wood, +/obj/item/stock_parts/manipulator, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Xm" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 8 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Xo" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Yr" = ( +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"YM" = ( +/obj/structure/fluff/beach_umbrella{ + pixel_x = 13 + }, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"YP" = ( +/turf/template_noop, +/area/template_noop) +"YQ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/structure/railing/wood{ + dir = 1 + }, +/turf/open/floor/wood{ + light_range = 2 + }, +/area/ruin/beach/float_resort) +"Zj" = ( +/obj/structure/fence/cut, +/obj/effect/turf_decal/weather/sand{ + dir = 8 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Zp" = ( +/obj/structure/chair/plastic{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"Zw" = ( +/obj/structure/flora/tree/palm{ + icon_state = "palm2" + }, +/obj/effect/overlay/coconut, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) +"ZW" = ( +/obj/structure/railing/wood{ + dir = 4 + }, +/obj/structure/destructible/tribal_torch/lit, +/turf/open/floor/plating/asteroid/sand/lit, +/area/overmap_encounter/planetoid/beachplanet/explored) + +(1,1,1) = {" +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +"} +(2,1,1) = {" +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +"} +(3,1,1) = {" +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +"} +(4,1,1) = {" +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +"} +(5,1,1) = {" +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +kp +kp +YP +YP +YP +YP +YP +YP +"} +(6,1,1) = {" +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +mH +AF +ki +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +YP +YP +YP +YP +"} +(7,1,1) = {" +YP +YP +YP +YP +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +kp +Sf +TU +Mn +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +YP +YP +YP +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +kp +YP +YP +YP +"} +(8,1,1) = {" +YP +YP +YP +YP +YP +YP +YP +YP +kp +kp +kp +NV +NV +NV +NV +NV +NV +ki +Sf +Vr +Mn +kp +NV +NV +NV +NV +NV +NV +ki +kp +kp +kp +kp +YP +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +YP +YP +YP +"} +(9,1,1) = {" +YP +YP +YP +YP +YP +YP +YP +kp +kp +kp +kp +gm +cu +dx +kW +NV +TU +lP +Dg +Vr +Mn +kp +NV +sI +BH +yt +CV +OH +Mn +kp +kp +kp +kp +kp +kp +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +ND +Ch +Ch +pH +YP +YP +"} +(10,1,1) = {" +YP +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +gr +OH +OH +OH +qp +Vr +Vr +Vr +Vr +Mn +mH +NV +NV +NV +OH +CV +ct +Mn +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +ND +Ch +Ch +Ch +Dr +Rt +Rt +rV +YP +YP +"} +(11,1,1) = {" +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +mH +NV +NV +OH +dZ +NV +Vr +xT +dl +Vr +lP +Dg +Vr +NV +wn +OH +NV +NV +mj +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +ND +Dr +Rt +Rt +Rt +Rt +Rt +NS +Rt +YP +YP +"} +(12,1,1) = {" +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +Sf +hJ +CV +OH +NV +NV +NV +mj +Sf +Vr +Vr +Vr +Vr +BG +OH +OH +OH +GF +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +ND +Ch +Ch +Dr +Rt +Rt +Cn +Rt +Cn +am +bO +Rt +YP +YP +"} +(13,1,1) = {" +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +Sf +KQ +CV +SF +Aa +Md +NV +kp +Sf +Vr +xT +dl +TU +NV +CB +yw +cu +GS +kp +kp +kp +kp +kp +kp +kp +kp +ND +Ch +Dr +Rt +Rt +Rt +Rt +Rt +Rt +hF +Rt +Fu +Rt +Rt +YP +YP +"} +(14,1,1) = {" +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +tA +NV +NV +NV +NV +NV +NV +kp +Sf +Vr +Mn +tA +NV +NV +NV +NV +NV +NV +kp +kp +kp +kp +kp +kp +kp +kp +pA +Rt +Rt +Rt +Zp +NU +JQ +FB +UA +SD +UA +kG +Rt +Rt +Rt +YP +"} +(15,1,1) = {" +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +Sf +Vr +Mn +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +ND +Dr +Rt +Zp +VY +QS +jh +Rt +qi +Gv +qe +yW +wf +Rt +Rt +Rt +YP +"} +(16,1,1) = {" +YP +YP +YP +YP +kp +kp +kp +kp +mH +AF +AF +AF +ki +kp +kp +kp +kp +kp +Sf +Vr +Mn +kp +kp +kp +kp +kp +kp +kp +kp +kp +mH +AF +ki +kp +kp +pA +SH +Rt +Rt +vN +rg +vN +Rt +LC +Ba +ng +Ba +nT +Rt +Rt +Rt +YP +"} +(17,1,1) = {" +YP +YP +YP +kp +kp +kp +kp +mH +Dg +dJ +ef +Al +lP +AF +AF +AF +AF +AF +Dg +Vr +lP +AF +AF +AF +AF +AF +AF +AF +AF +AF +Dg +Xm +RR +RR +RR +RR +RR +JQ +Rt +JX +zj +pI +Fu +Rt +YM +og +Rt +Rt +Fu +Rt +Rt +YP +"} +(18,1,1) = {" +YP +YP +YP +kp +kp +kp +kp +Sf +cL +tj +eZ +iZ +Vb +jQ +jQ +jQ +ql +Vb +jQ +va +jQ +ql +Vb +jQ +jQ +nf +ql +Vb +jQ +nf +nf +Xo +RR +Io +Fk +qS +Fs +QV +Rt +wp +NC +Tc +Rt +Rt +Zp +Zp +VM +Rt +Rt +Rt +YP +YP +"} +(19,1,1) = {" +YP +YP +YP +kp +kp +kp +kp +Sf +rk +Vr +fq +Vr +lb +mo +nw +nw +rj +sz +mo +nw +nw +rj +sz +mo +nw +nw +DW +sz +LJ +nw +nw +YQ +gi +Vr +Vr +Ho +RR +PV +Rt +pm +MV +Cq +Rt +Rt +Rt +Rt +Rt +Zp +Vl +Rt +YP +YP +"} +(20,1,1) = {" +YP +YP +kp +kp +kp +kp +kp +Sf +xr +pr +Vr +kh +ln +nf +ls +nf +rM +ln +nf +nf +nf +rM +ln +nf +nf +nf +rM +ln +nf +nf +nf +Xo +RR +uV +Vr +Vr +JB +PV +Rt +ED +Ga +zO +Rt +Vl +Rt +Rt +nD +kw +Rt +Rt +YP +YP +"} +(21,1,1) = {" +YP +YP +kp +kp +kp +kp +kp +tA +dl +PE +Va +OL +xT +dl +Vr +xT +TQ +TQ +TQ +TQ +TQ +TQ +TQ +TQ +TQ +TQ +TQ +TQ +TQ +TQ +dl +cs +Fs +uV +Vr +Vr +RR +PV +Rt +bA +sW +bA +Rt +Rt +op +Vl +JQ +Fu +Rt +YP +YP +YP +"} +(22,1,1) = {" +YP +kp +kp +kp +kp +kp +kp +kp +tA +TQ +TQ +TQ +mj +Sf +Vr +Mn +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +Sf +qY +Fs +cA +Wj +Vr +Fs +PV +Rt +Rt +hm +nD +Rt +Rt +wx +Vl +Yr +Vl +Vl +YP +YP +YP +"} +(23,1,1) = {" +YP +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +Sf +Vr +Mn +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +Sf +qY +Fs +Xf +bs +Vr +Fs +KO +Rt +Fu +kw +Rt +Rt +OT +Vl +nD +Vl +Vl +OT +YP +YP +YP +"} +(24,1,1) = {" +YP +kp +kp +kp +kp +kp +NV +NV +NV +NV +NV +NV +ki +Sf +Vr +Mn +kp +NV +NV +NV +NV +NV +NV +ki +kp +kp +kp +kp +kp +kp +Sf +cF +RR +RR +RR +RR +RR +op +Rt +Kv +ed +QH +QH +xO +xO +Tr +Vl +gQ +pM +YP +YP +YP +"} +(25,1,1) = {" +YP +kp +kp +kp +kp +kp +ar +cu +dx +uc +NV +TU +lP +Dg +Vr +Mn +kp +NV +sI +wa +yt +CV +As +Mn +kp +kp +kp +kp +kp +kp +tA +UV +Wv +Rt +Rt +Fu +Rt +Rt +Rt +PU +Dc +Tr +Tr +DQ +ix +Tr +Vl +OE +Ee +YP +YP +YP +"} +(26,1,1) = {" +YP +kp +kp +kp +kp +kp +br +OH +OH +OH +ft +Vr +Vr +Vr +Vr +Mn +mH +NV +NV +NV +OH +CV +ct +Mn +kp +kp +kp +kp +kp +kp +kp +Dr +Rt +Ka +pq +Rt +Rt +Rt +Yr +GG +Dc +Tr +Tr +il +PU +Tr +OT +OE +Vz +Vl +YP +YP +"} +(27,1,1) = {" +YP +kp +kp +kp +kp +mH +NV +NV +OH +dZ +NV +Vr +xT +dl +Vr +lP +Dg +Vr +NV +wn +OH +NV +NV +mj +kp +mH +AF +AF +AF +AF +eD +ZW +Rt +VM +Zw +Cn +Rt +Fu +Rt +PU +Dc +Tr +Tr +il +PU +Tr +wx +Vz +Vz +Vl +YP +YP +"} +(28,1,1) = {" +YP +kp +kp +kp +kp +Sf +OH +CV +OH +NV +NV +NV +mj +Sf +Vr +Vr +Vr +Vr +tD +OH +OH +OH +Ax +kp +kp +Sf +Ey +Ij +My +Vr +Vr +Wt +Rt +bm +Rt +RF +Bb +Rt +Rt +PU +oM +Fb +DQ +Ld +vs +Ac +Vl +OE +Vz +Vz +YP +YP +"} +(29,1,1) = {" +YP +kp +kp +kp +kp +Sf +ct +CV +SF +Aa +Md +NV +kp +Sf +Vr +xT +dl +TU +NV +wE +yw +cu +Bw +kp +kp +Ps +Gy +Iz +My +Vr +xZ +QF +Rt +JQ +Qj +fz +PV +ca +Yr +PU +Dc +Tr +ML +PB +DI +HO +Vl +OE +Vz +Vz +Vl +YP +"} +(30,1,1) = {" +YP +kp +kp +kp +kp +tA +NV +NV +NV +NV +NV +NV +kp +Sf +Vr +Mn +tA +NV +NV +NV +NV +NV +NV +kp +kp +Sf +Vr +Ja +My +Vr +Op +iW +Rt +bm +TZ +Cs +uk +Rt +Vl +Tr +Dc +Tr +Tr +Tr +rS +HS +Vz +OE +OE +Vz +Vl +YP +"} +(31,1,1) = {" +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +Sf +Vr +lP +AF +AF +AF +AF +AF +AF +AF +AF +AF +Di +Vr +JC +Mz +Vr +Td +BV +Rt +Rt +Fu +Zp +Zp +Rt +OT +oJ +Dc +DQ +VD +VD +ix +DI +HQ +Vl +wx +Vz +OT +YP +"} +(32,1,1) = {" +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +Sf +Vr +Vr +Vr +Vr +Vr +Vr +Vr +Vr +Vr +Vr +Vr +Vr +Vr +Vr +Vr +Vr +Vr +Wt +Rt +zf +Rt +kw +Vl +Vl +Fu +rZ +Dc +il +Rt +Df +PB +il +Qs +Vl +Vl +Vl +Vl +YP +"} +(33,1,1) = {" +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +Sf +Vr +xT +TQ +TQ +TQ +TQ +TQ +TQ +TQ +TQ +TQ +TQ +TQ +KE +NN +Qx +Qx +Mw +Rt +Rt +Vl +Qs +OT +Vl +Vl +op +Je +Ph +Zj +Ay +hi +Pe +Fu +iX +Vl +Qs +Vl +YP +"} +(34,1,1) = {" +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +kp +Sf +TU +Mn +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +ND +Dr +Rt +QS +TF +Rt +Rt +op +Vl +wx +Vl +JQ +Vl +Vl +Gb +pY +Vl +nD +Vl +Rt +Rt +OT +Vl +WV +Vl +YP +"} +(35,1,1) = {" +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +tA +TQ +mj +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +pA +Rt +Pc +Rs +Rt +Fu +Rt +Vl +OT +Vl +Vl +Vl +we +Vl +Vl +Qs +iS +Vl +cg +nD +Vl +OT +nD +Vl +FH +YP +"} +(36,1,1) = {" +YP +YP +YP +YP +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +kp +YP +YP +YP +YP +YP +Rt +Rt +Rt +Rt +YP +YP +YP +YP +YP +YP +YP +Vl +Vl +Vl +Vl +Vl +Vl +Qs +Vl +Vl +Vz +Vz +Vl +YP +"} +(37,1,1) = {" +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +kp +kp +kp +kp +kp +kp +kp +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +Vl +Vl +Vl +nD +Vl +Vz +YP +YP +"} +(38,1,1) = {" +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +YP +"} diff --git a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm index 08967d4aa4d5..ca4dc1c33263 100644 --- a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm @@ -393,7 +393,7 @@ pixel_x = 9; pixel_y = -1 }, -/obj/item/gun/ballistic/automatic/assualt/p16/minutemen{ +/obj/item/gun/ballistic/automatic/assault/p16/minutemen{ pixel_y = 7; pixel_x = -9 }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm index 677647192c0d..6442425441ef 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm @@ -83,9 +83,6 @@ /area/ruin/unpowered/corprejectengineering) "cN" = ( /obj/structure/safe/floor, -/obj/item/stack/sheet/capitalisium{ - amount = 10 - }, /obj/item/hand_tele, /obj/item/stack/sheet/mineral/adamantine, /obj/item/stack/sheet/mineral/adamantine, @@ -1703,7 +1700,7 @@ "Md" = ( /obj/structure/rack, /obj/item/ammo_box/magazine/smgm9mm/ap, -/obj/item/ammo_box/magazine/smgm9mm/fire, +/obj/item/ammo_box/magazine/smgm9mm/inc, /obj/machinery/light/small/directional/east, /turf/open/floor/vault, /area/ruin/unpowered/corprejectvault) diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm index 2dd6c4cbea84..661098d293d2 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm @@ -1456,32 +1456,34 @@ /area/ruin) "dA" = ( /obj/effect/turf_decal/trimline/transparent/neutral/filled/line, -/obj/effect/turf_decal/weather/snow/corner{ - dir = 10 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, +/obj/effect/turf_decal/weather/snow{ + dir = 10 + }, /turf/open/floor/plasteel/dark{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin) "dB" = ( /obj/effect/turf_decal/trimline/transparent/neutral/filled/line, -/obj/effect/turf_decal/weather/snow/corner, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, +/obj/effect/turf_decal/weather/snow, /turf/open/floor/plasteel/dark{ initial_gas_mix = "ICEMOON_ATMOS" }, /area/ruin) "dC" = ( /obj/effect/turf_decal/trimline/transparent/neutral/filled/line, -/obj/effect/turf_decal/weather/snow/corner, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, +/obj/effect/turf_decal/weather/snow{ + dir = 6 + }, /turf/open/floor/plasteel/dark{ initial_gas_mix = "ICEMOON_ATMOS" }, diff --git a/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm b/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm index d33b5f21f9ef..c0fc2fcfc956 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm @@ -1,75 +1,41 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ad" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/tree/jungle{ - icon_state = "tree10" - }, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +"ab" = ( +/obj/structure/chair{ + dir = 8 }, -/area/overmap_encounter/planetoid/jungle/explored) -"af" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"ah" = ( -/obj/effect/decal/cleanable/shreds, -/obj/effect/decal/cleanable/dirt/dust, +"ac" = ( +/obj/structure/spacevine, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland1" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"ai" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, /turf/open/floor/plating/dirt/dark{ name = "beaten path"; desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"ag" = ( +/obj/machinery/door/airlock/glass, +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) "aj" = ( /turf/open/floor/mineral/plastitanium{ icon_state = "plastitanium_dam2" }, /area/ruin/jungle/starport) -"am" = ( -/obj/structure/flora/junglebush/large, -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) "an" = ( /obj/structure/door_assembly, /obj/structure/spider/stickyweb, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"ap" = ( -/obj/effect/decal/cleanable/ash, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"aq" = ( -/obj/effect/decal/cleanable/vomit/old, -/turf/open/floor/mineral/plastitanium, -/area/overmap_encounter/planetoid/jungle/explored) -"ar" = ( -/obj/machinery/power/floodlight{ - anchored = 1; - state_open = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "0-8" +"as" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/girder/displaced, +/turf/open/floor/plating{ + icon_state = "platingdmg2" }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) "av" = ( /obj/structure/spider/stickyweb, @@ -77,27 +43,18 @@ icon_state = "wood-broken4" }, /area/ruin/jungle/starport) -"ax" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"ay" = ( -/obj/effect/decal/cleanable/insectguts, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"az" = ( +/obj/structure/railing, +/turf/open/floor/plasteel/stairs{ + dir = 8 }, /area/overmap_encounter/planetoid/jungle/explored) -"aC" = ( -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 +"aD" = ( +/obj/structure/spacevine, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 }, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) "aF" = ( /obj/structure/girder, @@ -105,12 +62,15 @@ icon_state = "platingdmg3" }, /area/ruin/jungle/starport) -"aG" = ( +"aH" = ( +/obj/structure/spider/stickyweb, +/obj/machinery/light/broken/directional/east, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"aJ" = ( /obj/structure/spider/stickyweb, /mob/living/simple_animal/hostile/poison/giant_spider/hunter, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, +/turf/open/floor/mineral/plastitanium, /area/overmap_encounter/planetoid/jungle/explored) "aK" = ( /obj/structure/spacevine, @@ -123,33 +83,49 @@ /obj/machinery/light/broken/directional/south, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/tower) -"aS" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle{ +"aO" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"aU" = ( -/obj/structure/spider/stickyweb, -/obj/structure/spacevine, -/turf/open/floor/plating/grass/jungle{ +"aP" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 9 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"aQ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"aW" = ( +"aT" = ( +/obj/effect/decal/cleanable/glass, /turf/open/floor/plating/dirt/dark{ name = "beaten path"; desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"aX" = ( -/obj/structure/spacevine, +"aY" = ( +/obj/structure/railing{ + dir = 4 + }, /obj/structure/spider/stickyweb, -/turf/open/floor/plating/grass/jungle{ +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -157,9 +133,10 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/vault, /area/ruin/jungle/starport) -"bb" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/plating/rust, +"bd" = ( +/turf/open/floor/plasteel/stairs{ + dir = 8 + }, /area/overmap_encounter/planetoid/jungle/explored) "bf" = ( /obj/structure/railing{ @@ -170,40 +147,31 @@ /obj/item/storage/fancy/donut_box, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) +"bh" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/overmap_encounter/planetoid/jungle/explored) "bi" = ( /obj/machinery/door/airlock/hatch, /obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/ruin/jungle/starport) -"bj" = ( -/obj/structure/closet/secure_closet/freezer/kitchen, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"bk" = ( -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland0" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"bo" = ( -/obj/machinery/telecomms/processor, -/turf/open/floor/mineral/plastitanium{ - icon_state = "plastitanium_dam2" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"bp" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland2" +"bm" = ( +/obj/structure/railing{ + dir = 4 }, -/area/overmap_encounter/planetoid/jungle/explored) -"br" = ( -/obj/structure/spacevine, -/obj/structure/flora/grass/jungle, -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/grass/jungle{ +/obj/structure/spacevine/dense, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"bn" = ( +/obj/structure/spider/stickyweb, +/obj/structure/spider/cocoon, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) "bs" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8 @@ -213,71 +181,61 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/plasma) -"bv" = ( -/obj/item/stack/ore/salvage/scrapmetal/five, -/turf/open/floor/plating{ - icon_state = "platingdmg2" +"bt" = ( +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"bw" = ( -/obj/structure/railing{ - dir = 8 +"bu" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland2" }, -/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"bz" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/flora/junglebush, -/turf/open/floor/plating/grass/jungle{ +"by" = ( +/obj/structure/spacevine, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"bB" = ( -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 8 +"bA" = ( +/obj/structure/railing{ + dir = 10 }, -/obj/structure/railing/corner, -/obj/structure/railing/corner{ - dir = 8 +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"bE" = ( -/obj/item/stack/ore/salvage/scrapmetal/five, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"bD" = ( +/obj/structure/railing, +/turf/open/floor/plasteel/stairs/old{ + dir = 8 }, /area/overmap_encounter/planetoid/jungle/explored) "bF" = ( /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) -"bG" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 - }, -/turf/open/floor/concrete/reinforced{ +"bH" = ( +/obj/item/chair, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"bK" = ( +/obj/structure/flora/rock/jungle, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"bI" = ( -/obj/structure/spacevine/dense, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-10" - }, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 +"bL" = ( +/obj/effect/turf_decal/arrows{ + dir = 8 }, +/obj/structure/spacevine, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) "bM" = ( /obj/effect/decal/cleanable/blood/drip, @@ -289,110 +247,115 @@ "bN" = ( /turf/closed/wall/mineral/plastitanium, /area/ruin/jungle/starport/tower) -"bQ" = ( -/obj/structure/girder/displaced, -/turf/open/floor/concrete/slab_1{ +"bP" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"bR" = ( -/turf/closed/wall/concrete/reinforced, -/area/overmap_encounter/planetoid/jungle/explored) -"bS" = ( -/obj/effect/turf_decal/borderfloor{ - dir = 1 +"bT" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, -/obj/structure/closet/secure_closet/engineering_welding{ - anchored = 1 +/area/overmap_encounter/planetoid/jungle/explored) +"bU" = ( +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland1" }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"cd" = ( -/obj/structure/spacevine, -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +"bX" = ( +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"cg" = ( -/obj/structure/sign/syndicate{ - pixel_x = 32 - }, +"bZ" = ( +/obj/effect/decal/cleanable/vomit/old, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"ci" = ( -/obj/effect/decal/cleanable/shreds, -/obj/item/stack/sheet/metal, -/turf/open/floor/plating/grass/jungle{ +"ce" = ( +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"cj" = ( -/obj/structure/reagent_dispensers/foamtank, -/turf/open/floor/concrete/slab_1{ +"cn" = ( +/obj/structure/spacevine, +/obj/structure/spider/stickyweb, +/obj/structure/flora/grass/jungle, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"ck" = ( +"cp" = ( +/obj/structure/spacevine, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"cq" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/junglebush/b, /obj/structure/flora/grass/jungle, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"cs" = ( -/obj/effect/turf_decal/box/corners, -/turf/open/floor/concrete/slab_1{ +"cu" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"ct" = ( -/obj/structure/railing{ +"cv" = ( +/obj/effect/turf_decal/weather/dirt{ dir = 6 }, -/turf/open/floor/concrete/slab_1{ +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"cy" = ( +/obj/effect/decal/cleanable/vomit/old, +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/old{ + icon_state = "floor5-old" + }, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"cB" = ( -/turf/open/floor/plasteel/stairs{ - dir = 1 +"cz" = ( +/obj/structure/sign/syndicate{ + pixel_x = 32 }, -/area/overmap_encounter/planetoid/jungle/explored) -"cC" = ( /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"cI" = ( -/obj/effect/decal/cleanable/ash/large, +"cE" = ( +/obj/effect/decal/cleanable/shreds, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland1" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"cJ" = ( -/obj/structure/spacevine, -/obj/structure/flora/grass/jungle, -/obj/structure/flora/junglebush/b, -/obj/structure/flora/grass/jungle, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +/turf/open/floor/plating{ + icon_state = "panelscorched" }, /area/overmap_encounter/planetoid/jungle/explored) -"cK" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 8 - }, -/turf/open/floor/plating/rust, +"cF" = ( +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"cN" = ( -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, +"cH" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave, +/turf/open/floor/plasteel/dark, /area/overmap_encounter/planetoid/jungle/explored) "cO" = ( /obj/structure/cable{ @@ -400,16 +363,6 @@ }, /turf/open/floor/plasteel, /area/ruin/jungle/starport) -"cP" = ( -/obj/structure/table{ - name = "officer's table"; - desc = "A square piece of metal standing on four metal legs. It can not move. This one feels more important than the others" - }, -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/shreds, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) "cQ" = ( /obj/machinery/shower{ dir = 4; @@ -427,65 +380,92 @@ icon_state = "platingdmg1" }, /area/ruin/jungle/starport) -"cU" = ( -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"cV" = ( -/obj/structure/railing/corner, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) "cW" = ( /obj/machinery/computer/security{ dir = 4 }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/tower) -"cY" = ( -/obj/structure/cable{ - icon_state = "4-9" +"cX" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 }, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +/obj/structure/spacevine/dense, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"dk" = ( -/obj/structure/spider/stickyweb, -/mob/living/simple_animal/hostile/poison/giant_spider/tarantula, -/turf/open/floor/plasteel, +"da" = ( +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland9" + }, /area/overmap_encounter/planetoid/jungle/explored) -"dl" = ( -/obj/structure/spacevine/dense, -/obj/structure/flora/grass/jungle, +"dc" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/machinery/light/broken/directional/south, +/turf/open/floor/plasteel/dark, +/area/overmap_encounter/planetoid/jungle/explored) +"dd" = ( +/obj/structure/flora/rock/jungle, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"dm" = ( -/obj/effect/turf_decal/arrows{ - dir = 8 - }, +"df" = ( /obj/structure/spacevine, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"dg" = ( +/obj/structure/spider/stickyweb, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"dp" = ( -/obj/item/stack/cable_coil/cut/red, -/obj/effect/decal/cleanable/glass, -/obj/structure/girder/displaced, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/mineral/plastitanium{ - icon_state = "plastitanium_dam2" +"dj" = ( +/obj/effect/turf_decal/borderfloor/corner{ + dir = 4 + }, +/obj/structure/spacevine, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"do" = ( +/obj/item/stack/sheet/mineral/plastitanium, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"dr" = ( +/obj/effect/decal/cleanable/plastic, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"dt" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/item/shard, +/turf/open/floor/plasteel/stairs/left, +/area/overmap_encounter/planetoid/jungle/explored) +"du" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/stairs/medium{ + dir = 4 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"dv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) "dw" = ( @@ -494,11 +474,20 @@ icon_state = "panelscorched" }, /area/ruin/jungle/starport) -"dy" = ( -/obj/structure/girder, -/obj/item/stack/sheet/mineral/plastitanium, -/obj/item/stack/sheet/mineral/plastitanium, -/turf/open/floor/plating/rust, +"dx" = ( +/turf/open/floor/plasteel/stairs, +/area/overmap_encounter/planetoid/jungle/explored) +"dz" = ( +/obj/effect/decal/cleanable/oil, +/obj/structure/railing, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"dA" = ( +/obj/structure/spacevine, +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) "dB" = ( /obj/structure/table, @@ -511,58 +500,45 @@ icon_state = "panelscorched" }, /area/ruin/jungle/starport) -"dE" = ( -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"dJ" = ( -/obj/structure/cable{ - icon_state = "6-9" - }, +"dF" = ( /obj/structure/spacevine, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"dP" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ruin/jungle/starport) -"dQ" = ( -/obj/structure/railing{ +"dI" = ( +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel/stairs/medium{ dir = 1 }, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"dR" = ( -/turf/open/floor/plasteel/stairs/right, +"dO" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"dT" = ( -/obj/structure/spacevine/dense, -/obj/structure/flora/junglebush/b, -/turf/open/floor/plating/grass/jungle{ +"dP" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/jungle/starport) +"dS" = ( +/obj/effect/decal/cleanable/insectguts, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"dU" = ( -/obj/effect/decal/cleanable/molten_object, -/obj/effect/radiation{ - rad_power = 66; - rad_range = 2 - }, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland_dug"; - light_color = "#a0ad20"; - light_range = 3 - }, +"dV" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/spider/stickyweb, +/obj/item/stack/cable_coil/cut/red, +/obj/machinery/light/broken/directional/west, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"dY" = ( -/obj/structure/flora/grass/jungle, -/turf/open/floor/plating/grass/jungle{ +"dW" = ( +/obj/effect/turf_decal/arrows, +/obj/structure/spacevine, +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -581,90 +557,86 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/plasma) -"ef" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/concrete/slab_1{ +"ec" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"ej" = ( -/obj/structure/railing, -/turf/open/water/jungle, +"ed" = ( +/turf/closed/wall, /area/overmap_encounter/planetoid/jungle/explored) -"ek" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating/dirt/jungle{ +"eh" = ( +/obj/structure/flora/junglebush/b, +/obj/structure/flora/junglebush/c, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"em" = ( -/obj/structure/cable{ - icon_state = "6-9" +"ei" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/structure/spider/stickyweb, +/obj/machinery/light/broken/directional/west, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"en" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 }, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +/turf/open/floor/plasteel/stairs{ + dir = 4 }, /area/overmap_encounter/planetoid/jungle/explored) -"eo" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 8 - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/concrete{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"eq" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"er" = ( -/obj/structure/flora/tree/jungle/small{ - icon_state = "tree4" - }, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, +"ep" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/vault, /area/overmap_encounter/planetoid/jungle/explored) -"es" = ( -/obj/structure/flora/grass/jungle/b, -/obj/structure/flora/junglebush/large, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +"et" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland1" }, /area/overmap_encounter/planetoid/jungle/explored) -"eu" = ( -/obj/structure/spider/stickyweb, -/obj/machinery/light/broken/directional/south, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) "ev" = ( /obj/machinery/light/directional/west, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) +"ew" = ( +/obj/structure/spacevine, +/mob/living/simple_animal/hostile/poison/giant_spider/nurse, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "ex" = ( /obj/structure/curtain, /turf/open/floor/plasteel, /area/ruin/jungle/starport) +"eA" = ( +/obj/structure/flora/junglebush/b, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "eB" = ( /obj/effect/decal/cleanable/glass, /turf/open/floor/plating{ icon_state = "platingdmg3" }, /area/ruin/jungle/starport) -"eJ" = ( -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 4 - }, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"eC" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland7" }, /area/overmap_encounter/planetoid/jungle/explored) +"eG" = ( +/turf/closed/wall/mineral/plastitanium, +/area/overmap_encounter/planetoid/jungle/explored) "eK" = ( /obj/structure/window/plasma/reinforced{ dir = 1 @@ -677,12 +649,18 @@ }, /turf/open/floor/plating, /area/ruin/jungle/starport) -"eP" = ( -/obj/structure/railing/corner{ - dir = 8 +"eO" = ( +/obj/structure/railing{ + dir = 1 }, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"eQ" = ( +/obj/structure/railing, /obj/structure/spacevine/dense, -/turf/open/floor/concrete/reinforced{ +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -691,12 +669,54 @@ /obj/item/toy/eightball, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"fb" = ( +"eU" = ( +/obj/structure/spacevine, /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/flora/rock, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"eV" = ( +/obj/effect/decal/cleanable/molten_object, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/radiation{ + rad_power = 66; + rad_range = 2 + }, /turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland9" + icon_state = "wasteland2" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"eZ" = ( +/obj/item/chair, +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"fc" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/railing{ + dir = 4 }, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"fd" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"fg" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) "fi" = ( /obj/machinery/door/airlock{ @@ -708,39 +728,45 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/jungle/starport) -"fj" = ( +"fl" = ( +/obj/structure/spacevine, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"fn" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/jungle{ +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"fp" = ( +/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"fs" = ( -/obj/structure/railing{ - dir = 4 +"ft" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 }, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/jungle{ +/obj/effect/decal/cleanable/oil, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"fu" = ( -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) "fv" = ( /obj/machinery/computer/crew{ dir = 4 }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/tower) -"fw" = ( -/obj/structure/railing{ - dir = 4 +"fx" = ( +/obj/item/geiger_counter, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/concrete{ + light_range = 2 }, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt/jungle{ +/area/overmap_encounter/planetoid/jungle/explored) +"fz" = ( +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -749,33 +775,41 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"fG" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 10 +"fB" = ( +/obj/machinery/atmospherics/components/binary/valve{ + dir = 1 }, -/obj/effect/turf_decal/weather/dirt{ - dir = 9 +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/turf/open/water/jungle, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"fO" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/concrete/reinforced{ +"fC" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"fP" = ( +"fD" = ( /obj/item/chair, -/obj/structure/spider/stickyweb, +/obj/item/stack/cable_coil/cut/red, /turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"fS" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/stairs/right{ - dir = 4 +"fE" = ( +/obj/effect/decal/cleanable/insectguts, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"fV" = ( +"fJ" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/donkpockets, /obj/effect/spawner/lootdrop/donkpockets, @@ -783,6 +817,17 @@ /obj/effect/spawner/lootdrop/donkpockets, /turf/open/floor/plasteel/dark, /area/overmap_encounter/planetoid/jungle/explored) +"fL" = ( +/turf/open/floor/plasteel/stairs/left{ + dir = 1 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"fT" = ( +/obj/effect/turf_decal/borderfloor/corner{ + dir = 4 + }, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) "fW" = ( /obj/effect/turf_decal/industrial/warning/corner{ dir = 4 @@ -799,160 +844,141 @@ /obj/machinery/light/directional/north, /turf/open/floor/plating, /area/ruin/jungle/starport/plasma) -"fX" = ( -/obj/effect/decal/remains/human, -/obj/machinery/light/broken/directional/east, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"fY" = ( +"fZ" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +/turf/open/floor/plating{ + icon_state = "platingdmg1" }, /area/overmap_encounter/planetoid/jungle/explored) -"gb" = ( -/obj/structure/railing{ - dir = 10 +"gf" = ( +/obj/machinery/atmospherics/components/unary/shuttle/heater{ + dir = 8 }, /turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"ge" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland8" +"gi" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 8 }, -/area/overmap_encounter/planetoid/jungle/explored) -"gg" = ( -/obj/effect/decal/cleanable/ash/large, -/turf/open/floor/plating/dirt/jungle{ +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"gh" = ( -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, -/turf/open/floor/plating/grass{ - desc = "A patch of grass. It looks well manicured"; +"gn" = ( +/obj/structure/spacevine, +/obj/structure/spacevine, +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"gj" = ( -/obj/structure/railing{ - dir = 6 +"gp" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 }, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"gk" = ( -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"gl" = ( -/obj/item/chair, -/obj/structure/spider/stickyweb, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"gn" = ( -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"go" = ( -/obj/structure/spider/stickyweb, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"gs" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/junglebush, +"gv" = ( +/obj/structure/spacevine/dense, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"gt" = ( -/obj/effect/decal/cleanable/oil, -/obj/structure/spacevine, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"gC" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 }, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"gw" = ( -/obj/effect/decal/cleanable/ash/large, +"gG" = ( /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland4" +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"gx" = ( -/obj/effect/decal/cleanable/ash, -/turf/open/floor/plating/rust, +"gN" = ( +/obj/structure/spider/stickyweb, +/mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"gA" = ( +"gO" = ( /obj/item/ammo_casing/caseless/rocket{ desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating{ - icon_state = "platingdmg2" +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" + }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" + }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" + }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" + }, +/obj/structure/rack, +/turf/open/floor/vault, /area/overmap_encounter/planetoid/jungle/explored) -"gE" = ( -/obj/structure/cable{ - icon_state = "2-9" +"gP" = ( +/obj/structure/fluff/fokoff_sign{ + icon_state = "fokrads"; + desc = "A crudely made sign with the universal radiation hazard symbol painted onto it." }, -/turf/open/floor/concrete/reinforced{ +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"gI" = ( -/obj/structure/railing, -/turf/open/floor/plasteel/stairs{ +"gR" = ( +/obj/effect/turf_decal/industrial/stand_clear{ dir = 8 }, -/area/overmap_encounter/planetoid/jungle/explored) -"gJ" = ( -/obj/structure/spacevine, -/obj/effect/turf_decal/weather/dirt{ - dir = 5 +/obj/structure/railing/corner{ + dir = 4 }, -/turf/open/water/jungle, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"gK" = ( -/obj/structure/railing/corner{ - dir = 8 +"gT" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 }, -/obj/machinery/light/broken/directional/west, -/turf/open/floor/concrete/slab_1{ +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"gM" = ( -/obj/effect/decal/cleanable/oil, -/obj/structure/railing, -/turf/open/floor/concrete/reinforced{ +"gU" = ( +/obj/effect/decal/cleanable/shreds, +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"gQ" = ( -/obj/structure/flora/rock, +"gV" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland8" + icon_state = "wasteland4" }, /area/overmap_encounter/planetoid/jungle/explored) -"gZ" = ( -/obj/structure/chair{ +"gW" = ( +/turf/open/floor/plasteel/stairs/left, +/area/overmap_encounter/planetoid/jungle/explored) +"gX" = ( +/obj/effect/turf_decal/borderfloor{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"ha" = ( -/obj/structure/flora/tree/jungle{ - icon_state = "tree9" - }, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +"gY" = ( +/obj/structure/flora/rock, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland8" }, /area/overmap_encounter/planetoid/jungle/explored) "hb" = ( @@ -980,56 +1006,40 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) -"hi" = ( -/obj/machinery/atmospherics/components/binary/pump, -/obj/structure{ - desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; - dir = 8; - icon = 'icons/obj/turrets.dmi'; - icon_state = "syndie_off"; - name = "defunct laser cannon"; - pixel_x = 26 - }, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, +"hf" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"hl" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/spacevine/dense, -/turf/open/floor/concrete/reinforced{ - light_range = 2 - }, +"hh" = ( +/obj/structure/spacevine, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"ho" = ( -/obj/structure/girder/displaced, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"hj" = ( +/obj/structure/cable{ + icon_state = "1-6" }, -/area/overmap_encounter/planetoid/jungle/explored) -"hq" = ( -/obj/structure/railing{ - dir = 2 +/obj/structure/cable{ + icon_state = "1-10" }, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/concrete/slab_1{ +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"hr" = ( -/obj/structure/table/reinforced, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"hs" = ( -/obj/effect/turf_decal/industrial/warning{ +"hk" = ( +/obj/structure/spacevine, +/obj/effect/turf_decal/weather/dirt{ dir = 4 }, -/obj/structure/spacevine/dense, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"hp" = ( +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland1" }, /area/overmap_encounter/planetoid/jungle/explored) "ht" = ( @@ -1039,43 +1049,10 @@ /obj/machinery/light/small/broken/directional/north, /turf/open/floor/plasteel/patterned, /area/ruin/jungle/starport) -"hu" = ( -/obj/structure/railing{ - dir = 6 - }, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"hv" = ( +"hy" = ( +/obj/effect/decal/remains/human, /obj/structure/spider/stickyweb, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"hw" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"hB" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/plasteel/stairs/left, -/area/overmap_encounter/planetoid/jungle/explored) -"hC" = ( -/obj/item/stack/cable_coil/cut/red, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 - }, +/turf/open/floor/mineral/plastitanium, /area/overmap_encounter/planetoid/jungle/explored) "hE" = ( /obj/structure/cable{ @@ -1083,14 +1060,25 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/plasma) -"hG" = ( -/obj/structure/railing{ - dir = 6 +"hF" = ( +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"hH" = ( +/obj/structure/spacevine, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, +/area/overmap_encounter/planetoid/jungle/explored) +"hI" = ( +/obj/effect/turf_decal/atmos/plasma, /obj/structure/railing/corner{ - pixel_x = -23 + dir = 1 }, -/turf/open/water/jungle, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) "hJ" = ( /obj/machinery/vending/games, @@ -1105,32 +1093,35 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/jungle/starport) +"hM" = ( +/obj/structure/spider/stickyweb, +/mob/living/simple_animal/hostile/poison/giant_spider/tarantula, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "hN" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ruin/jungle/starport) -"hP" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 +"hO" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, +/area/overmap_encounter/planetoid/jungle/explored) +"hR" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/spacevine/dense, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, /turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"hT" = ( -/obj/effect/decal/cleanable/plastic, +"hS" = ( +/obj/structure/spider/stickyweb, /obj/effect/decal/cleanable/glass, /turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"hV" = ( -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 8 + icon_state = "panelscorched" }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) "hW" = ( /obj/machinery/computer/mech_bay_power_console{ @@ -1138,31 +1129,37 @@ }, /turf/open/floor/vault, /area/ruin/jungle/starport) -"hX" = ( -/obj/structure/flora/junglebush, -/obj/structure/flora/junglebush/b, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"hY" = ( -/obj/structure/flora/rock/jungle, +"hZ" = ( /obj/structure/spider/stickyweb, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel/stairs/medium, /area/overmap_encounter/planetoid/jungle/explored) "ib" = ( /obj/item/stack/sheet/metal, /mob/living/simple_animal/hostile/poison/giant_spider/hunter, /turf/open/floor/plasteel, /area/ruin/jungle/starport) +"ic" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/structure/sign/warning/gasmask{ + pixel_y = 32 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) "id" = ( /obj/structure/spacevine, /turf/open/floor/mineral/plastitanium{ icon_state = "plastitanium_dam5" }, /area/ruin/jungle/starport) +"if" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/overmap_encounter/planetoid/jungle/explored) "ig" = ( /obj/effect/decal/cleanable/vomit/old, /obj/machinery/light/directional/east, @@ -1174,153 +1171,77 @@ }, /turf/open/floor/engine/hull, /area/ruin/jungle/starport) -"ij" = ( -/obj/structure/spider/stickyweb, -/mob/living/simple_animal/hostile/poison/giant_spider/nurse, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"ik" = ( -/obj/effect/decal/cleanable/dirt, +"ii" = ( /obj/structure/spacevine, -/obj/structure/cable{ - icon_state = "2-5" +/obj/structure/spider/stickyweb, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, -/turf/open/floor/carpet/black{ - name = "Door mat"; - desc = "Don't forget to get the dirt off you before going in!" +/area/overmap_encounter/planetoid/jungle/explored) +"il" = ( +/obj/effect/decal/cleanable/glass/plasma, +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"in" = ( -/obj/structure/railing{ - dir = 1 +"io" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland7" }, +/area/overmap_encounter/planetoid/jungle/explored) +"ip" = ( /obj/structure/railing, -/turf/open/floor/plasteel/stairs{ +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"io" = ( -/turf/closed/wall/mineral/plastitanium, -/area/overmap_encounter/planetoid/jungle/explored) -"iq" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/railing{ - dir = 1 - }, +"ir" = ( /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"is" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/railing/corner{ - dir = 8; - pixel_x = 23 - }, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt, -/area/overmap_encounter/planetoid/jungle/explored) -"iu" = ( -/obj/structure/table{ - name = "officer's table"; - desc = "A square piece of metal standing on four metal legs. It can not move. This one feels more important than the others" - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) "iz" = ( /obj/structure/spider/stickyweb, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"iD" = ( -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"iE" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"iH" = ( -/obj/effect/decal/cleanable/glass/plasma, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"iJ" = ( -/obj/structure/railing, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"iL" = ( -/obj/machinery/computer/mech_bay_power_console{ - dir = 4 - }, -/turf/open/floor/vault, -/area/overmap_encounter/planetoid/jungle/explored) -"iN" = ( -/obj/structure/table/reinforced, -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/dark, -/area/overmap_encounter/planetoid/jungle/explored) -"iO" = ( -/obj/structure/spider/stickyweb, -/mob/living/simple_animal/hostile/poison/giant_spider/tarantula, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +"iB" = ( +/obj/effect/decal/cleanable/molten_object/large, +/obj/effect/radiation{ + rad_power = 66; + rad_range = 2 }, -/area/overmap_encounter/planetoid/jungle/explored) -"iU" = ( -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland_dug"; + light_color = "#a0ad20"; + light_range = 3 }, /area/overmap_encounter/planetoid/jungle/explored) -"iW" = ( -/obj/effect/turf_decal/box/corners{ +"iC" = ( +/obj/structure/railing{ dir = 8 }, -/turf/open/floor/concrete/slab_1{ +/obj/structure/spacevine, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"iX" = ( -/obj/structure/spacevine/dense, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"iM" = ( +/turf/open/floor/plasteel/stairs/left{ + dir = 4 }, /area/overmap_encounter/planetoid/jungle/explored) -"jc" = ( +"je" = ( /obj/structure/railing/corner, -/obj/effect/decal/cleanable/oil, -/obj/structure/spider/stickyweb, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"jd" = ( /obj/structure/spacevine, -/obj/structure/flora/grass/jungle, -/turf/open/floor/plating/grass/jungle{ +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"je" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) "jf" = ( /obj/structure/table, /obj/item/toy/clockwork_watch, @@ -1332,134 +1253,155 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/jungle/starport) -"jl" = ( -/obj/structure/spider/stickyweb, -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, +"ji" = ( +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"jn" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 +"jj" = ( +/obj/effect/turf_decal/arrows, +/obj/structure/spacevine/dense, +/turf/open/floor/concrete{ + light_range = 2 }, -/turf/open/floor/concrete/slab_1{ +/area/overmap_encounter/planetoid/jungle/explored) +"jk" = ( +/obj/structure/flora/junglebush, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"jo" = ( -/turf/open/floor/plasteel/stairs/right{ - dir = 1 +"jm" = ( +/obj/structure/frame/computer{ + dir = 4 }, +/turf/open/floor/mineral/plastitanium, /area/overmap_encounter/planetoid/jungle/explored) -"jq" = ( -/obj/structure/spacevine, -/obj/structure/flora/rock/jungle, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"jr" = ( +/obj/effect/radiation{ + rad_power = 66; + rad_range = 2 + }, +/obj/effect/decal/cleanable/molten_object/large, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland_dug" }, /area/overmap_encounter/planetoid/jungle/explored) -"jt" = ( +"js" = ( /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, +/obj/structure/spacevine, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"jw" = ( -/obj/structure/spider/stickyweb, -/obj/machinery/light/broken/directional/east, -/turf/open/floor/plasteel, +"ju" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"jx" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg1" +"jv" = ( +/obj/effect/decal/cleanable/ash/large, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland2" }, /area/overmap_encounter/planetoid/jungle/explored) -"jE" = ( -/obj/structure/spider/stickyweb, -/obj/structure/spacevine/dense, +"jx" = ( +/obj/structure/flora/junglebush/c, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"jH" = ( -/turf/open/floor/plasteel/stairs/left, -/area/overmap_encounter/planetoid/jungle/explored) -"jK" = ( -/obj/structure/chair/office{ - dir = 1 +"jy" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland1" }, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/jungle/starport/tower) -"jP" = ( -/obj/structure/table_frame, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"jQ" = ( +"jz" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/generic, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland3" +/turf/open/floor/plasteel/stairs/right{ + dir = 4 }, /area/overmap_encounter/planetoid/jungle/explored) -"jR" = ( -/obj/structure/chair/office{ - dir = 8 +"jA" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/spider/stickyweb, +/turf/open/floor/mineral/plastitanium{ + icon_state = "plastitanium_dam4" }, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/jungle/starport/tower) -"jS" = ( -/obj/effect/decal/cleanable/insectguts, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland1" +/area/overmap_encounter/planetoid/jungle/explored) +"jB" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/borderfloor{ + dir = 5 }, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"jU" = ( +"jJ" = ( +/obj/structure/spacevine/dense, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "5-8" }, -/obj/structure/spacevine, /turf/open/floor/plating/dirt/dark{ name = "beaten path"; desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"jV" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +"jK" = ( +/obj/structure/chair/office{ + dir = 1 }, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/jungle/starport/tower) +"jM" = ( +/obj/effect/decal/cleanable/molten_object, +/obj/effect/radiation{ + rad_power = 66; + rad_range = 2 + }, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland2" }, /area/overmap_encounter/planetoid/jungle/explored) -"jX" = ( -/obj/structure/spacevine, -/obj/structure/flora/rock/jungle, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +"jN" = ( +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"jZ" = ( -/obj/structure/railing, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/plasteel/stairs{ - dir = 4 +"jO" = ( +/obj/structure/spacevine, +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"kc" = ( -/obj/effect/turf_decal/arrows{ +"jR" = ( +/obj/structure/chair/office{ dir = 8 }, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/jungle/starport/tower) +"jT" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, /area/overmap_encounter/planetoid/jungle/explored) "kf" = ( /turf/open/floor/plating/rust, /area/ruin/jungle/starport) +"kg" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland8" + }, +/area/overmap_encounter/planetoid/jungle/explored) "kh" = ( /obj/machinery/atmospherics/components/unary/portables_connector{ dir = 4 @@ -1467,109 +1409,115 @@ /obj/machinery/portable_atmospherics/canister/toxins, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/plasma) -"kl" = ( -/obj/structure/chair{ - dir = 4 +"ki" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plasteel/grimy, -/area/ruin/jungle/starport) -"kn" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/ruin/jungle/starport) -"ko" = ( /obj/structure/spacevine/dense, -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"kr" = ( -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland2" +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 }, -/area/overmap_encounter/planetoid/jungle/explored) -"kC" = ( -/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"kD" = ( +"kj" = ( /obj/structure/spider/stickyweb, -/mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +/obj/structure/spider/cocoon{ + icon_state = "cocoon3" }, -/area/overmap_encounter/planetoid/jungle/explored) -"kE" = ( -/obj/machinery/door/airlock/glass{ - dir = 4; - pixel_y = 0 +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"kF" = ( -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland8" +"kl" = ( +/obj/structure/chair{ + dir = 4 }, -/area/overmap_encounter/planetoid/jungle/explored) -"kI" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plasteel/grimy, +/area/ruin/jungle/starport) +"km" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-9" }, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"kN" = ( -/obj/structure/spacevine, -/turf/open/floor/mineral/plastitanium, +"kn" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"kO" = ( +"kt" = ( +/obj/effect/decal/remains/human, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"kv" = ( /obj/structure/railing{ - dir = 4 + dir = 1 }, /turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"kQ" = ( -/obj/effect/radiation{ - rad_power = 66; - rad_range = 2 - }, -/obj/effect/decal/cleanable/molten_object, +"kw" = ( +/obj/effect/decal/cleanable/ash/large, /turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland2" + icon_state = "wasteland5" }, /area/overmap_encounter/planetoid/jungle/explored) -"kS" = ( -/obj/structure/rack, -/obj/item/storage/box/lights/mixed, -/obj/item/storage/box/lights/mixed, -/obj/item/storage/box/lights/mixed, -/turf/open/floor/plasteel/dark, +"kx" = ( +/obj/structure/closet/firecloset/full{ + anchored = 1 + }, +/obj/item/extinguisher/advanced, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/obj/item/geiger_counter, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"kV" = ( -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 8 +"kz" = ( +/obj/structure/railing/corner, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, -/turf/open/floor/concrete/slab_1{ +/area/overmap_encounter/planetoid/jungle/explored) +"kG" = ( +/obj/structure/spacevine, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"kW" = ( +"kH" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/remains/human, -/turf/open/floor/plating/dirt/jungle{ +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"la" = ( +"kK" = ( +/obj/structure/door_assembly, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"kL" = ( +/obj/effect/turf_decal/number/zero{ + pixel_x = -7; + pixel_y = 32 + }, +/obj/effect/turf_decal/number/three{ + pixel_x = 5; + pixel_y = 32 + }, /obj/structure{ desc = "A devastating strike weapon of times past. The mountings seem broken now."; dir = 4; @@ -1577,50 +1525,52 @@ icon_state = "mecha_missilerack_six"; name = "ancient missile rack"; pixel_x = -26; - pixel_y = -5 + pixel_y = 11 }, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"lf" = ( -/obj/structure/spacevine/dense, -/mob/living/simple_animal/hostile/poison/giant_spider/tarantula, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"lg" = ( -/obj/machinery/door/airlock{ - dir = 4 - }, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plasteel/tech/techmaint, +"kM" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"lh" = ( -/obj/structure/railing/corner, +"kN" = ( /obj/structure/spacevine, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/starport) +"kP" = ( +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/broken/directional/east, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"li" = ( -/obj/structure/door_assembly, +"kX" = ( +/obj/structure/flora/rock/jungle, +/obj/structure/flora/grass/jungle, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"lj" = ( -/obj/structure/railing/corner{ - dir = 8 +"lb" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 }, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"lk" = ( -/obj/effect/decal/cleanable/insectguts, +"ll" = ( +/obj/effect/radiation{ + rad_power = 66; + rad_range = 2 + }, +/obj/effect/decal/cleanable/molten_object, +/obj/structure/spacevine, /turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland8" + icon_state = "wasteland_dug" }, /area/overmap_encounter/planetoid/jungle/explored) "lm" = ( @@ -1630,103 +1580,51 @@ icon_state = "platingdmg1" }, /area/ruin/jungle/starport) +"ln" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "lo" = ( /obj/item/stack/cable_coil/cut/red, /obj/structure/spider/stickyweb, /mob/living/simple_animal/hostile/poison/giant_spider/hunter, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"lr" = ( -/obj/effect/decal/cleanable/glass, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"lt" = ( -/obj/effect/turf_decal/borderfloor/corner{ - dir = 4 - }, -/obj/structure/spacevine, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"lE" = ( -/obj/effect/decal/remains/human, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"lF" = ( -/obj/machinery/processor, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"lG" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"lI" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/mineral/plastitanium, -/area/ruin/jungle/starport/tower) -"lL" = ( -/obj/item/rack_parts, -/obj/structure/girder/displaced, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"lO" = ( -/obj/structure/spacevine, -/obj/structure/spider/stickyweb, -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/grass/jungle{ +"lp" = ( +/obj/item/geiger_counter, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"lQ" = ( -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 8 - }, -/obj/structure/railing, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"lR" = ( -/obj/structure/mecha_wreckage/ripley/firefighter, +"ls" = ( +/obj/machinery/autolathe, /turf/open/floor/vault, /area/overmap_encounter/planetoid/jungle/explored) -"lS" = ( -/obj/structure/spacevine, -/obj/structure/spider/stickyweb, +"lu" = ( +/obj/structure/flora/junglebush, /obj/structure/flora/grass/jungle, -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"lW" = ( -/obj/item/stack/sheet/mineral/plastitanium, -/obj/item/stack/sheet/mineral/plastitanium, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"lX" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ +"lw" = ( +/obj/effect/turf_decal/box/corners{ dir = 8 }, -/turf/open/floor/engine/hull, -/area/overmap_encounter/planetoid/jungle/explored) -"lY" = ( -/obj/machinery/door/airlock/glass, -/turf/open/floor/plasteel/tech/techmaint, -/area/overmap_encounter/planetoid/jungle/explored) -"ma" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/concrete/reinforced{ +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"mb" = ( -/obj/effect/decal/cleanable/dirt/dust, +"ly" = ( +/obj/structure/spacevine, /obj/structure/cable{ icon_state = "1-2" }, @@ -1734,139 +1632,230 @@ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"md" = ( -/obj/structure/closet/firecloset/full{ - anchored = 1 - }, -/obj/item/extinguisher/advanced, -/obj/structure/railing{ - dir = 10 - }, +"lB" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/glass, /obj/structure/spider/stickyweb, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +/turf/open/floor/mineral/plastitanium{ + icon_state = "plastitanium_dam2" }, /area/overmap_encounter/planetoid/jungle/explored) -"mh" = ( -/obj/structure/spacevine, -/obj/structure/flora/rock/jungle, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"lD" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "4-8" }, -/area/overmap_encounter/planetoid/jungle/explored) -"mi" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/stairs/medium{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 }, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"mn" = ( -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" +"lG" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/structure/flora/rock/pile, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland1" }, -/turf/open/floor/plating/dirt/jungle{ +/area/overmap_encounter/planetoid/jungle/explored) +"lI" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/starport/tower) +"lM" = ( +/obj/structure/spacevine, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"mo" = ( -/obj/machinery/suit_storage_unit/industrial/atmos_firesuit, -/obj/item/watertank/atmos, -/turf/open/floor/vault, +"lU" = ( +/obj/effect/turf_decal/box/corners, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"mp" = ( -/obj/effect/decal/cleanable/insectguts, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating{ - icon_state = "platingdmg1" +"lZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/spacevine, +/obj/structure/cable{ + icon_state = "2-5" + }, +/turf/open/floor/carpet/black{ + name = "Door mat"; + desc = "Don't forget to get the dirt off you before going in!" }, /area/overmap_encounter/planetoid/jungle/explored) -"mr" = ( -/obj/effect/turf_decal/arrows{ +"mc" = ( +/obj/structure/railing{ dir = 8 }, /obj/structure/spacevine, -/turf/open/floor/plating/rust, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"me" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"ms" = ( +"mg" = ( +/obj/structure/spacevine/dense, /obj/structure/flora/rock/jungle, -/obj/structure/flora/grass/jungle, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"mv" = ( -/obj/structure/spider/stickyweb, -/mob/living/simple_animal/hostile/poison/giant_spider/nurse, -/turf/open/floor/plasteel, -/area/ruin/jungle/starport) +"mj" = ( +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"mk" = ( +/obj/item/rack_parts, +/obj/structure/girder/displaced, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"mq" = ( +/obj/item/shard, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"mu" = ( +/obj/structure/cable{ + icon_state = "4-10" + }, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "mw" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/vomit/old, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) -"mB" = ( -/obj/structure/flora/rock/pile, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland2" +"mz" = ( +/obj/machinery/telecomms/processor, +/turf/open/floor/mineral/plastitanium{ + icon_state = "plastitanium_dam2" }, /area/overmap_encounter/planetoid/jungle/explored) -"mK" = ( -/obj/structure/railing, -/obj/structure/spacevine, +"mA" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/spacevine/dense, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"mP" = ( -/obj/item/watertank/atmos, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"mD" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-4" }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"mQ" = ( -/obj/structure/flora/rock/jungle, -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +"mE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/stairs/medium{ + dir = 8 }, /area/overmap_encounter/planetoid/jungle/explored) -"mX" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ +"mF" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/structure/window/plasma/reinforced{ +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"mG" = ( +/obj/machinery/door/airlock/glass{ dir = 4 }, +/obj/structure/barricade/wooden/crude, /turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"na" = ( -/obj/effect/turf_decal/industrial/traffic/corner{ - dir = 1 +"mI" = ( +/obj/structure/railing, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/concrete/reinforced{ + light_range = 2 }, -/turf/open/floor/concrete{ +/area/overmap_encounter/planetoid/jungle/explored) +"mJ" = ( +/obj/item/stack/sheet/mineral/plastitanium, +/obj/item/stack/sheet/mineral/plastitanium, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"ng" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1 +"mS" = ( +/obj/structure/table, +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"mU" = ( +/obj/structure/cable{ + icon_state = "5-10" }, -/obj/structure{ - desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; - dir = 8; - icon = 'icons/obj/turrets.dmi'; - icon_state = "syndie_off"; - name = "defunct laser cannon"; - pixel_x = 26 +/obj/structure/spider/stickyweb, +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 }, -/turf/open/floor/concrete/slab_1{ +/area/overmap_encounter/planetoid/jungle/explored) +"mW" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/plasteel/dark, +/area/overmap_encounter/planetoid/jungle/explored) +"nb" = ( +/obj/structure/spacevine, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"nc" = ( +/obj/structure/spider/stickyweb, +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"ne" = ( +/obj/structure/spacevine, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"nh" = ( -/obj/structure/table, +"nf" = ( +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/obj/structure/closet/secure_closet/engineering_welding{ + anchored = 1 + }, /turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) "ni" = ( @@ -1874,6 +1863,21 @@ /obj/machinery/light/broken/directional/north, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) +"nj" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"nk" = ( +/obj/effect/decal/cleanable/plastic, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/overmap_encounter/planetoid/jungle/explored) "nm" = ( /obj/machinery/power/terminal, /obj/structure/cable, @@ -1881,64 +1885,79 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/plating, /area/ruin/jungle/starport) -"np" = ( -/obj/structure/railing{ - dir = 8 +"nq" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/grass/jungle, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, -/turf/open/floor/plasteel/stairs/old, -/area/overmap_encounter/planetoid/jungle/explored) -"nt" = ( -/obj/structure/door_assembly, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"nz" = ( -/obj/structure/sign/syndicate{ - pixel_y = -32 +"nr" = ( +/obj/effect/turf_decal/arrows{ + dir = 4 }, +/obj/structure/spacevine/dense, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"nD" = ( -/obj/effect/turf_decal/number/zero{ - pixel_x = -7; - pixel_y = 32 +"ns" = ( +/turf/open/floor/plasteel/stairs{ + dir = 1 }, -/obj/effect/turf_decal/number/four{ - pixel_x = 6; - pixel_y = 32 +/area/overmap_encounter/planetoid/jungle/explored) +"nw" = ( +/obj/structure/railing, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 }, -/obj/structure{ - desc = "A devastating strike weapon of times past. The mountings seem broken now."; - dir = 4; - icon = 'icons/mecha/mecha_equipment.dmi'; - icon_state = "mecha_missilerack_six"; - name = "ancient missile rack"; - pixel_x = -26; - pixel_y = 11 +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"ny" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/structure/spider/stickyweb, +/turf/open/floor/vault, +/area/overmap_encounter/planetoid/jungle/explored) +"nA" = ( +/obj/effect/decal/cleanable/insectguts, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland1" }, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +/area/overmap_encounter/planetoid/jungle/explored) +"nB" = ( +/obj/structure/flora/rock, +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland1" }, /area/overmap_encounter/planetoid/jungle/explored) "nF" = ( /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) -"nI" = ( -/obj/structure/table/wood, -/obj/item/book/manual/wiki/toxins, -/obj/machinery/light/small/broken/directional/east, -/turf/open/floor/wood{ - icon_state = "wood-broken3" - }, -/area/ruin/jungle/starport) -"nK" = ( -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +"nG" = ( +/obj/structure/flora/rock/jungle, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"nH" = ( +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"nI" = ( +/obj/structure/table/wood, +/obj/item/book/manual/wiki/toxins, +/obj/machinery/light/small/broken/directional/east, +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/ruin/jungle/starport) "nM" = ( /obj/structure/chair{ dir = 4 @@ -1946,78 +1965,58 @@ /obj/structure/spider/stickyweb, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"nN" = ( -/obj/structure/cable{ - icon_state = "1-10" - }, -/obj/structure/spider/stickyweb, +"nS" = ( /turf/open/floor/plating/dirt/dark{ name = "beaten path"; desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"nP" = ( -/obj/structure/spider/stickyweb, -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"nT" = ( +/obj/structure/closet/emcloset/anchored, +/obj/effect/turf_decal/borderfloor{ + dir = 1 }, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"nQ" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 +"nZ" = ( +/obj/structure/table/reinforced, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel/dark, +/area/overmap_encounter/planetoid/jungle/explored) +"oa" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 }, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/concrete/slab_1{ +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"nV" = ( -/obj/effect/decal/cleanable/vomit/old, +"ob" = ( /obj/structure/spider/stickyweb, -/obj/item/stack/ore/salvage/scrapmetal/five, -/turf/open/floor/mineral/plastitanium, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, /area/overmap_encounter/planetoid/jungle/explored) -"nW" = ( -/obj/structure/flora/rock/pile, +"oc" = ( +/obj/effect/decal/cleanable/glass, /turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland4" + icon_state = "wasteland8" }, /area/overmap_encounter/planetoid/jungle/explored) -"nY" = ( -/obj/structure/table/rolling, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; - pixel_x = 10; - pixel_y = 5 - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; - pixel_x = -10; - pixel_y = 5 - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; - pixel_x = -2; - pixel_y = 5 - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; - pixel_x = 2; - pixel_y = 5 +"od" = ( +/obj/structure/flora/rock, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland2" }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; - pixel_x = -6; - pixel_y = 5 +/area/overmap_encounter/planetoid/jungle/explored) +"oe" = ( +/obj/structure/spacevine, +/obj/structure/spider/stickyweb, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, -/turf/open/floor/vault, /area/overmap_encounter/planetoid/jungle/explored) "of" = ( /obj/structure/cable{ @@ -2028,49 +2027,39 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) -"oj" = ( -/obj/structure/flora/rock, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, +"og" = ( +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"ok" = ( -/obj/structure/spacevine, -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 +"oi" = ( +/obj/structure/spacevine/dense, +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, /area/overmap_encounter/planetoid/jungle/explored) -"on" = ( -/obj/structure/railing, -/turf/open/floor/plasteel/stairs/old{ - dir = 8 - }, +"om" = ( +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"oo" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) "oq" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/vault, /area/ruin/jungle/starport) -"or" = ( -/obj/structure/railing, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"ot" = ( -/obj/item/stack/ore/salvage/scrapmetal/five, +"os" = ( +/obj/structure/spider/stickyweb, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"ou" = ( -/obj/effect/decal/cleanable/shreds, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt/jungle{ +"ow" = ( +/obj/effect/turf_decal/arrows, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -2079,31 +2068,27 @@ dir = 1 }, /area/ruin/jungle/starport/tower) -"oz" = ( -/obj/effect/decal/cleanable/molten_object, -/obj/effect/radiation{ - rad_power = 66; - rad_range = 2 - }, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland_dug" +"oy" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) "oA" = ( /turf/open/floor/wood, /area/ruin/jungle/starport) -"oC" = ( -/obj/structure/railing/corner, -/obj/machinery/light/broken/directional/east, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"oD" = ( +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland2" }, /area/overmap_encounter/planetoid/jungle/explored) -"oF" = ( -/obj/structure/flora/tree/jungle/small{ - icon_state = "tree5" +"oH" = ( +/obj/structure/railing/corner, +/obj/structure/railing{ + dir = 1 }, -/turf/open/floor/plating/grass/jungle{ +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -2111,198 +2096,226 @@ /obj/machinery/portable_atmospherics/canister/toxins, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/plasma) -"oT" = ( -/obj/structure/flora/junglebush, -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"oW" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"oK" = ( +/obj/structure/spacevine/dense, +/obj/structure/cable{ + icon_state = "1-2" }, -/area/overmap_encounter/planetoid/jungle/explored) -"oY" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +/obj/structure/cable{ + icon_state = "1-10" }, -/area/overmap_encounter/planetoid/jungle/explored) -"pa" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/spider/stickyweb, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"pf" = ( -/obj/structure/spacevine, -/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/dirt/dark{ name = "beaten path"; desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"ph" = ( -/obj/structure/cable{ - icon_state = "4-10" +"oL" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 }, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"pl" = ( -/obj/effect/turf_decal/arrows, +"oN" = ( /obj/structure/spacevine, -/turf/open/floor/concrete{ - light_range = 2 +/obj/effect/turf_decal/weather/dirt{ + dir = 1 }, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"po" = ( +"oQ" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/spacevine, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"oS" = ( +/obj/effect/decal/cleanable/generic, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"px" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 +"oU" = ( +/obj/structure/railing/corner{ + dir = 8 }, +/obj/structure/spider/stickyweb, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"py" = ( -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plasteel, +"oV" = ( +/turf/open/floor/plasteel/stairs/right{ + dir = 4 + }, /area/overmap_encounter/planetoid/jungle/explored) -"pB" = ( -/obj/effect/decal/cleanable/oil, -/obj/structure/spacevine/dense, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +"oX" = ( +/obj/structure/railing{ + dir = 6 }, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"pC" = ( +"pb" = ( /obj/effect/turf_decal/industrial/stand_clear{ dir = 4 }, -/obj/structure/spacevine, /turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"pE" = ( -/obj/structure/railing{ - dir = 6 - }, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +"pe" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 4 }, +/turf/open/floor/vault, /area/overmap_encounter/planetoid/jungle/explored) -"pG" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ +"pi" = ( +/obj/effect/turf_decal/industrial/traffic{ dir = 4 }, -/obj/structure/window/plasma/reinforced{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plating, -/area/ruin/jungle/starport) -"pI" = ( -/obj/structure/table, -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"pJ" = ( -/obj/structure/flora/tree/jungle/small, -/turf/open/floor/plating/grass/jungle{ +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"pK" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken2" +"pk" = ( +/obj/structure/cable{ + icon_state = "6-9" }, -/area/ruin/jungle/starport) -"pL" = ( -/obj/effect/decal/cleanable/ash/large, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland3" +/mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"pM" = ( +"pn" = ( +/obj/structure/table, +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"pr" = ( /obj/structure/table, /turf/open/floor/plating, -/area/ruin/jungle/starport) -"pP" = ( +/area/overmap_encounter/planetoid/jungle/explored) +"pu" = ( +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland6" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"pv" = ( /obj/structure/spacevine, -/turf/open/floor/mineral/plastitanium{ - icon_state = "plastitanium_dam3" +/obj/structure/flora/rock/jungle, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 }, -/area/ruin/jungle/starport) -"pT" = ( -/obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/dark, /area/overmap_encounter/planetoid/jungle/explored) -"qb" = ( -/obj/structure/flora/junglebush/b, -/obj/structure/flora/grass/jungle, -/turf/open/floor/plating/grass/jungle{ +"pz" = ( +/obj/structure/railing/corner, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"qf" = ( -/obj/effect/turf_decal/industrial/warning{ +"pG" = ( +/obj/machinery/atmospherics/components/unary/shuttle/heater{ dir = 4 }, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +/obj/structure/window/plasma/reinforced{ + dir = 8 }, -/area/overmap_encounter/planetoid/jungle/explored) -"qh" = ( -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt/jungle{ +/turf/open/floor/plating, +/area/ruin/jungle/starport) +"pH" = ( +/obj/effect/turf_decal/industrial/traffic/corner, +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"qi" = ( -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"pK" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken2" + }, +/area/ruin/jungle/starport) +"pM" = ( +/obj/structure/table, +/turf/open/floor/plating, +/area/ruin/jungle/starport) +"pO" = ( +/obj/effect/turf_decal/atmos/plasma, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"qm" = ( -/obj/structure/railing{ - dir = 4 +"pP" = ( +/obj/structure/spacevine, +/turf/open/floor/mineral/plastitanium{ + icon_state = "plastitanium_dam3" + }, +/area/ruin/jungle/starport) +"pQ" = ( +/obj/effect/decal/cleanable/ash/large, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland3" }, +/area/overmap_encounter/planetoid/jungle/explored) +"pS" = ( +/obj/effect/decal/cleanable/dirt/dust, /obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle{ +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"pU" = ( +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"qn" = ( -/obj/structure/railing{ - dir = 4 +"pY" = ( +/obj/structure/chair, +/obj/item/stack/sheet/metal, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"pZ" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"qa" = ( +/obj/effect/decal/cleanable/insectguts, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating{ + icon_state = "platingdmg1" }, +/area/overmap_encounter/planetoid/jungle/explored) +"qc" = ( +/obj/structure/flora/junglebush/b, +/obj/structure/flora/grass/jungle, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"qs" = ( -/obj/structure/railing, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"qd" = ( +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"qk" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"qq" = ( +/obj/structure/cable{ + icon_state = "2-5" }, +/turf/open/floor/plating/dirt, /area/overmap_encounter/planetoid/jungle/explored) "qt" = ( /obj/structure/door_assembly, @@ -2332,34 +2345,18 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/tower) -"qz" = ( -/obj/structure/spacevine, -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"qC" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden, -/turf/open/floor/plating, +"qD" = ( +/obj/item/chair, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"qE" = ( -/obj/effect/decal/cleanable/shreds, +"qG" = ( +/obj/item/stack/cable_coil/cut/red, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/grass/jungle{ +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"qH" = ( -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plasteel/stairs/medium{ - dir = 1 - }, -/area/overmap_encounter/planetoid/jungle/explored) "qI" = ( /obj/structure/closet, /turf/open/floor/plating{ @@ -2374,20 +2371,48 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) -"qK" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland8" +"qL" = ( +/obj/effect/turf_decal/number/zero{ + pixel_x = -7; + pixel_y = 32 + }, +/obj/effect/turf_decal/number/four{ + pixel_x = 6; + pixel_y = 32 + }, +/obj/structure{ + desc = "A devastating strike weapon of times past. The mountings seem broken now."; + dir = 4; + icon = 'icons/mecha/mecha_equipment.dmi'; + icon_state = "mecha_missilerack_six"; + name = "ancient missile rack"; + pixel_x = -26; + pixel_y = 11 + }, +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"qO" = ( -/obj/structure/railing/corner{ - dir = 8 +"qM" = ( +/obj/machinery/atmospherics/components/binary/pump, +/obj/structure{ + desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; + dir = 8; + icon = 'icons/obj/turrets.dmi'; + icon_state = "syndie_off"; + name = "defunct laser cannon"; + pixel_x = 26 }, -/turf/open/floor/plating/dirt/jungle{ +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"qN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland4" + }, +/area/overmap_encounter/planetoid/jungle/explored) "qP" = ( /obj/structure/rack, /obj/item/ammo_casing/caseless/rocket{ @@ -2410,41 +2435,63 @@ }, /turf/open/floor/vault, /area/ruin/jungle/starport) -"qR" = ( -/obj/effect/decal/cleanable/shreds, -/turf/closed/wall, +"qQ" = ( +/obj/structure/flora/rock, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"qT" = ( -/obj/structure/railing{ - dir = 10 +"qS" = ( +/obj/structure/chair{ + dir = 8 }, -/obj/structure/spacevine/dense, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"qW" = ( +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"qX" = ( +/obj/effect/decal/cleanable/plastic, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/glass, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"qY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/spacevine, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "ra" = ( /obj/item/stack/cable_coil/cut/red, /turf/open/floor/plating{ icon_state = "platingdmg3" }, /area/ruin/jungle/starport) -"rb" = ( -/obj/effect/turf_decal/borderfloor{ - dir = 1 - }, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"rc" = ( -/obj/item/chair, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) "rd" = ( /obj/machinery/mech_bay_recharge_port{ dir = 2 }, /turf/open/floor/vault, /area/ruin/jungle/starport) +"rf" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/junglebush/large, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "rh" = ( /obj/structure/spider/stickyweb, /obj/effect/decal/cleanable/dirt/dust, @@ -2452,22 +2499,9 @@ icon_state = "panelscorched" }, /area/ruin/jungle/starport) -"ri" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"rj" = ( -/obj/effect/decal/cleanable/oil, -/obj/structure/railing/corner, -/turf/open/floor/concrete/reinforced{ - light_range = 2 - }, +"rk" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/dirt, /area/overmap_encounter/planetoid/jungle/explored) "rl" = ( /obj/structure/spider/stickyweb, @@ -2479,92 +2513,36 @@ /obj/effect/decal/cleanable/glass, /turf/open/floor/plating, /area/ruin/jungle/starport) -"rn" = ( -/obj/structure/table_frame, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) "ro" = ( /obj/structure/curtain, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, /area/ruin/jungle/starport) -"rq" = ( -/obj/structure/railing/corner{ - dir = 4 +"ru" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 8 }, -/turf/open/floor/plating/dirt/jungle{ +/obj/structure/spacevine, +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"rr" = ( -/obj/item/stack/ore/salvage/scrapmetal/five, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"rt" = ( -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland3" - }, -/area/overmap_encounter/planetoid/jungle/explored) "rv" = ( /obj/structure/chair{ dir = 4 }, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"ry" = ( -/obj/structure/railing, +"rE" = ( /obj/structure/railing{ - dir = 4 - }, -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"rz" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"rA" = ( -/obj/effect/radiation{ - rad_power = 66; - rad_range = 2 - }, -/obj/effect/decal/cleanable/molten_object/large, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland_dug" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"rB" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"rG" = ( -/obj/item/stack/cable_coil/cut/red, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"rH" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 1 + dir = 8 }, -/turf/open/floor/concrete{ +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"rI" = ( -/obj/structure/railing, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/overmap_encounter/planetoid/jungle/explored) "rJ" = ( /obj/structure/chair{ dir = 1 @@ -2572,54 +2550,42 @@ /obj/structure/spider/stickyweb, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"rK" = ( -/obj/structure/frame/machine, -/obj/item/circuitboard/machine/telecomms/receiver, -/turf/open/floor/plating/dirt/jungle/wasteland, -/area/overmap_encounter/planetoid/jungle/explored) -"rM" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland8" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"rV" = ( -/obj/structure/railing{ - dir = 4 +"rO" = ( +/obj/structure{ + desc = "A devastating strike weapon of times past. The mountings seem broken now."; + dir = 4; + icon = 'icons/mecha/mecha_equipment.dmi'; + icon_state = "mecha_missilerack_six"; + name = "ancient missile rack"; + pixel_x = -26; + pixel_y = -5 }, -/obj/structure/spacevine/dense, -/obj/structure/spacevine, -/turf/open/floor/concrete/reinforced{ +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"rX" = ( -/obj/structure/sink/kitchen{ - dir = 8; - pixel_x = 11 - }, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"rY" = ( -/obj/structure/spider/stickyweb, +"rR" = ( +/obj/structure/bed/pod, +/obj/structure/curtain, +/obj/machinery/light/broken/directional/north, +/turf/open/floor/plasteel/grimy, +/area/ruin/jungle/starport) +"rS" = ( /obj/structure/flora/grass/jungle/b, +/obj/structure/flora/junglebush, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"rZ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, +"rT" = ( +/obj/structure/mecha_wreckage/ripley/firefighter, +/turf/open/floor/vault, /area/overmap_encounter/planetoid/jungle/explored) -"sc" = ( -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, -/turf/open/floor/concrete{ - light_range = 2 - }, +"sb" = ( +/obj/structure/chair, +/obj/effect/decal/cleanable/shreds, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) "sd" = ( /obj/structure/table/reinforced, @@ -2630,271 +2596,242 @@ /obj/structure/closet, /turf/open/floor/wood, /area/ruin/jungle/starport) -"si" = ( -/obj/structure/railing{ - dir = 2 - }, -/obj/effect/turf_decal/industrial/warning{ +"sf" = ( +/obj/effect/turf_decal/industrial/stand_clear{ dir = 8 }, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +/obj/structure/railing/corner, +/obj/structure/railing/corner{ + dir = 8 }, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"sr" = ( -/obj/effect/turf_decal/weather/dirt, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"st" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating/dirt/jungle{ +"sg" = ( +/obj/structure/flora/tree/jungle, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"su" = ( -/obj/structure/railing{ - dir = 2 +"sh" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland3" }, -/obj/structure/spacevine, +/area/overmap_encounter/planetoid/jungle/explored) +"sj" = ( +/obj/structure/rack, +/obj/item/mecha_parts/mecha_equipment/extinguisher, +/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp, +/turf/open/floor/vault, +/area/overmap_encounter/planetoid/jungle/explored) +"sk" = ( +/obj/structure/spacevine/dense, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"sv" = ( -/obj/effect/decal/cleanable/shreds, -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle{ +"sl" = ( +/obj/structure/spider/stickyweb, +/obj/machinery/light/broken/directional/south, +/mob/living/simple_animal/hostile/poison/giant_spider/nurse, +/turf/open/floor/plasteel, +/area/ruin/jungle/starport) +"sm" = ( +/obj/structure/cable{ + icon_state = "5-10" + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"sy" = ( -/obj/structure/railing, -/obj/structure/railing{ +"sn" = ( +/obj/structure/railing/corner{ dir = 8 }, -/turf/open/floor/plating/dirt/jungle{ +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"sC" = ( -/obj/structure/cable{ - icon_state = "4-8" +"sp" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine, +/turf/open/floor/concrete/reinforced{ + light_range = 2 }, -/obj/structure/cable{ - icon_state = "4-8" +/area/overmap_encounter/planetoid/jungle/explored) +"sz" = ( +/obj/effect/radiation{ + rad_power = 66; + rad_range = 2 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 +/obj/effect/decal/cleanable/molten_object, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland_dug" }, -/turf/open/floor/concrete/reinforced{ +/area/overmap_encounter/planetoid/jungle/explored) +"sA" = ( +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland3" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"sB" = ( +/obj/effect/decal/remains/human, +/obj/item/clothing/suit/fire/atmos, +/obj/item/clothing/mask/gas/atmos, +/obj/item/clothing/head/hardhat/atmos, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"sD" = ( +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"sE" = ( +/obj/structure/spider/stickyweb, +/mob/living/simple_animal/hostile/poison/giant_spider/tarantula, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) "sF" = ( /obj/structure/closet/wardrobe/black, /turf/open/floor/plating{ icon_state = "platingdmg1" }, /area/ruin/jungle/starport) +"sH" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "sK" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/donkpockets, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"sL" = ( -/obj/structure/door_assembly, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"sM" = ( -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/plating/dirt, -/area/overmap_encounter/planetoid/jungle/explored) -"sP" = ( -/obj/structure/flora/tree/jungle{ - icon_state = "tree8" +"sN" = ( +/obj/structure/closet/emcloset/anchored, +/obj/structure/railing{ + dir = 10 }, -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/grass/jungle{ +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"sQ" = ( -/obj/structure/railing{ - dir = 4 +"sS" = ( +/obj/machinery/telecomms/broadcaster, +/turf/open/floor/mineral/plastitanium{ + icon_state = "plastitanium_dam2" }, -/obj/effect/turf_decal/borderfloor{ - dir = 5 +/area/overmap_encounter/planetoid/jungle/explored) +"tb" = ( +/obj/structure/table/reinforced, +/obj/item/binoculars, +/obj/item/pen/fountain, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/jungle/starport/tower) +"td" = ( +/obj/structure/window/plasma/reinforced{ + dir = 4 }, +/obj/machinery/suit_storage_unit/open, /turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"sT" = ( -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"sU" = ( -/obj/structure/flora/rock, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland2" +"te" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/stairs/medium{ + dir = 4 }, /area/overmap_encounter/planetoid/jungle/explored) -"sW" = ( -/obj/structure/sign/syndicate{ - pixel_x = -32 - }, +"tj" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"sX" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 +"tm" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/flora/rock, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland9" }, /area/overmap_encounter/planetoid/jungle/explored) -"sY" = ( -/obj/structure/girder/displaced, -/turf/open/floor/plating{ - icon_state = "platingdmg2" +"tn" = ( +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland7" }, /area/overmap_encounter/planetoid/jungle/explored) -"tb" = ( -/obj/structure/table/reinforced, -/obj/item/binoculars, -/obj/item/pen/fountain, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/jungle/starport/tower) -"tc" = ( -/obj/machinery/atmospherics/components/binary/pump, -/obj/structure{ - desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; - dir = 4; - icon = 'icons/obj/turrets.dmi'; - icon_state = "syndie_off"; - name = "defunct laser cannon"; - pixel_x = -26 - }, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"tf" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/spacevine, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"tg" = ( -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/concrete/reinforced{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"th" = ( -/obj/structure/railing{ - dir = 6 - }, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"tk" = ( -/obj/structure/rack, -/obj/item/mecha_parts/mecha_equipment/extinguisher, -/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp, -/turf/open/floor/vault, -/area/overmap_encounter/planetoid/jungle/explored) "to" = ( /obj/structure/chair/comfy/brown, /turf/open/floor/wood, /area/ruin/jungle/starport) -"tr" = ( -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/glass, -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"tt" = ( -/obj/structure/cable{ - icon_state = "6-8" - }, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +"tp" = ( +/obj/structure/railing, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"tv" = ( -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland1" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"tx" = ( -/obj/structure/flora/rock/pile, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland1" +"ts" = ( +/obj/structure/railing{ + dir = 4 }, -/area/overmap_encounter/planetoid/jungle/explored) -"tz" = ( -/obj/structure/spider/stickyweb, +/obj/structure/spacevine, /turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"tA" = ( -/obj/effect/decal/cleanable/insectguts, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"tw" = ( +/obj/effect/decal/cleanable/ash, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland2" }, /area/overmap_encounter/planetoid/jungle/explored) -"tB" = ( +"ty" = ( /obj/structure/spacevine, /obj/effect/turf_decal/weather/dirt{ - dir = 9 + dir = 6 }, /turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"tC" = ( -/obj/structure/railing/corner, -/obj/structure/spacevine, -/obj/machinery/light/broken/directional/east, -/turf/open/floor/concrete/slab_1{ +"tD" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"tE" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating{ - icon_state = "platingdmg2" +"tF" = ( +/obj/structure/cable{ + icon_state = "4-8" }, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"tI" = ( -/obj/structure/spider/stickyweb, -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, -/turf/open/floor/mineral/plastitanium, +"tH" = ( +/obj/structure/cable{ + icon_state = "6-9" + }, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) "tJ" = ( /obj/item/stack/ore/salvage/scrapmetal/five, /turf/open/floor/plasteel, /area/ruin/jungle/starport) -"tL" = ( -/obj/structure/spider/stickyweb, -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, -/turf/open/floor/plasteel, +"tK" = ( +/obj/structure/railing, +/obj/structure/spacevine, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) "tM" = ( /obj/structure/cable{ @@ -2907,90 +2844,77 @@ icon_state = "plastitanium_dam2" }, /area/ruin/jungle/starport) -"tN" = ( -/obj/structure/flora/junglebush, -/obj/structure/flora/junglebush/b, -/obj/structure/flora/junglebush/large, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +"tP" = ( +/obj/structure/rack, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/turf/open/floor/plasteel/dark, +/area/overmap_encounter/planetoid/jungle/explored) +"tT" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 }, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"tO" = ( +"tV" = ( /obj/structure/spacevine, /turf/open/floor/plating{ - icon_state = "platingdmg2" + icon_state = "panelscorched" }, /area/overmap_encounter/planetoid/jungle/explored) -"tQ" = ( -/obj/machinery/atmospherics/components/binary/valve{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, +"ua" = ( /obj/structure/railing/corner{ - dir = 8 + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-2" +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"tR" = ( -/obj/effect/radiation{ - rad_power = 180; - rad_range = 2 - }, -/obj/effect/decal/cleanable/molten_object/large, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland_dug"; - light_color = "#a0ad20"; - light_range = 3 +"ub" = ( +/obj/structure/railing{ + dir = 6 }, -/area/overmap_encounter/planetoid/jungle/explored) -"tW" = ( -/obj/structure/spacevine, -/turf/open/floor/plating/grass/jungle{ +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"ud" = ( +"uf" = ( +/obj/item/stack/cable_coil/cut/red, /obj/structure/spacevine/dense, -/turf/open/floor/concrete/slab_1{ +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"ue" = ( +"um" = ( /obj/effect/turf_decal/weather/dirt{ - dir = 10 - }, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"uh" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/junglebush/large, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"ui" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland9" + dir = 9 }, -/area/overmap_encounter/planetoid/jungle/explored) -"uk" = ( -/obj/structure/spacevine/dense, /obj/effect/turf_decal/weather/dirt{ dir = 5 }, /turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"uq" = ( -/obj/structure/spider/stickyweb, -/obj/structure/spider/cocoon, -/turf/open/floor/plating{ - icon_state = "panelscorched" +"un" = ( +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 4 + }, +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) "ur" = ( @@ -3010,6 +2934,14 @@ /obj/machinery/atmospherics/components/binary/pump, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/plasma) +"uy" = ( +/obj/structure/flora/tree/jungle/small{ + icon_state = "tree3" + }, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "uz" = ( /obj/structure/window/plasma/reinforced{ dir = 8 @@ -3017,19 +2949,6 @@ /obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/plasma) -"uA" = ( -/obj/structure/railing, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"uB" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 4 - }, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) "uC" = ( /obj/structure/spider/stickyweb, /obj/structure/spacevine, @@ -3037,44 +2956,65 @@ icon_state = "platingdmg3" }, /area/ruin/jungle/starport) -"uD" = ( -/obj/structure/spacevine/dense, -/obj/effect/turf_decal/weather/dirt, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"uJ" = ( +"uE" = ( /obj/structure/railing{ dir = 10 }, -/turf/open/floor/plating, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"uL" = ( -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland5" +"uK" = ( +/obj/structure/chair{ + dir = 4 }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"uN" = ( -/obj/structure/spacevine/dense, -/obj/structure/flora/grass/jungle, -/obj/structure/flora/grass/jungle, -/turf/open/floor/plating/grass/jungle{ +"uO" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"uP" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/glass, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/overmap_encounter/planetoid/jungle/explored) "uQ" = ( /obj/structure/cable, /obj/structure/spider/stickyweb, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) "uR" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/overmap_encounter/planetoid/jungle/explored) -"uT" = ( -/obj/machinery/shower{ - dir = 4; - desc = "An old shower. It looks rusted." - }, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"uS" = ( +/obj/structure/spider/stickyweb, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"uT" = ( +/obj/machinery/shower{ + dir = 4; + desc = "An old shower. It looks rusted." + }, /obj/structure/mirror{ pixel_y = 30 }, @@ -3082,111 +3022,91 @@ /obj/machinery/light/floor, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"uW" = ( +"uU" = ( +/obj/structure/spacevine/dense, /obj/structure/spider/stickyweb, -/obj/structure/spider/cocoon{ - icon_state = "cocoon3" +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"uY" = ( +"vc" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/structure/spacevine, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, /turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"vf" = ( -/obj/structure/flora/tree/jungle, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, +"vd" = ( +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel/stairs/medium, /area/overmap_encounter/planetoid/jungle/explored) -"vi" = ( +"ve" = ( /obj/structure/railing{ - dir = 8 + dir = 1 }, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +/turf/open/floor/plasteel/stairs{ + dir = 8 }, /area/overmap_encounter/planetoid/jungle/explored) -"vj" = ( -/obj/structure/frame/machine, -/turf/open/floor/plating/dirt/jungle/wasteland, -/area/overmap_encounter/planetoid/jungle/explored) -"vk" = ( -/obj/effect/decal/cleanable/ash, +"vg" = ( +/obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"vm" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 1 +"vl" = ( +/obj/structure/railing/corner{ + dir = 8 }, -/turf/open/water/jungle, +/obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt, /area/overmap_encounter/planetoid/jungle/explored) -"vo" = ( -/obj/structure/spacevine, -/obj/structure/spacevine, -/turf/open/floor/concrete{ +"vn" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"vp" = ( -/obj/effect/turf_decal/industrial/warning/corner{ +"vr" = ( +/obj/structure/chair/comfy/shuttle{ + name = "Grav Couch"; dir = 8 }, -/turf/open/floor/concrete{ - light_range = 2 - }, +/turf/open/floor/mineral/plastitanium, /area/overmap_encounter/planetoid/jungle/explored) -"vq" = ( -/obj/structure/flora/rock/pile, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland7" +"vs" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 1 }, -/area/overmap_encounter/planetoid/jungle/explored) -"vt" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland4" +/turf/open/floor/concrete{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"vu" = ( -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" - }, -/obj/item/stack/cable_coil/cut/red, -/obj/effect/decal/cleanable/glass, +"vv" = ( /obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"vw" = ( +"vx" = ( /obj/structure/spider/stickyweb, -/turf/open/floor/mineral/plastitanium{ - icon_state = "plastitanium_dam5" - }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"vz" = ( -/obj/effect/decal/cleanable/ash/large, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland2" - }, +"vA" = ( +/turf/open/floor/plating/dirt, /area/overmap_encounter/planetoid/jungle/explored) -"vB" = ( -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, -/obj/structure{ - desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; - dir = 8; - icon = 'icons/obj/turrets.dmi'; - icon_state = "syndie_off"; - name = "defunct laser cannon"; - pixel_x = 26 - }, -/turf/open/floor/concrete/slab_1{ +"vC" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -3199,54 +3119,48 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/plasma) -"vG" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/structure/spacevine/dense, -/turf/open/floor/concrete/slab_1{ +"vE" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"vK" = ( -/obj/structure/girder/displaced, -/turf/open/floor/plating{ - icon_state = "panelscorched" +"vH" = ( +/obj/structure/spider/stickyweb, +/obj/structure/cable{ + icon_state = "1-2" }, +/turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"vL" = ( +"vJ" = ( /obj/structure/spacevine, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"vM" = ( -/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/spacevine/dense, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"vQ" = ( -/obj/effect/turf_decal/arrows{ - dir = 8 +"vK" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, +/area/ruin/jungle/starport) +"vT" = ( /obj/structure/spacevine/dense, -/turf/open/floor/concrete/slab_1{ +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"vR" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/spacevine, -/turf/open/floor/concrete/reinforced{ +"vU" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -3255,6 +3169,26 @@ /obj/effect/decal/remains/human, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) +"vW" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel/stairs/left, +/area/overmap_encounter/planetoid/jungle/explored) +"vX" = ( +/obj/structure/railing, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"vZ" = ( +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "wa" = ( /obj/structure/chair{ dir = 8 @@ -3262,14 +3196,6 @@ /obj/structure/spider/stickyweb, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"wb" = ( -/obj/effect/decal/cleanable/shreds, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/ash, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) "wc" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3285,103 +3211,104 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/plasma) -"we" = ( -/obj/structure/chair{ - dir = 8 +"wf" = ( +/obj/item/rack_parts, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"wo" = ( +/obj/structure/railing, +/turf/open/floor/plating{ + icon_state = "platingdmg2" }, -/obj/structure/spider/stickyweb, -/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"wg" = ( +"wr" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/spacevine, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"wi" = ( -/obj/effect/turf_decal/atmos/plasma, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +"wt" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 }, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"wk" = ( -/obj/structure/chair{ - dir = 4 +/obj/effect/turf_decal/weather/dirt{ + dir = 9 }, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/rust, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"wl" = ( -/obj/structure/spacevine, -/turf/closed/wall/concrete/reinforced, +"wv" = ( +/obj/structure/rack, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, +/obj/item/reagent_containers/food/snacks/canned/beans, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"wm" = ( -/obj/structure/flora/rock, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"ww" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"ws" = ( -/obj/item/stack/sheet/mineral/plastitanium, -/obj/item/stack/sheet/mineral/plastitanium, -/mob/living/simple_animal/hostile/poison/giant_spider/tarantula, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"wx" = ( +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland3" }, /area/overmap_encounter/planetoid/jungle/explored) "wy" = ( /obj/structure/spider/stickyweb, /turf/open/floor/wood, /area/ruin/jungle/starport) -"wA" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/spider/stickyweb, -/turf/open/floor/concrete/reinforced{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) "wB" = ( /obj/structure/spider/stickyweb, /turf/open/floor/plasteel, /area/ruin/jungle/starport) -"wE" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/structure/spider/stickyweb, -/obj/machinery/light/broken/directional/west, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"wG" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/stairs/medium{ - dir = 4 +"wC" = ( +/obj/structure/flora/tree/jungle/small, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) "wH" = ( /obj/structure/girder/displaced, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"wJ" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, +"wI" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"wK" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave, -/turf/open/floor/plasteel/dark, +"wM" = ( +/obj/structure/spider/stickyweb, +/obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"wN" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +"wO" = ( +/obj/structure{ + desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; + dir = 8; + icon = 'icons/obj/turrets.dmi'; + icon_state = "syndie_off"; + name = "defunct laser cannon"; + pixel_x = 26 }, -/obj/structure/spacevine, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, /turf/open/floor/concrete/slab_1{ light_range = 2 }, @@ -3392,62 +3319,31 @@ /obj/item/mecha_parts/mecha_equipment/hydraulic_clamp, /turf/closed/wall/r_wall/syndicate/nodiagonal, /area/ruin/jungle/starport) -"wQ" = ( -/obj/structure/spacevine, -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"wT" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ +"wR" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/turf/open/floor/plasteel/stairs/medium{ - dir = 8 +/obj/structure/spacevine, +/obj/structure/railing, +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"wW" = ( -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" - }, -/obj/structure/rack, -/turf/open/floor/vault, +"wY" = ( +/obj/structure/frame/machine, +/turf/open/floor/plating/dirt/jungle/wasteland, /area/overmap_encounter/planetoid/jungle/explored) -"wX" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/structure/flora/rock/pile, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland1" +"xd" = ( +/obj/effect/decal/cleanable/oil, +/obj/effect/turf_decal/arrows{ + dir = 8 }, -/area/overmap_encounter/planetoid/jungle/explored) -"wZ" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland2" +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"xb" = ( -/obj/structure/spacevine, +"xf" = ( +/obj/structure/railing, /obj/structure/spacevine, /turf/open/floor/plating/dirt/jungle{ light_range = 2 @@ -3460,36 +3356,17 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) -"xi" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 5 - }, -/obj/effect/turf_decal/weather/dirt{ - dir = 9 - }, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"xj" = ( -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland5" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"xl" = ( -/obj/structure/chair{ - dir = 1 +"xh" = ( +/obj/structure/cable{ + icon_state = "4-9" }, +/obj/structure/spacevine, /obj/structure/spider/stickyweb, -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"xm" = ( -/obj/machinery/light/broken/directional/west, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"xn" = ( -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/plasteel, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) "xo" = ( /obj/structure/spider/stickyweb, @@ -3506,17 +3383,13 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/plasma) -"xr" = ( -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland9" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"xt" = ( -/obj/structure/spacevine, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"xs" = ( +/obj/item/radio/intercom/directional/north{ + pixel_y = 24 }, -/area/overmap_encounter/planetoid/jungle/explored) +/obj/item/stack/sheet/metal, +/turf/open/floor/plasteel, +/area/ruin/jungle/starport) "xu" = ( /obj/structure/cable{ icon_state = "0-4" @@ -3525,40 +3398,119 @@ icon_state = "wood-broken4" }, /area/ruin/jungle/starport) -"xA" = ( -/obj/effect/turf_decal/atmos/plasma, -/obj/structure/spacevine, +"xw" = ( +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) +"xz" = ( +/obj/structure/spider/stickyweb, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel, +/area/ruin/jungle/starport) +"xC" = ( +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"xD" = ( +/obj/structure/spider/stickyweb, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "xE" = ( /obj/structure/bed/pod, /obj/structure/curtain, /obj/item/stack/sheet/metal, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"xI" = ( +"xF" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"xG" = ( +/obj/effect/decal/cleanable/molten_object, +/obj/effect/radiation{ + rad_power = 66; + rad_range = 2 + }, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland_dug"; + light_color = "#a0ad20"; + light_range = 3 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"xH" = ( +/obj/structure/sink/kitchen{ + dir = 8; + pixel_x = 11 + }, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"xL" = ( +/obj/structure/railing/corner, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"xM" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/structure/spider/stickyweb, +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"xO" = ( /obj/structure/spacevine, /obj/structure/spider/stickyweb, -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"xJ" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/rust, +"xP" = ( +/obj/machinery/atmospherics/components/binary/pump, +/obj/structure{ + desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; + dir = 4; + icon = 'icons/obj/turrets.dmi'; + icon_state = "syndie_off"; + name = "defunct laser cannon"; + pixel_x = -26 + }, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"xQ" = ( -/obj/effect/decal/cleanable/shreds, +"xS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/stairs/medium, +/area/overmap_encounter/planetoid/jungle/explored) +"xT" = ( +/obj/structure/table/reinforced, /obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/overmap_encounter/planetoid/jungle/explored) +"xU" = ( +/obj/effect/decal/cleanable/ash, +/obj/structure/spacevine, /turf/open/floor/plating{ - icon_state = "panelscorched" + icon_state = "platingdmg3" }, /area/overmap_encounter/planetoid/jungle/explored) -"xZ" = ( -/obj/structure/flora/grass/jungle/b, -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/grass/jungle{ +"xX" = ( +/obj/structure/railing, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -3569,175 +3521,127 @@ }, /turf/open/floor/plating, /area/ruin/jungle/starport/tower) -"yb" = ( +"yf" = ( +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"ym" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/mineral/plastitanium, +/area/overmap_encounter/planetoid/jungle/explored) +"yr" = ( +/obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable{ - icon_state = "4-9" + icon_state = "1-2" }, -/obj/structure/spacevine, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"yc" = ( -/obj/structure/spider/stickyweb, -/obj/structure/spider/cocoon, +"ys" = ( /obj/effect/decal/cleanable/ash, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"yd" = ( -/obj/effect/decal/cleanable/vomit/old, -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/blood/old{ - icon_state = "floor5-old" - }, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"yh" = ( -/obj/item/stack/cable_coil/cut/red, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"yi" = ( -/obj/structure/spider/stickyweb, -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +"yu" = ( +/obj/structure/girder/displaced, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"yj" = ( -/obj/item/stack/ore/salvage/scrapmetal/five, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/jungle{ +"yx" = ( +/obj/structure/spacevine, +/obj/structure/flora/rock/jungle, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"yp" = ( -/turf/open/floor/plating/dirt, -/area/overmap_encounter/planetoid/jungle/explored) -"yq" = ( -/obj/structure/chair, -/obj/item/stack/sheet/metal, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"yt" = ( -/obj/effect/turf_decal/weather/dirt, -/obj/effect/turf_decal/weather/dirt{ - dir = 1 - }, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"yv" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"yw" = ( -/obj/item/chair, -/obj/machinery/light/directional/west, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"yx" = ( -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/vault, -/area/overmap_encounter/planetoid/jungle/explored) "yA" = ( /obj/structure/spider/stickyweb, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/jungle/starport) -"yD" = ( -/obj/item/stack/sheet/mineral/plastitanium, -/obj/item/stack/ore/salvage/scrapmetal/five, -/turf/open/water/jungle, +"yI" = ( +/obj/item/chair, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"yH" = ( -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +"yO" = ( +/obj/effect/decal/cleanable/molten_object/large, +/obj/effect/radiation{ + rad_power = 180; + rad_range = 3 }, -/area/overmap_encounter/planetoid/jungle/explored) -"yJ" = ( -/obj/structure/chair{ - dir = 8 +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland_dug"; + light_color = "#a0ad20"; + light_range = 3 }, -/obj/effect/decal/cleanable/insectguts, -/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"yM" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/spacevine, +"yP" = ( +/obj/structure/flora/rock, /turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland1" + icon_state = "wasteland9" }, /area/overmap_encounter/planetoid/jungle/explored) "yQ" = ( /obj/structure/table/rolling, /turf/open/floor/vault, /area/ruin/jungle/starport) -"yY" = ( -/obj/structure/flora/rock, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland4" +"yU" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/concrete{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"zc" = ( -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/dark, +"yV" = ( +/obj/structure/spacevine/dense, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"yW" = ( +/obj/effect/turf_decal/atmos/plasma, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"ze" = ( +"za" = ( /obj/structure/railing{ - dir = 10 + dir = 5 }, -/obj/structure/spacevine, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"zi" = ( -/obj/structure{ - desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; - dir = 4; - icon = 'icons/obj/turrets.dmi'; - icon_state = "syndie_off"; - name = "defunct laser cannon"; - pixel_x = -26 - }, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"zd" = ( +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland5" }, /area/overmap_encounter/planetoid/jungle/explored) -"zk" = ( +"zg" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/glass/plasma, -/turf/open/floor/plating/dirt/jungle{ +/obj/structure/spacevine/dense, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"zn" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 1 +"zj" = ( +/obj/structure/chair{ + dir = 4 }, -/obj/effect/turf_decal/weather/dirt, -/turf/open/water/jungle, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"zo" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/glass, -/obj/structure/spider/stickyweb, -/obj/item/stack/ore/salvage/scrapmetal/five, -/turf/open/floor/plating{ - icon_state = "platingdmg2" +"zl" = ( +/obj/structure/spacevine, +/obj/structure/spacevine, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"zm" = ( +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) "zr" = ( /obj/machinery/shower{ dir = 4; @@ -3749,6 +3653,12 @@ /obj/machinery/light/floor, /turf/open/floor/plasteel/patterned, /area/ruin/jungle/starport) +"zt" = ( +/obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "zu" = ( /obj/machinery/door/airlock{ dir = 4 @@ -3760,29 +3670,41 @@ /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/jungle/starport) -"zw" = ( -/obj/structure/spacevine, -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"zv" = ( +/obj/effect/decal/cleanable/molten_object, +/obj/effect/radiation{ + rad_power = 66; + rad_range = 2 + }, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland_dug" }, /area/overmap_encounter/planetoid/jungle/explored) -"zG" = ( -/turf/open/floor/plating/rust, +"zB" = ( +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"zI" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/spacevine, +"zD" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"zJ" = ( -/obj/structure/railing{ - dir = 4 +"zF" = ( +/obj/effect/decal/cleanable/shreds, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, +/area/overmap_encounter/planetoid/jungle/explored) +"zG" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"zH" = ( /obj/structure/spider/stickyweb, /turf/open/floor/concrete/reinforced{ light_range = 2 @@ -3800,94 +3722,77 @@ }, /turf/open/floor/plating, /area/ruin/jungle/starport) -"zT" = ( -/obj/structure/spacevine, -/turf/open/floor/plating, +"zL" = ( +/obj/structure/frame/machine, +/turf/open/floor/vault, +/area/overmap_encounter/planetoid/jungle/explored) +"zM" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"zN" = ( +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"zQ" = ( +/turf/open/floor/mineral/plastitanium, /area/overmap_encounter/planetoid/jungle/explored) "zV" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/broken/directional/north, /turf/open/floor/plating, /area/ruin/jungle/starport) -"zZ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating{ - icon_state = "panelscorched" +"Aa" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/concrete/reinforced{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) "Ab" = ( /obj/effect/decal/cleanable/glass, /turf/open/floor/plasteel, /area/ruin/jungle/starport) -"Ae" = ( -/obj/structure/girder/displaced, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"Af" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/glass, -/obj/structure/spider/stickyweb, -/turf/open/floor/mineral/plastitanium{ - icon_state = "plastitanium_dam2" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Ai" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/mineral/plastitanium, -/area/overmap_encounter/planetoid/jungle/explored) -"Aj" = ( -/obj/structure/railing, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/concrete/reinforced{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Ak" = ( -/turf/open/floor/plasteel/stairs{ - dir = 8 +"Ac" = ( +/turf/open/floor/plating{ + icon_state = "panelscorched" }, /area/overmap_encounter/planetoid/jungle/explored) -"Am" = ( -/obj/structure/railing{ - dir = 1 +"Ah" = ( +/obj/structure/flora/tree/jungle/small{ + icon_state = "tree1" }, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"Aq" = ( -/obj/machinery/telecomms/broadcaster, -/turf/open/floor/mineral/plastitanium{ - icon_state = "plastitanium_dam2" +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"As" = ( -/obj/structure/sign/syndicate{ - anchored = 0 - }, -/turf/open/floor/concrete/slab_1{ +"Al" = ( +/obj/structure/spacevine, +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"At" = ( -/obj/structure/railing, -/obj/structure/spacevine, +"An" = ( /obj/structure/railing{ dir = 4 }, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, +/turf/open/floor/plasteel/stairs/right, /area/overmap_encounter/planetoid/jungle/explored) -"Av" = ( -/obj/effect/decal/cleanable/ash/large, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland5" +"Ap" = ( +/obj/structure/spacevine, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Ax" = ( +"Aw" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-8" + }, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 }, -/turf/open/floor/mineral/plastitanium, /area/overmap_encounter/planetoid/jungle/explored) "Az" = ( /obj/structure/cable{ @@ -3898,60 +3803,83 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/plasma) -"AB" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, +"AA" = ( +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/shreds, /turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"AD" = ( -/obj/effect/decal/cleanable/molten_object, +"AE" = ( +/obj/structure/spacevine/dense, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/radiation{ - rad_power = 66; - rad_range = 2 - }, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland2" +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"AF" = ( -/obj/structure/spacevine/dense, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/grass/jungle{ +"AK" = ( +/obj/structure/spacevine, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"AG" = ( -/obj/machinery/autolathe, -/turf/open/floor/vault, +"AL" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/mineral/plastitanium{ + icon_state = "plastitanium_dam5" + }, /area/overmap_encounter/planetoid/jungle/explored) -"AH" = ( -/obj/structure/rack, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/item/reagent_containers/food/snacks/canned/beans, -/obj/item/reagent_containers/food/snacks/canned/beans, -/turf/open/floor/plating/rust, +"AM" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel/stairs/old, /area/overmap_encounter/planetoid/jungle/explored) -"AO" = ( -/turf/open/floor/plasteel/stairs{ - dir = 4 +"AP" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 }, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) "AQ" = ( /obj/structure/spider/stickyweb, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"AR" = ( +"AS" = ( +/obj/structure/sign/syndicate{ + anchored = 0 + }, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"AT" = ( /obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"AU" = ( +/obj/effect/radiation{ + rad_power = 66; + rad_range = 2 + }, +/obj/effect/decal/cleanable/molten_object/large, /turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland7" + icon_state = "wasteland_dug"; + light_color = "#a0ad20"; + light_range = 3 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"AV" = ( +/obj/structure/spacevine, +/obj/structure/flora/rock/jungle, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) "AX" = ( @@ -3961,137 +3889,245 @@ }, /turf/open/floor/plasteel, /area/ruin/jungle/starport) +"AY" = ( +/obj/structure/spider/stickyweb, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "AZ" = ( /obj/structure/closet, /obj/structure/spider/stickyweb, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, /area/ruin/jungle/starport) -"Bg" = ( -/obj/structure/railing{ - dir = 10 +"Ba" = ( +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 8 }, -/turf/open/floor/plating/dirt/jungle{ +/obj/structure/spacevine/dense, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Bi" = ( +"Bb" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "6-8" + }, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"Bk" = ( +"Bc" = ( /obj/structure/spacevine, -/turf/open/floor/concrete/reinforced{ +/obj/machinery/light/directional/west, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Bm" = ( -/obj/structure/spacevine, -/obj/effect/decal/cleanable/dirt/dust, +"Bd" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Be" = ( +/obj/item/stack/sheet/mineral/plastitanium, +/obj/item/stack/sheet/mineral/plastitanium, +/mob/living/simple_animal/hostile/poison/giant_spider/tarantula, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Bp" = ( -/obj/structure/railing, -/obj/structure/spacevine, -/turf/open/floor/concrete/slab_1{ +"Bf" = ( +/obj/effect/decal/remains/human, +/obj/machinery/light/broken/directional/east, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"Bo" = ( +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Bs" = ( +"Bq" = ( +/obj/effect/decal/cleanable/ash, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland5" +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"Bu" = ( +/obj/item/stack/ore/salvage/scrapmetal/five, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Bt" = ( -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland9" +"Bw" = ( +/obj/structure/closet/firecloset/full{ + anchored = 1 + }, +/obj/item/extinguisher/advanced, +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/concrete/reinforced{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) "Bx" = ( /turf/closed/wall/rust, /area/ruin/jungle/starport) -"By" = ( -/obj/structure/railing, -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/plating/dirt/jungle{ +"BA" = ( +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Bz" = ( -/obj/structure/flora/rock, -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"BB" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland4" }, /area/overmap_encounter/planetoid/jungle/explored) -"BC" = ( -/obj/item/rack_parts, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) "BD" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/jungle/starport/tower) -"BF" = ( -/obj/structure/closet/emcloset/anchored, -/obj/effect/turf_decal/borderfloor{ - dir = 1 +"BE" = ( +/obj/structure/spider/stickyweb, +/obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"BH" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 6 +"BG" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, -/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) +"BJ" = ( +/obj/structure/table, +/obj/item/radio/intercom/directional/north{ + pixel_y = 24 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/jungle/starport) "BK" = ( /obj/structure/bed, /obj/structure/curtain/cloth/fancy, /turf/open/floor/wood, /area/ruin/jungle/starport) +"BL" = ( +/obj/structure/flora/tree/jungle{ + icon_state = "tree8" + }, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "BM" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/jungle/starport/plasma) -"BN" = ( +"BT" = ( /obj/item/stack/sheet/mineral/plastitanium, /obj/item/stack/sheet/mineral/plastitanium, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"BU" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/spacevine/dense, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"BQ" = ( -/turf/open/floor/plasteel/stairs/right{ - dir = 4 +"BV" = ( +/obj/structure/girder, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"BX" = ( +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"BR" = ( +"Cb" = ( +/obj/effect/decal/cleanable/shreds, /obj/effect/decal/cleanable/dirt/dust, +/obj/structure/spacevine/dense, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"Cc" = ( +/obj/structure/flora/tree/jungle{ + icon_state = "tree9" + }, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "Cd" = ( /obj/machinery/door/airlock/glass, /turf/open/floor/plating{ icon_state = "platingdmg3" }, /area/ruin/jungle/starport) -"Ce" = ( +"Cg" = ( +/obj/structure/flora/tree/jungle/small{ + icon_state = "tree4" + }, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Cj" = ( /obj/structure/spacevine/dense, +/obj/structure/flora/grass/jungle, +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Ck" = ( /obj/effect/turf_decal/weather/dirt{ - dir = 6 + dir = 10 }, /turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) +"Cl" = ( +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/glass, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"Cm" = ( +/obj/item/stack/cable_coil/cut/red, +/obj/effect/decal/cleanable/glass, +/obj/structure/girder/displaced, +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/mineral/plastitanium{ + icon_state = "plastitanium_dam2" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Cn" = ( +/obj/effect/decal/cleanable/oil, +/obj/structure/spacevine, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "Co" = ( /obj/structure/closet, /obj/item/clothing/under/syndicate/aclfgrunt, @@ -4102,34 +4138,55 @@ icon_state = "platingdmg2" }, /area/ruin/jungle/starport) -"Cp" = ( -/obj/structure/railing/corner{ - dir = 4 +"Cq" = ( +/obj/structure/railing{ + dir = 10 }, -/obj/structure/spider/stickyweb, +/obj/structure/spacevine/dense, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Cu" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg3" +"Cx" = ( +/obj/structure/table{ + name = "officer's table"; + desc = "A square piece of metal standing on four metal legs. It can not move. This one feels more important than the others" }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"Cv" = ( -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 4 +"CA" = ( +/obj/structure/railing, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"CB" = ( +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/concrete/reinforced{ + light_range = 2 }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"Cy" = ( +"CC" = ( /obj/effect/decal/cleanable/shreds, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, /area/overmap_encounter/planetoid/jungle/explored) -"Cz" = ( -/obj/effect/decal/cleanable/plastic, -/turf/open/floor/concrete{ +"CD" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"CE" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -4141,18 +4198,31 @@ icon_state = "plastitanium_dam3" }, /area/ruin/jungle/starport) -"CG" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 9 +"CK" = ( +/obj/structure/railing/corner, +/obj/structure/spacevine, +/turf/open/floor/concrete/reinforced{ + light_range = 2 }, -/obj/effect/turf_decal/weather/dirt{ - dir = 5 +/area/overmap_encounter/planetoid/jungle/explored) +"CL" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, -/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"CO" = ( -/obj/structure/flora/junglebush, -/turf/open/floor/plating/grass/jungle{ +"CM" = ( +/obj/effect/decal/cleanable/insectguts, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"CN" = ( +/obj/item/watertank/atmos, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -4163,16 +4233,22 @@ }, /turf/open/floor/plasteel, /area/ruin/jungle/starport) +"CQ" = ( +/obj/structure/spacevine, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "CR" = ( /obj/effect/decal/cleanable/blood/drip, /obj/machinery/light/directional/north, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) -"CS" = ( -/obj/effect/decal/remains/human, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating{ - icon_state = "panelscorched" +"CU" = ( +/obj/structure/spacevine, +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) "CV" = ( @@ -4183,65 +4259,17 @@ icon_state = "wood-broken4" }, /area/ruin/jungle/starport) -"CW" = ( -/obj/item/radio/intercom/directional/south, -/obj/machinery/light/broken/directional/south, -/turf/open/floor/plating/rust, -/area/ruin/jungle/starport) -"CZ" = ( -/obj/structure/spacevine, -/obj/effect/turf_decal/weather/dirt, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"Da" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"De" = ( -/obj/structure/flora/rock, -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland1" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Df" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/ash, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"Dg" = ( -/obj/structure/frame/computer{ - dir = 4 +"Dl" = ( +/obj/structure/railing{ + dir = 10 }, -/turf/open/floor/mineral/plastitanium, -/area/overmap_encounter/planetoid/jungle/explored) -"Dh" = ( -/obj/structure/flora/grass/jungle/b, -/obj/structure/flora/grass/jungle, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +/obj/structure/sign/syndicate{ + pixel_y = 32 }, -/area/overmap_encounter/planetoid/jungle/explored) -"Dj" = ( -/obj/structure/frame/computer, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Dk" = ( -/obj/structure/door_assembly/door_assembly_eng, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) "Dm" = ( /obj/machinery/atmospherics/pipe/manifold/orange{ dir = 8 @@ -4250,21 +4278,6 @@ /obj/structure/spider/cocoon, /turf/open/floor/plating, /area/ruin/jungle/starport) -"Dn" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland7" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Dq" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) "Dr" = ( /obj/effect/turf_decal/industrial/warning{ dir = 8 @@ -4278,36 +4291,25 @@ /obj/item/stack/sheet/metal, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"Dw" = ( -/obj/item/chair, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"Dz" = ( -/obj/structure/railing, +"Dt" = ( +/obj/effect/decal/cleanable/dirt/dust, /obj/structure/spacevine/dense, -/turf/open/floor/concrete/slab_1{ +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"DA" = ( -/obj/structure/flora/tree/jungle/small{ - icon_state = "tree3" +"Dy" = ( +/obj/effect/radiation{ + rad_power = 66; + rad_range = 2 }, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +/obj/effect/decal/cleanable/molten_object, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland2" }, /area/overmap_encounter/planetoid/jungle/explored) -"DD" = ( -/obj/structure/railing, -/turf/open/floor/plating/dirt, -/area/overmap_encounter/planetoid/jungle/explored) -"DG" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/railing{ - dir = 1 - }, +"DF" = ( +/obj/effect/decal/cleanable/ash/large, /obj/structure/spacevine, /turf/open/floor/plating/dirt/jungle{ light_range = 2 @@ -4318,50 +4320,27 @@ /obj/structure/spider/stickyweb, /turf/open/floor/plasteel, /area/ruin/jungle/starport) -"DI" = ( -/turf/open/floor/plasteel/stairs, -/area/overmap_encounter/planetoid/jungle/explored) -"DL" = ( -/obj/structure/rack, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/turf/open/floor/plasteel/dark, -/area/overmap_encounter/planetoid/jungle/explored) -"DM" = ( -/obj/structure/railing{ - dir = 8 +"DJ" = ( +/obj/structure/cable{ + icon_state = "6-9" }, /obj/structure/spacevine, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle{ +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"DO" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/cable{ - icon_state = "1-2" +"DK" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland5" }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"DQ" = ( -/obj/structure/spacevine/dense, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, +"DN" = ( +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) "DR" = ( /obj/structure/toilet{ @@ -4370,23 +4349,23 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/plasteel/patterned, /area/ruin/jungle/starport) -"DU" = ( -/obj/structure/flora/junglebush/large, -/turf/open/floor/plating/grass/jungle{ +"DS" = ( +/obj/effect/decal/cleanable/ash, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"DX" = ( -/obj/structure/flora/rock/jungle, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/grass/jungle{ +"DV" = ( +/obj/machinery/light/broken/directional/west, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"DY" = ( -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland3" - }, +"DZ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/ash, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) "Ea" = ( /obj/structure/railing{ @@ -4396,20 +4375,17 @@ /obj/machinery/light/broken/directional/south, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) -"Eb" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/spacevine, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +"Ed" = ( +/obj/structure/flora/rock, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland4" }, /area/overmap_encounter/planetoid/jungle/explored) -"Ef" = ( -/obj/effect/turf_decal/borderfloor/corner{ - dir = 4 +"Ee" = ( +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, -/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) "Eg" = ( /obj/structure/window/plasma/reinforced{ @@ -4418,6 +4394,12 @@ /obj/machinery/portable_atmospherics/canister/toxins, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/plasma) +"Eh" = ( +/obj/machinery/power/shuttle/engine/fueled/plasma{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/overmap_encounter/planetoid/jungle/explored) "Ei" = ( /obj/structure/sink{ pixel_y = 17 @@ -4427,81 +4409,106 @@ }, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"El" = ( -/obj/effect/decal/cleanable/glass, -/obj/structure/spider/stickyweb, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"Em" = ( -/obj/effect/turf_decal/weather/dirt{ +"Ej" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ dir = 4 }, -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"En" = ( -/obj/effect/turf_decal/arrows, -/obj/effect/decal/cleanable/glass, /turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Eq" = ( -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland6" +"Ek" = ( +/obj/structure/flora/tree/jungle{ + icon_state = "tree10" }, -/area/overmap_encounter/planetoid/jungle/explored) -"Eu" = ( -/obj/effect/turf_decal/borderfloor{ - dir = 1 +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, -/obj/structure/railing{ - dir = 4 +/area/overmap_encounter/planetoid/jungle/explored) +"Es" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/junglebush/large, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"ED" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/machinery/light/broken/directional/north, -/turf/open/floor/plasteel, +"Et" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, /area/overmap_encounter/planetoid/jungle/explored) -"EE" = ( -/obj/structure/flora/grass/jungle/b, -/obj/structure/flora/grass/jungle, +"Ev" = ( /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/grass/jungle{ +/obj/structure/cable{ + icon_state = "4-10" + }, +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"EG" = ( -/obj/effect/decal/cleanable/oil, +"Ey" = ( +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; + pixel_x = 10; + pixel_y = 5 + }, +/obj/structure/table/rolling, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; + pixel_x = -10; + pixel_y = 5 + }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; + pixel_x = 2; + pixel_y = 5 + }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; + pixel_x = -6; + pixel_y = 5 + }, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"EH" = ( -/obj/structure/table, -/obj/structure/spacevine, -/turf/open/floor/vault, -/area/ruin/jungle/starport) -"EI" = ( -/obj/effect/decal/cleanable/vomit/old, -/turf/open/floor/plating/dirt/jungle{ +"EA" = ( +/obj/structure/cable{ + icon_state = "1-10" + }, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"EJ" = ( -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland4" +"EB" = ( +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"EK" = ( -/obj/effect/decal/cleanable/glass, -/mob/living/simple_animal/hostile/poison/giant_spider/tarantula, -/turf/open/floor/mineral/plastitanium, -/area/overmap_encounter/planetoid/jungle/explored) +"EH" = ( +/obj/structure/table, +/obj/structure/spacevine, +/turf/open/floor/vault, +/area/ruin/jungle/starport) "EM" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -4516,215 +4523,301 @@ /obj/item/clothing/under/syndicate/combat, /turf/open/floor/plating, /area/ruin/jungle/starport) -"EN" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"EQ" = ( -/obj/structure/spacevine, -/mob/living/simple_animal/hostile/poison/giant_spider/nurse, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"ET" = ( -/obj/effect/decal/cleanable/glass, +"EP" = ( +/obj/structure/rack, /turf/open/floor/vault, /area/overmap_encounter/planetoid/jungle/explored) -"EU" = ( -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 4 - }, -/obj/structure/spacevine/dense, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) "EV" = ( /obj/structure/table, /obj/item/toy/cards/deck/syndicate, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) +"EX" = ( +/turf/open/floor/plasteel/stairs/right, +/area/overmap_encounter/planetoid/jungle/explored) +"EY" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"EZ" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"Fa" = ( +/obj/structure/spacevine, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) "Fb" = ( /obj/machinery/light/directional/north, /obj/machinery/suit_storage_unit/inherit/industrial, /turf/open/floor/vault, /area/ruin/jungle/starport) -"Fc" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" +"Fe" = ( +/obj/structure/railing, +/turf/open/floor/plating{ + icon_state = "platingdmg1" }, -/turf/open/floor/plasteel/stairs{ +/area/overmap_encounter/planetoid/jungle/explored) +"Ff" = ( +/obj/effect/turf_decal/arrows{ dir = 8 }, -/area/overmap_encounter/planetoid/jungle/explored) -"Fg" = ( -/obj/structure/spacevine, -/obj/effect/turf_decal/weather/dirt{ - dir = 6 +/obj/structure/spacevine/dense, +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, -/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"Fk" = ( -/obj/item/stack/sheet/metal, -/obj/item/stack/sheet/metal, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/grass/jungle{ +"Fh" = ( +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Fq" = ( -/obj/structure/rack, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/glass/twenty, -/obj/item/stack/sheet/glass/twenty, -/turf/open/floor/plasteel/dark, +"Fl" = ( +/obj/machinery/atmospherics/pipe/manifold/orange{ + dir = 8 + }, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"Fs" = ( -/obj/structure/spider/stickyweb, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt/jungle{ +"Fm" = ( +/obj/structure/table/rolling, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; + pixel_x = 10; + pixel_y = 5 + }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; + pixel_x = -10; + pixel_y = 5 + }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; + pixel_x = 2; + pixel_y = 5 + }, +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; + pixel_x = -6; + pixel_y = 5 + }, +/turf/open/floor/vault, +/area/overmap_encounter/planetoid/jungle/explored) +"Fn" = ( +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/obj/structure/spacevine, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"Fr" = ( +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland8" + }, +/area/overmap_encounter/planetoid/jungle/explored) "Ft" = ( /obj/machinery/door/poddoor{ id = "jbs3" }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/plasma) -"Fx" = ( -/obj/structure/spider/stickyweb, +"Fu" = ( /obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/glass/plasma, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"FA" = ( -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/mineral/plastitanium{ - icon_state = "plastitanium_dam4" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"FK" = ( -/obj/item/shard, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, +"Fv" = ( +/obj/structure/frame/machine, +/obj/item/circuitboard/machine/telecomms/receiver, +/turf/open/floor/plating/dirt/jungle/wasteland, /area/overmap_encounter/planetoid/jungle/explored) -"FM" = ( -/obj/machinery/light/broken/directional/west, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"Fw" = ( +/obj/structure/railing{ + dir = 6 }, -/area/overmap_encounter/planetoid/jungle/explored) -"FP" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/flora/grass/jungle, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +/obj/structure/railing/corner{ + pixel_x = -23 }, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"FQ" = ( +"Fy" = ( +/obj/effect/decal/cleanable/oil, /obj/structure/spacevine/dense, -/obj/structure/flora/rock/jungle, -/turf/open/floor/plating/grass/jungle{ +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"FY" = ( -/obj/structure/flora/rock, +"Fz" = ( /turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland9" + icon_state = "wasteland2" }, /area/overmap_encounter/planetoid/jungle/explored) -"Gb" = ( -/obj/structure/spacevine, +"FB" = ( /obj/effect/turf_decal/weather/dirt{ - dir = 1 + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 }, /turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"Gc" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 8 +"FG" = ( +/obj/structure/railing{ + dir = 4 }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/jungle/starport) -"Gh" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/spacevine/dense, +/obj/structure/spacevine, +/turf/open/floor/concrete/reinforced{ + light_range = 2 }, -/turf/open/floor/wood, -/area/ruin/jungle/starport) -"Gj" = ( -/obj/structure/railing{ +/area/overmap_encounter/planetoid/jungle/explored) +"FI" = ( +/obj/structure/rack, +/obj/item/storage/box/lights/mixed, +/obj/item/storage/box/lights/mixed, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plasteel/dark, +/area/overmap_encounter/planetoid/jungle/explored) +"FL" = ( +/obj/structure/reagent_dispensers/foamtank, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"FR" = ( +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"FS" = ( +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 4 + }, +/obj/structure/spacevine, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"FU" = ( +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"FX" = ( +/obj/machinery/atmospherics/pipe/manifold/orange{ dir = 8 }, +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/structure/spacevine/dense, -/turf/open/floor/concrete/reinforced{ +/obj/structure/spacevine, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"Ga" = ( +/obj/structure/railing/corner, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Gl" = ( -/obj/effect/turf_decal/industrial/traffic{ +"Gc" = ( +/obj/structure/frame/computer{ + anchored = 1; dir = 8 }, -/turf/open/floor/concrete{ +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/starport) +"Gd" = ( +/obj/effect/turf_decal/box/corners, +/obj/structure/spacevine, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Gm" = ( -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating/rust, +"Ge" = ( +/obj/structure/flora/rock/jungle, +/obj/structure/flora/grass/jungle, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"Gr" = ( -/obj/structure/railing{ - dir = 9 +"Gh" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plating/dirt/jungle{ +/turf/open/floor/wood, +/area/ruin/jungle/starport) +"Gi" = ( +/obj/structure/cable{ + icon_state = "2-9" + }, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Gs" = ( -/obj/effect/decal/remains/human, -/obj/item/clothing/suit/fire/atmos, -/obj/item/clothing/mask/gas/atmos, -/obj/item/clothing/head/hardhat/atmos, -/turf/open/floor/plating{ - icon_state = "platingdmg1" +"Gk" = ( +/obj/structure/spacevine/dense, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 }, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"Gt" = ( -/obj/structure/barricade/wooden/crude, +"Gn" = ( +/obj/structure/flora/tree/jungle{ + icon_state = "tree6" + }, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Go" = ( +/obj/structure/closet/secure_closet/freezer/kitchen, /turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"Gx" = ( -/obj/structure/spacevine/dense, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/jungle{ +"Gp" = ( +/obj/item/stack/sheet/mineral/plastitanium, +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"Gq" = ( +/obj/structure/cable{ + icon_state = "4-9" + }, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Gy" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/junglebush/b, -/obj/structure/flora/grass/jungle, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +"Gu" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating{ + icon_state = "platingdmg2" }, /area/overmap_encounter/planetoid/jungle/explored) -"Gz" = ( -/obj/structure/spacevine/dense, -/turf/open/floor/concrete{ +"Gv" = ( +/turf/open/floor/plating/grass{ + desc = "A patch of grass. It looks well manicured"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -4734,6 +4827,14 @@ icon_state = "wood-broken7" }, /area/ruin/jungle/starport) +"GB" = ( +/obj/effect/decal/cleanable/shreds, +/turf/closed/wall, +/area/overmap_encounter/planetoid/jungle/explored) +"GC" = ( +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) "GD" = ( /obj/machinery/atmospherics/pipe/manifold/orange/visible{ dir = 4 @@ -4743,243 +4844,226 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/plasma) -"GH" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/item/shard, -/turf/open/floor/plasteel/stairs/left, -/area/overmap_encounter/planetoid/jungle/explored) -"GI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "4-10" - }, -/obj/item/stack/ore/salvage/scrapmetal/five, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 +"GE" = ( +/obj/effect/turf_decal/borderfloor{ + dir = 1 }, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"GJ" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 8 - }, -/turf/open/water/jungle, +"GM" = ( +/obj/effect/decal/cleanable/ash, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"GK" = ( +"GO" = ( +/obj/structure/bed/pod, +/obj/structure/curtain, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/grimy, +/area/ruin/jungle/starport) +"GQ" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/spacevine/dense, +/obj/structure/spacevine, /turf/open/floor/plating/dirt/dark{ name = "beaten path"; desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"GL" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/plasteel/stairs{ - dir = 8 +"GR" = ( +/obj/effect/turf_decal/borderfloor{ + dir = 4 }, -/area/overmap_encounter/planetoid/jungle/explored) -"GP" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) "GS" = ( /obj/effect/decal/remains/human, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) -"GT" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/machinery/power/floodlight{ - anchored = 1; - state_open = 1 +"GU" = ( +/obj/structure/spacevine/dense, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, +/area/overmap_encounter/planetoid/jungle/explored) +"GV" = ( +/obj/structure/catwalk/over/plated_catwalk, /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/spider/stickyweb, +/obj/structure/spacevine, /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 4 }, /turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"GX" = ( -/obj/effect/decal/cleanable/oil, -/obj/structure/spacevine/dense, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"Ha" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/jungle/starport/tower) +"Hc" = ( +/obj/structure/railing{ + dir = 1 }, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"GY" = ( +"Hd" = ( /obj/structure/spacevine/dense, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, /turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"GZ" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 +"He" = ( +/obj/structure/flora/rock/jungle, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Hk" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/junglebush/c, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, +/area/overmap_encounter/planetoid/jungle/explored) +"Hm" = ( /obj/effect/decal/cleanable/oil, -/turf/open/floor/concrete/slab_1{ +/obj/structure/railing/corner, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Ha" = ( -/obj/structure/chair/office{ - dir = 4 +"Hs" = ( +/obj/structure/table, +/obj/item/wallframe/apc, +/obj/structure/cable{ + icon_state = "0-2" }, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/jungle/starport/tower) -"Hh" = ( -/obj/machinery/atmospherics/pipe/manifold/orange{ +/turf/open/floor/plasteel/grimy, +/area/ruin/jungle/starport) +"Ht" = ( +/obj/structure/railing/corner{ dir = 8 }, -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/structure/spacevine/dense, -/obj/structure/spacevine, -/turf/open/floor/plating, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"Hi" = ( +"Hu" = ( +/obj/effect/decal/cleanable/vomit/old, +/obj/structure/spider/stickyweb, /obj/item/stack/ore/salvage/scrapmetal/five, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/turf/open/floor/mineral/plastitanium, +/area/overmap_encounter/planetoid/jungle/explored) +"Hw" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/grass{ + desc = "A patch of grass. It looks well manicured"; + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Hy" = ( +/obj/structure/railing, +/obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Hj" = ( +"HD" = ( /obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/power/floodlight{ + anchored = 1; + state_open = 1 + }, /obj/structure/cable{ icon_state = "4-8" }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "0-4" }, +/obj/structure/spider/stickyweb, /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 4 }, /turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"Ho" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"Hp" = ( -/obj/structure/spacevine, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt, -/area/overmap_encounter/planetoid/jungle/explored) -"Hq" = ( -/obj/effect/radiation{ - rad_power = 66; - rad_range = 2 - }, -/obj/effect/decal/cleanable/molten_object/large, +"HE" = ( +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland_dug"; - light_color = "#a0ad20"; - light_range = 3 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Hr" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/spider/stickyweb, -/turf/open/floor/concrete/slab_1{ - light_range = 2 + icon_state = "wasteland2" }, /area/overmap_encounter/planetoid/jungle/explored) -"Hs" = ( -/obj/structure/table, -/obj/item/wallframe/apc, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel/grimy, -/area/ruin/jungle/starport) -"Hv" = ( -/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"HG" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom/directional/east, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/jungle/starport/tower) +"HH" = ( +/obj/effect/decal/cleanable/ash/large, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland0" }, /area/overmap_encounter/planetoid/jungle/explored) -"Hx" = ( +"HK" = ( +/obj/item/stack/sheet/metal, +/obj/item/stack/sheet/metal, /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/girder/displaced, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Hz" = ( -/obj/effect/turf_decal/industrial/traffic/corner{ - dir = 8 - }, -/turf/open/floor/concrete{ +/obj/structure/spacevine/dense, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"HB" = ( -/obj/structure/spacevine, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +"HO" = ( +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland0" }, /area/overmap_encounter/planetoid/jungle/explored) -"HF" = ( +"HR" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/vault, +/area/overmap_encounter/planetoid/jungle/explored) +"HS" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-10" }, -/turf/open/floor/plating/dirt/jungle{ +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"HG" = ( -/obj/structure/table/reinforced, -/obj/item/radio/intercom/directional/east, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/jungle/starport/tower) -"HI" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine, -/turf/open/floor/concrete/reinforced{ +"HU" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 + }, +/turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"HM" = ( -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"HT" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/structure/spider/stickyweb, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"HV" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland2" }, /area/overmap_encounter/planetoid/jungle/explored) "HW" = ( /obj/effect/decal/cleanable/glass, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"HX" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, +"HY" = ( +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 8 + }, +/obj/structure/railing, /turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) "HZ" = ( @@ -4990,76 +5074,70 @@ /obj/structure/chair, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"Ie" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, +"Ig" = ( +/obj/structure/spider/stickyweb, +/obj/machinery/light/broken/directional/south, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"Ii" = ( +"Ik" = ( +/obj/structure/flora/junglebush, /obj/structure/flora/junglebush/b, -/obj/structure/flora/junglebush/c, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Ij" = ( -/obj/effect/turf_decal/industrial/traffic/corner{ +"Io" = ( +/obj/structure/chair/comfy/shuttle{ + name = "Grav Couch"; dir = 4 }, -/turf/open/floor/concrete{ +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/starport) +"Is" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Ik" = ( -/turf/closed/wall/rust, +"Iv" = ( +/obj/item/chair, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"Il" = ( -/obj/structure/railing/corner, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, +"Iw" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"Im" = ( +"Ix" = ( /obj/structure/railing{ - dir = 5 + dir = 4 }, -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, -/turf/open/floor/plating/dirt/jungle{ +/obj/structure/spider/stickyweb, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Io" = ( -/obj/structure/chair/comfy/shuttle{ - name = "Grav Couch"; - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/jungle/starport) -"Iq" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland5" +"Iz" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, /area/overmap_encounter/planetoid/jungle/explored) -"It" = ( +"IB" = ( /obj/structure/spacevine/dense, -/obj/structure/flora/junglebush/large, -/obj/structure/flora/grass/jungle, -/turf/open/floor/plating/grass/jungle{ +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Iy" = ( -/obj/effect/turf_decal/arrows, +"IC" = ( /obj/structure/spacevine/dense, -/turf/open/floor/concrete{ +/mob/living/simple_animal/hostile/poison/giant_spider/tarantula, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -5067,24 +5145,9 @@ /obj/item/stack/ore/salvage/scrapmetal/five, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"IF" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/ash, -/obj/item/stack/ore/salvage/scrapmetal/five, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"IG" = ( -/obj/effect/decal/cleanable/shreds, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"II" = ( -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/dirt/jungle{ +"IH" = ( +/obj/machinery/light/broken/directional/east, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -5095,150 +5158,126 @@ /obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/ruin/jungle/starport) -"IN" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/mineral/plastitanium, -/area/overmap_encounter/planetoid/jungle/explored) -"IQ" = ( -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"IR" = ( -/turf/open/floor/mineral/plastitanium, +"IM" = ( +/obj/structure{ + desc = "A devastating strike weapon of times past. The mountings seem broken now."; + dir = 4; + icon = 'icons/mecha/mecha_equipment.dmi'; + icon_state = "mecha_missilerack_six"; + name = "ancient missile rack"; + pixel_x = -26; + pixel_y = -5 + }, +/obj/effect/decal/remains/human, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"IU" = ( +"IO" = ( /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating{ - icon_state = "platingdmg2" +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"IW" = ( -/obj/structure/cable{ - icon_state = "2-4" +"IP" = ( +/obj/effect/decal/cleanable/molten_object/large, +/obj/effect/radiation{ + rad_power = 99; + rad_range = 3 }, -/obj/structure/cable{ - icon_state = "1-2" +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland_dug"; + light_color = "#a0ad20"; + light_range = 3 }, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 +/area/overmap_encounter/planetoid/jungle/explored) +"IT" = ( +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland8" }, /area/overmap_encounter/planetoid/jungle/explored) "IY" = ( /obj/structure/table/rolling, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) -"IZ" = ( -/obj/structure/spacevine, -/obj/structure/spacevine, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, +"Ja" = ( +/obj/structure/table/reinforced, +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, /area/overmap_encounter/planetoid/jungle/explored) -"Jd" = ( -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 +"Jb" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 }, -/area/overmap_encounter/planetoid/jungle/explored) -"Je" = ( -/obj/structure/railing{ - dir = 10 - }, -/obj/structure/sign/syndicate{ - pixel_y = 32 +/obj/effect/turf_decal/weather/dirt{ + dir = 6 }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"Jc" = ( +/obj/structure/frame/computer, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Jj" = ( -/turf/open/floor/plasteel/stairs/left{ - dir = 8 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Jn" = ( -/obj/structure/spacevine, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/grass/jungle{ +"Jf" = ( +/obj/effect/decal/cleanable/oil, +/obj/structure/spacevine/dense, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Jo" = ( -/obj/structure/spacevine, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"Js" = ( -/obj/structure/flora/tree/jungle/small, -/obj/structure/flora/grass/jungle/b, +"Jh" = ( +/obj/structure/flora/tree/jungle{ + icon_state = "tree4" + }, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Jt" = ( -/obj/structure/spacevine/dense, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +"Jm" = ( +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plating/rust, +/area/ruin/jungle/starport) +"Jw" = ( +/obj/structure/railing{ + dir = 10 }, -/area/overmap_encounter/planetoid/jungle/explored) -"Ju" = ( -/obj/effect/turf_decal/borderfloor{ - dir = 4 +/obj/structure/railing/corner{ + dir = 8; + pixel_x = 23 }, -/turf/open/floor/plating, +/obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt, /area/overmap_encounter/planetoid/jungle/explored) -"JA" = ( -/obj/structure/chair/comfy/shuttle{ - name = "Grav Couch"; - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, +"Jx" = ( +/obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt, /area/overmap_encounter/planetoid/jungle/explored) -"JB" = ( -/obj/effect/turf_decal/industrial/warning/corner, +"Jz" = ( +/obj/effect/turf_decal/arrows, /turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"JC" = ( -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"JG" = ( -/obj/effect/turf_decal/borderfloor/corner{ - dir = 1 +"JD" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-8" }, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"JH" = ( -/obj/structure{ - desc = "A devastating strike weapon of times past. The mountings seem broken now."; - dir = 4; - icon = 'icons/mecha/mecha_equipment.dmi'; - icon_state = "mecha_missilerack_six"; - name = "ancient missile rack"; - pixel_x = -26; - pixel_y = -5 +/obj/structure/cable{ + icon_state = "1-6" }, -/obj/effect/decal/remains/human, -/turf/open/floor/concrete/slab_1{ +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"JI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland3" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"JK" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/spacevine/dense, +"JE" = ( /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/grass/jungle{ +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -5246,53 +5285,54 @@ /obj/machinery/atmospherics/components/unary/portables_connector, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/plasma) -"JN" = ( -/obj/structure/spacevine, -/obj/structure/flora/rock/jungle, +"JM" = ( +/obj/structure/spacevine/dense, +/obj/structure/flora/junglebush/b, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"JO" = ( -/obj/structure/railing{ - dir = 4 +"JS" = ( +/obj/structure/railing/corner{ + dir = 8 }, /obj/structure/spacevine, /turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"JP" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-6" +"JV" = ( +/obj/structure/railing, +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +/area/overmap_encounter/planetoid/jungle/explored) +"JW" = ( +/obj/structure/spider/stickyweb, +/obj/structure/spider/cocoon, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, /area/overmap_encounter/planetoid/jungle/explored) -"JQ" = ( -/obj/effect/decal/cleanable/ash/large, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland0" +"JX" = ( +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/starport/tower) +"JY" = ( +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 8 }, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"JR" = ( -/obj/item/radio/intercom/directional/north{ - pixel_y = 24 +"Ka" = ( +/obj/structure/spider/stickyweb, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, -/obj/item/stack/sheet/metal, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel, -/area/ruin/jungle/starport) -"JT" = ( -/obj/structure/reagent_dispensers/beerkeg, -/turf/open/floor/plasteel/dark, /area/overmap_encounter/planetoid/jungle/explored) -"JU" = ( +"Kc" = ( /obj/effect/turf_decal/industrial/traffic/corner{ dir = 8 }, @@ -5300,62 +5340,66 @@ icon_state = "platingdmg2" }, /area/overmap_encounter/planetoid/jungle/explored) -"JX" = ( -/obj/effect/decal/cleanable/vomit/old, -/turf/open/floor/mineral/plastitanium, -/area/ruin/jungle/starport/tower) -"Kb" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 4 +"Kd" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland8" }, -/turf/open/floor/concrete{ - light_range = 2 +/area/overmap_encounter/planetoid/jungle/explored) +"Kh" = ( +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/floor/plating{ + icon_state = "platingdmg2" }, /area/overmap_encounter/planetoid/jungle/explored) -"Km" = ( +"Ki" = ( +/obj/effect/decal/remains/human, /obj/structure/spider/stickyweb, -/obj/item/stack/ore/salvage/scrapmetal/five, -/turf/open/floor/plating/dirt/jungle{ +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Ko" = ( -/obj/structure/closet/firecloset/full{ - anchored = 1 +"Kk" = ( +/obj/structure/spacevine, +/turf/open/floor/plating{ + icon_state = "platingdmg1" }, -/obj/item/extinguisher/advanced, -/obj/effect/turf_decal/borderfloor{ +/area/overmap_encounter/planetoid/jungle/explored) +"Kl" = ( +/obj/structure/railing{ dir = 1 }, -/obj/item/geiger_counter, -/turf/open/floor/plating, +/obj/structure/spider/stickyweb, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"Kq" = ( -/obj/effect/turf_decal/industrial/stand_clear{ +"Kn" = ( +/obj/structure/flora/junglebush, +/obj/structure/flora/junglebush/b, +/obj/structure/flora/junglebush/large, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Kw" = ( +/obj/structure/railing{ dir = 8 }, /obj/structure/spacevine/dense, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"Ks" = ( -/obj/structure/railing/corner, -/obj/structure/spacevine, /turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Kv" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 +"Kx" = ( +/obj/item/clothing/under/syndicate/aclfgrunt, +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, /area/overmap_encounter/planetoid/jungle/explored) -"Kw" = ( -/obj/structure/girder, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) "Kz" = ( /obj/machinery/atmospherics/components/unary/portables_connector{ dir = 4 @@ -5365,22 +5409,62 @@ /obj/machinery/light/directional/west, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/plasma) +"KB" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/machinery/light/broken/directional/north, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"KC" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"KD" = ( +/obj/structure/sign/syndicate{ + pixel_y = -32 + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "KE" = ( /mob/living/simple_animal/hostile/poison/giant_spider/hunter, /turf/open/floor/plating{ icon_state = "panelscorched" }, /area/ruin/jungle/starport) -"KJ" = ( -/obj/effect/turf_decal/borderfloor{ - dir = 8 +"KF" = ( +/obj/effect/turf_decal/industrial/warning/corner, +/turf/open/floor/concrete{ + light_range = 2 }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"KM" = ( -/obj/effect/turf_decal/box/corners, -/obj/structure/spacevine, -/turf/open/floor/concrete/slab_1{ +"KG" = ( +/obj/machinery/processor, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"KL" = ( +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" + }, +/obj/item/stack/cable_coil/cut/red, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"KN" = ( +/obj/item/stack/cable_coil/cut/red, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -5391,61 +5475,70 @@ /obj/item/wallframe/apc, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) -"KP" = ( -/obj/structure/door_assembly, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +"KQ" = ( +/obj/structure/spacevine, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/dirt, +/area/overmap_encounter/planetoid/jungle/explored) +"KR" = ( +/obj/structure/spacevine/dense, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"KS" = ( -/obj/effect/turf_decal/industrial/stand_clear{ +"KX" = ( +/obj/structure/railing/corner{ dir = 8 }, -/obj/structure/spacevine/dense, +/obj/machinery/light/directional/west, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"KT" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/generic, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, +"KY" = ( +/turf/closed/wall/concrete/reinforced, /area/overmap_encounter/planetoid/jungle/explored) -"KU" = ( +"La" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/ruin/jungle/starport) +"Lb" = ( /obj/structure/flora/rock/pile, /turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland6" + icon_state = "wasteland2" }, /area/overmap_encounter/planetoid/jungle/explored) -"KW" = ( -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland7" +"Lf" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"La" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken7" +"Lh" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/area/ruin/jungle/starport) -"Ld" = ( -/turf/open/floor/plasteel/stairs/left{ - dir = 1 +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Lj" = ( +"Li" = ( /obj/structure/spacevine, -/obj/effect/turf_decal/weather/dirt{ - dir = 10 +/obj/structure/flora/rock/jungle, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, -/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"Ll" = ( -/obj/structure/railing/corner, -/turf/open/floor/concrete/slab_1{ +"Lk" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -5458,20 +5551,22 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/plasma) -"Lr" = ( -/obj/structure/spacevine, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "1-2" +"Lq" = ( +/obj/structure/railing{ + dir = 1 }, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +/obj/structure/railing, +/turf/open/floor/plasteel/stairs{ + dir = 8 }, /area/overmap_encounter/planetoid/jungle/explored) -"Lt" = ( -/obj/structure/spider/stickyweb, -/obj/structure/spider/cocoon, -/turf/open/floor/plating/rust, +"Lu" = ( +/obj/structure/flora/tree/jungle/small{ + icon_state = "tree5" + }, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) "Lv" = ( /obj/structure/railing{ @@ -5480,15 +5575,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) -"Lz" = ( -/obj/item/weldingtool, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"Lx" = ( +/obj/structure/cable{ + icon_state = "4-8" }, +/turf/open/floor/mineral/plastitanium, /area/overmap_encounter/planetoid/jungle/explored) -"LA" = ( -/obj/structure/flora/junglebush/b, -/turf/open/floor/plating/grass/jungle{ +"Ly" = ( +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -5496,30 +5591,36 @@ /obj/structure/tank_dispenser/oxygen, /turf/open/floor/vault, /area/ruin/jungle/starport) -"LD" = ( -/obj/effect/decal/cleanable/dirt/dust, -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +"LF" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/plating{ + icon_state = "platingdmg3" }, /area/overmap_encounter/planetoid/jungle/explored) -"LG" = ( -/obj/structure/railing/corner{ - dir = 8 +"LJ" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"LH" = ( -/obj/structure/girder/displaced, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"LI" = ( -/obj/machinery/atmospherics/pipe/manifold/orange{ - dir = 8 +"LK" = ( +/obj/machinery/suit_storage_unit/industrial/atmos_firesuit, +/obj/item/watertank/atmos, +/turf/open/floor/vault, +/area/overmap_encounter/planetoid/jungle/explored) +"LL" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/glass, +/obj/structure/spider/stickyweb, +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/floor/plating{ + icon_state = "platingdmg2" }, -/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) "LM" = ( /obj/structure/closet, @@ -5532,11 +5633,11 @@ icon_state = "wood-broken2" }, /area/ruin/jungle/starport) -"LO" = ( -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland6" - }, +"LN" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/spider/stickyweb, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) "LP" = ( /obj/machinery/atmospherics/pipe/simple/orange/hidden{ @@ -5544,174 +5645,140 @@ }, /turf/open/floor/plating, /area/ruin/jungle/starport) -"LT" = ( -/obj/structure/railing, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"LU" = ( -/obj/item/geiger_counter, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/concrete{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"LV" = ( -/obj/structure/table, +"LY" = ( /obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"LW" = ( -/obj/structure/closet/emcloset/anchored, -/obj/structure/railing{ - dir = 10 - }, -/turf/open/floor/concrete/reinforced{ +/obj/structure/spacevine/dense, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"LX" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +"Ma" = ( +/obj/structure/spacevine/dense, +/obj/structure/flora/junglebush/large, +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Mc" = ( -/obj/structure/railing, -/obj/effect/decal/cleanable/oil, -/obj/structure/spacevine, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +"Mg" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "4-8" }, -/area/overmap_encounter/planetoid/jungle/explored) -"Mf" = ( -/obj/structure/spacevine, -/obj/machinery/light/directional/west, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 }, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"Mh" = ( -/obj/structure/table, -/obj/item/radio/intercom/directional/south, -/obj/machinery/light/directional/south, -/turf/open/floor/plasteel/grimy, -/area/ruin/jungle/starport) "Mi" = ( /obj/machinery/light/broken/directional/west, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) -"Mq" = ( -/turf/open/floor/concrete{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Mr" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/ruin/jungle/starport) -"Mu" = ( -/obj/effect/decal/remains/human, +"Mk" = ( /obj/structure/spider/stickyweb, /turf/open/floor/mineral/plastitanium, /area/overmap_encounter/planetoid/jungle/explored) -"Mz" = ( +"Ml" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/spacevine, -/turf/open/floor/plating/rust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland0" + }, /area/overmap_encounter/planetoid/jungle/explored) -"MC" = ( +"Mp" = ( +/obj/structure/table{ + name = "officer's table"; + desc = "A square piece of metal standing on four metal legs. It can not move. This one feels more important than the others" + }, /obj/structure/spider/stickyweb, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plasteel/stairs/medium, -/area/overmap_encounter/planetoid/jungle/explored) -"MD" = ( /obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"MG" = ( -/obj/effect/turf_decal/arrows{ - dir = 4 +"Mr" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ruin/jungle/starport) +"Mt" = ( +/obj/structure/railing/corner{ + dir = 8 }, +/obj/machinery/light/broken/directional/west, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"MI" = ( +"Mv" = ( +/obj/effect/decal/cleanable/oil, /obj/structure/railing, -/obj/item/stack/ore/salvage/scrapmetal/five, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"MJ" = ( -/obj/structure/railing/corner, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +"Mx" = ( +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 10 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/starport/plasma) +"ME" = ( +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland9" }, /area/overmap_encounter/planetoid/jungle/explored) -"MK" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle{ +"MF" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/spacevine/dense, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"MN" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/weather/dirt{ - dir = 9 +"MH" = ( +/turf/open/floor/plasteel/stairs{ + dir = 4 }, -/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) "MQ" = ( /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) -"MR" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/vomit/old, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +"MS" = ( +/obj/item/stack/sheet/mineral/plastitanium, +/obj/item/stack/sheet/mineral/plastitanium, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"MT" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/jungle{ +"MU" = ( +/obj/structure/railing, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"MW" = ( +/obj/structure/railing, +/turf/open/floor/plasteel/stairs{ + dir = 4 + }, +/area/overmap_encounter/planetoid/jungle/explored) "MX" = ( /obj/structure/curtain, /obj/structure/spider/stickyweb, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"MY" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland0" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Na" = ( -/obj/effect/decal/remains/human, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 - }, +"MZ" = ( +/obj/item/chair, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"Nc" = ( +"Nb" = ( /obj/structure/spacevine, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/turf/open/floor/concrete/reinforced{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) "Nd" = ( @@ -5719,11 +5786,17 @@ /obj/structure/spacevine, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"Ng" = ( -/obj/effect/turf_decal/borderfloor{ - dir = 4 +"Ne" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plating/rust, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Nf" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/vault, /area/overmap_encounter/planetoid/jungle/explored) "Nh" = ( /obj/structure/filingcabinet, @@ -5732,18 +5805,50 @@ /obj/item/ammo_box/magazine/m10mm, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) -"Nl" = ( -/obj/structure/railing{ +"Nj" = ( +/obj/effect/turf_decal/borderfloor{ dir = 1 }, -/turf/open/floor/plating/dirt/jungle{ +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"Nk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"Nn" = ( +/obj/effect/turf_decal/box/corners, +/obj/structure/spacevine/dense, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Nm" = ( -/obj/structure/table/reinforced, -/obj/structure/spider/stickyweb, -/turf/open/floor/plasteel/dark, +"No" = ( +/obj/effect/decal/cleanable/insectguts, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Nq" = ( +/obj/structure/door_assembly/door_assembly_eng, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Nr" = ( +/obj/structure/spacevine, +/obj/structure/flora/grass/jungle, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) "Nt" = ( /obj/structure/cable{ @@ -5752,71 +5857,72 @@ /obj/machinery/power/rtg/geothermal, /turf/open/floor/plating, /area/ruin/jungle/starport) -"Nx" = ( -/obj/effect/decal/cleanable/molten_object/large, -/obj/effect/radiation{ - rad_power = 66; - rad_range = 2 - }, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland_dug"; - light_color = "#a0ad20"; - light_range = 3 +"Nw" = ( +/obj/effect/turf_decal/arrows{ + dir = 4 }, -/area/overmap_encounter/planetoid/jungle/explored) -"NB" = ( -/obj/effect/turf_decal/arrows, -/turf/open/floor/concrete{ +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"NC" = ( -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland2" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"NE" = ( -/obj/structure/railing{ - dir = 10 - }, +"NA" = ( /obj/effect/turf_decal/weather/dirt{ - dir = 6 + dir = 8 }, /turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"NL" = ( -/obj/structure/cable{ - icon_state = "1-2" +"ND" = ( +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, -/turf/open/floor/plasteel/stairs/medium, /area/overmap_encounter/planetoid/jungle/explored) -"NM" = ( -/obj/item/stack/cable_coil/cut/red, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/concrete/reinforced{ +"NF" = ( +/obj/machinery/door/airlock/external, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"NN" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/grass{ - desc = "A patch of grass. It looks well manicured"; - light_range = 2 +"NK" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"NO" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"NU" = ( -/obj/structure/flora/grass/jungle/b, -/obj/structure/flora/junglebush, -/turf/open/floor/plating/grass/jungle{ +"NW" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1 + }, +/obj/structure{ + desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; + dir = 4; + icon = 'icons/obj/turrets.dmi'; + icon_state = "syndie_off"; + name = "defunct laser cannon"; + pixel_x = -26 + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"NZ" = ( -/obj/structure/railing{ - dir = 10 +"NX" = ( +/obj/structure/table, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating{ + icon_state = "platingdmg1" }, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +/area/overmap_encounter/planetoid/jungle/explored) +"Oa" = ( +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, /area/overmap_encounter/planetoid/jungle/explored) "Ob" = ( @@ -5828,20 +5934,44 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) +"Oc" = ( +/obj/item/stack/sheet/metal, +/obj/item/stack/sheet/metal, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "Od" = ( /obj/structure/girder/displaced, /turf/open/floor/plating, /area/ruin/jungle/starport) -"Oi" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 5 +"Oe" = ( +/obj/structure/cable{ + icon_state = "5-8" }, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"Oj" = ( -/obj/structure/reagent_dispensers/watertank, /obj/structure/spider/stickyweb, -/turf/open/floor/vault, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Og" = ( +/obj/structure/flora/tree/jungle{ + icon_state = "tree2" + }, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Oh" = ( +/obj/structure/railing/corner, +/obj/structure/spacevine, +/obj/machinery/light/broken/directional/east, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) "Ok" = ( /obj/structure/spacevine/dense, @@ -5850,71 +5980,67 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) -"On" = ( -/obj/structure/spider/stickyweb, -/mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife, -/turf/open/floor/plasteel, +"Om" = ( +/obj/structure/rack, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass/twenty, +/obj/item/stack/sheet/glass/twenty, +/turf/open/floor/plasteel/dark, /area/overmap_encounter/planetoid/jungle/explored) -"Op" = ( -/mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper, -/obj/structure/spider/cocoon, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 10 +"Or" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, -/turf/open/floor/plating, -/area/ruin/jungle/starport) -"Ou" = ( -/obj/structure/table, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"Ox" = ( -/obj/structure/table/reinforced, -/obj/item/radio/intercom/wideband/directional/east, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/jungle/starport/tower) -"Oz" = ( -/obj/effect/turf_decal/industrial/traffic/corner{ - dir = 2 - }, -/turf/open/floor/concrete{ +"Os" = ( +/obj/structure/door_assembly, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"OA" = ( +"Ow" = ( +/obj/structure/catwalk/over/plated_catwalk, /obj/structure/cable{ - icon_state = "5-10" + icon_state = "4-8" }, -/obj/structure/spider/stickyweb, -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 }, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"OC" = ( -/obj/structure/flora/grass/jungle, -/obj/structure/flora/junglebush/c, -/turf/open/floor/plating/grass/jungle{ +"Ox" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom/wideband/directional/east, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/jungle/starport/tower) +"OB" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/remains/human, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"OG" = ( -/obj/structure/rack, -/turf/open/floor/vault, -/area/overmap_encounter/planetoid/jungle/explored) "OI" = ( /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/tower) -"OJ" = ( -/obj/effect/decal/cleanable/oil, -/obj/structure/railing, +"OK" = ( +/obj/structure/sign/syndicate{ + pixel_x = -32 + }, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"OL" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "OM" = ( /obj/machinery/power/shuttle/engine/fueled/plasma{ dir = 4 @@ -5922,24 +6048,23 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/engine/hull, /area/ruin/jungle/starport) -"ON" = ( -/obj/structure/cable{ - icon_state = "1-2" +"OQ" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/tree/jungle{ + icon_state = "tree10" }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating/dirt/jungle{ +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"OT" = ( -/obj/effect/radiation{ - rad_power = 66; - rad_range = 2 - }, -/obj/effect/decal/cleanable/molten_object, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland_dug" - }, +"OR" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"OU" = ( +/obj/item/stack/cable_coil/cut/red, +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) "OW" = ( /obj/item/stack/ore/salvage/scrapmetal/five, @@ -5949,12 +6074,20 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) -"Pb" = ( +"Pa" = ( +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/plating/dirt, +/area/overmap_encounter/planetoid/jungle/explored) +"Pc" = ( /obj/structure/spacevine/dense, /turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland8" + icon_state = "wasteland6" }, /area/overmap_encounter/planetoid/jungle/explored) +"Pe" = ( +/obj/item/stack/sheet/mineral/plastitanium, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) "Pf" = ( /obj/machinery/power/terminal, /obj/structure/cable, @@ -5972,16 +6105,54 @@ }, /turf/open/floor/plating, /area/ruin/jungle/starport) -"Pi" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +"Pk" = ( +/obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland8" }, /area/overmap_encounter/planetoid/jungle/explored) -"Pq" = ( -/obj/effect/decal/cleanable/ash, +"Pl" = ( +/obj/structure/spider/stickyweb, +/mob/living/simple_animal/hostile/poison/giant_spider/nurse, /turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) +"Pm" = ( +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Pn" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Po" = ( +/turf/open/floor/plasteel/stairs/left{ + dir = 8 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Pr" = ( +/obj/structure/girder/displaced, +/turf/open/floor/mineral/plastitanium, +/area/overmap_encounter/planetoid/jungle/explored) +"Ps" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel/stairs, +/area/overmap_encounter/planetoid/jungle/explored) +"Pv" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) "Pw" = ( /obj/structure/table/reinforced, /obj/item/pen{ @@ -5995,6 +6166,9 @@ /obj/structure/spacevine/dense, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) +"Py" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/overmap_encounter/planetoid/jungle/explored) "Pz" = ( /obj/structure/railing{ dir = 8 @@ -6003,6 +6177,16 @@ /obj/structure/chair, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) +"PA" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"PB" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) "PC" = ( /obj/machinery/portable_atmospherics/canister/toxins, /obj/structure/window/plasma/reinforced{ @@ -6015,75 +6199,45 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) +"PI" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/overmap_encounter/planetoid/jungle/explored) "PJ" = ( /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/plasma) -"PL" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 9 +"PN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland0" }, -/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"PO" = ( -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; - pixel_x = 10; - pixel_y = 5 - }, -/obj/structure/table/rolling, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; - pixel_x = -10; - pixel_y = 5 - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; - pixel_x = 2; - pixel_y = 5 - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; - pixel_x = -2; - pixel_y = 5 - }, -/obj/item/ammo_casing/caseless/rocket{ - desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher"; - pixel_x = -6; - pixel_y = 5 - }, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"PP" = ( +/obj/structure/closet/firecloset/full{ + anchored = 1 }, -/area/overmap_encounter/planetoid/jungle/explored) -"PS" = ( +/obj/item/extinguisher/advanced, +/obj/item/geiger_counter, /obj/structure/railing{ - dir = 10 + dir = 6 }, -/turf/open/floor/concrete/slab_1{ +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"PT" = ( +"PQ" = ( /obj/effect/turf_decal/weather/dirt{ - dir = 9 - }, -/obj/effect/turf_decal/weather/dirt{ - dir = 10 + dir = 1 }, +/obj/effect/turf_decal/weather/dirt, /turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"PU" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/stairs{ - dir = 4 - }, +"PR" = ( +/obj/structure/spacevine, +/turf/open/floor/plating/dirt, /area/overmap_encounter/planetoid/jungle/explored) "PV" = ( /obj/structure/closet, @@ -6097,49 +6251,86 @@ icon_state = "panelscorched" }, /area/ruin/jungle/starport) -"PW" = ( -/obj/structure/chair{ - dir = 8 +"PX" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, +/area/overmap_encounter/planetoid/jungle/explored) +"PY" = ( +/obj/structure/flora/rock, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating{ - icon_state = "platingdmg2" +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"PZ" = ( -/obj/structure/railing/corner, -/turf/open/water/jungle, +"Qa" = ( +/obj/structure/railing{ + dir = 10 + }, +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"Qc" = ( -/obj/effect/decal/cleanable/glass, -/obj/structure/spider/stickyweb, -/turf/open/floor/mineral/plastitanium{ - icon_state = "plastitanium_dam4" +"Qb" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating{ + icon_state = "platingdmg2" }, /area/overmap_encounter/planetoid/jungle/explored) -"Qe" = ( +"Qg" = ( +/obj/structure/railing, +/obj/structure/spacevine, /obj/structure/railing{ - dir = 1 + dir = 4 }, -/obj/structure/spacevine/dense, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Qh" = ( +"Qj" = ( +/obj/structure/spider/stickyweb, /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland0" +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"Qk" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"Qi" = ( -/obj/structure/flora/tree/jungle{ - icon_state = "tree2" +"Ql" = ( +/obj/machinery/door/airlock/glass, +/turf/open/floor/plasteel/tech/techmaint, +/area/overmap_encounter/planetoid/jungle/explored) +"Qo" = ( +/obj/machinery/power/floodlight{ + anchored = 1; + state_open = 1 }, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) +"Qp" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 }, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) "Qq" = ( /obj/machinery/atmospherics/components/unary/tank/toxins{ @@ -6147,88 +6338,96 @@ }, /turf/open/floor/plating, /area/ruin/jungle/starport) -"Qr" = ( -/obj/structure/window/plasma/reinforced{ - dir = 4 +"Qy" = ( +/obj/structure/railing{ + dir = 8 }, -/obj/machinery/suit_storage_unit/open, /turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"Qs" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/mineral/plastitanium, -/area/ruin/jungle/starport/plasma) -"Qv" = ( -/obj/structure/closet/secure_closet/freezer/fridge, -/obj/machinery/light/broken/directional/south, -/turf/open/floor/plasteel/dark, -/area/overmap_encounter/planetoid/jungle/explored) -"Qw" = ( -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plasteel/stairs/medium, -/area/overmap_encounter/planetoid/jungle/explored) -"Qx" = ( -/obj/effect/turf_decal/atmos/plasma, -/obj/structure/railing/corner{ - dir = 1 +"QC" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/spacevine, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"QB" = ( -/obj/item/rack_parts, -/obj/structure/rack, -/turf/open/floor/plasteel/dark, +"QD" = ( +/obj/structure/spider/stickyweb, +/obj/structure/spider/cocoon, +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) "QE" = ( /turf/closed/wall/mineral/plastitanium, /area/ruin/jungle/starport) -"QK" = ( -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/obj/structure/spacevine/dense, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"QM" = ( -/obj/structure/spacevine, -/obj/structure/flora/junglebush/b, -/obj/structure/flora/grass/jungle, +"QF" = ( +/obj/structure/flora/tree/jungle/small, +/obj/structure/flora/grass/jungle/b, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"QJ" = ( +/obj/structure/spider/stickyweb, +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"QL" = ( +/obj/structure/railing, +/obj/effect/decal/cleanable/oil, +/obj/structure/spacevine, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"QN" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/glass, +/obj/structure/spider/stickyweb, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "QO" = ( /obj/machinery/suit_storage_unit/industrial/atmos_firesuit, /obj/item/watertank/atmos, /obj/machinery/light/broken/directional/south, /turf/open/floor/vault, /area/ruin/jungle/starport) -"QP" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 5 - }, -/obj/effect/turf_decal/weather/dirt{ - dir = 6 +"QS" = ( +/obj/structure/girder/displaced, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, -/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"QQ" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland2" +"QT" = ( +/obj/structure{ + desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; + dir = 4; + icon = 'icons/obj/turrets.dmi'; + icon_state = "syndie_off"; + name = "defunct laser cannon"; + pixel_x = -26 }, -/area/overmap_encounter/planetoid/jungle/explored) -"QR" = ( -/obj/effect/turf_decal/weather/dirt{ - dir = 6 +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, -/obj/effect/turf_decal/weather/dirt{ - dir = 5 +/area/overmap_encounter/planetoid/jungle/explored) +"QU" = ( +/obj/machinery/door/airlock{ + dir = 4 }, -/turf/open/water/jungle, +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plasteel/tech/techmaint, /area/overmap_encounter/planetoid/jungle/explored) "QV" = ( /obj/machinery/power/apc/auto_name/directional/east{ @@ -6237,8 +6436,18 @@ /obj/structure/cable, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) -"QX" = ( -/obj/effect/decal/cleanable/generic, +"QW" = ( +/obj/structure/spider/stickyweb, +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"QY" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, @@ -6248,17 +6457,6 @@ /obj/item/stack/ore/salvage/scrapmetal/five, /turf/open/floor/plasteel, /area/ruin/jungle/starport) -"Ra" = ( -/obj/structure/flora/junglebush/c, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Rb" = ( -/obj/effect/decal/cleanable/ash, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) "Rc" = ( /obj/structure/closet, /obj/effect/decal/cleanable/dirt/dust, @@ -6267,27 +6465,49 @@ /obj/item/clothing/under/syndicate/combat, /turf/open/floor/plating, /area/ruin/jungle/starport) -"Rj" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/item/stack/ore/salvage/scrapmetal/five, +"Rd" = ( +/obj/effect/radiation{ + rad_power = 180; + rad_range = 2 + }, +/obj/effect/decal/cleanable/molten_object/large, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland_dug"; + light_color = "#a0ad20"; + light_range = 3 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Rf" = ( +/obj/structure/railing, +/turf/open/floor/plating/dirt, +/area/overmap_encounter/planetoid/jungle/explored) +"Rg" = ( +/obj/effect/decal/cleanable/insectguts, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland8" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"Rh" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/railing{ + dir = 1 + }, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"Ri" = ( +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) "Rn" = ( /obj/structure/table/reinforced, /obj/item/folder, /obj/item/paper_bin, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/tower) -"Rp" = ( -/obj/structure/table, -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/overmap_encounter/planetoid/jungle/explored) "Rq" = ( /obj/machinery/power/smes, /obj/structure/cable{ @@ -6295,229 +6515,71 @@ }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) -"Rs" = ( -/obj/structure/fluff/fokoff_sign{ - icon_state = "fokrads"; - desc = "A crudely made sign with the universal radiation hazard symbol painted onto it." - }, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Rt" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +"Rw" = ( +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" }, -/area/overmap_encounter/planetoid/jungle/explored) -"Ry" = ( -/obj/structure/flora/rock/jungle, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"RB" = ( -/obj/structure/cable{ - icon_state = "2-5" - }, -/turf/open/floor/plating/dirt, -/area/overmap_encounter/planetoid/jungle/explored) -"RF" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"RH" = ( -/obj/machinery/light/broken/directional/east, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"RL" = ( -/obj/effect/decal/cleanable/ash, -/obj/structure/spacevine, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"RM" = ( -/obj/structure/spacevine/dense, -/turf/open/floor/concrete/reinforced{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"RN" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"RT" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/cable{ - icon_state = "4-8" - }, +"Rx" = ( +/obj/structure/railing, /obj/structure/spacevine, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 - }, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"RX" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/turf_decal/arrows{ - dir = 8 - }, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Sc" = ( -/obj/effect/turf_decal/industrial/stand_clear{ +"Rz" = ( +/obj/structure/railing{ dir = 8 }, -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) -"Sd" = ( -/obj/structure/closet, -/obj/machinery/light/broken/directional/east, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/gloves/color/black, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/ruin/jungle/starport) -"Se" = ( -/turf/open/floor/plasteel, -/area/ruin/jungle/starport) -"Sf" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/engineering{ - name = "Power Shack" - }, -/turf/open/floor/plating, -/area/ruin/jungle/starport) -"Sg" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/concrete/slab_1{ +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Sh" = ( -/obj/structure/spacevine, -/turf/open/floor/concrete{ +"RC" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Si" = ( -/obj/effect/decal/cleanable/ash, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"Sl" = ( +"RG" = ( +/obj/item/rack_parts, /obj/structure/rack, -/turf/open/floor/vault, -/area/ruin/jungle/starport) -"Sq" = ( -/obj/effect/turf_decal/number/zero{ - pixel_x = -7; - pixel_y = 32 - }, -/obj/effect/turf_decal/number/three{ - pixel_x = 5; - pixel_y = 32 - }, -/obj/structure{ - desc = "A devastating strike weapon of times past. The mountings seem broken now."; - dir = 4; - icon = 'icons/mecha/mecha_equipment.dmi'; - icon_state = "mecha_missilerack_six"; - name = "ancient missile rack"; - pixel_x = -26; - pixel_y = 11 - }, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"St" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plasteel/stairs/right, -/area/overmap_encounter/planetoid/jungle/explored) -"Su" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, +/turf/open/floor/plasteel/dark, /area/overmap_encounter/planetoid/jungle/explored) -"Sv" = ( -/turf/open/floor/vault, -/area/ruin/jungle/starport) -"Sw" = ( -/obj/effect/decal/cleanable/plastic, +"RI" = ( +/obj/effect/decal/cleanable/shreds, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/ash, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Sx" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +"RP" = ( +/obj/structure/spider/stickyweb, +/obj/structure/spacevine, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Sy" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/spacevine/dense, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"SA" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"SC" = ( -/obj/structure/flora/tree/jungle/small{ - icon_state = "tree1" +"RQ" = ( +/obj/machinery/power/shuttle/engine/fueled/plasma{ + dir = 8; + anchored = 0 }, -/turf/open/floor/plating/grass/jungle{ +/turf/open/floor/concrete/slab_1{ light_range = 2 }, -/area/overmap_encounter/planetoid/jungle/explored) -"SD" = ( -/turf/open/floor/mineral/plastitanium{ - icon_state = "plastitanium_dam5" - }, -/area/ruin/jungle/starport) -"SF" = ( +/area/overmap_encounter/planetoid/jungle/explored) +"RR" = ( /obj/structure/cable{ - icon_state = "5-10" + icon_state = "6-9" + }, +/obj/structure/cable{ + icon_state = "4-9" }, /obj/structure/spider/stickyweb, /turf/open/floor/plating/dirt/dark{ @@ -6526,42 +6588,101 @@ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"SK" = ( -/obj/structure/catwalk/over/plated_catwalk, +"RU" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"RV" = ( +/obj/structure/spacevine/dense, +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"RZ" = ( +/obj/structure/railing, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"Sd" = ( +/obj/structure/closet, +/obj/machinery/light/broken/directional/east, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/gloves/color/black, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/ruin/jungle/starport) +"Se" = ( +/turf/open/floor/plasteel, +/area/ruin/jungle/starport) +"Sf" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/obj/structure/spacevine, +/obj/machinery/door/airlock/engineering{ + name = "Power Shack" + }, +/turf/open/floor/plating, +/area/ruin/jungle/starport) +"Sl" = ( +/obj/structure/rack, +/turf/open/floor/vault, +/area/ruin/jungle/starport) +"Sm" = ( +/turf/closed/wall/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"Ss" = ( /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 4 }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/starport/plasma) +"Sv" = ( +/turf/open/floor/vault, +/area/ruin/jungle/starport) +"Sz" = ( +/obj/effect/turf_decal/borderfloor{ + dir = 8 + }, /turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"SL" = ( -/obj/structure/spacevine, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 +"SB" = ( +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 8 }, +/obj/structure/spacevine/dense, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"SN" = ( -/obj/structure/railing{ - dir = 2 +"SD" = ( +/turf/open/floor/mineral/plastitanium{ + icon_state = "plastitanium_dam5" }, +/area/ruin/jungle/starport) +"SG" = ( /obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle{ +/obj/structure/flora/grass/jungle, +/obj/structure/flora/junglebush/b, +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"SQ" = ( -/obj/structure/railing, -/turf/open/floor/plasteel/stairs{ - dir = 4 +"SH" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"SM" = ( +/obj/effect/decal/cleanable/shreds, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland1" }, /area/overmap_encounter/planetoid/jungle/explored) "SS" = ( @@ -6569,40 +6690,28 @@ /obj/structure/curtain, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"ST" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/ash, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"SU" = ( -/obj/structure/railing, -/obj/structure/spider/stickyweb, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"SY" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +"SX" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/spacevine, -/obj/structure/railing, -/turf/open/floor/concrete/slab_1{ +/obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"SZ" = ( -/obj/structure/railing{ - dir = 6 - }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +"Ta" = ( +/obj/structure/table, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/grimy, +/area/ruin/jungle/starport) +"Tb" = ( +/obj/structure/spacevine, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 }, -/area/overmap_encounter/planetoid/jungle/explored) -"Tc" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plasteel, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) "Td" = ( /obj/machinery/atmospherics/components/binary/valve{ @@ -6618,104 +6727,48 @@ icon_state = "plastitanium_dam4" }, /area/ruin/jungle/starport) -"Tf" = ( -/turf/open/floor/concrete/reinforced{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Tg" = ( -/obj/effect/decal/cleanable/glass, -/obj/structure/spider/stickyweb, -/obj/item/stack/cable_coil/cut/red, -/obj/machinery/light/broken/directional/west, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"Tj" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1 - }, -/obj/structure{ - desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; - dir = 4; - icon = 'icons/obj/turrets.dmi'; - icon_state = "syndie_off"; - name = "defunct laser cannon"; - pixel_x = -26 - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Tk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/spacevine, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Tm" = ( -/obj/structure/railing, -/obj/structure/spacevine, -/turf/open/floor/concrete/reinforced{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) "Tn" = ( /obj/machinery/washing_machine, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/ruin/jungle/starport) -"Tp" = ( -/obj/item/chair, -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/plating/rust, +"To" = ( +/obj/item/weldingtool, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) "Tr" = ( /obj/structure/spider/stickyweb, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"Ts" = ( -/obj/machinery/door/airlock/external, +"Tt" = ( +/obj/effect/turf_decal/arrows{ + dir = 8 + }, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Tv" = ( -/obj/structure/spacevine/dense, -/turf/open/floor/plating/dirt, -/area/overmap_encounter/planetoid/jungle/explored) -"Tw" = ( +"Tu" = ( /obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Tx" = ( -/obj/effect/decal/cleanable/molten_object/large, -/obj/effect/radiation{ - rad_power = 99; - rad_range = 3 - }, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland_dug"; - light_color = "#a0ad20"; - light_range = 3 + dir = 10 }, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"Tz" = ( +"TA" = ( +/obj/structure/flora/grass/jungle, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/concrete/reinforced{ +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"TC" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating{ - icon_state = "panelscorched" +"TD" = ( +/obj/structure/railing, +/obj/structure/spider/stickyweb, +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) "TF" = ( @@ -6725,35 +6778,39 @@ /obj/machinery/light/broken/directional/north, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/tower) -"TL" = ( -/obj/structure/railing, -/obj/structure/closet/secure_closet/engineering_welding{ - anchored = 1 - }, -/turf/open/floor/concrete/reinforced{ +"TK" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"TM" = ( -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle{ +"TN" = ( +/obj/structure/railing/corner, +/obj/effect/decal/cleanable/oil, +/obj/structure/spider/stickyweb, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"TQ" = ( -/obj/effect/decal/cleanable/insectguts, -/turf/open/floor/plating{ - icon_state = "panelscorched" +"TO" = ( +/obj/structure/chair{ + dir = 1 }, +/obj/effect/decal/cleanable/ash, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"TV" = ( -/obj/effect/decal/cleanable/molten_object, -/obj/effect/radiation{ - rad_power = 66; - rad_range = 2 +"TT" = ( +/obj/structure/railing/corner, +/obj/machinery/light/broken/directional/east, +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland2" +/area/overmap_encounter/planetoid/jungle/explored) +"TU" = ( +/obj/structure/flora/rock/jungle, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) "TW" = ( @@ -6761,15 +6818,23 @@ /obj/item/stack/sheet/metal, /turf/open/floor/plasteel, /area/ruin/jungle/starport) -"Ub" = ( -/obj/item/stack/sheet/metal, -/obj/item/stack/sheet/metal, +"TY" = ( +/obj/effect/decal/cleanable/ash, /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/grass/jungle{ +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"TZ" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/dark, +/area/overmap_encounter/planetoid/jungle/explored) +"Ua" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) "Uc" = ( /obj/structure/spacevine, /obj/structure/salvageable/autolathe, @@ -6781,82 +6846,50 @@ icon_state = "plastitanium_dam4" }, /area/ruin/jungle/starport) -"Uf" = ( -/obj/structure/girder/displaced, -/turf/open/floor/mineral/plastitanium, -/area/overmap_encounter/planetoid/jungle/explored) "Ug" = ( /obj/structure/chair{ dir = 8 }, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"Uh" = ( -/obj/effect/decal/cleanable/ash, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland2" - }, -/area/overmap_encounter/planetoid/jungle/explored) "Uj" = ( /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"Uk" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/glass, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating{ - icon_state = "platingdmg2" +"Up" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/area/overmap_encounter/planetoid/jungle/explored) -"Ul" = ( -/obj/structure/table, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating{ - icon_state = "platingdmg1" +/turf/open/floor/plasteel/stairs{ + dir = 4 }, /area/overmap_encounter/planetoid/jungle/explored) -"Um" = ( +"Ur" = ( +/obj/structure/railing{ + dir = 1 + }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"Uo" = ( -/obj/structure/railing, -/obj/effect/turf_decal/weather/dirt{ - dir = 6 +/turf/open/floor/plasteel/stairs{ + dir = 8 }, -/turf/open/water/jungle, -/area/overmap_encounter/planetoid/jungle/explored) -"Uq" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/vomit/old, -/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"Uu" = ( -/obj/effect/decal/cleanable/oil, -/obj/structure/spacevine, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +"Us" = ( +/obj/effect/turf_decal/borderfloor/corner{ + dir = 1 }, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"Uv" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-4" +"Ut" = ( +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland5" }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 9 +/area/overmap_encounter/planetoid/jungle/explored) +"Uw" = ( +/obj/structure/railing{ + dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) "Ux" = ( /obj/structure/spider/stickyweb, @@ -6869,18 +6902,14 @@ /obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/ruin/jungle/starport) -"UA" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, +"UB" = ( +/obj/structure/spacevine, /turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"UD" = ( -/obj/structure/spacevine/dense, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, +"UC" = ( +/obj/item/chair, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) "UE" = ( /turf/template_noop, @@ -6890,111 +6919,111 @@ /obj/mecha/working/ripley/firefighter, /turf/open/floor/vault, /area/ruin/jungle/starport) -"UH" = ( -/obj/item/stack/sheet/mineral/plastitanium, -/obj/item/stack/sheet/mineral/plastitanium, -/obj/effect/turf_decal/weather/dirt{ - dir = 9 +"UI" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland6" }, -/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"UJ" = ( -/obj/item/stack/sheet/mineral/plastitanium, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 +"UL" = ( +/obj/structure/cable{ + icon_state = "4-8" }, +/obj/structure/spacevine/dense, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"UM" = ( -/obj/effect/decal/cleanable/generic, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"UO" = ( -/obj/structure/flora/tree/jungle{ - icon_state = "tree6" +"UQ" = ( +/obj/structure/railing{ + dir = 9 }, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"UR" = ( +/obj/structure/flora/junglebush/large, +/obj/structure/flora/grass/jungle/b, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"UP" = ( +"US" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/dirt/jungle/wasteland{ icon_state = "wasteland1" }, /area/overmap_encounter/planetoid/jungle/explored) -"UY" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating{ - icon_state = "platingdmg1" +"UT" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"UZ" = ( -/obj/effect/decal/cleanable/ash/large, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating/dirt/jungle{ +"UX" = ( +/obj/structure/spacevine, +/obj/structure/spacevine, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Va" = ( -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/dirt/dust, +"Vd" = ( +/obj/machinery/light/broken/directional/west, /turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"Vb" = ( +"Vf" = ( /obj/effect/decal/cleanable/glass, -/turf/open/floor/concrete{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Vg" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland1" - }, +/obj/structure/spider/stickyweb, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) "Vh" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plasteel, /area/ruin/jungle/starport) -"Vi" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) "Vl" = ( /obj/machinery/atmospherics/pipe/manifold/orange/visible{ dir = 4 }, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/plasma) -"Vo" = ( -/obj/effect/radiation{ - rad_power = 66; - rad_range = 2 +"Vm" = ( +/turf/open/floor/plasteel/stairs/right{ + dir = 1 }, -/obj/effect/decal/cleanable/molten_object, -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland_dug" +/area/overmap_encounter/planetoid/jungle/explored) +"Vp" = ( +/obj/structure/sign/syndicate{ + pixel_y = -32 + }, +/turf/open/floor/concrete/slab_1{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Vq" = ( -/obj/structure/railing{ - dir = 8 +"Vs" = ( +/obj/structure/cable{ + icon_state = "4-8" }, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/dirt/dark{ name = "beaten path"; desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Vu" = ( -/obj/structure/frame/machine, -/turf/open/floor/vault, +"Vt" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, /area/overmap_encounter/planetoid/jungle/explored) -"Vw" = ( -/turf/open/floor/plating/grass{ - desc = "A patch of grass. It looks well manicured"; +"Vv" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -7003,94 +7032,82 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/plating/rust, /area/ruin/jungle/starport) -"VA" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/concrete/reinforced{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) "VB" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /turf/open/floor/plating, /area/ruin/jungle/starport) -"VC" = ( -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland8" - }, +"VF" = ( +/obj/structure/spider/stickyweb, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"VD" = ( -/obj/item/clothing/under/syndicate/aclfgrunt, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +"VJ" = ( +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"VI" = ( +"VN" = ( /obj/structure/spacevine, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/concrete/reinforced{ +/obj/structure/flora/junglebush/b, +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"VL" = ( -/obj/effect/turf_decal/atmos/plasma, +"VT" = ( +/obj/structure/table, +/obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) -"VM" = ( -/turf/open/floor/plasteel/stairs/left{ - dir = 4 +"VV" = ( +/obj/structure/chair{ + dir = 8 }, +/obj/effect/decal/cleanable/insectguts, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"VO" = ( -/obj/structure/spider/stickyweb, -/obj/structure/spider/cocoon{ - icon_state = "cocoon3" +"VW" = ( +/obj/structure/railing{ + dir = 8 }, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"VQ" = ( -/obj/structure/cable{ - icon_state = "4-8" +"Wd" = ( +/obj/structure/chair{ + dir = 8 }, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"We" = ( +/obj/structure/spacevine/dense, +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"VS" = ( +"Wg" = ( /obj/structure/flora/grass/jungle, -/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/junglebush, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Wb" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plating, +"Wi" = ( +/obj/structure/table_frame, +/turf/open/floor/plasteel, /area/overmap_encounter/planetoid/jungle/explored) -"Wf" = ( -/obj/structure/closet/firecloset/full{ - anchored = 1 - }, -/obj/item/extinguisher/advanced, -/obj/item/geiger_counter, -/obj/structure/railing{ - dir = 6 +"Wk" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 }, -/turf/open/floor/concrete/reinforced{ +/obj/structure/spacevine, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -7103,105 +7120,87 @@ }, /turf/open/floor/plasteel/patterned, /area/ruin/jungle/starport) -"Wn" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) "Wo" = ( /turf/closed/wall, /area/ruin/jungle/starport) -"Wq" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/concrete/reinforced{ +"Wp" = ( +/obj/effect/turf_decal/atmos/plasma, +/obj/structure/spacevine, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"Wt" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/ash, +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Wr" = ( -/obj/structure/cable{ - icon_state = "1-10" - }, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +"Wu" = ( +/obj/structure/spider/stickyweb, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Ws" = ( -/obj/structure/spacevine, -/obj/effect/turf_decal/weather/dirt{ - dir = 4 +"Wv" = ( +/obj/structure/spacevine/dense, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland7" }, -/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"Wy" = ( -/turf/open/floor/plasteel/stairs/right{ +"Ww" = ( +/obj/effect/turf_decal/industrial/traffic{ dir = 8 }, -/area/overmap_encounter/planetoid/jungle/explored) -"Wz" = ( -/obj/structure/flora/rock/jungle, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"WE" = ( -/obj/structure/cable{ - icon_state = "1-6" - }, /obj/structure/cable{ - icon_state = "1-10" + icon_state = "4-8" }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 }, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"WF" = ( -/obj/item/chair, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"WG" = ( -/obj/structure/flora/rock/jungle, -/obj/structure/flora/grass/jungle, +"Wx" = ( /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/grass/jungle{ +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"WI" = ( -/turf/open/floor/plasteel, +"WA" = ( +/obj/effect/decal/cleanable/ash/large, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"WK" = ( -/obj/effect/turf_decal/weather/dirt{ +"WD" = ( +/obj/structure/girder, +/obj/item/stack/sheet/mineral/plastitanium, +/obj/item/stack/sheet/mineral/plastitanium, +/turf/open/floor/plating/rust, +/area/overmap_encounter/planetoid/jungle/explored) +"WH" = ( +/obj/structure/railing{ dir = 10 }, -/obj/effect/turf_decal/weather/dirt{ - dir = 6 - }, -/turf/open/water/jungle, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"WM" = ( -/obj/item/geiger_counter, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/concrete/slab_1{ +"WJ" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"WN" = ( -/obj/structure/spacevine, -/turf/open/floor/plating/dirt, +"WO" = ( +/obj/structure/door_assembly, +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) "WQ" = ( /obj/machinery/door/airlock/hatch, @@ -7214,11 +7213,9 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/tower) -"WS" = ( -/obj/structure/chair, -/obj/effect/decal/cleanable/shreds, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, +"WT" = ( +/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) "WU" = ( /obj/machinery/door/airlock/glass{ @@ -7241,22 +7238,18 @@ /obj/item/stack/sheet/metal, /turf/open/floor/plasteel/grimy, /area/ruin/jungle/starport) -"Xc" = ( +"Xb" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/generic, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"Xd" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland3" }, -/turf/open/floor/concrete/reinforced{ +/area/overmap_encounter/planetoid/jungle/explored) +"Xe" = ( +/obj/structure/door_assembly, +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -7267,44 +7260,14 @@ icon_state = "wood-broken5" }, /area/ruin/jungle/starport) -"Xi" = ( -/obj/structure/spacevine, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Xj" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 1 - }, -/obj/structure/sign/warning/gasmask{ - pixel_y = 32 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/jungle/explored) "Xk" = ( /obj/structure/spider/stickyweb, /turf/open/floor/plating{ icon_state = "platingdmg3" }, /area/ruin/jungle/starport) -"Xl" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/vault, -/area/overmap_encounter/planetoid/jungle/explored) -"Xn" = ( -/obj/structure/spacevine, -/obj/structure/spacevine, -/turf/open/floor/concrete/reinforced{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Xo" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 4 - }, -/turf/open/floor/concrete{ +"Xm" = ( +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -7319,22 +7282,14 @@ /obj/machinery/light/directional/west, /turf/open/floor/plating, /area/ruin/jungle/starport) -"Xs" = ( -/obj/effect/decal/cleanable/insectguts, -/obj/structure/flora/grass/jungle/b, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Xu" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/cable{ - icon_state = "4-8" +"Xw" = ( +/obj/machinery/atmospherics/components/unary/shuttle/heater{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ +/obj/structure/window/plasma/reinforced{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) "Xz" = ( /obj/structure/table, @@ -7350,18 +7305,6 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/tower) -"XB" = ( -/obj/effect/decal/cleanable/molten_object/large, -/obj/effect/radiation{ - rad_power = 180; - rad_range = 3 - }, -/turf/open/floor/plating/dirt/jungle/wasteland{ - icon_state = "wasteland_dug"; - light_color = "#a0ad20"; - light_range = 3 - }, -/area/overmap_encounter/planetoid/jungle/explored) "XC" = ( /obj/effect/decal/remains/human, /obj/effect/decal/cleanable/vomit/old, @@ -7370,41 +7313,39 @@ /obj/item/clothing/shoes/combat, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport/tower) -"XF" = ( -/obj/structure/sign/syndicate{ - pixel_y = -32 - }, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/concrete/slab_1{ +"XN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/flora/junglebush, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"XM" = ( +"XP" = ( /obj/structure/railing, +/obj/structure/closet/secure_closet/engineering_welding{ + anchored = 1 + }, /turf/open/floor/concrete/reinforced{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"XT" = ( -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/concrete/slab_1{ - light_range = 2 +"XR" = ( +/turf/open/floor/plasteel/stairs/right{ + dir = 8 }, /area/overmap_encounter/planetoid/jungle/explored) -"XU" = ( -/obj/effect/turf_decal/industrial/traffic/corner{ - dir = 8 +"XV" = ( +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/structure/spacevine, -/turf/open/floor/concrete{ - light_range = 2 +/obj/structure/cable{ + icon_state = "1-2" }, -/area/overmap_encounter/planetoid/jungle/explored) -"XW" = ( -/obj/effect/turf_decal/borderfloor{ - dir = 1 +/turf/open/floor/plating/dirt/dark{ + name = "beaten path"; + desc = "Upon closer examination, it's dirt, compacted down by much walking"; + light_range = 2 }, -/turf/open/floor/plating, /area/overmap_encounter/planetoid/jungle/explored) "XX" = ( /obj/structure/closet, @@ -7416,89 +7357,63 @@ icon_state = "platingdmg1" }, /area/ruin/jungle/starport) -"XY" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/decal/cleanable/glass, -/obj/structure/spider/stickyweb, -/turf/open/floor/concrete/slab_1{ - light_range = 2 - }, +"Ya" = ( +/obj/structure/spacevine/dense, +/turf/open/water/jungle, /area/overmap_encounter/planetoid/jungle/explored) -"Yb" = ( -/obj/item/chair, +"Yh" = ( +/obj/structure/spacevine, /obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"Yc" = ( -/obj/structure/flora/junglebush, -/obj/structure/flora/grass/jungle, -/turf/open/floor/plating/grass/jungle{ - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Yf" = ( -/obj/structure/girder/displaced, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Yj" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plating, -/area/ruin/jungle/starport) -"Yl" = ( -/obj/structure/table, -/obj/item/radio/intercom/directional/north{ - pixel_y = 24 - }, -/obj/machinery/light/broken/directional/north, -/turf/open/floor/plasteel/grimy, -/area/ruin/jungle/starport) -"Yp" = ( -/obj/structure/cable{ - icon_state = "6-9" - }, -/obj/structure/cable{ - icon_state = "4-9" - }, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 - }, -/area/overmap_encounter/planetoid/jungle/explored) -"Yr" = ( -/obj/structure/table/reinforced, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/jungle/starport/tower) -"Ys" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +"Yi" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Yu" = ( -/obj/structure/flora/tree/jungle{ - icon_state = "tree10" +"Yj" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating, +/area/ruin/jungle/starport) +"Ym" = ( +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 8 }, -/turf/open/floor/plating/grass/jungle{ +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Yv" = ( -/obj/structure/railing{ - dir = 5 +"Yn" = ( +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/effect/decal/cleanable/glass, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"Yo" = ( +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/mineral/plastitanium, +/area/overmap_encounter/planetoid/jungle/explored) +"Yr" = ( +/obj/structure/table/reinforced, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/jungle/starport/tower) +"Yw" = ( +/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +/turf/open/floor/plating/grass{ + desc = "A patch of grass. It looks well manicured"; + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) "Yx" = ( /obj/structure/cable{ icon_state = "4-8" @@ -7506,30 +7421,46 @@ /obj/structure/spacevine, /turf/open/floor/mineral/plastitanium, /area/ruin/jungle/starport) -"Yy" = ( -/obj/item/stack/sheet/mineral/plastitanium, -/turf/open/water/jungle, +"Yz" = ( +/obj/effect/decal/cleanable/glass, +/mob/living/simple_animal/hostile/poison/giant_spider/tarantula, +/turf/open/floor/mineral/plastitanium, /area/overmap_encounter/planetoid/jungle/explored) "YA" = ( /obj/machinery/blackbox_recorder, /turf/open/floor/mineral/plastitanium/red, /area/ruin/jungle/starport/tower) -"YB" = ( -/obj/structure/flora/rock/pile, +"YC" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/open/floor/concrete{ + light_range = 2 + }, +/area/overmap_encounter/planetoid/jungle/explored) +"YD" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/spacevine, /turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) "YE" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) -"YG" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 8; - anchored = 0 +/obj/effect/decal/cleanable/shreds, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/grass/jungle{ + light_range = 2 }, -/turf/open/floor/concrete/slab_1{ +/area/overmap_encounter/planetoid/jungle/explored) +"YH" = ( +/obj/effect/decal/cleanable/shreds, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) @@ -7540,139 +7471,204 @@ icon_state = "panelscorched" }, /area/ruin/jungle/starport) -"YM" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 - }, -/turf/open/floor/concrete/reinforced{ - light_range = 2 +"YL" = ( +/obj/structure/spacevine, +/turf/closed/wall/concrete/reinforced, +/area/overmap_encounter/planetoid/jungle/explored) +"YN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland5" }, /area/overmap_encounter/planetoid/jungle/explored) -"YO" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/concrete/slab_1{ +"YP" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"YQ" = ( +/obj/structure/table, +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/jungle/explored) "YR" = ( /obj/structure/closet, /obj/structure/spider/stickyweb, /turf/open/floor/plating, /area/ruin/jungle/starport) -"YT" = ( -/obj/structure/flora/tree/jungle{ - icon_state = "tree4" +"YS" = ( +/obj/structure/spider/stickyweb, +/obj/structure/spider/cocoon{ + icon_state = "cocoon3" }, +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"YV" = ( +/obj/structure/flora/junglebush/large, /turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"YU" = ( -/obj/structure/cable{ - icon_state = "5-8" - }, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +"YW" = ( +/obj/structure/flora/junglebush, +/turf/open/floor/plating/grass/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"YZ" = ( -/obj/structure/spacevine/dense, -/turf/open/floor/plating/rust, +"YX" = ( +/obj/effect/decal/cleanable/oil, +/obj/structure/spacevine, +/turf/open/floor/concrete/slab_1{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) -"Zc" = ( -/obj/structure/cable{ - icon_state = "6-9" +"Zd" = ( +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 4 }, -/mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +/obj/structure/spacevine/dense, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Ze" = ( -/obj/structure/railing{ - dir = 8 +"Zg" = ( +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland4" }, -/obj/structure/railing{ +/area/overmap_encounter/planetoid/jungle/explored) +"Zi" = ( +/obj/effect/turf_decal/industrial/warning/corner{ dir = 4 }, -/turf/open/floor/plasteel/stairs, -/area/overmap_encounter/planetoid/jungle/explored) -"Zf" = ( -/obj/structure/cable{ - icon_state = "4-8" +/turf/open/floor/concrete{ + light_range = 2 }, -/turf/open/floor/concrete/reinforced{ +/area/overmap_encounter/planetoid/jungle/explored) +"Zl" = ( +/obj/structure/flora/rock, +/obj/structure/spacevine, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Zh" = ( +"Zn" = ( +/obj/structure/table_frame, /obj/structure/spider/stickyweb, -/turf/open/floor/plating/dirt, +/turf/open/floor/plating/rust, /area/overmap_encounter/planetoid/jungle/explored) -"Zk" = ( -/obj/structure/spacevine/dense, -/obj/structure/cable{ - icon_state = "5-8" - }, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; +"Zp" = ( +/obj/effect/decal/cleanable/ash/large, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Zo" = ( -/obj/structure/spider/stickyweb, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/broken/directional/east, -/turf/open/floor/plasteel, -/area/overmap_encounter/planetoid/jungle/explored) "Zr" = ( /obj/machinery/door/airlock/external, /turf/open/floor/plating, /area/ruin/jungle/starport) -"Zs" = ( -/obj/structure/cable{ - icon_state = "2-9" +"Zw" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1 }, -/turf/open/floor/plating/dirt/jungle{ +/obj/structure{ + desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; + dir = 8; + icon = 'icons/obj/turrets.dmi'; + icon_state = "syndie_off"; + name = "defunct laser cannon"; + pixel_x = 26 + }, +/turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"Zw" = ( -/obj/machinery/door/airlock/glass, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plating/rust, -/area/overmap_encounter/planetoid/jungle/explored) -"Zz" = ( -/obj/effect/decal/cleanable/vomit/old, +"Zx" = ( +/obj/structure/railing, /turf/open/floor/concrete/slab_1{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"ZC" = ( -/obj/effect/turf_decal/box/corners, -/obj/structure/spacevine/dense, -/turf/open/floor/concrete/slab_1{ +"ZA" = ( +/obj/structure/spider/stickyweb, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) -"ZJ" = ( -/obj/structure/spacevine, -/mob/living/simple_animal/hostile/poison/giant_spider/hunter, +"ZB" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland9" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"ZE" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"ZF" = ( +/obj/structure/spacevine/dense, /turf/open/floor/concrete{ light_range = 2 }, /area/overmap_encounter/planetoid/jungle/explored) +"ZH" = ( +/obj/item/ammo_casing/caseless/rocket{ + desc = "An 84mm high explosive rocket. Looks like they'd fit into a launcher" + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"ZM" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plasteel, +/area/overmap_encounter/planetoid/jungle/explored) +"ZN" = ( +/obj/structure/spider/cocoon, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 10 + }, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper, +/turf/open/floor/plating, +/area/ruin/jungle/starport) +"ZO" = ( +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/mineral/plastitanium{ + icon_state = "plastitanium_dam4" + }, +/area/overmap_encounter/planetoid/jungle/explored) +"ZP" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"ZR" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/plating/dirt/jungle/wasteland{ + icon_state = "wasteland1" + }, +/area/overmap_encounter/planetoid/jungle/explored) "ZS" = ( -/turf/closed/wall, +/obj/structure/railing{ + dir = 5 + }, +/turf/open/floor/plating/dirt/jungle{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) "ZT" = ( /obj/structure/window/plasma/reinforced/plastitanium, @@ -7682,16 +7678,25 @@ }, /turf/open/floor/plating, /area/ruin/jungle/starport/tower) -"ZU" = ( -/obj/structure/spacevine, -/turf/open/floor/plating/dirt/dark{ - name = "beaten path"; - desc = "Upon closer examination, it's dirt, compacted down by much walking"; - light_range = 2 +"ZX" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating{ + icon_state = "panelscorched" }, /area/overmap_encounter/planetoid/jungle/explored) -"ZW" = ( -/turf/open/water/jungle, +"ZY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/concrete/reinforced{ + light_range = 2 + }, /area/overmap_encounter/planetoid/jungle/explored) (1,1,1) = {" @@ -7726,8 +7731,8 @@ UE UE UE UE -dY -dY +Ee +Ee UE UE UE @@ -7744,13 +7749,13 @@ UE UE UE UE -dY -yH -wg -wg -wg -wg -wg +Ee +Xm +ir +ir +ir +ir +ir UE UE UE @@ -7765,11 +7770,11 @@ UE UE UE UE -wg -wg -Yc -wg -wg +ir +ir +lu +ir +ir "} (2,1,1) = {" UE @@ -7802,11 +7807,11 @@ UE UE UE UE -TM -tW -dY -dl -yH +ce +Ap +Ee +vT +Xm UE UE UE @@ -7820,15 +7825,15 @@ UE UE UE UE -dY -jd -TM -wg -PT -wg -wg -wg -wg +Ee +jO +ce +ir +FB +ir +ir +ir +ir UE UE UE @@ -7840,13 +7845,13 @@ UE UE UE UE -wg -wg -wg -dY -Yc -Yc -wg +ir +ir +ir +Ee +lu +lu +ir "} (3,1,1) = {" UE @@ -7868,23 +7873,23 @@ UE UE UE UE -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ue -TM -TM -qh -TM -tW -DU +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +Ck +ce +ce +zt +ce +Ap +YV UE UE UE @@ -7895,17 +7900,17 @@ UE UE UE UE -dY -jd -tW -TM -wg -PL -ZW -GJ -GJ -ue -wg +Ee +jO +Ap +ce +ir +SH +zN +NA +NA +Ck +ir UE UE UE @@ -7916,14 +7921,14 @@ UE UE UE UE -wg -wg -yH -er -uh -yH -SC -wg +ir +ir +Xm +Cg +Es +Xm +Ah +ir "} (4,1,1) = {" UE @@ -7942,27 +7947,27 @@ UE UE UE UE -Jo -ZW -ZW -ZW -ZW -ZW -ZW -ZW -uB -uB -uB -uB -ZW -ZW -GJ -ue -TM -wg -TM -tW -yH +fl +zN +zN +zN +zN +zN +zN +zN +gC +gC +gC +gC +zN +zN +NA +Ck +ce +ir +ce +Ap +Xm UE UE UE @@ -7970,37 +7975,37 @@ UE UE UE UE -oT -dE -tW -TM -wg -wg -PL -ZW -ZW -ZW -ZW -sr -wg -wg -wg +jk +sD +Ap +ce +ir +ir +SH +zN +zN +zN +zN +PB +ir +ir +ir UE -wg -wg -wg -wg -wg -wg -wg -wm -dY -dY -dY -ad -yH -dE -wg +ir +ir +ir +ir +ir +ir +ir +qQ +Ee +Ee +Ee +OQ +Xm +sD +ir "} (5,1,1) = {" UE @@ -8016,68 +8021,68 @@ UE UE UE UE -ZW -ZW -Jo -Ws -uB -uB -uB -uB -uB -uB -BH -wg -wg -wg -wg -Oi -uB -ZW -ZW -GJ -ue -wg -TM -tW +zN +zN +fl +hk +gC +gC +gC +gC +gC +gC +cv +ir +ir +ir +ir +Ua +gC +zN +zN +NA +Ck +ir +ce +Ap UE UE UE UE UE -yH -oT -oT -TM -TM -wg -wg -PL -ZW -ZW -ZW -ZW -ZW -ZW -GJ -ue -wg -wg -wg -PL -GJ -GJ -GJ -GJ -ue -wg -wg -wg -yH -dE -es -yH -wg +Xm +jk +jk +ce +ce +ir +ir +SH +zN +zN +zN +zN +zN +zN +NA +Ck +ir +ir +ir +SH +NA +NA +NA +NA +Ck +ir +ir +ir +Xm +sD +rf +Xm +ir "} (6,1,1) = {" UE @@ -8092,69 +8097,69 @@ UE UE UE UE -ZW -ZW -uB -Fg -qh -qh +zN +zN +gC +ty +zt +zt dP QE QE QE dP -wg +ir dP QE QE QE dP -wg -Oi -uB -ZW -sr -wg -Rs -tW -yH -OC -yH -yH -yH -DU -CO -wg -wg -PL -GJ -GJ -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -GJ -GJ -GJ -ZW -ZW -ZW -ZW -ZW -ZW -ue -wg -wg -yH -Js -dE -wg -wg +ir +Ua +gC +zN +PB +ir +gP +Ap +Xm +Hk +Xm +Xm +Xm +YV +YW +ir +ir +SH +NA +NA +zN +zN +zN +zN +zN +zN +zN +zN +zN +NA +NA +NA +zN +zN +zN +zN +zN +zN +Ck +ir +ir +Xm +QF +sD +ir +ir "} (7,1,1) = {" UE @@ -8167,13 +8172,13 @@ UE UE UE UE -ZW -ZW -ZW -sr -qh -qh -qh +zN +zN +zN +PB +zt +zt +zt dP QE qP @@ -8187,50 +8192,50 @@ yQ qP QE dP -wg -wg -vm -ZW -ue -wg -wg -yH -dY -dY -OC -tW -TM -wg -wg -PL -ZW -ZW -ZW -ZW -ZW -ZW -ZW -uB -uB -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ue -wg -wg -yH -wg -wg +ir +ir +ju +zN +Ck +ir +ir +Xm +Ee +Ee +Hk +Ap +ce +ir +ir +SH +zN +zN +zN +zN +zN +zN +zN +gC +gC +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +Ck +ir +ir +Xm +ir +ir UE "} (8,1,1) = {" @@ -8244,13 +8249,13 @@ UE UE UE UE -ZW -ZW -ZW -sr -TM -oF -yH +zN +zN +zN +PB +ce +Lu +Xm QE aZ bF @@ -8264,49 +8269,49 @@ bF SD Sv QE -wg -wg -vm -ZW -sr -wg -wg -TM -TM -TM -TM -TM -wg -wg -PL -ZW -uB -uB -uB -uB -uB -uB -BH -wg -wg -vm -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ue -wg -wg -wg +ir +ir +ju +zN +PB +ir +ir +ce +ce +ce +ce +ce +ir +ir +SH +zN +gC +gC +gC +gC +gC +gC +cv +ir +ir +ju +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +Ck +ir +ir +ir UE UE "} @@ -8319,15 +8324,15 @@ UE UE UE UE -ZW -ZW -ZW -ZW -ZW -BH -TM -tW -TM +zN +zN +zN +zN +zN +cv +ce +Ap +ce QE Fb bF @@ -8341,48 +8346,48 @@ Te bF QO QE -wg -TM -Oi -ZW -ZW -GJ -GJ -GJ -wQ -wQ -wQ -GJ -GJ -GJ -ZW -BH -qh -qh -wg -wg -wg -wg -wg -Rs -PL -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -WK -wg +ir +ce +Ua +zN +zN +NA +NA +NA +nb +nb +nb +NA +NA +NA +zN +cv +zt +zt +ir +ir +ir +ir +ir +gP +SH +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +ZP +ir UE UE UE @@ -8396,15 +8401,15 @@ UE UE UE UE -ZW -ZW -ZW -ZW -BH -wg -wg -wg -wg +zN +zN +zN +zN +cv +ir +ir +ir +ir QE Sl bF @@ -8418,48 +8423,48 @@ aj bF wP QE -wg -tW -TM -Oi -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -uB -BH -wg -TM -TM -qh -UD -yH -yH -YT -dE -wg -vm -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -sr -wg -wg +ir +Ap +ce +Ua +zN +zN +zN +zN +zN +zN +zN +zN +gC +cv +ir +ce +ce +zt +KR +Xm +Xm +Jh +sD +ir +ju +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +PB +ir +ir UE UE UE @@ -8472,16 +8477,16 @@ UE UE UE UE -ZW -ZW -ZW -uB -BH -wg -wg -wg -OT -xr +zN +zN +zN +gC +cv +ir +ir +ir +sz +da dP QE LC @@ -8495,49 +8500,49 @@ rd UG QE dP -wg -DA -tW -TM -Oi -uB -uB -uB -uB -uB -uB -BH -wg -wg -wg -wg -TM -TM -yH -yH -yH -yH -dE -wg -vm -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ue -wg -wm +ir +uy +Ap +ce +Ua +gC +gC +gC +gC +gC +gC +cv +ir +ir +ir +ir +ce +ce +Xm +Xm +Xm +Xm +sD +ir +ju +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +Ck +ir +qQ UE UE "} @@ -8548,18 +8553,18 @@ UE UE UE UE -ZW -ZW -uB -BH -wg -wg -wg -wg -yH -NC -wg -wg +zN +zN +gC +cv +ir +ir +ir +ir +Xm +Fz +ir +ir dP QE QE @@ -8571,50 +8576,50 @@ QE QE QE dP -qh -qh -wg -wg -wg -wg -wg -wg -wg -wg -wg -wg -wg -wg -wg -wg -yH -yH -TM -br -br -qz -am -dE -TM -vm -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -sr -wg -wg +zt +zt +ir +ir +ir +ir +ir +ir +ir +ir +ir +ir +ir +ir +ir +ir +Xm +Xm +ce +Nr +Nr +CQ +UR +sD +ce +ju +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +PB +ir +ir UE UE "} @@ -8624,74 +8629,74 @@ UE UE UE UE -ZW -PZ -hG -Rt -Rt -Rt -Rt -Rt -Rt -Rt -bw -Rt -Rt -Wq -NZ -wg -uA -RM -AB -Bk -zI -Il -hu -vR -Eb -Gj -Gj -Rt -Rt -Rt -Rt -Eb -Eb -Eb -NZ -wg -wg -yH -tW -yH -yH -yH -yH -Qi -jd -jd -yH -TM -wg -vm -ZW -ZW -ZW -uB -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ue -wg +zN +xL +Fw +Rz +Rz +Rz +Rz +Rz +Rz +Rz +EZ +Rz +Rz +sn +nH +ir +Hy +IB +tF +Nb +PX +kz +ub +JS +iC +Kw +Kw +Rz +Rz +Rz +Rz +iC +iC +iC +nH +ir +ir +Xm +Ap +Xm +Xm +Xm +Xm +Og +jO +jO +Xm +ce +ir +ju +zN +zN +zN +gC +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +Ck +ir UE UE "} @@ -8700,75 +8705,75 @@ UE UE UE UE -ZW -ZW -ej -Tf -MJ -kO -bR -bR -bR -bR -bR -bR -bR -Ju -Ef -XM -wg -uA -Tf -Bi -Tf -Nl -qs -Bk -Ks -JO -bR -bR -bR -bR -bR -bR -bR -Ng -lt -vR -NZ -wg -wg -yH -tW -tW -yH -yH -yH -UD -dl -jd -TM -PL -ZW -uB -ZW -sr -wg -vm -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -sr -wg +zN +zN +RZ +qW +pz +WJ +KY +KY +KY +KY +KY +KY +KY +GR +fT +MU +ir +Hy +qW +Nk +qW +eO +vX +Nb +CK +ts +KY +KY +KY +KY +KY +KY +KY +gX +dj +JS +nH +ir +ir +Xm +Ap +Ap +Xm +Xm +Xm +KR +vT +jO +ce +SH +zN +gC +zN +PB +ir +ju +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +PB +ir UE UE "} @@ -8776,244 +8781,244 @@ UE UE UE UE -wg -vm -ZW -ej -Tf -XM -cC -FM -cC -cC -cg -cC -Su -gK -PS -XW -XM -wg -uA -pB -AB -Tf -Nl -qs -Xn -Mc -lh -Mf -cC -cC -cg -cC -EG -oW -PS -XW -Tf -XM -TM -tW -yH -yH -wg -QM -cJ -Gy -uN -yH -TM -wg -vm -sr -wg -vm -BH -wg -vm -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -sr -wg +ir +ju +zN +RZ +qW +MU +ND +DV +ND +ND +cz +ND +dg +Mt +bA +yf +MU +ir +Hy +Jf +tF +qW +eO +vX +UX +QL +je +Bc +ND +ND +cz +ND +Or +KX +bA +yf +qW +MU +ce +Ap +Xm +Xm +ir +VN +SG +cq +Cj +Xm +ce +ir +ju +PB +ir +ju +cv +ir +ju +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +PB +ir UE UE "} (16,1,1) = {" UE -wg -TM -wg -vm -ZW -ej -Tf -XM -cC -GZ -cC -cC +ir +ce +ir +ju +zN +RZ +qW +MU +ND +ft +ND +ND QE -cC -Su -HT -iJ -rb -XM -wg -qs -RM -Um -Tf -cV -hu -Tf -TL -xt -jn -EG -cC +ND +dg +uR +Zx +GE +MU +ir +vX +IB +UL +qW +oH +ub +qW +XP +CU +oL +Or +ND QE -cC -cC -iW -iJ -rb -Bk -Tm -wg -wg -wg -wg -wg -yH -yH -dT -qb -jd -TM -PL -ZW -BH -wg -QR -wg -wg -vm -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -sr -wg +ND +ND +lw +Zx +GE +Nb +tK +ir +ir +ir +ir +ir +Xm +Xm +JM +qc +jO +ce +SH +zN +cv +ir +lb +ir +ir +ju +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +PB +ir UE UE "} (17,1,1) = {" -TM -wg -DY -wg -vm -ZW -ej -Tf -XM -cC -cC -cC +ce +ir +sA +ir +ju +zN +RZ +qW +MU +ND +ND +ND ih QE OM -EG -Su -SU -BF -Wq -NZ -qs -Tf -Um -RM -th -Tf -Tf -Wf -cC -cC -cC +Or +dg +TD +nT +sn +nH +vX +qW +UL +IB +Rh +qW +qW +PP +ND +ND +ND ih QE ih -cC -cC -iJ -XW -Tf -rI -wg -wg -UP -tx -wg -yH -yH -UO -yH -dY -wg -vm -sr -wg -TM -wg -wg -PL -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -uB -uB -BH -wg +ND +ND +Zx +yf +qW +CA +ir +ir +hp +ZR +ir +Xm +Xm +Gn +Xm +Ee +ir +ju +PB +ir +ce +ir +ir +SH +zN +zN +zN +zN +zN +zN +zN +zN +zN +zN +gC +gC +cv +ir UE UE "} (18,1,1) = {" -wg -DY -DY -wg -vm -ZW -ej -Tf -gM -cC +ir +sA +sA +ir +ju +zN +RZ +qW +dz +ND QE dP pG @@ -9021,19 +9026,19 @@ QE pG dP QE -XY -GH -fO -Wq -Rt -Tf -ar -HI -Tf -fO -Tf -Ld -cC +QN +dt +CE +sn +Rz +qW +Qo +sp +qW +CE +qW +fL +ND QE dP pG @@ -9041,193 +9046,193 @@ QE pG dP QE -iJ -XW -Tf -LT -wg -NC -oz -DY -wg -wg -yH -wg -wg -wg -PL -ZW -BH -TM -TM -wg -wg -vm -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -ZW -sr -wg -wg -wg -wg +Zx +yf +qW +wo +ir +Fz +zv +sA +ir +ir +Xm +ir +ir +ir +SH +zN +cv +ce +ce +ir +ir +ju +zN +zN +zN +zN +zN +zN +zN +zN +zN +PB +ir +ir +ir +ir UE UE "} (19,1,1) = {" -Eq -oz -kF -wg -vm -ZW -ej -Tf -XM -cC -zi +pu +zv +IT +ir +ju +zN +RZ +qW +MU +ND +QT QE -Op +ZN Dm IL rm -Tj -go -MC -pa -HX -HX -Sy -Hh -HX -HX -HX -HX -qH -XT -tc +NW +Wu +hZ +LN +qk +qk +hR +FX +qk +qk +qk +qk +dI +fz +xP VB Ph Xr LP QE -zi -iJ -XW -Tf -Tm -wg -bk -NC -wg -wg -yH -wg -wg -PL -GJ -ZW -BH -wg -TM -dY -wg -wg -Gb -ZW -ZW -ZW -ZW -ZW -ZW -uB -ZW -ZW -sr -wg -wg +QT +Zx +yf +qW +tK +ir +HO +Fz +ir +ir +Xm +ir +ir +SH +NA +zN +cv +ir +ce +Ee +ir +ir +oN +zN +zN +zN +zN +zN +zN +gC +zN +zN +PB +ir +ir UE UE UE UE "} (20,1,1) = {" -Eq -KW -wg -wg -vm -ZW -ej -Tf -XM -cC -cC +pu +tn +ir +ir +ju +zN +RZ +qW +MU +ND +ND QE dP Qq dP QE -FK -jc -St -Tf -MJ -kO -xA -SK -VL -Tf -Tf -Tf -jo -cC -YO +mq +TN +An +qW +pz +WJ +Wp +GV +yW +qW +qW +qW +Vm +ND +hO QE dP Qq dP QE -EG -iJ -rb -Tf -or -TM -wg -wg -wg -yH -wg -wg -PL -ZW -ZW -BH -wg -wg -tW -dY -ha -wg -gJ -Ws -uB -uB -uB -uB -BH -wg -vm -ZW -sr -wg +Or +Zx +GE +qW +Fe +ce +ir +ir +ir +Xm +ir +ir +SH +zN +zN +cv +ir +ir +Ap +Ee +Cc +ir +aD +hk +gC +gC +gC +gC +cv +ir +ju +zN +PB +ir UE UE UE @@ -9235,77 +9240,77 @@ UE UE "} (21,1,1) = {" -wg -TM -wg -wg -vm -ZW -ej -Tf -XM -cC -cC -la +ir +ce +ir +ir +ju +zN +RZ +qW +MU +ND +ND +rO QE EM QE -Sq -cC -iJ -Ko -MJ -pE -qs -Uu -Xu -Tf -iq -Tf -Tf -LW -cC -Lz -JH +kL +ND +Zx +kx +pz +CB +vX +Cn +Mg +qW +ln +qW +qW +sN +ND +To +IM QE EM QE -nD -cC -iJ -XW -Tf -XM -TM -dE -qz -wg -wg -wg -PL -ZW -ZW -BH -wg -wg -yH -qz -VS -dE -wg -wg -TM -TM -wg -wg -wg -wg -TM -gJ -Jo -sr -wg -wg +qL +ND +Zx +yf +qW +MU +ce +sD +CQ +ir +ir +ir +SH +zN +zN +cv +ir +ir +Xm +CQ +tD +sD +ir +ir +ce +ce +ir +ir +ir +ir +ce +aD +fl +PB +ir +ir UE UE UE @@ -9315,75 +9320,75 @@ UE UE UE UE -wg -vm -ZW -ej -Tf -XM -cC -cC -cC +ir +ju +zN +RZ +qW +MU +ND +ND +ND QE MQ Zr -np -gb -iJ -bS -XM -wg -qs -Bk -RT -Uu -DG -Bg -Tf -XM -cC -PO -cC +AM +WH +Zx +nf +MU +ir +vX +Nb +vc +Cn +YD +uE +qW +MU +ND +Ey +ND QE MQ Zr -np -uJ -iJ -XW -Tf -XM -wg -wg -TM -wg -xi -Em -ZW -ZW -BH -wg -wg -yH -sP -dE -It -wg -wg -wg -yH -TM -TM -wg -LA -Rs -TM -TM -gJ -ZW -ue -wg -wg +AM +Tu +Zx +yf +qW +MU +ir +ir +ce +ir +wt +Qp +zN +zN +cv +ir +ir +Xm +BL +sD +Ma +ir +ir +ir +Xm +ce +ce +ir +eA +gP +ce +ce +aD +zN +Ck +ir +ir UE UE UE @@ -9391,1516 +9396,1516 @@ UE (23,1,1) = {" UE UE -TM -wg -vm -ZW -ej -Tf -XM -cC -EG -nz +ce +ir +ju +zN +RZ +qW +MU +ND +Or +Vp QE Io QE -Je -on -iJ -rb -XM -wg -mK -Tf -hP -Tf -zI -qs -Tf -XM -cC -cC -XF +Dl +bD +Zx +GE +MU +ir +xf +qW +Ow +qW +PX +vX +qW +MU +ND +ND +KD QE Io QE -Je -on -iJ -XW -Tf -XM -wg -wg -qz -TM -wg -II -Oi -BH -wg -wg -yH -yH -dY -DU -dl -wg -xj -wg -yH -vf -yH -wg -wg -CO -wg -wg -wg -Oi -ZW -ue -wg +Dl +bD +Zx +yf +qW +MU +ir +ir +CQ +ce +ir +Bo +Ua +cv +ir +ir +Xm +Xm +Ee +YV +vT +ir +Ut +ir +Xm +sg +Xm +ir +ir +YW +ir +ir +ir +Ua +zN +Ck +ir UE UE UE "} (24,1,1) = {" UE -TM -TM -wg -vm -ZW -Uo -Tf -XM -cC -cC -cC +ce +ce +ir +ju +zN +nw +qW +MU +ND +ND +ND VB Gc VB -cC -cC -iJ -XW -Aj -wg -mK -Tf -vM -RM -Nl -qs -Tf -XM -cC -cC -cC +ND +ND +Zx +yf +mI +ir +xf +qW +ki +IB +eO +vX +qW +MU +ND +ND +ND VB Gc VB -cC -cC -Dz -XW -Tf -XM -wg -II -wg -TM -dE -wg -wg -wg -TM -tW -jd -jd -dY -UD -dl -wg -kQ -wg -wg -yH -UD -UD -wg -LA -wg -dY -wg -wg -vm -sr -wg -wg +ND +ND +eQ +yf +qW +MU +ir +Bo +ir +ce +sD +ir +ir +ir +ce +Ap +jO +jO +Ee +KR +vT +ir +Dy +ir +ir +Xm +KR +KR +ir +eA +ir +Ee +ir +ir +ju +PB +ir +ir UE UE "} (25,1,1) = {" -wg -TM -wg -PL -ZW -BH -hu -Tf -XM -cC -px -cC +ir +ce +ir +SH +zN +cv +ub +qW +MU +ND +Lh +ND VB VB VB -EG -cs -iJ -XW -XM -wg -qs -Tf -vM -RM -zI -mK -Tf -XM -cC -nQ -cC +Or +lU +Zx +yf +MU +ir +vX +qW +ki +IB +PX +xf +qW +MU +ND +UT +ND VB VB VB -cC -ZC -Dz -rb -Tf -XM -wg -wg -wg -TM -qz -dE -zw -TM -gs -dY -uh -TM -wg -qh -dY -wg -UP -vq -wg -yH -yH -UD -UD -yH -dY -Yu -yH -TM -Oi -ZW -ue -wg +ND +Nn +eQ +GE +qW +MU +ir +ir +ir +ce +CQ +sD +by +ce +Wg +Ee +Es +ce +ir +zt +Ee +ir +hp +eC +ir +Xm +Xm +KR +KR +Xm +Ee +Ek +Xm +ce +Ua +zN +Ck +ir UE UE "} (26,1,1) = {" -wg -PL -GJ -ZW -BH -wg -cB -hV -lQ -cC -MG -eJ -MG -MG -MG -eJ -MG -iJ -rb -XM -wg -mK -Kq -Xu -hV -Qe -mK -Tf -XM -cC -MG -eJ -MG -MG -MG -EU -QK -iJ -rb -Sc -bB -Ze -wg -II -wg -II -yH -wg -dY -dY -wg -wg -wg -wg -wg -wg -wg -wg -wg -Tf -Tf -Tf -wg -wg -DU -NU -dE -qz -qz -wg -vm -sr -wg +ir +SH +NA +zN +cv +ir +ns +JY +HY +ND +Nw +un +Nw +Nw +Nw +un +Nw +Zx +GE +MU +ir +xf +SB +Mg +JY +mA +xf +qW +MU +ND +Nw +un +Nw +Nw +Nw +Zd +nr +Zx +GE +gR +sf +Ps +ir +Bo +ir +Bo +Xm +ir +Ee +Ee +ir +ir +ir +ir +ir +ir +ir +ir +ir +qW +qW +qW +ir +ir +YV +rS +sD +CQ +CQ +ir +ju +PB +ir UE UE "} (27,1,1) = {" -wg -vm -PZ -bR -bR -Tw -Ie -Ak -gI -jV -jV -jV -jV -jV -jV -jV -jV -si -Eu -pE -Tw -ry -Jj -wT -Wy -Yv -At -kO -pE -jV -jV -jV -jV -jV -jV -Nc -zG -MI -sQ -GL -gI -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -in -Tw -Tw -Tw -Tw -Tw -Tw -qh -UD -wg -vm -sr -wg +ir +ju +xL +KY +KY +fC +fc +bd +az +mF +mF +mF +mF +mF +mF +mF +mF +ip +Nj +CB +fC +Yi +Po +mE +XR +ZS +Qg +WJ +CB +mF +mF +mF +mF +mF +mF +tV +mj +JV +jB +ve +az +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +Lq +fC +fC +fC +fC +fC +fC +zt +KR +ir +ju +PB +ir UE UE "} (28,1,1) = {" -GJ -PZ -gj -Tf -Tf -Mq -Hz -Gl -Gl -na -Sh -Sh -Sh -Mq -Mq -Sh -Mq -Mq -Mq -Mq -Mq -XU -Gl -bG -Gl -na -Sh -Sh -Mq -Mq -Mq -Mq -Mq -Mq -Hi -uY -TM -jx -JU -eo -eo -na -Mq -Mq -Mq -Mq -Mq -Mq -wg -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -vp -Gl -rH -Mq -Mq -Mq -Mq -Mq -wg -UD -wg -vm -sr -wg -wg +NA +xL +oX +qW +qW +pU +gi +oa +oa +vs +Al +Al +Al +pU +pU +Al +pU +pU +pU +pU +pU +ru +oa +Ww +oa +vs +Al +Al +pU +pU +pU +pU +pU +pU +Oa +UB +ce +pZ +Kc +uO +uO +vs +pU +pU +pU +pU +pU +pU +ir +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +YC +oa +gT +pU +pU +pU +pU +pU +ir +KR +ir +ju +PB +ir +ir UE "} (29,1,1) = {" -ZW -bR -Tf -Tf -Tf -Mq -Mq -Mq -Mq -Mq -Sh -uY -Mq -Mq -Mq -Sh -Mq -Mq -Mq -Mq -Sh -Sh -Mq -YM -Mq -Sh -Sh -Sh -Sh -Mq -Mq -Mq -Mq -Sh -Nc -TM -wg -wg -wg -JC -je -En -Mq -Mq -Sh -Mq -Mq -wg -kQ -NB -Mq -Mq -Mq -Mq -Mq -Mq -Mq -NB -Mq -Mq -Mq -Mq -Mq -Mq -Mq -NB -Mq -wg -dY -qh -Oi -ZW -ue -wg +zN +KY +qW +qW +qW +pU +pU +pU +pU +pU +Al +UB +pU +pU +pU +Al +pU +pU +pU +pU +Al +Al +pU +Is +pU +Al +Al +Al +Al +pU +pU +pU +pU +Al +tV +ce +ir +ir +ir +Ac +Pv +ow +pU +pU +Al +pU +pU +ir +Dy +Jz +pU +pU +pU +pU +pU +pU +pU +Jz +pU +pU +pU +pU +pU +pU +pU +Jz +pU +ir +Ee +zt +Ua +zN +Ck +ir UE "} (30,1,1) = {" -ZW -bR -Tf -Tf -Tf -Mq -Mq -Mq -Mq -Sh -Sh -qh -qh -uY -Sh -Sh -Mq -Sh -Sh -Sh -Sh -Sh -Mq -YM -Mq -Mq -Sh -Sh -Sh -Sh -Mq -Mq -Sh -Nc -wg -wg -Av -xj -sU -wg -ek -TC -Vb -LU -Mq -Sh -Mq -wg -wg -NB -Mq -Gz -Gz -Gz -Mq -Mq -Mq -NB -Mq -Mq -Mq -Mq -Mq -Mq -Mq -NB -Mq -TM -dY -qh -wg -vm -sr -wg +zN +KY +qW +qW +qW +pU +pU +pU +pU +Al +Al +zt +zt +UB +Al +Al +pU +Al +Al +Al +Al +Al +pU +Is +pU +pU +Al +Al +Al +Al +pU +pU +Al +tV +ir +ir +kw +Ut +od +ir +vE +Bd +yU +fx +pU +Al +pU +ir +ir +Jz +pU +ZF +ZF +ZF +pU +pU +pU +Jz +pU +pU +pU +pU +pU +pU +pU +Jz +pU +ce +Ee +zt +ir +ju +PB +ir UE "} (31,1,1) = {" -ZW -bR -Tf -Tf -Tf -Mq -Mq -Mq -Mq -Mq -Sh -uY -Vo -TM -Sh -Sh -Mq -Mq -Sh -Sh -Sh -Sh -Mq -YM -Mq -Mq -Mq -Mq -Sh -Sh -Mq -Mq -Mq -SA -wg -wg -Eq -KW -UP -yd -UZ -zG -Vb -Mq -Mq -Sh -Sh -Mq -Mq -Mq -Gz -Gz -ZJ -Gz -Sh -Mq -Mq -Mq -Mq -Sh -Sh -Sh -Mq -Mq -Sh -Sh -Sh -TM -jd -TM -wg -vm -sr -wg +zN +KY +qW +qW +qW +pU +pU +pU +pU +pU +Al +UB +ll +ce +Al +Al +pU +pU +Al +Al +Al +Al +pU +Is +pU +pU +pU +pU +Al +Al +pU +pU +pU +if +ir +ir +pu +tn +hp +cy +Pn +mj +yU +pU +pU +Al +Al +pU +pU +pU +ZF +ZF +lM +ZF +Al +pU +pU +pU +pU +Al +Al +Al +pU +pU +Al +Al +Al +ce +jO +ce +ir +ju +PB +ir UE "} (32,1,1) = {" -ZW -bR -Tf -Tf -Tf -Mq -Mq -Mq -Mq -Mq -Sh -Sh -Bz -uY -Sh -Mq -Mq -Mq -Sh -Sh -Sh -Sh -Mq -sC -Mq -Mq -Mq -Mq -Sh -Sh -Mq -Mq -Mq -jx -wg -KU -Eq -Tx -UP -mB -wg -TC -Vb -Mq -Sh -Sh -Sh -Gz -Mq -NB -Gz -Sh -Sh -Gz -Sh -Mq -Mq -NB -Mq -Mq -Sh -Sh -Gz -Sh -Sh -pl -Mq -wg -yH -TM -PL -ZW -BH -wg +zN +KY +qW +qW +qW +pU +pU +pU +pU +pU +Al +Al +Zl +UB +Al +pU +pU +pU +Al +Al +Al +Al +pU +ZY +pU +pU +pU +pU +Al +Al +pU +pU +pU +pZ +ir +UI +pu +IP +hp +Lb +ir +Bd +yU +pU +Al +Al +Al +ZF +pU +Jz +ZF +Al +Al +ZF +Al +pU +pU +Jz +pU +pU +Al +Al +ZF +Al +Al +dW +pU +ir +Xm +ce +SH +zN +cv +ir UE "} (33,1,1) = {" -ZW -bR -Tf -Tf -Tf -Mq -Mq -Mq -Mq -Mq -Mq -Sh -uY -Sh -Mq -Mq -Mq -Mq -Sh -Sh -Mq -Mq -Mq -YM -Mq -Mq -Mq -Mq -Mq -Sh -Mq -Mq -Sh -Xi -TM -wg -Eq -DY -bk -gg -wg -je -Gz -Mq -Sh -Sh -Sh -Gz -Gz -Mq -Gz -Sh -Sh -Sh -Sh -Mq -Mq -Mq -Mq -Mq -Sh -Sh -Gz -Sh -Sh -Mq -Mq -wg -TM -PL -ZW -sr -wg -wg +zN +KY +qW +qW +qW +pU +pU +pU +pU +pU +pU +Al +UB +Al +pU +pU +pU +pU +Al +Al +pU +pU +pU +Is +pU +pU +pU +pU +pU +Al +pU +pU +Al +Kk +ce +ir +pu +sA +HO +Zp +ir +Pv +ZF +pU +Al +Al +Al +ZF +ZF +pU +ZF +Al +Al +Al +Al +pU +pU +pU +pU +pU +Al +Al +ZF +Al +Al +pU +pU +ir +ce +SH +zN +PB +ir +ir UE "} (34,1,1) = {" -ZW -bR -Tf -Tf -Tf -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -YM -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Sh -Mq -SA -TM -wg -pL -wg -wg -qh -zG -Gz -Sh -Sh -Sh -Sh -Sh -Gz -Mq -Mq -Sh -Sh -Sh -Mq -Mq -wg -wg -wg -Mq -Mq -Sh -Gz -Sh -Mq -Mq -Mq -wg -TM -vm -ZW -sr -wg -wg +zN +KY +qW +qW +qW +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +Is +pU +pU +pU +pU +pU +pU +pU +pU +Al +pU +if +ce +ir +pQ +ir +ir +zt +mj +ZF +Al +Al +Al +Al +Al +ZF +pU +pU +Al +Al +Al +pU +pU +ir +ir +ir +pU +pU +Al +ZF +Al +pU +pU +pU +ir +ce +ju +zN +PB +ir +ir UE "} (35,1,1) = {" -ZW -bR -Tf -Tf -Tf -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -YM -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -JC -uY -wg -TM -TM -jx -YZ -Iy -Gz -Sh -Gz -Sh -Sh -Sh -Sh -Iy -Mq -Sh -vo -Sh -Mq -Mq -wg -NC -wg -wg -Mq -Mq -Gz -Mq -Mq -NB -Mq -wg -PL -ZW -uB -BH -wg +zN +KY +qW +qW +qW +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +Is +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +Ac +UB +ir +ce +ce +pZ +yV +jj +ZF +Al +ZF +Al +Al +Al +Al +jj +pU +Al +gn +Al +pU +pU +ir +Fz +ir +ir +pU +pU +ZF +pU +pU +Jz +pU +ir +SH +zN +gC +cv +ir UE UE "} (36,1,1) = {" -ZW -bR -Tf -Tf -Tf -Mq -zG -zG -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -YM -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -TM -uY -uY -uY -Xi -Sh -Gz -Sh -Sh -Gz -Sh -Sh -Sh -Sh -Gz -Mq -Sh -Sh -Sh -Mq -wg -wg -yY -wg -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -wg -vm -sr -wg -wg -xb +zN +KY +qW +qW +qW +pU +mj +mj +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +Is +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +ce +UB +UB +UB +Kk +Al +ZF +Al +Al +ZF +Al +Al +Al +Al +ZF +pU +Al +Al +Al +pU +ir +ir +Ed +ir +pU +pU +pU +pU +pU +pU +pU +pU +ir +ju +PB +ir +ir +dF UE UE "} (37,1,1) = {" -ZW -bR -Tf -Tf -Tf -zG -wg -wg -zG -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -YM -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -zG -zG -Mq -Sh -Sh -pl -Sh -Mq -Gz -Sh -Sh -Sh -Mq -Iy -Mq -Mq -Mq -Mq -Mq -Mq -wg -wg -wg -Mq -Mq -Mq -sc -Mq -Mq -NB -Mq -wg -vm -BH -TM -TM -TM -wg +zN +KY +qW +qW +qW +mj +ir +ir +mj +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +Is +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +mj +mj +pU +Al +Al +dW +Al +pU +ZF +Al +Al +Al +pU +jj +pU +pU +pU +pU +pU +pU +ir +ir +ir +pU +pU +pU +BA +pU +pU +Jz +pU +ir +ju +cv +ce +ce +ce +ir UE "} (38,1,1) = {" -ZW -bR -Tf -Tf -Tf -wg -OT -DY -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Sh -Sh -Mq -Mq -Mq -Mq -Mq -Mq -YM -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Cz -Sh -Sh -pl -Mq -Mq -Gz -Gz -Sh -Sh -Sh -Iy -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -NB -Mq -wg -yt -wg -EJ -wg -qh -wg +zN +KY +qW +qW +qW +ir +sz +sA +pU +pU +pU +pU +pU +pU +pU +Al +Al +pU +pU +pU +pU +pU +pU +Is +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +dr +Al +Al +dW +pU +pU +ZF +ZF +Al +Al +Al +jj +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +Jz +pU +ir +me +ir +Zg +ir +zt +ir UE "} (39,1,1) = {" -Oi -LG -NE -Tf -Tf -wg -wg -Kb -Kb -Ij -Mq -Mq -Mq -Mq -Sh -Sh -Gz -Sh -Mq -Mq -Mq -Oz -Kb -Xd -Kb -Ij -Mq -Mq -Mq -Mq -Mq -Mq -Sh -Mq -SA -cU -Gm -hT -MR -zG -Kb -Ij -Mq -Mq -Gz -Sh -vo -Sh -Sh -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -Mq -JB -Kb -Xo -Mq -Mq -Mq -Mq -Mq -wg -yt -wg -bk -EJ -Pb -qh +Ua +xF +tT +qW +qW +ir +ir +HU +HU +Ej +pU +pU +pU +pU +Al +Al +ZF +Al +pU +pU +pU +pH +HU +pi +HU +Ej +pU +pU +pU +pU +pU +pU +Al +pU +if +CC +DN +nk +LF +mj +HU +Ej +pU +pU +ZF +Al +gn +Al +Al +pU +pU +pU +pU +pU +pU +pU +pU +pU +pU +KF +HU +Zi +pU +pU +pU +pU +pU +ir +me +ir +HO +Zg +Pk +zt UE "} (40,1,1) = {" -wg -QR -qO -bR -bR -wg -hu -AO -SQ -qf -qf -qf -qf -wN -wN -hs -hs -SY -Ho -Rt -eq -Bg -BQ -wG -VM -Gr -sy -Rt -NZ -qf -qf -wN -wN -Nc -JC -rZ -Sw -wb -ST -IG -zG -eq -aS -aS -vi -aS -aS -aS -eq -eq -eq -eq -eq -eq -eq -eq -eq -eq -eq -eq -jZ -eq -eq -eq -eq -eq -eq -wg -yt -wg -Tx -NC -kF -qh +ir +lb +Lf +KY +KY +ir +ub +MH +MW +gp +gp +gp +gp +Wk +Wk +MF +MF +wR +Qy +Rz +VW +uE +oV +du +iM +UQ +Vv +Rz +nH +gp +gp +Wk +Wk +tV +Ac +aQ +qX +RI +DZ +zF +mj +VW +mc +mc +cu +mc +mc +mc +VW +VW +VW +VW +VW +VW +VW +VW +VW +VW +VW +VW +en +VW +VW +VW +VW +VW +VW +ir +me +ir +IP +Fz +IT +zt UE "} (41,1,1) = {" -wg -wg -wg -wg -wg -wg -cB -Tf -XM -cC -kc -kV -kc -dm -vQ -KS -vQ -Bp -IQ -XM -qh -uA -Cv -SK -pC -Nl -qs -Tf -XM -cC -RX -eJ -mr -RL -TM -TM -IF -BR -Uq -BR -TM -uY -tW -yH -yH -Tk -tW -tW -yH -wg -wg -wg -wg -wg -wg -wg -wg -wg -wg -Tf -Tf -Tf -wg -wg -wg -wg -yH -GJ -sr -EJ -NC -gQ -wg -qh -qh +ir +ir +ir +ir +ir +ir +ns +qW +MU +ND +Tt +Ym +Tt +Fn +Ff +Ba +Ff +Rx +qd +MU +zt +Hy +pb +GV +FS +eO +vX +qW +MU +ND +xd +un +bL +xU +ce +ce +Wt +Wx +dO +Wx +ce +UB +Ap +Xm +Xm +js +Ap +Ap +Xm +ir +ir +ir +ir +ir +ir +ir +ir +ir +ir +qW +qW +qW +ir +ir +ir +ir +Xm +NA +PB +Zg +Fz +gY +ir +zt +zt "} (42,1,1) = {" -wg -wg -wg -xb -TM -wg -Bg -Tf -XM -cC -jn -cC -kC -kC -kC -GX -vG -Bp -zT -Tm -TM -uA -Bk -SK -Bk -Nl -qs -Tf -XM -cC -jn -Dj -gx -TM -wg -De -bk -wg -IG -ah -gg -wg -IQ -Wz -BR -BR -yH -UD -wg +ir +ir +ir +dF +ce +ir +uE +qW +MU +ND +oL +ND +WT +WT +WT +Fy +cX +Rx +hh +tK +ce +Hy +Nb +GV +Nb +eO +vX +qW +MU +ND +oL +Jc +GM +ce +ir +nB +HO +ir +zF +SM +Zp +ir +qd +dd +Wx +Wx +Xm +KR +ir bN ZT ZT @@ -10912,72 +10917,72 @@ ZT ZT ZT bN -Tf -wg -wg -PL -ue -wg -yH -Jo -BH -wg -kF -wg -wg -yH -qh +qW +ir +ir +SH +Ck +ir +Xm +fl +cv +ir +IT +ir +ir +Xm +zt "} (43,1,1) = {" UE -wg -wg -TM -tW -TM -DD -Tf -XM -cC -EG -cC -kC -Dg -kC -ud -gt -Bp -zT -Tm -TM -uA -Bk -SK -Bk -zI -qs -Tf -XM -cC -cj -Zz -LH -mP -Rj -bk -Eq -Eq -DY -JI -BR -oY -af -BR -wg -wg -qh -qh -BR +ir +ir +ce +Ap +ce +Rf +qW +MU +ND +Or +ND +WT +jm +WT +sk +YX +Rx +hh +tK +ce +Hy +Nb +GV +Nb +PX +vX +qW +MU +ND +FL +bZ +Iz +CN +sH +HO +pu +pu +sA +sh +Wx +TK +xw +Wx +ir +ir +zt +zt +Wx ya sd WR @@ -10989,72 +10994,72 @@ Nh cW XA ya -wg -wg -PL -ZW -sr -wg -wg -zn -TM -TM -wg -wg -tW -yH -qh +ir +ir +SH +zN +PB +ir +ir +PQ +ce +ce +ir +ir +Ap +Xm +zt "} (44,1,1) = {" UE UE UE -wg -tW -tW -DD -Tf -XM -cC -cC -cC -kC -JA -kC -Su -cC -iJ -IQ -Aj -qh -qs -Bk -SK -Bk -zI -qs -Tf -XM -cC -Sg -WM -wg -Gs -wg -wg -xj -XB -EJ -wg -BR -Cu -Pi -wg -yH -UD -Yu -yH -BR +ir +Ap +Ap +Rf +qW +MU +ND +ND +ND +WT +vr +WT +dg +ND +Zx +qd +mI +zt +vX +Nb +GV +Nb +PX +vX +qW +MU +ND +wI +lp +ir +sB +ir +ir +Ut +yO +Zg +ir +Wx +Vt +jT +ir +Xm +KR +Ek +Xm +Wx bN TF jK @@ -11066,72 +11071,72 @@ nF GS aL bN -wg -wg -uk -Jo -Jo -Lj -TM -zn -wg -TM -TM -cd -yH -JN -qh +ir +ir +Gk +fl +fl +Fa +ce +PQ +ir +ce +ce +hH +Xm +yx +zt "} (45,1,1) = {" UE UE UE -wg -tW -tW -DD -Bk -XM -cC -cC -cC -io -IR -Ts -Su -cC -iJ -IQ -Aj -wg -qs -Tf -Xu -Tf -cV -hu -Tf -XM -cC -As -bQ -VD -SA -JC -wg -EJ -xj -DY -gg -SA -Pi -zG -BR -hw -yH -yH -hw -wg +ir +Ap +Ap +Rf +Nb +MU +ND +ND +ND +eG +zQ +NF +dg +ND +Zx +qd +mI +ir +vX +qW +Mg +qW +oH +ub +qW +MU +ND +AS +yu +Kx +if +Ac +ir +Zg +Ut +sA +Zp +if +jT +mj +Wx +aO +Xm +Xm +aO +ir bN nF nF @@ -11143,72 +11148,72 @@ nF Ha Pw bN -wg -wg -qh -Oi -ZW -ZW -wQ -CZ -wg -wg -tW -tW -tW -tW -wg +ir +ir +zt +Ua +zN +zN +nb +dA +ir +ir +Ap +Ap +Ap +Ap +ir "} (46,1,1) = {" UE UE UE -wg -yH -tW -DD -Bk -XM -cC -cC -zG -Kw -iE -io -vB -Su -OJ -Tf -Wq -NZ -qs -Tf -Xu -fO -th -Tf -Tf -SZ -EG -Sg -cC -Hx -Pi -bE -UP -Av -tx -UP -wg -BR -wg -Cu -qh -BR -hw -Wz -hw -wg +ir +Xm +Ap +Rf +Nb +MU +ND +ND +mj +BV +PA +eG +wO +dg +Mv +qW +sn +nH +vX +qW +Mg +CE +Rh +qW +qW +CD +Or +wI +ND +as +jT +Ly +hp +kw +ZR +hp +ir +Wx +ir +Vt +zt +Wx +aO +dd +aO +ir bN lI JX @@ -11220,72 +11225,72 @@ YA HG Ox bN -wg -UD -qh -wg -Oi -ZW -ZW -CZ -TM -Rs -tW -Wz -tW -TM -TM +ir +KR +zt +ir +Ua +zN +zN +dA +ce +gP +Ap +dd +Ap +ce +ce "} (47,1,1) = {" UE UE UE -wg -yH -yH -DD -Bk -Tm -cC -zG -bE -zG -Qr -uR -io -Su -Hr -hB -Tf -Wq -Rt -Qx -Xu -VL -Tf -Tf -Tf -Ld -cC -cC -io -cC -af -jx -wg -wg -EI -oY -BR -Pi -wg -Cu -UD -qh -hw -hw -wg -wg +ir +Xm +Xm +Rf +Nb +tK +ND +mj +Ly +mj +td +Py +eG +dg +oU +vW +qW +sn +Rz +hI +Mg +yW +qW +qW +qW +fL +ND +ND +eG +ND +xw +pZ +ir +ir +BX +TK +Wx +jT +ir +Vt +KR +zt +aO +aO +ir +ir bN bN bN @@ -11297,72 +11302,72 @@ BD bN bN BD -wg -qh -yH -wg -qh -qh -GY -ZW -Lj -wg -yH -yH -tW -wg -TM +ir +zt +Xm +ir +zt +zt +Ya +zN +Fa +ir +Xm +Xm +Ap +ir +ce "} (48,1,1) = {" UE UE UE -wg -yH -yH -DD -Bk -XM -zG -wg -EJ -wg -IQ -IQ -Hv -ng -XT -Qw -HX -HX -HX -HX -qC -HX -HX -HX -HX -qH -ef -hi -kC -LI -MK -BR -qh -tO -Pi -BR -BR -Cu -IU -yH -nK -qh -wg -yH -wm -wg +ir +Xm +Xm +Rf +Nb +MU +mj +ir +Zg +ir +qd +qd +fp +Zw +fz +vd +qk +qk +qk +qk +NO +qk +qk +qk +qk +dI +tj +qM +WT +Fl +vg +Wx +zt +cp +jT +Wx +Wx +Vt +Qb +Xm +VJ +zt +ir +Xm +qQ +ir bN OI ox @@ -11371,75 +11376,75 @@ ox ox qx bN -wg -wg -yH -yH -yH -Wz -qh -UD -wg -Oi -uB -ZW -ue -wg -yH -TM -fG -TM +ir +ir +Xm +Xm +Xm +dd +zt +KR +ir +Ua +gC +zN +Ck +ir +Xm +ce +ZE +ce "} (49,1,1) = {" UE UE UE -wg -wg -yH -DD -Bk -XM -bE -DY -OT -bE -cC -cK -uR -io -Ll -St -Tf -rj -zJ -tz -GT -Tf -Tf -tz -iO -jo -cC -io -io -mX -wg -zk -Mz -uY -af -bv -Cu -zG -yH -hw -Wz -UD -TM -TM -TM -ZU +ir +ir +Xm +Rf +Nb +MU +Ly +sA +sz +Ly +ND +gf +Py +eG +Ga +An +qW +Hm +Ix +zH +HD +qW +qW +zH +hM +Vm +ND +eG +eG +Xw +ir +Fu +pS +UB +xw +Kh +Vt +mj +Xm +aO +dd +KR +ce +ce +ce +vZ bN CR Pz @@ -11448,75 +11453,75 @@ Ob Lv Ea bN -wg -Wz -yH -yH -DA -qh -qh -Vi -Ry -wg -wg -vm -sr -wg -TM -tB -sr -TM +ir +dd +Xm +Xm +uy +zt +zt +os +TU +ir +ir +ju +PB +ir +ce +Tb +PB +ce "} (50,1,1) = {" UE UE UE UE -MT -MT -DD -Tf -XM -EG -px -wg -zG -io -zG -cC -cs -iJ -Tf -MJ -pE -MT -ma -Xu -XM -Bg -Tf -tz -md -cC -cC -cC -lX -io -iH -gt -xt -su -XW -jx -XM -qn -yH -hw -UD -Jn -wg -aW -ik +vC +vC +Rf +qW +MU +Or +Lh +ir +mj +eG +mj +ND +lU +Zx +qW +pz +CB +vC +kv +Mg +MU +uE +qW +zH +Bw +ND +ND +ND +Eh +eG +il +YX +CU +Rx +yf +pZ +MU +OL +Xm +aO +KR +kG +ir +nS +lZ WU bM wc @@ -11525,24 +11530,24 @@ mw vV lI bN -wg -yH -yH -lW -UD -Ry -yH -yH -Vi -MT -CG -uB -ZW -GJ -GJ -ZW -sr -wg +ir +Xm +Xm +MS +KR +TU +Xm +Xm +os +vC +um +gC +zN +NA +NA +zN +PB +ir "} (51,1,1) = {" UE @@ -11550,50 +11555,50 @@ UE UE UE UE -MT -DD -Tf -XM -cC -RH -cC -cC -cC -EG -cC -oC -ct -JC -zG -wg -wg -ma -Xu -XM -qO -ze -Tf -TL -Sg -px -cC -cC -io -YG -cC -KM -hq -XW -Tf -Tf -DI -aW -aW -pf -ZU -aW -ph -ok +vC +Rf +qW +MU +ND +IH +ND +ND +ND +Or +ND +TT +Pm +Ac +mj +ir +ir +kv +Mg +MU +Lf +Qa +qW +XP +wI +Lh +ND +ND +eG +RQ +ND +Gd +tp +yf +qW +qW +dx +nS +nS +ac +vZ +nS +mu +AK bN bN bN @@ -11602,24 +11607,24 @@ bN bN bN bN -wg -wg -wg -yH -wg -wg -yH -uR -io -uR -MT -MT -vm -ZW -ZW -ZW -Fg -TM +ir +ir +ir +Xm +ir +ir +Xm +Py +eG +Py +vC +vC +ju +zN +zN +zN +ty +ce "} (52,1,1) = {" UE @@ -11627,76 +11632,76 @@ UE UE UE UE -qh -DD -Tf -Wq -Rt -wl -wl -bR -bR -bR -bR -bR -zG -SA -Bk -TM -wg -ma -Hj -XM -TM -SN -Tf -XM -cC -RH -EG -cC -sW -cC -xt -tC -ct -XW -Tf -Tf -DI -aW -Ys -aW -aW -aW -SL -Ys -wg -wg -yH -wg -yH -Wz -yH -yH -wg -wg -wg -yH -BR -yH -uR -uR -Aq -Kw -uR -wg -vm -yD -ZW -Fg -TM -wg +zt +Rf +qW +sn +Rz +YL +YL +KY +KY +KY +KY +KY +mj +if +Nb +ce +ir +kv +lD +MU +ce +xf +qW +MU +ND +IH +Or +ND +OK +ND +CU +Oh +Pm +yf +qW +qW +dx +nS +nj +nS +nS +nS +vJ +nj +ir +ir +Xm +ir +Xm +dd +Xm +Xm +ir +ir +ir +Xm +Wx +Xm +Py +Py +sS +BV +Py +ir +ju +Gp +zN +ty +ce +ir "} (53,1,1) = {" UE @@ -11705,74 +11710,74 @@ UE UE UE UE -lj -is -kO -kO -JO -kO -kO -kO -kO -kO -SA -lf -TM -kr -wg -EJ -Am -Xu -XM -TM -SN -RM -eP -Eb -bR -bR -bR -bR -bR -wl -bR -KJ -JG -MJ -pE -eq -wg -BR -wg -BR -BR -Sx -aW -wg +vl +Jw +WJ +WJ +ts +WJ +WJ +WJ +WJ +WJ +if +IC +ce +oD +ir +Zg +Uw +Mg +MU +ce +xf +IB +Ht +iC +KY +KY +KY +KY +KY +YL +KY +Sz +Us +pz +CB +VW +ir +Wx +ir +Wx +Wx +kH +nS +ir Wo Wo Wo Bx Wo -wg +ir Wo Bx Wo Bx Wo -BN -Wz -Kw -bo -yp -yp -io -xi -ZW -Yy -CZ -TM -wg +mJ +dd +BV +mz +vA +vA +eG +wt +zN +Pe +dA +ce +ir UE "} (54,1,1) = {" @@ -11782,73 +11787,73 @@ UE UE UE UE -MT -qh -wg -wg -wg -wg -wg -MT -TM -wg -qh -qh -kr -DY -kF -MT -dQ -Xu -XM -TM -qh -qT -JO -rV -hl -kO -kO -kO -kO -kO -kO -kO -kO -pE -MT -MT -AF -UD -oj -BR -wg -Sx -Ys -Wz +vC +zt +ir +ir +ir +ir +ir +vC +ce +ir +zt +zt +oD +sA +IT +vC +Hc +Mg +MU +ce +zt +Cq +ts +FG +bm +WJ +WJ +WJ +WJ +WJ +WJ +WJ +WJ +CB +vC +vC +gv +KR +PY +Wx +ir +kH +nj +dd Wo to us se Bx -wg +ir Wo to dZ se Wo -hw -sM -Kw -yp -rA -JQ -Kw -wg -Oi -Jo -CZ -wg +aO +Pa +BV +vA +jr +HH +BV +ir +Ua +fl +dA +ir UE UE "} @@ -11866,66 +11871,66 @@ Lo Lo Lo BM -Cp -aX -tW -yH -wg -xj -oz -xj -wg -wA -Xu -XM -TM -UD -tW -wg -TM -qh -qh -wg -wg -wg -wg -wg -wg -MT -MT -wg -hw -AF -tW -UD -Wz -wg -HF -Ys -yH +CL +xO +Ap +Xm +ir +Ut +zv +Ut +ir +Kl +Mg +MU +ce +KR +Ap +ir +ce +zt +zt +ir +ir +ir +ir +ir +ir +vC +vC +ir +aO +gv +Ap +KR +dd +ir +KC +nj +Xm Wo oA GA wy Wo -wg +ir Wo oA qu xu Wo -Dk -hC -RB -DY -Av -vj -Kw -wg -wg -vm -sr -wg +Nq +KN +qq +sA +kw +wY +BV +ir +ir +ju +PB +ir UE UE "} @@ -11943,66 +11948,66 @@ Az hb kh Lo -Yv -Cp -aX -TM -TM -xj -xj -yY -wg -dQ -Xu -XM -TM -tW -tW -yH -yH -TM -qh -wm -wg -yH -yH -yH -yH -Vi -wg -wg -UD -IZ -tW -qh -yH -BR -Sx -Ys -wg +ZS +CL +xO +ce +ce +Ut +Ut +Ed +ir +Hc +Mg +MU +ce +Ap +Ap +Xm +Xm +ce +zt +qQ +ir +Xm +Xm +Xm +Xm +os +ir +ir +KR +zl +Ap +zt +Xm +Wx +kH +nj +ir Bx BK wy av Bx -wg +ir Wo BK oA Gh Bx -aW -GI -dy -Kw -rK -Kw -Kw -MT -UH -ZW -sr -wg +nS +Ev +WD +BV +Fv +BV +BV +vC +BT +zN +PB +ir UE UE "} @@ -12021,65 +12026,65 @@ bs wd Lo fW -Im -fs -Tw -Tw -Tw -Tw -Tw -Tw -ma -Xu -XM -qm -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -Tw -qm -qm -fw -rq -wg -wg -ri -aW -wg +za +aY +fC +fC +fC +fC +fC +fC +kv +Mg +MU +wr +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +fC +wr +wr +Lk +ua +ir +ir +LJ +nS +ir Wo Wo Bx jh Wo -wg +ir Wo Bx Bx fi Wo -UJ -hw -aW -Kw -Kw -Kw -MT -yj -ZW -ZW -uD -Ry +do +aO +nS +BV +BV +BV +vC +Bu +zN +zN +RV +TU UE UE "} @@ -12091,72 +12096,72 @@ UE UE UE Lo -PJ -PJ +Ss +Ss hE -PJ -PJ +Ss +Ss Ft -wi -Tf -Tf -Tz -Tz -Tz -af -af -Tf -Tf -Xu -Bk -Bk -Tf -Tf -Tf -Tf -Tf -Tf -qh -qh -Tf -Tf -Tf -Bk -Bk -Tf -Tf -Bk -Bk -Tf -Yv -Tw -Tw -Fc -Ak -Yv -Vw -gh -NN -LX -qh -qh -Vw -Vw -Vw -ri -wg -Jd -Ys -ws -wg -yH -MT -MT -PL -ZW -ZW -Ce -wg +pO +qW +qW +oQ +oQ +oQ +xw +xw +qW +qW +Mg +Nb +Nb +qW +qW +qW +qW +qW +qW +zt +zt +qW +qW +qW +Nb +Nb +qW +qW +Nb +Nb +qW +ZS +fC +fC +Ur +bd +ZS +Gv +Yw +Hw +bP +zt +zt +Gv +Gv +Gv +LJ +ir +xC +nj +Be +ir +Xm +vC +vC +SH +zN +zN +Hd +ir UE UE "} @@ -12168,72 +12173,72 @@ UE UE UE Lo -Qs +Mx Vl Td GD GD vD -tQ -DO -Dq -Wb -Wb -Wb -Wb -DO -DO -DO -Uv -VI -VA -VA -VA -NM -NM -wg -wg -DY -AR -yh -tg -tg -VA -VI -VI -VA -Lr -Lr -Lr -VA -mb -mb -JP -Tz -jH -aW -MT -MT -aC -ko -aW -aW -aW -aC -Zk -Jd -aW -BR -Iq -wg -Ry -MT -UH -ZW -ZW -Ce -qh -wg +fB +ww +mD +Qk +Qk +Qk +Qk +ww +ww +ww +aP +ly +Aa +Aa +Aa +qG +qG +ir +ir +sA +Wv +uf +Fh +Fh +Aa +ly +ly +Aa +eU +eU +eU +Aa +yr +yr +JD +oQ +gW +nS +vC +vC +AT +We +nS +nS +nS +AT +jJ +xC +nS +Wx +DK +ir +TU +vC +BT +zN +zN +Hd +zt +ir UE UE "} @@ -12251,65 +12256,65 @@ Lp PJ PJ Ft -wi -Tf -Zf -Tz -Tf -Tf -Tz -Tf -Tf -Tf -Zf -Tf -Tf -Tf -Tf -Tf -Tz -BR -NC -OT -BR -wg -RM -Tf -Tf -Tf -Bk -Bk -Bk -Tf -HB -Tf -Tf -Tf -Tf -gE -NL -kI -kI -bI -Jd -Eq -Jd -Jd -kI -WE -Wr -qh -cN -DY -AD -Bs -MT -MT -vm -ZW -Ce -qh -wg +pO +qW +Ne +oQ +qW +qW +oQ +qW +qW +qW +Ne +qW +qW +qW +qW +qW +oQ +Wx +Fz +sz +Wx +ir +IB +qW +qW +qW +Nb +Nb +Nb +qW +df +qW +qW +qW +qW +Gi +xS +vn +vn +oK +xC +pu +xC +xC +vn +hj +HS +zt +EB +sA +eV +YN +vC +vC +ju +zN +Hd +zt +ir UE UE UE @@ -12328,64 +12333,64 @@ uz Dr Eg Lo -Xj -iq -Zf -LD -Gr -uR -io -io -io -tI -Ax -aq -io -io -io -uR -Bg -Tz -BR -wZ -BR -wg -vi -vi -eq -eq -eq -Bg -Tf -Tf -Tz -Tz -Tz -Tz -Tf -Tf -dR -aW -wg -Eq -Eq -KW -wg -Vw -Vw -Vw -cY -qh -qh -wg -wg -fj -MT -PL -ZW -uD -qh -wg +ic +ln +Ne +JE +UQ +Py +eG +eG +eG +aJ +Lx +Yo +eG +eG +eG +Py +uE +oQ +Wx +bu +Wx +ir +cu +cu +VW +VW +VW +uE +qW +qW +oQ +oQ +oQ +oQ +qW +qW +EX +nS +ir +pu +pu +tn +ir +Gv +Gv +Gv +Gq +zt +zt +ir +ir +dv +vC +SH +zN +RV +zt +ir UE UE UE @@ -12405,63 +12410,63 @@ HZ PJ oI Lo -Gr -By -Zf -Tz -uR -io -yx -AG -Xl -Mu -FA -Ai -iL -Vu -lR -io -uR -Tf -BR -BR -wg -wg -yH -wg -wg -wg -wg -qs -fS -mi -VM -Gr -eq -eq -DM -DM -Vq -aW -wg -wg -Eq -TV -TM +UQ +xX +Ne +oQ +Py +eG +Nf +ls +ep +hy +ZO +Mk +pe +zL +rT +eG +Py +qW +Wx +Wx +ir +ir +Xm +ir +ir +ir +ir +vX +jz +te +iM +UQ +VW +VW +QC +QC +rE +nS +ir +ir +pu +jM +ce Wo Wo Wo zu Wo -wg -yH -tW -TM -TM -vm -ZW -sr -wg +ir +Xm +Ap +ce +ce +ju +zN +PB +ir UE UE UE @@ -12482,63 +12487,63 @@ Lo Lo Lo BM -RN -qs -Zf -Tf -io -OG -mn -lr -Qc -dp -Nc -yv -vw -Ai -IR -tk -io -Tf -Tz -Nl -wg -yH -yH -yH -yH -wg -wg -wg -aW -wg -aW -wg -wg -wg -Bm -aW -aW -wg -wg -wg -wg -Eq -TM +ec +vX +Ne +qW +eG +EP +Rw +Et +jA +Cm +tV +ob +AL +Mk +zQ +sj +eG +qW +oQ +eO +ir +Xm +Xm +Xm +Xm +ir +ir +ir +nS +ir +nS +ir +ir +ir +ne +nS +nS +ir +ir +ir +ir +pu +ce Bx BK Xg Gh Wo -yH -Wz -tW -Rs -TM -Gb -ZW -sr -wg +Xm +dd +Ap +gP +ce +oN +zN +PB +ir UE UE UE @@ -12552,70 +12557,70 @@ UE UE UE UE -yp -yp -Zh -wg -wg -qh -wg -wg -qs -Zf -Tf -io -ek -Af -zo -vu -st -rz -Uf -CS -nV -Ai -mo -io -Bk -Bk -Nl -yH -yH -ZS -ZS -ZS -ZS -ZS -ZS -lg -ZS -lg -ZS -ZS -ZS -ZS -nt -ZS -ZS -ZS -Kw -Kw -TM -wg +vA +vA +rk +ir +ir +zt +ir +ir +vX +Ne +qW +eG +vE +lB +LL +KL +WA +DF +Pr +kt +Hu +Mk +LK +eG +Nb +Nb +eO +Xm +Xm +ed +ed +ed +ed +ed +ed +QU +ed +QU +ed +ed +ed +ed +WO +ed +ed +ed +BV +BV +ce +ir Wo La pK CV Bx -wg -tW -TM -Bm -wg -Gb -Jo -sr -wg +ir +Ap +ce +ne +ir +oN +fl +PB +ir UE UE UE @@ -12629,70 +12634,70 @@ UE UE UE UE -yp -Vi -Vi -TM -AF -qh -EJ -kQ -qs -Zf -Tf -io -gA -Uk -MD -UP -bk -TM -rz -EK -IN -Ai -Oj -io -Tf -Bk -zI -yH -tW -ZS -gk -rc -yw -rc -lG -El -Tg -YE -WI -Pq -xm -lE -lG -lG -wE -bb +vA +os +os +ce +gv +zt +Zg +Dy +vX +Ne +qW +eG +ZH +uP +jN +hp +HO +ce +DF +Yz +ym +Mk +ny +eG +qW +Nb +PX +Xm +Ap +ed +GC +bH +UC +bH zG -ZS -TM -wg +Vf +dV +ZM +cF +ys +Vd +zM +zG +zG +ei +hf +mj +ed +ce +ir Wo to nI LM Wo -wg -wg -mh -Jn -wg -vm -Jo -sr -wg +ir +ir +Li +kG +ir +ju +fl +PB +ir UE UE UE @@ -12705,73 +12710,73 @@ UE UE UE UE -yp -yp -aX -EQ -wg -AF -BR -wg -wg -qs -Zf -Tf -uR -io -SA -wg -wX -Nx -EJ -sv -ET -nY -wW -io -uR -Tf -Tf -zI -TM -tW -ZS -rc -WI -gZ +vA +vA +xO +ew +ir +gv +Wx +ir +ir +vX +Ne +qW +Py +eG +if +ir lG -uW -je -je -je -Da -Da -RF -jt -py -dk -HM -xJ -xJ -ZS -wg -wg +iB +Zg +gU +HR +Fm +gO +eG +Py +qW +qW +PX +ce +Ap +ed +bH +cF +EY +zG +YS +Pv +Pv +Pv +uK +uK +zj +fn +zm +sE +om +Iw +Iw +ed +ir +ir Wo Wo Wo Bx Wo -wg -yH -hw -tW -wg -Oi -ZW -sr -wg -wg -wg +ir +Xm +aO +Ap +ir +Ua +zN +PB +ir +ir +ir UE UE UE @@ -12781,74 +12786,74 @@ UE UE UE UE -yp -yp -yp -Hp -yH -wg -AF -hw -hw -wg -qs -Zf -Tf -Nl -uR -io -io -DY -nW -VC -rB -io -io -io -uR -qs -Tf -Tf -Nl -wg -yH -ZS -ED -lE -pI -Ul -nh -UY -wJ -zG -LV -Ou -Ou -af -Pq -yq -cP -xl -eu -ZS -wg -dY -dY -CO -wg -wg -wg -qh -AF -hw -vf -TM -TM -Oi -ZW -wQ -ue -wg +vA +vA +vA +KQ +Xm +ir +gv +aO +aO +ir +vX +Ne +qW +eO +Py +eG +eG +sA +BB +Fr +PI +eG +eG +eG +Py +vX +qW +qW +eO +ir +Xm +ed +KB +zM +mS +NX +pr +fZ +kM +mj +YQ +VT +VT +xw +ys +pY +Mp +xM +Ig +ed +ir +Ee +Ee +YW +ir +ir +ir +zt +gv +aO +sg +ce +ce +Ua +zN +nb +Ck +ir UE UE UE @@ -12857,76 +12862,76 @@ UE UE UE UE -yp -yp -DY -yp -yp -yp -wg -hw -yH -iU -yH -qs -PU -AO -Wn -Jn -tW -Km -wg -qK -ek -MT -Vi -UD -UD -tW -qs -AO -AO -Nl -wg -wg -ZS -rc -xn -aG -zZ -BR -BR -JC -UY -PW -UA -we -Gm -jt -lE -iu -gn -Va -ZS -TM -TM -tW -yH -LA -wg -wg -yH -hw -FQ -yH -Wz -TM -wg -Oi -Jo -sr -wg -wg +vA +vA +sA +vA +vA +vA +ir +aO +Xm +bX +Xm +vX +Up +MH +BG +kG +Ap +QJ +ir +oc +vE +vC +os +KR +KR +Ap +vX +MH +MH +eO +ir +ir +ed +bH +FR +uS +ZX +Wx +Wx +Ac +fZ +Wd +ab +qS +DN +fn +zM +Cx +vx +Qj +ed +ce +ce +Ap +Xm +eA +ir +ir +Xm +aO +mg +Xm +dd +ce +ir +Ua +fl +PB +ir +ir UE UE "} @@ -12934,76 +12939,76 @@ UE UE UE UE -yp -Eq -KW -EJ -kr -yp -aW -Jn -aC -Vi -yH -yH -VQ -Ys -hw -yH -Vi -ho -MT -MT -MT -MT -Yf -UD -tW -TM -wg -aW -aW -aW -aW -aW -sL -rG -fu -uq -BR -KT -wg -BR -ay -wg -Cy -af -py -Pq -WS -iu -Df -Va -ZS -wg -wg -vf -TM -TM -wg -wg -Wz -yH -UD -UD -yH -ck -wg -TM -Gb -ZW -ue -wg +vA +pu +tn +Zg +oD +vA +nS +kG +AT +os +Xm +Xm +Vs +nj +aO +Xm +os +QS +vC +vC +vC +vC +bT +KR +Ap +ce +ir +nS +nS +nS +nS +nS +kK +OU +AA +JW +Wx +vU +ir +Wx +dS +ir +vv +xw +zm +ys +sb +Cx +TO +Qj +ed +ir +ir +sg +ce +ce +ir +ir +dd +Xm +KR +KR +Xm +TA +ir +ce +oN +zN +Ck +ir UE UE "} @@ -13011,76 +13016,76 @@ UE UE UE UE -yp -xr -dU -NC -WN -ZU -Ys -pf -hv -hv -LX -aW -ri -aW -tW -yH -yH -yH -nP -Vi -Yf -yH -UD -UD -TM -wg -wg -aW -aW -wg -wm -wg -ZS -WI -fP -TQ -QX -Vg -UP -QQ -wg -BR -BR -xQ -Gm -WI -gl -Va -jt -Xc -ZS -wg -dY -wg -wg -Bt -wg -wg -yH -Vi -wg -UD -dY -ck -hw -TM -vm -ZW -sr -wg +vA +da +xG +Fz +PR +vZ +nj +ac +wM +wM +bP +nS +LJ +nS +Ap +Xm +Xm +Xm +xD +os +bT +Xm +KR +KR +ce +ir +ir +nS +nS +ir +qQ +ir +ed +cF +qD +CM +oS +jy +hp +HV +ir +Wx +Wx +cE +DN +cF +yI +Qj +fn +NK +ed +ir +Ee +ir +ir +ME +ir +ir +Xm +os +ir +KR +Ee +TA +aO +ce +ju +zN +PB +ir UE UE "} @@ -13088,76 +13093,76 @@ UE UE UE UE -yp -LO -Eq -EJ -yp -pf -Bm -TM -MT -Fs -qh -kD -ri -aW -tW -TM -TM -yH -ot -Yf -wg -yH -UD -tW -tW -aW -aW -aW -aW -aW -aW -aW -Zw -Tp -sT -wg -QX -gg -NC -Dn -bp -gg -BR -zG -yc -WI -ij -jl -Xc -jt -ZS -dY -dY -wg -FY -bk -xr -wg -wg -MT -MT -Vi -dY -CO -DX -TM -vm -ZW -sr -wg +vA +Pc +pu +Zg +vA +ac +ne +ce +vC +BE +zt +AY +LJ +nS +Ap +ce +ce +Xm +hF +bT +ir +Xm +KR +Ap +Ap +nS +nS +nS +nS +nS +nS +nS +ag +fD +ji +ir +oS +Zp +Fz +io +HE +Zp +Wx +mj +QD +cF +Pl +nc +NK +fn +ed +Ee +Ee +ir +yP +HO +da +ir +ir +vC +vC +os +Ee +YW +nG +ce +ju +zN +PB +ir UE UE "} @@ -13165,177 +13170,177 @@ UE UE UE UE -Tv -Tv -xr -yp -yp -yp -tW -tW -Vi -Vi -jE -MT -ri -aW -yH -wg -TM -Bm -ZU -aW -aW -aW -ZU -ZU -aW -wg -yH -aC -aC -wg -qh -wg -ZS -WI -je -tE -wg -QX -DY -tR -ui -bp -wg -wk -On -rc -zc -lG -iN -pT -ZS -LA -wg -wg -DY -Nx -bk -wg -yH -wg -cd -lS -rY -yH -Jn -BR -vm -ZW -BH -wg +Jx +Jx +da +vA +vA +vA +Ap +Ap +os +os +LY +vC +LJ +nS +Xm +ir +ce +ne +vZ +nS +nS +nS +vZ +vZ +nS +ir +Xm +AT +AT +ir +zt +ir +ed +cF +Pv +Gu +ir +oS +sA +Rd +ZB +HE +ir +fd +gN +bH +TZ +zG +Ja +xT +ed +eA +ir +ir +sA +iB +HO +ir +Xm +ir +hH +cn +Ka +Xm +kG +Wx +ju +zN +cv +ir UE UE "} (73,1,1) = {" UE UE -jx -Cu -SA +pZ +Vt +if AQ xo Xq Xq Wo -tW -aU -yH -wg -wg -GK -aC -aC -BR -Ys -hw -TM -TM -wg -wg -TM -wg -wg -yH -yH -yH -aW -qh -qh -tW -ZS -GP -lG -LV -Rp -wg -jQ -xr -jS -wg -BR -Ul -lG -lG -zc -WI -jt -Si -Gt -aW -KP -xj -uL -KW -wg -wg -wg -LA -dY -br -lO -Wz -wg -BR -vm -sr -wg -wg +Ap +RP +Xm +ir +ir +SX +AT +AT +Wx +nj +aO +ce +ce +ir +ir +ce +ir +ir +Xm +Xm +Xm +nS +zt +zt +Ap +ed +RU +zG +YQ +pn +ir +Xb +da +nA +ir +Wx +NX +zG +zG +TZ +cF +fn +zB +FU +nS +Xe +Ut +zd +tn +ir +ir +ir +eA +Ee +Nr +oe +dd +ir +Wx +ju +PB +ir +ir UE UE "} (74,1,1) = {" UE UE -zG -uY +mj +UB uC wB AQ vK xE Bx -yH -Vi -TM -wg -wg -ri -aW -iX -iX -yH +Xm +os +ce +ir +ir +LJ +nS +AE +AE +Xm Wo Wo Bx @@ -13345,49 +13350,49 @@ Bx Wo Wo Wo -wg -aW -aW -qh -UD -tW -ZS -WI -xJ -Lt -iD -wg -UP -ui -EN -wg -SA -yJ -WI -WI -hr -jt -jt -lF -ZS -wg -aW -TM -uL -wg -TM -TM -Wz -yH -LA -hY -lO -tW -wg -MN -ZW -sr -wg +ir +nS +nS +zt +KR +Ap +ed +cF +Iw +bn +hS +ir +hp +ZB +QY +ir +if +VV +cF +cF +fg +fn +fn +KG +ed +ir +nS +ce +zd +ir +ce +ce +dd +Xm +eA +bK +oe +Ap +ir +AP +zN +PB +ir UE UE UE @@ -13403,16 +13408,16 @@ wH KE Uj Wo -yH -hw -Jn -Bm -wg -ri -aW -yH -UD -yH +Xm +aO +kG +ne +ir +LJ +nS +Xm +KR +Xm Wo zr Wo @@ -13422,49 +13427,49 @@ uT Wo cQ Bx -TM -ZU -TM -TM -tW -dY -ZS -WF -py -fu -tr -UZ -kW -wg -BR -Rb -af -jt -lG -jP -Nm -Si -UM -Qv -ZS -wg -ZU -TM -YZ -Jt -Nc -Ik -ZS -Ik -ZS -Vi -dE -zw -TM -Gb -Jo -CZ -wg +ce +vZ +ce +ce +Ap +Ee +ed +Iv +zm +AA +Cl +Pn +OB +ir +Wx +Bq +xw +fn +zG +Zn +nZ +zB +Ri +dc +ed +ir +vZ +ce +yV +oi +tV +Sm +ed +Sm +ed +os +sD +by +ce +oN +fl +dA +ir UE UE UE @@ -13480,16 +13485,16 @@ wB Vh SS Wo -yH -yH -yH -Bm -BR -ri -aW -yH -yH -UD +Xm +Xm +Xm +ne +Wx +LJ +nS +Xm +Xm +KR Wo ex Bx @@ -13499,49 +13504,49 @@ ro Bx ex Wo -wg -ZU -aW -wg -wg -yH -ZS -Dw -rn -WI -VO -qi -xJ -af -mp -WI -rn -Yb -gn -Va -Nm -WI -WI -bj -ZS -wg -aW -wg -DQ -SA -LH -Ae -Fq -Fq -Ik -wg -wg -wg -TM -Oi -ZW -CZ -wg +ir +vZ +nS +ir +ir +Xm +ed +MZ +Wi +cF +kj +bt +Iw +xw +qa +cF +Wi +eZ +vx +Qj +nZ +cF +cF +Go +ed +ir +nS +ir +GU +if +Iz +oo +Om +Om +Sm +ir +ir +ir +ce +Ua +zN +dA +ir UE UE UE @@ -13557,16 +13562,16 @@ TW Mr Se Bx -yH -wg -wg -yH -iX -tt -aW -aW -yH -yH +Xm +ir +ir +Xm +AE +Bb +nS +nS +Xm +Xm Bx wB AZ @@ -13576,49 +13581,49 @@ kn YR OW Wo -wg -aW -ZU -wg -wg -yH -ZS -Tc -WI -fX -WI -yv -lG -jw -WI -jt -Va -Zo -tL -rc -zc -rX -zc -wK -ZS -wg -ZU -ZU -Cu -sY -lL -rr -WI -WI -ZS -wg -yH -yH -tW -wg -vm -CZ -wg +ir +nS +vZ +ir +ir +Xm +ed +OR +cF +Bf +cF +ob +zG +aH +cF +fn +Qj +kP +VF +bH +TZ +xH +TZ +cH +ed +ir +vZ +vZ +Vt +bh +mk +og +cF +cF +ed +ir +Xm +Xm +Ap +ir +ju +dA +ir UE UE UE @@ -13634,16 +13639,16 @@ nM rl Se Wo -yH -yH -yH -qh -AF -wg -Yp -aW -ZU -aW +Xm +Xm +Xm +zt +gv +ir +RR +nS +vZ +nS yA QZ AQ @@ -13653,49 +13658,49 @@ Pg rh Yj PG -aW -aW -TM -TM -wg -wg -ZS -ZS -ZS -ZS -ZS -qR -xJ -ZS -kE -ZS -ZS -ZS -ZS -ZS -ZS -ZS -ZS -ZS -ZS -wg -jX -wg -ZS -BC -kS -WI -AH -DL -ZS -yH -yH -ms -tW -wg -vm -CZ -TM +nS +nS +ce +ce +ir +ir +ed +ed +ed +ed +ed +GB +Iw +ed +mG +ed +ed +ed +ed +ed +ed +ed +ed +ed +ed +ir +pv +ir +ed +wf +FI +cF +wv +tP +ed +Xm +Xm +kX +Ap +ir +ju +dA +ce UE UE UE @@ -13704,23 +13709,23 @@ UE UE UE Wo -JR +xs WZ Xz EV rJ -CW +Jm Wo -yH -UD -qh -wg -hw -Fx -YU -dJ -ZU -wg +Xm +KR +zt +ir +aO +ZA +Oe +DJ +vZ +ir Wo wB Xk @@ -13730,49 +13735,49 @@ YI Tr kf Bx -wg -aW -wg -TM -tW -wg -yH -yH -tW -wg -tA -MT -LX -yi -aW -wg -yH -dE -Xs -dE -yH -yH -dE -LA -Ra -TM -ZU -aC -lY -WI -zG -WI -zG -WI -Ik -yH -CO -Dh -wg -wg -vm -sr -wg +ir +nS +ir +ce +Ap +ir +Xm +Xm +Ap +ir +fE +vC +bP +QW +nS +ir +Xm +sD +No +sD +Xm +Xm +sD +eA +jx +ce +vZ +AT +Ql +cF +mj +cF +mj +cF +Sm +Xm +YW +YP +ir +ir +ju +PB +ir UE UE UE @@ -13781,23 +13786,23 @@ UE UE UE Wo -wB +xz Ic Xz Xz rJ -mv +sl Bx -yH -qh -wg -ek -MT -OA -ZU -ZU -Zs -IW +Xm +zt +ir +vE +vC +mU +vZ +vZ +km +XV hL cO uQ @@ -13807,49 +13812,49 @@ wB kn hN fA -aW -aW -wg -wg -yH -wg -TM -aX -aX -wg -Jd -LX -Na -Wz -wg -tA -yH -TM -TM -TM -tW -dE -mQ -Ii -LA -TM -qh -aC -Ik -fV -QB -bj -fV -JT -ZS -yH -EE -dY -wg -tB -ZW -sr -wg +nS +nS +ir +ir +Xm +ir +ce +xO +xO +ir +xC +bP +Ki +dd +ir +fE +Xm +ce +ce +ce +Ap +sD +He +eh +eA +ce +zt +AT +Sm +fJ +RG +Go +fJ +mW +ed +Xm +nq +Ee +ir +Tb +zN +PB +ir UE UE UE @@ -13865,16 +13870,16 @@ Ug Uj Se Wo -yH -yH -ek -ek -SF -aW -aW -wg -wg -ri +Xm +Xm +vE +vE +sm +nS +nS +ir +ir +LJ Wo WQ Wo @@ -13884,49 +13889,49 @@ Uz pM hN Wo -yH -aW -aW -wg -Ra -aX -MT -MT -wg -aW -aW -yH -yH -yH -yH -yH -yH -tW -yH -wg -wg -TM -wg -yH -Ra -nP -MT -LX -ZS -ZS -ZS -Ik -ZS -Ik -ZS -WG -EE -wg -TM -Jo -Jo -Fg -wg +Xm +nS +nS +ir +jx +xO +vC +vC +ir +nS +nS +Xm +Xm +Xm +Xm +Xm +Xm +Ap +Xm +ir +ir +ce +ir +Xm +jx +xD +vC +bP +ed +ed +ed +Sm +ed +Sm +ed +Ge +nq +ir +ce +fl +fl +ty +ir UE UE UE @@ -13939,19 +13944,19 @@ Hs lo cO ra -AQ +vH cO qt -kI -kI -ON -nN -aW -aW -yH -dY -dY -ri +vn +vn +Yn +EA +nS +nS +Xm +Ee +Ee +LJ Bx Wl Wo @@ -13961,49 +13966,49 @@ zV hN hN Bx -yH -aW -LX -MT -cd -Vi -yH -yH -wg -yH -yH -li -wg -wg -wg -yH -yH -wg -yH -yH -wg -TM -TM -MT -Vi -Vi -wg -Gx -TM -wg -wg -yH -yH -tW -tW -aX -Vi -TM -tB -ZW -CZ -wg -wg +Xm +nS +bP +vC +hH +os +Xm +Xm +ir +Xm +Xm +Os +ir +ir +ir +Xm +Xm +ir +Xm +Xm +ir +ce +ce +vC +os +os +ir +uU +ce +ir +ir +Xm +Xm +Ap +Ap +xO +os +ce +Tb +zN +dA +ir +ir UE UE UE @@ -14019,16 +14024,16 @@ dB Xk hJ Bx -wg -aW -sX -LX -aW -yH -dY -dY -hw -ri +ir +nS +aT +bP +nS +Xm +Ee +Ee +aO +LJ Wo DR Wo @@ -14038,48 +14043,48 @@ Tn pM WV Wo -Cu -wg -BR -MT -ap -Wz -yH -wg -wg -yH -yH -wg -wg -lk -wg -wg -yH -yH -wg -Wz -yH -wg -TM -wg -yH -JN -tW -UD -TM -wg -yH -JN -tW -DU -Vi -aX -TM -TM -ZW -Jo -BH -wg +Vt +ir +Wx +vC +DS +dd +Xm +ir +ir +Xm +Xm +ir +ir +Rg +ir +ir +Xm +Xm +ir +dd +Xm +ir +ce +ir +Xm +yx +Ap +KR +ce +ir +Xm +yx +Ap +YV +os +xO +ce +ce +zN +fl +cv +ir UE UE UE @@ -14096,16 +14101,16 @@ CP Se Se Cd -aW -aW -aW -aW -iX -iX -qh -UD -hw -tt +nS +nS +nS +nS +AE +AE +zt +KR +aO +Bb Bx Wo Bx @@ -14115,48 +14120,48 @@ Bx Bx aF aF -ci -EN -vk -yH -yH -wg -LA -wg -wg -wg -qz -TM -kF -NC -vz -wg -wg -Wz -wg -yH -tW -yH -yH -yH -TM -TM -UD -qh -TM -wg -wg -wg -wg -nP -vL -vL -wg -PL -Jo -Fg -wg -wg +YH +QY +TY +Xm +Xm +ir +eA +ir +ir +ir +CQ +ce +IT +Fz +jv +ir +ir +dd +ir +Xm +Ap +Xm +Xm +Xm +ce +ce +KR +zt +ce +ir +ir +ir +ir +xD +Yh +Yh +ir +SH +fl +ty +ir +ir UE UE UE @@ -14173,66 +14178,66 @@ HW eB Ab Wo -yH -wg -yH -AF -iX -BR -BR -BR -AF -aW -em -wg -MT -MT -yH -tW -tW -fY -Fk -vk -IG -BR -Kv -IG -MD -yH -yH -jq -tW -dE -TM -rt -Hq -xj -Av -wg -tW -TM -TM -TM -wg -wg -UD -UD -qh -qh -TM -Wz -wg -wg -UP -MT -wg -sU -wg -PL -ZW -BH -wg -wg +Xm +ir +Xm +gv +AE +Wx +Wx +Wx +gv +nS +tH +ir +vC +vC +Xm +Ap +Ap +zg +Oc +TY +zF +Wx +zD +zF +jN +Xm +Xm +AV +Ap +sD +ce +wx +AU +Ut +kw +ir +Ap +ce +ce +ce +ir +ir +KR +KR +zt +zt +ce +dd +ir +ir +hp +vC +ir +od +ir +SH +zN +cv +ir +ir UE UE UE @@ -14243,72 +14248,72 @@ UE UE UE Wo -SS +rR Mr kl rv Se -SS +GO Wo -yH -wg -hw -Vi -yH -wg -wg -hw -bz -UD -aW -Zc -MT -TM -TM -TM -tW -Ub -qE -Kv -MY -Uh -BR -vt -fb -wg -dE -zw -dE -wg -wg -ge -EJ -EJ -wg -wg -yH -UE -UE -UE -wg -wg -UE -UE -UE -UE -wg -wg -wg -xj -xj -NC -bk -wg -PL -uB -BH -wg -wg +Xm +ir +aO +os +Xm +ir +ir +aO +XN +KR +nS +pk +vC +ce +ce +ce +Ap +HK +YE +zD +PN +tw +Wx +qN +tm +ir +sD +by +sD +ir +ir +kg +Zg +Zg +ir +ir +Xm +UE +UE +UE +ir +ir +UE +UE +UE +UE +ir +ir +ir +Ut +Ut +Fz +HO +ir +SH +gC +cv +ir +ir UE UE UE @@ -14320,50 +14325,50 @@ UE UE UE Wo -Yl +BJ Se Xz eR cT -Mh +Ta Wo -yH -TM -Vi -Vi -yH -TM -wg -wg -hX -tN -yH -LX -yb -tW -TM -TM -Jn -JK -ax -IG -tv -tx -KW -gw -BR -wg -yH -dE -xZ -wg -wg -TM -wg -wg -wg -yH -yH +Xm +ce +os +os +Xm +ce +ir +ir +Ik +Kn +Xm +bP +xh +Ap +ce +ce +kG +BU +Dt +zF +bU +ZR +tn +gV +Wx +ir +Xm +sD +RC +ir +ir +ce +ir +ir +ir +Xm +Xm UE UE UE @@ -14375,16 +14380,16 @@ UE UE UE UE -wg -EJ -xj -rA -DY -wg -QP -wg -wg -wg +ir +Zg +Ut +jr +sA +ir +Jb +ir +ir +ir UE UE UE @@ -14404,42 +14409,42 @@ Xz Se SS Wo -wg -wg -aX -tW -tW -MT -MT -wg -yH -CO -CO -MT -tf -tW -tW -iX -iX -fY -ou -rM -wg -DY -Tx -UP -cI -TM -yH -Ra -dE -yH -pJ -TM -wg -yH -yH -yH +ir +ir +xO +Ap +Ap +vC +vC +ir +Xm +YW +YW +vC +qY +Ap +Ap +AE +AE +zg +Cb +Kd +ir +sA +IP +hp +US +ce +Xm +jx +sD +Xm +wC +ce +ir +Xm +Xm +Xm UE UE UE @@ -14452,14 +14457,14 @@ UE UE UE UE -wg -wg -EJ -EJ -wg -wg -wg -wg +ir +ir +Zg +Zg +ir +ir +ir +ir UE UE UE @@ -14481,40 +14486,40 @@ Ug kf ur Wo -wg -yH -yH -tW -xI -MT +ir +Xm +Xm +Ap +ii +vC dP QE QE QE QE dP -jU -ZU -yH -hw -yH -hw -ax -qh -EJ -tv -UP -yM -yM -TM -yH -wg -Wz -DU -yH -yH -yH -yH +GQ +vZ +Xm +aO +Xm +aO +Dt +zt +Zg +bU +hp +et +et +ce +Xm +ir +dd +YV +Xm +Xm +Xm +Xm UE UE UE @@ -14530,10 +14535,10 @@ UE UE UE UE -wg -wg -wg -wg +ir +ir +ir +ir UE UE UE @@ -14558,35 +14563,35 @@ an AQ ID Bx -wg -yH -yH -aX -MT -wg +ir +Xm +Xm +xO +vC +ir QE Nt zK Pf xg QE -ri -aW -BR -yH -dY -hw -BR -wg -yY -gg -Qh -po -vt -wg -Ra -yH -yH +LJ +nS +Wx +Xm +Ee +aO +Wx +ir +Ed +Zp +Ml +gG +qN +ir +jx +Xm +Xm UE UE UE @@ -14635,35 +14640,35 @@ dC XX Co Bx -Yf -yH -Vi -TM -wg -yH +bT +Xm +os +ce +ir +Xm QE Nt qv bF of Sf -ai -BR -BR -yH -dY -dY -hw -wg -wg -wg -po -wg -EN -wg -Wz -LA -yH +Aw +Wx +Wx +Xm +Ee +Ee +aO +ir +ir +ir +gG +ir +QY +ir +dd +eA +Xm UE UE UE @@ -14711,35 +14716,35 @@ Xq kf Xq Bx -zG -wg -qh -qh -TM -TM -yH +mj +ir +zt +zt +ce +ce +Xm QE Nt eK nm Rq QE -wg -BR -yH -yH +ir +Wx +Xm +Xm UE -yH -ms -hw -wg -wg -wg -wg -wg -yH -yH -yH +Xm +kX +aO +ir +ir +ir +ir +ir +Xm +Xm +Xm UE UE UE @@ -14783,39 +14788,39 @@ UE UE UE UE -MT -MT -MT -wg -wg -wg -wg -qh -UD -UD -TM -TM +vC +vC +vC +ir +ir +ir +ir +zt +KR +KR +ce +ce dP QE QE QE QE dP -BR -yH -CO +Wx +Xm +YW UE UE -yH -dY -yH -FP -yH -Wz -dY -dY -yH -yH +Xm +Ee +Xm +IO +Xm +dd +Ee +Ee +Xm +Xm UE UE UE @@ -14860,37 +14865,37 @@ UE UE UE UE -MT -wg -UP -UP -YB -wg +vC +ir +hp +hp +oy +ir UE -wg -qh -UD -qh -TM -TM -wg -Ra -wg -wg -wg -wg -yH -Wz +ir +zt +KR +zt +ce +ce +ir +jx +ir +ir +ir +ir +Xm +dd UE UE UE UE UE -dY -qb -dY -qb -yH +Ee +qc +Ee +qc +Xm UE UE UE @@ -14938,25 +14943,25 @@ UE UE UE UE -wg -wg -kQ -EJ -wg +ir +ir +Dy +Zg +ir UE UE -wm -qh -qh -qh -TM -tW -tW -wg -wg -yH -CO -yH +qQ +zt +zt +zt +ce +Ap +Ap +ir +ir +Xm +YW +Xm UE UE UE @@ -15015,23 +15020,23 @@ UE UE UE UE -wg -wg -wg -wg -wg +ir +ir +ir +ir +ir UE UE UE -wg -qh -UD -dE -dE -jd -TM -tW -tW +ir +zt +KR +sD +sD +jO +ce +Ap +Ap UE UE UE @@ -15101,13 +15106,13 @@ UE UE UE UE -wg -yH -dE -dY -dY -wg -yH +ir +Xm +sD +Ee +Ee +ir +Xm UE UE UE @@ -15178,12 +15183,12 @@ UE UE UE UE -wg -LA -dY -dE -yH -wg +ir +eA +Ee +sD +Xm +ir UE UE UE @@ -15255,12 +15260,12 @@ UE UE UE UE -wg -wg -LA -yH -wg -wg +ir +ir +eA +Xm +ir +ir UE UE UE @@ -15334,9 +15339,9 @@ UE UE UE UE -YB -wg -wg +oy +ir +ir UE UE UE diff --git a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm new file mode 100644 index 000000000000..cca97a317ce2 --- /dev/null +++ b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm @@ -0,0 +1,7124 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/effect/turf_decal/industrial/traffic, +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/ruin/jungle/cavecrew/cargo) +"ad" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "5-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"ae" = ( +/obj/structure/table/reinforced, +/obj/item/storage/backpack/duffelbag/syndie/c4{ + pixel_y = 5; + pixel_x = 2 + }, +/obj/item/crowbar/power{ + pixel_y = -4 + }, +/obj/effect/turf_decal/industrial/fire{ + dir = 5 + }, +/obj/item/ammo_casing/caseless/rocket{ + pixel_x = -6 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/security) +"af" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 2; + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/cavecrew/security) +"ag" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/structure/closet/secure_closet/engineering_welding{ + req_access = null; + anchored = 1 + }, +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/jungle/cavecrew/engineering) +"ah" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"am" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 5; + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/cavecrew/security) +"aw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-9" + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"aI" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "6-8" + }, +/turf/open/floor/plating/dirt/old, +/area/ruin/jungle/cavecrew/cargo) +"aK" = ( +/obj/structure/table/wood, +/obj/item/trash/syndi_cakes{ + pixel_x = -4; + pixel_y = 9 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/jungle/cavecrew/hallway) +"aL" = ( +/obj/machinery/door/airlock/grunge{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"aM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-6" + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"aO" = ( +/obj/structure/destructible/tribal_torch/lit{ + pixel_x = -11; + pixel_y = 19 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"aQ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/ruin/powered) +"aY" = ( +/obj/structure/falsewall/plastitanium, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/dormitories) +"aZ" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"bb" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/powered) +"bh" = ( +/obj/machinery/computer/camera_advanced{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/bridge) +"bp" = ( +/turf/closed/wall/r_wall/yesdiag, +/area/ruin/powered) +"bG" = ( +/obj/structure/spacevine, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/cave/explored) +"bH" = ( +/obj/structure/bed, +/obj/item/bedsheet/dorms, +/obj/structure/curtain/cloth/grey, +/obj/effect/decal/cleanable/shreds, +/turf/open/floor/carpet/nanoweave/beige, +/area/ruin/jungle/cavecrew/dormitories) +"bJ" = ( +/obj/structure/flora/grass/jungle{ + pixel_x = -13; + pixel_y = -14 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"bK" = ( +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = 6; + pixel_y = 9 + }, +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = -4; + pixel_y = -6 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"bU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/statue/sandstone/assistant, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/pod/light, +/area/ruin/jungle/cavecrew/hallway) +"ck" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"cx" = ( +/obj/effect/turf_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/door/airlock/hatch{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/dormitories) +"cK" = ( +/obj/item/stack/rods/ten{ + pixel_x = -3 + }, +/obj/item/stack/ore/salvage/scraptitanium/five{ + pixel_x = 11; + pixel_y = -10 + }, +/obj/item/stack/ore/salvage/scrapsilver/five{ + pixel_y = 8; + pixel_x = 8 + }, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/powered) +"cU" = ( +/obj/machinery/power/port_gen/pacman/super, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/button/door{ + id = "gut_engines"; + name = "Engine Shutters"; + pixel_y = -22; + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage) +"cV" = ( +/obj/structure/flora/ausbushes/reedbush{ + pixel_x = -11; + pixel_y = 13 + }, +/obj/structure/flora/ausbushes/reedbush{ + pixel_y = 5; + pixel_x = 10 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"cX" = ( +/obj/structure/flora/junglebush/large{ + pixel_x = -7; + pixel_y = 8 + }, +/obj/structure/flora/grass/jungle/b{ + pixel_x = 10; + pixel_y = 9 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"cZ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/jungle/cavecrew/security) +"dd" = ( +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"dm" = ( +/obj/machinery/power/smes/engineering, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/industrial/radiation{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/jungle/cavecrew/engineering) +"ds" = ( +/obj/effect/turf_decal/techfloor/corner{ + dir = 1 + }, +/obj/structure/chair/plastic{ + dir = 4; + pixel_y = 9; + pixel_x = -7 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ruin/jungle/cavecrew/security) +"dA" = ( +/turf/open/floor/plating/dirt/old, +/area/ruin/powered) +"dH" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8; + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/cavecrew/security) +"dI" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/ruin/powered) +"dJ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"dO" = ( +/obj/structure/table/wood, +/obj/item/storage/pill_bottle/dice{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/bottle/moonshine{ + pixel_x = -2; + pixel_y = 3 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/jungle/cavecrew/hallway) +"dQ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/hallway) +"dT" = ( +/turf/open/floor/plating/rust, +/area/ruin/jungle/cavecrew/cargo) +"ed" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plating/rust, +/area/ruin/jungle/cavecrew/cargo) +"ef" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-10" + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"ei" = ( +/obj/machinery/computer/communications{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/bridge) +"es" = ( +/turf/template_noop, +/area/template_noop) +"eu" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 4; + layer = 3.1 + }, +/turf/open/water/jungle, +/area/ruin/jungle/cavecrew/cargo) +"eD" = ( +/obj/machinery/mass_driver{ + dir = 1; + id = "gut_launchdoor" + }, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/storage) +"eG" = ( +/obj/structure/flora/rock/pile/largejungle{ + pixel_y = -8; + pixel_x = -31 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"eO" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"eQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/plasma, +/obj/effect/decal/cleanable/glass{ + pixel_x = 11; + pixel_y = -11 + }, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/dormitories) +"eS" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 9; + faction = list("frontiersman") + }, +/turf/closed/wall/mineral/plastitanium, +/area/ship/storage) +"eW" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/closet/crate, +/obj/item/chair/plastic{ + pixel_y = 6 + }, +/obj/item/storage/pill_bottle/dice{ + pixel_x = 7 + }, +/obj/item/storage/wallet/random{ + pixel_y = -6 + }, +/obj/item/stack/telecrystal/five, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"fg" = ( +/obj/structure/flora/rock/jungle{ + pixel_x = 3; + pixel_y = 7 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"fo" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 5; + faction = list("frontiersman") + }, +/turf/closed/wall/mineral/plastitanium, +/area/ship/storage) +"fs" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"fv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/wall/red{ + dir = 1; + name = "Bartender's locker"; + pixel_y = -28 + }, +/obj/item/clothing/under/suit/waiter/syndicate, +/obj/item/clothing/suit/apron/purple_bartender, +/obj/item/reagent_containers/food/drinks/shaker{ + pixel_x = -9; + pixel_y = 2 + }, +/obj/item/storage/pill_bottle/happy{ + pixel_y = -9; + pixel_x = -8 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/ruin/jungle/cavecrew/hallway) +"fy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating/dark/corner, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"fA" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/powered) +"fG" = ( +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = 6; + pixel_y = 11 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"fI" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 19; + pixel_y = 9 + }, +/obj/machinery/light/small/broken/directional/south, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/ruin/jungle/cavecrew/dormitories) +"fN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/directional/west, +/turf/open/floor/plating, +/area/ruin/powered) +"fO" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ship/storage) +"fS" = ( +/turf/closed/mineral/random/jungle, +/area/ruin/powered) +"gd" = ( +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/bridge) +"gk" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 10; + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/directional/south, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/cavecrew/security) +"gm" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade{ + dir = 1 + }, +/turf/open/floor/plating/rust, +/area/ruin/jungle/cavecrew/hallway) +"gv" = ( +/obj/structure/flora/rock/pile/largejungle{ + pixel_y = -31; + pixel_x = -1 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"gF" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/under/rank/security/officer/frontier/officer, +/obj/item/clothing/suit/armor/frontier, +/obj/item/clothing/head/beret/sec/frontier/officer, +/turf/open/floor/carpet/red_gold, +/area/ruin/jungle/cavecrew/dormitories) +"gM" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 8 + }, +/area/ruin/jungle/cavecrew/engineering) +"gQ" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 6; + faction = list("frontiersman") + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/jungle/cavecrew/bridge) +"gU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating/dark/corner, +/obj/structure/cable{ + icon_state = "4-10" + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"hf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 8 + }, +/area/ruin/powered) +"hh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"hn" = ( +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/storage) +"ho" = ( +/obj/machinery/door/poddoor{ + id = "gut_launchdoor" + }, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/storage) +"ht" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/tree/jungle/small, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"hz" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/structure/chair/plastic{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ruin/jungle/cavecrew/security) +"ig" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/machinery/light/directional/east, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"ih" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plating/rust, +/area/ruin/powered) +"ij" = ( +/mob/living/simple_animal/hostile/venus_human_trap, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"iq" = ( +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/structure/chair/office{ + dir = 4; + name = "tactical swivel chair" + }, +/mob/living/simple_animal/hostile/frontier/ranged/officer/neutured, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/bridge) +"iE" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/bridge) +"iN" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"iT" = ( +/obj/structure/flora/rock{ + pixel_x = 9 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"iV" = ( +/turf/closed/wall/rust, +/area/ruin/powered) +"iW" = ( +/turf/open/floor/plating/dirt, +/area/overmap_encounter/planetoid/jungle/explored) +"iZ" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/industrial/loading{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"ja" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/engineering) +"jd" = ( +/obj/structure/spacevine/dense, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"jg" = ( +/obj/structure/spacevine/dense, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"jh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/bed/dogbed/cayenne, +/mob/living/simple_animal/pet/dog/corgi/puppy{ + name = "Kiwi"; + faction = list("neutral","frontiersman") + }, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/ruin/jungle/cavecrew/dormitories) +"jj" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "5-8" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/ruin/powered) +"jm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/jungle/cavecrew/engineering) +"jr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/bookcase/random/nonfiction, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/jungle/cavecrew/hallway) +"ju" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8; + color = "#808080" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"jy" = ( +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/machinery/computer/crew, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage) +"jA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "5-10" + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"jC" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"jF" = ( +/obj/structure/window/reinforced/spawner/north, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/ruin/jungle/cavecrew/security) +"jO" = ( +/obj/structure/flora/junglebush/large{ + pixel_y = -4 + }, +/obj/item/flashlight/lantern{ + pixel_x = 14; + pixel_y = -3 + }, +/turf/open/floor/plating/dirt/jungle/dark/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"jZ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"kb" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/powered) +"ke" = ( +/obj/structure/flora/rock/pile/largejungle, +/obj/structure/fluff/drake_statue{ + pixel_x = -25 + }, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"kj" = ( +/obj/structure/flora/rock/jungle{ + pixel_x = 5; + pixel_y = 10 + }, +/obj/structure/flora/rock/pile/largejungle{ + pixel_y = -31; + pixel_x = 6 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"ks" = ( +/obj/effect/turf_decal/industrial/traffic, +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"ku" = ( +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = -5; + pixel_y = 18 + }, +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = 14; + pixel_y = 1 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"kA" = ( +/obj/structure/flora/grass/jungle{ + pixel_x = -13; + pixel_y = -14 + }, +/obj/structure/flora/grass/jungle{ + pixel_x = -11; + pixel_y = 10 + }, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"kB" = ( +/obj/structure/cable{ + icon_state = "1-9" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/powered) +"kH" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/engineering) +"kL" = ( +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = -5; + pixel_y = 18 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"kO" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor/hole{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ruin/jungle/cavecrew/security) +"kQ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"kR" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/jungle/cavecrew/engineering) +"kV" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/obj/structure/bookcase/random/fiction, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/toy/figure/curator{ + pixel_y = 19; + pixel_x = -11 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"la" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/button/massdriver{ + id = "gut_launchdoor"; + name = "Cannon Button"; + pixel_x = 21; + pixel_y = 8; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"lg" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"lm" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/jungle/cavecrew/bridge) +"lo" = ( +/obj/structure/flora/ausbushes/sparsegrass{ + pixel_x = 7; + pixel_y = 6 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"lt" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/structure/spacevine, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"lu" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/engineering) +"lz" = ( +/turf/open/floor/plating/dirt/jungle/dark, +/area/ruin/jungle/cavecrew/cargo) +"lD" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/railing{ + layer = 3.1 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"lG" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/directional/east{ + pixel_x = 24 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ruin/powered) +"lI" = ( +/obj/structure/flora/tree/jungle/small{ + icon_state = "tree2" + }, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"lR" = ( +/obj/structure/flora/rock/jungle{ + pixel_x = 10; + pixel_y = 5 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"lS" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/weather/dirt/corner, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"lT" = ( +/obj/effect/turf_decal/industrial/warning/dust/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/garbage{ + pixel_y = 5; + pixel_x = -4 + }, +/turf/open/floor/plating, +/area/ruin/powered) +"lV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/garbage{ + pixel_x = -5 + }, +/obj/structure/sign/poster/contraband/lusty_xenomorph{ + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/freezer/wall{ + dir = 4; + pixel_x = -28 + }, +/obj/item/reagent_containers/food/snacks/rationpack, +/obj/item/reagent_containers/food/snacks/rationpack, +/obj/item/reagent_containers/food/snacks/rationpack, +/obj/item/reagent_containers/food/snacks/rationpack, +/obj/item/reagent_containers/food/snacks/rationpack, +/obj/item/reagent_containers/food/snacks/rationpack, +/obj/item/reagent_containers/food/snacks/rationpack, +/obj/item/reagent_containers/food/snacks/rationpack, +/obj/item/reagent_containers/food/condiment/enzyme{ + pixel_x = -8; + pixel_y = 5 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/ruin/jungle/cavecrew/hallway) +"lY" = ( +/obj/structure/flora/ausbushes/palebush, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"mb" = ( +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/machinery/power/port_gen/pacman, +/obj/effect/turf_decal/industrial/warning, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/jungle/cavecrew/engineering) +"mj" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/secure/loot, +/obj/item/storage/pill_bottle/iron{ + pixel_x = -6 + }, +/obj/item/storage/pill_bottle/lsd{ + pixel_y = -3; + pixel_x = -2 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"mt" = ( +/obj/machinery/suit_storage_unit/inherit/industrial, +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/jungle/cavecrew/security) +"mu" = ( +/turf/open/floor/plating, +/area/ruin/powered) +"mw" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/decal/cleanable/wrapping{ + pixel_x = -13; + pixel_y = 7 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"mz" = ( +/obj/structure/chair/stool/bar{ + pixel_x = -6 + }, +/obj/effect/decal/cleanable/vomit/old{ + pixel_x = -14; + pixel_y = 18 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/ruin/jungle/cavecrew/hallway) +"mC" = ( +/obj/structure/cable{ + icon_state = "2-6" + }, +/turf/open/floor/plating, +/area/ruin/powered) +"mD" = ( +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + id = "gut_holo" + }, +/obj/machinery/door/poddoor/shutters{ + id = "gut_cargo"; + name = "Blast Shutters"; + dir = 4 + }, +/turf/open/floor/engine/hull/interior, +/area/ship/storage) +"mI" = ( +/obj/structure/dresser, +/obj/machinery/light/directional/south, +/turf/open/floor/carpet/red_gold, +/area/ruin/jungle/cavecrew/dormitories) +"mK" = ( +/obj/structure/railing{ + layer = 3.1 + }, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/powered) +"na" = ( +/obj/structure/flora/grass/jungle/b{ + pixel_x = 10; + pixel_y = -19 + }, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/powered) +"ng" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-10" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/powered) +"nh" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"np" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 9; + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/cavecrew/security) +"nq" = ( +/obj/structure/flora/ausbushes/reedbush{ + pixel_y = 17; + pixel_x = 3 + }, +/obj/structure/flora/ausbushes/reedbush{ + pixel_y = 5; + pixel_x = -9 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"nt" = ( +/obj/effect/turf_decal/industrial/loading{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"nu" = ( +/obj/machinery/computer/card/minor/cmo, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/bridge) +"nv" = ( +/obj/effect/turf_decal/techfloor{ + dir = 10 + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ruin/jungle/cavecrew/security) +"nR" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"nV" = ( +/obj/structure/railing{ + dir = 9; + layer = 4.1 + }, +/obj/structure/reagent_dispensers/beerkeg{ + pixel_x = 8 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 9 + }, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/jungle/cavecrew/cargo) +"og" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-9" + }, +/obj/structure/cable{ + icon_state = "5-10" + }, +/obj/machinery/power/terminal, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/industrial/warning, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/item/stack/cable_coil/red{ + pixel_x = 8; + pixel_y = 5 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage) +"oq" = ( +/turf/closed/mineral/random/jungle, +/area/ruin/jungle/cavecrew/cargo) +"ov" = ( +/obj/structure/flora/grass/jungle/b{ + pixel_y = -4 + }, +/turf/open/floor/plating/dirt/old/dark/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"ow" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning, +/obj/machinery/power/smes/shuttle/precharged{ + dir = 1 + }, +/obj/structure/window/plasma/reinforced/spawner, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage) +"oD" = ( +/obj/structure/spacevine/dense, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"oH" = ( +/obj/effect/turf_decal/industrial/loading{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-9" + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"oQ" = ( +/obj/structure/flora/grass/jungle{ + pixel_x = -13; + pixel_y = -14 + }, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"oR" = ( +/obj/structure/fermenting_barrel{ + pixel_x = -7; + pixel_y = 5 + }, +/obj/structure/fermenting_barrel{ + pixel_x = 5; + pixel_y = -5 + }, +/turf/open/floor/plating/dirt/jungle/dark, +/area/ruin/powered) +"oU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/frame/computer, +/turf/open/floor/plasteel/patterned, +/area/ruin/jungle/cavecrew/cargo) +"oW" = ( +/turf/open/floor/plasteel/stairs{ + dir = 2 + }, +/area/ruin/jungle/cavecrew/cargo) +"pb" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"pn" = ( +/obj/effect/turf_decal/industrial/radiation{ + dir = 4 + }, +/obj/machinery/power/smes/engineering, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/jungle/cavecrew/engineering) +"pt" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/jungle/cavecrew/cargo) +"px" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-8" + }, +/mob/living/simple_animal/hostile/frontier/ranged/trooper/heavy/neutered, +/turf/open/floor/plasteel/patterned/brushed, +/area/ruin/jungle/cavecrew/security) +"pB" = ( +/obj/effect/turf_decal/industrial/traffic, +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"pL" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, +/area/ruin/jungle/cavecrew/cargo) +"qx" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"qz" = ( +/obj/structure/guncase, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/turf_decal/industrial/warning{ + dir = 10 + }, +/obj/item/gun/ballistic/shotgun/automatic/combat{ + pixel_y = 5 + }, +/obj/item/gun/ballistic/revolver/nagant{ + pixel_y = -1 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/security) +"qO" = ( +/turf/closed/wall/rust, +/area/ruin/jungle/cavecrew/cargo) +"qU" = ( +/obj/structure/spacevine, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"rn" = ( +/obj/structure/flora/grass/jungle/b{ + pixel_x = 13; + pixel_y = -12 + }, +/obj/structure/flora/grass/jungle/b{ + pixel_x = 10; + pixel_y = 9 + }, +/obj/structure/destructible/tribal_torch/lit{ + pixel_x = -11 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"rr" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "4-9" + }, +/turf/open/floor/plating/dirt/old, +/area/ruin/jungle/cavecrew/cargo) +"rt" = ( +/turf/open/floor/plasteel/patterned, +/area/ruin/jungle/cavecrew/cargo) +"rx" = ( +/obj/structure/flora/rock/jungle{ + pixel_y = 12 + }, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"rA" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"rK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-6" + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"rN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/mob/living/simple_animal/hostile/frontier/ranged/trooper/neutered, +/turf/open/floor/plating/dirt/old, +/area/ruin/powered) +"rQ" = ( +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/turf/open/floor/plating, +/area/ruin/powered) +"rT" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/powered) +"sj" = ( +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-6" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/bridge) +"sm" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/wrapping, +/obj/structure/cable{ + icon_state = "6-8" + }, +/obj/machinery/power/terminal, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/industrial/warning, +/obj/item/storage/toolbox/syndicate{ + pixel_y = 5; + pixel_x = 11 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage) +"sH" = ( +/obj/structure/table/wood/reinforced, +/obj/item/reagent_containers/glass/bottle/cyanide{ + pixel_x = 7; + pixel_y = 9 + }, +/obj/item/reagent_containers/glass/bottle/histamine{ + pixel_x = -9; + pixel_y = 6 + }, +/obj/item/reagent_containers/glass/bottle/chlorine{ + pixel_x = -6 + }, +/obj/item/reagent_containers/glass/mortar{ + pixel_x = 5 + }, +/obj/item/pestle{ + pixel_x = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/official/moth/meth{ + pixel_y = 32 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/jungle/cavecrew/dormitories) +"sJ" = ( +/obj/item/clothing/head/crown/fancy{ + pixel_y = 9; + pixel_x = 6 + }, +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/dormitories) +"sM" = ( +/obj/structure/spacevine, +/obj/structure/spacevine/dense, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"ta" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"tj" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/directional/west, +/turf/open/floor/plating/rust, +/area/ruin/powered) +"to" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/ruin/powered) +"tu" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/reagent_dispensers/water_cooler{ + pixel_x = 8; + pixel_y = 15; + density = 0 + }, +/obj/structure/sign/poster/contraband/punch_shit{ + pixel_x = 32 + }, +/obj/item/kirbyplants{ + icon_state = "plant-25"; + pixel_x = -3; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/greenglow{ + color = "#808080"; + pixel_x = -11; + pixel_y = 3 + }, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/hallway) +"tE" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"tL" = ( +/obj/structure/cable{ + icon_state = "1-9" + }, +/turf/open/floor/plating/rust, +/area/ruin/powered) +"tO" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "2-6" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/powered) +"tQ" = ( +/obj/structure/flora/grass/jungle{ + pixel_x = -13; + pixel_y = -14 + }, +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"tW" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/cave/explored) +"tY" = ( +/obj/structure/spacevine, +/obj/structure/spacevine, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"ua" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/chair{ + pixel_x = -9; + pixel_y = 12; + dir = 4 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"ue" = ( +/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating, +/area/ship/storage) +"uf" = ( +/obj/effect/turf_decal/techfloor/hole{ + dir = 4; + pixel_x = 4 + }, +/obj/effect/turf_decal/techfloor/hole/right{ + dir = 4; + pixel_x = 4 + }, +/obj/effect/turf_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/door/airlock/highsecurity, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/security) +"un" = ( +/obj/structure/falsewall/plastitanium, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/jungle/cavecrew/dormitories) +"uo" = ( +/obj/structure/chair/stool/bar{ + pixel_x = -5; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/ruin/jungle/cavecrew/hallway) +"uq" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = 7; + pixel_y = 27 + }, +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = -5; + pixel_y = 15 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"uu" = ( +/obj/structure/closet/cabinet, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/item/clothing/under/rank/security/officer/frontier, +/obj/item/clothing/head/beret/sec/frontier, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"uC" = ( +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"uK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, +/area/ruin/jungle/cavecrew/cargo) +"uX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"va" = ( +/obj/structure/railing{ + layer = 3.1 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/ruin/powered) +"vk" = ( +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + id = "gut_holo"; + dir = 1 + }, +/obj/machinery/button/shieldwallgen{ + dir = 1; + id = "gut_holo"; + pixel_x = 8; + pixel_y = -21 + }, +/obj/machinery/button/door{ + id = "gut_cargo"; + name = "Cargo Door Control"; + pixel_y = -22; + dir = 1 + }, +/obj/machinery/door/poddoor/shutters{ + id = "gut_cargo"; + name = "Blast Shutters"; + dir = 4 + }, +/turf/open/floor/engine/hull/interior, +/area/ship/storage) +"vl" = ( +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-5" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"vo" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/closet/secure_closet{ + icon_state = "sec"; + name = "Ammo Locker"; + req_access_txt = "1" + }, +/obj/item/storage/box/lethalshot{ + pixel_x = -3; + pixel_y = -5 + }, +/obj/item/storage/box/lethalshot{ + pixel_x = -3; + pixel_y = -5 + }, +/obj/item/ammo_box/n762_clip, +/obj/item/ammo_box/n762, +/obj/item/ammo_box/magazine/aks74u, +/obj/item/ammo_box/magazine/aks74u, +/obj/item/ammo_box/magazine/aks74u, +/obj/item/ammo_box/n762, +/obj/item/ammo_box/n762_clip, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/security) +"vr" = ( +/obj/machinery/computer/cargo/express, +/turf/open/floor/plasteel/patterned, +/area/ruin/jungle/cavecrew/cargo) +"vH" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/cave/explored) +"vM" = ( +/obj/structure/table/wood/reinforced, +/obj/item/flashlight/lamp/green{ + pixel_y = 13; + pixel_x = 8 + }, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_y = 4; + pixel_x = -4 + }, +/obj/item/clipboard{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/item/phone{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_y = -8; + pixel_x = 4 + }, +/obj/item/lighter{ + pixel_y = -16; + pixel_x = 13 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/bridge) +"we" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/dormitories) +"wg" = ( +/obj/structure/window/reinforced/spawner/north, +/obj/structure/bed{ + icon_state = "dirty_mattress" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/security) +"wr" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/engineering) +"wt" = ( +/turf/closed/mineral/random/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"wu" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/mob/living/simple_animal/hostile/frontier/ranged/trooper/ak47/neutured, +/turf/open/floor/plasteel/stairs{ + dir = 1 + }, +/area/ship/storage) +"wG" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/patterned/brushed, +/area/ruin/jungle/cavecrew/security) +"wH" = ( +/obj/structure/flora/tree/jungle, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"wN" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/jungle/cavecrew/security) +"wZ" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/bridge) +"xi" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high{ + pixel_y = -5; + pixel_x = -3 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/jungle/cavecrew/engineering) +"xj" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8; + color = "#808080" + }, +/obj/effect/decal/cleanable/vomit/old{ + pixel_y = 6 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light/directional/east, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"xn" = ( +/obj/structure/table/wood, +/obj/item/trash/tray, +/obj/item/trash/waffles, +/obj/item/trash/energybar, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/hallway) +"xr" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/traffic, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/internals, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen, +/obj/item/tank/jetpack/oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"xu" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"xv" = ( +/obj/effect/turf_decal/techfloor, +/turf/open/floor/plasteel/patterned/brushed, +/area/ruin/jungle/cavecrew/security) +"xx" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned, +/area/ruin/jungle/cavecrew/cargo) +"xG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table/wood/reinforced, +/obj/item/flashlight/lamp{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/trash/can/food{ + pixel_x = -9; + pixel_y = 4 + }, +/obj/item/trash/candy{ + pixel_y = 3 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"xI" = ( +/obj/machinery/door/window/brigdoor/southright{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/security) +"xR" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/effect/decal/cleanable/plastic, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/power/terminal, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/industrial/warning, +/obj/structure/cable{ + icon_state = "0-1" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage) +"xT" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/smes/shuttle/precharged{ + dir = 1 + }, +/obj/structure/window/plasma/reinforced/spawner, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage) +"ye" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"yj" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/bed{ + icon_state = "dirty_mattress" + }, +/obj/effect/decal/cleanable/vomit/old, +/obj/structure/grille/broken, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/ruin/jungle/cavecrew/dormitories) +"yk" = ( +/obj/effect/turf_decal/borderfloor, +/obj/machinery/door/airlock/hatch, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/dormitories) +"yv" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/decal/cleanable/oil{ + pixel_x = 8; + pixel_y = 12 + }, +/obj/machinery/power/smes/shuttle/precharged{ + dir = 1 + }, +/obj/structure/window/plasma/reinforced/spawner, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage) +"yx" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating/dirt/old, +/area/overmap_encounter/planetoid/jungle/explored) +"yA" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plating/dirt/jungle/dark, +/area/ruin/jungle/cavecrew/cargo) +"yC" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/fluff/hedge, +/obj/structure/curtain/bounty, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"yD" = ( +/obj/structure/cable{ + icon_state = "6-8" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ruin/jungle/cavecrew/cargo) +"yJ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle/dark, +/area/ruin/jungle/cavecrew/cargo) +"yV" = ( +/turf/open/floor/plating/dirt/jungle, +/area/ruin/jungle/cavecrew/cargo) +"yW" = ( +/obj/structure/closet/crate/goldcrate, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/south, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/dormitories) +"yX" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"yZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ruin/powered) +"zj" = ( +/obj/structure/cable{ + icon_state = "0-6" + }, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/powered) +"zz" = ( +/turf/closed/wall/mineral/plastitanium, +/area/ship/storage) +"zG" = ( +/obj/structure/flora/grass/jungle{ + pixel_x = -13; + pixel_y = -14 + }, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"zJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/freezer/kitchen/wall{ + dir = 4; + pixel_x = -28 + }, +/obj/item/circuitboard/machine/microwave{ + pixel_y = -5; + pixel_x = -5 + }, +/obj/item/circuitboard/machine/reagentgrinder, +/obj/item/circuitboard/machine/processor{ + pixel_y = -4; + pixel_x = 1 + }, +/turf/open/floor/plating/rust, +/area/ruin/jungle/cavecrew/hallway) +"zN" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating/catwalk_floor, +/area/ruin/jungle/cavecrew/hallway) +"zV" = ( +/obj/structure/table/wood/reinforced, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/item/toy/figure/vanguard{ + pixel_y = 2; + pixel_x = -8 + }, +/obj/item/toy/figure/warden{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/reagent_containers/food/snacks/candyheart{ + pixel_x = 1; + pixel_y = -1 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"zX" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/structure/railing{ + dir = 8; + layer = 3.1 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Af" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor/hole/right, +/obj/structure/cable{ + icon_state = "2-9" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/bridge) +"Ag" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/desk_flag{ + pixel_x = -6; + pixel_y = 17 + }, +/obj/item/megaphone/sec{ + name = "syndicate megaphone"; + pixel_x = 1; + pixel_y = 4 + }, +/obj/item/camera_bug{ + pixel_x = -5; + pixel_y = -3 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/bridge) +"Al" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Ap" = ( +/obj/structure/flora/rock/pile/largejungle{ + pixel_y = -17; + pixel_x = -11 + }, +/obj/structure/flora/tree/jungle/small, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"At" = ( +/obj/structure/flora/rock/pile/largejungle{ + pixel_y = -17; + pixel_x = -11 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"AK" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/hallway) +"AR" = ( +/obj/structure/railing{ + dir = 8; + layer = 3.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 8 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"AV" = ( +/obj/structure/cable{ + icon_state = "1-6" + }, +/turf/open/floor/plasteel/stairs/left, +/area/ruin/jungle/cavecrew/bridge) +"Be" = ( +/obj/structure/bed, +/obj/item/bedsheet/dorms, +/obj/structure/curtain/cloth/grey, +/turf/open/floor/carpet/red_gold, +/area/ruin/jungle/cavecrew/dormitories) +"Bp" = ( +/obj/structure/cable/yellow{ + icon_state = "4-10" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/jungle/cavecrew/engineering) +"Bt" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + color = "#808080"; + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/cavecrew/security) +"Bv" = ( +/turf/open/floor/plasteel/stairs/right, +/area/ruin/jungle/cavecrew/bridge) +"Bz" = ( +/obj/machinery/vending/donksofttoyvendor, +/obj/structure/sign/barsign{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/hallway) +"BI" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 9; + faction = list("frontiersman") + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ship/storage) +"BO" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/secure/gear, +/obj/item/gun/ballistic/automatic/smg/aks74u{ + pixel_y = -6 + }, +/obj/item/gun/ballistic/automatic/zip_pistol, +/obj/item/gun/ballistic/automatic/zip_pistol, +/obj/item/gun/ballistic/automatic/zip_pistol, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"BR" = ( +/obj/structure/flora/ausbushes/reedbush{ + pixel_x = -1; + pixel_y = 17 + }, +/obj/structure/flora/ausbushes/reedbush{ + pixel_x = 11; + pixel_y = 8 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"BT" = ( +/obj/structure/flora/ausbushes/reedbush{ + pixel_y = -2; + pixel_x = -4 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"BU" = ( +/obj/structure/closet/crate/silvercrate, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/dormitories) +"Cc" = ( +/obj/item/stack/ore/salvage/scrapmetal/ten{ + pixel_x = 2; + pixel_y = -4 + }, +/turf/open/floor/plating/dirt/old, +/area/ruin/jungle/cavecrew/cargo) +"Cq" = ( +/turf/open/floor/plating/dirt/jungle/dark, +/area/ruin/powered) +"Cr" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/item/book/manual/wiki/engineering_guide{ + pixel_x = 5; + pixel_y = -7 + }, +/obj/item/book/manual/wiki/grenades{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/wrapping, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"CC" = ( +/obj/effect/turf_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/powered) +"CF" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/old, +/area/ruin/powered) +"CJ" = ( +/obj/structure/railing{ + dir = 8; + layer = 3.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/mob/living/simple_animal/hostile/frontier/ranged/neutered, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"CN" = ( +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt/dust, +/mob/living/simple_animal/hostile/frontier, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/engineering) +"CT" = ( +/obj/structure/window/reinforced/spawner/east, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"CU" = ( +/obj/effect/turf_decal/industrial/warning/corner, +/turf/open/floor/plasteel/patterned, +/area/ruin/jungle/cavecrew/cargo) +"CZ" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/jungle/cavecrew/engineering) +"Dd" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Df" = ( +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/rock/pile/largejungle, +/obj/structure/flora/tree/jungle, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Dg" = ( +/obj/structure/table/wood/reinforced, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/item/modular_computer/laptop/preset/civilian{ + pixel_x = -7; + pixel_y = 8 + }, +/obj/item/trash/can/food{ + pixel_x = -9; + pixel_y = 4 + }, +/obj/item/storage/crayons{ + pixel_y = -8; + pixel_x = 5 + }, +/obj/item/melee/transforming/energy/sword/saber/pirate/red, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"Dh" = ( +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Dl" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Dq" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"Dt" = ( +/obj/machinery/power/terminal, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"Dv" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/structure/railing{ + layer = 3.1 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Dz" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/structure/spacevine, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"DJ" = ( +/obj/structure/flora/ausbushes/reedbush{ + pixel_y = 5; + pixel_x = 10 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"DP" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 6; + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/cavecrew/security) +"DV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"Eb" = ( +/obj/structure/bed{ + icon_state = "dirty_mattress" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/blood, +/obj/item/reagent_containers/food/snacks/grown/berries/poison{ + pixel_x = -9; + pixel_y = -1 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/security) +"Ec" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine, +/obj/structure/closet/crate/secure/weapon, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"Ej" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/railing{ + dir = 10; + layer = 3.1 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Em" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/techfloor/hole, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/bridge) +"Ep" = ( +/turf/open/floor/plating/rust, +/area/ruin/powered) +"Es" = ( +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"EG" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/powered) +"EI" = ( +/obj/structure/flora/rock/pile/largejungle{ + pixel_x = -1; + pixel_y = -37 + }, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"EO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ruin/powered) +"EP" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/closed/mineral/random/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"EZ" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/storage) +"Fr" = ( +/obj/effect/turf_decal/weather/dirt/corner, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Fs" = ( +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Fw" = ( +/mob/living/simple_animal/hostile/frontier/ranged/mosin/neutered, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/powered) +"Fy" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/structure/chair/comfy/brown{ + buildstackamount = 0; + color = "#c45c57"; + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/ruin/jungle/cavecrew/dormitories) +"FB" = ( +/obj/structure/cable{ + icon_state = "2-9" + }, +/obj/item/stack/rods/ten{ + pixel_x = 7 + }, +/obj/machinery/light/directional/east{ + pixel_x = 24 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/ruin/jungle/cavecrew/cargo) +"FY" = ( +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = 13; + pixel_y = 7 + }, +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = 5; + pixel_y = 11 + }, +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = -2; + pixel_y = 1 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Ge" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/fullupgrade{ + dir = 1 + }, +/turf/open/floor/plating/rust, +/area/ruin/jungle/cavecrew/hallway) +"Gh" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"Gk" = ( +/obj/machinery/door/window/southleft{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/hallway) +"Gm" = ( +/obj/structure/railing{ + dir = 9; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ + dir = 9 + }, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/jungle/cavecrew/cargo) +"Go" = ( +/obj/structure/flora/ausbushes/stalkybush, +/obj/machinery/light/directional/west, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Gy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-10" + }, +/obj/structure/cable{ + icon_state = "2-10" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"GL" = ( +/obj/structure/cable/yellow{ + icon_state = "6-8" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"GN" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 9; + faction = list("frontiersman") + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/jungle/cavecrew/dormitories) +"GR" = ( +/obj/structure/flora/rock/jungle{ + pixel_x = 3; + pixel_y = 9 + }, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/machinery/light/directional/east, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Hk" = ( +/obj/structure/flora/tree/jungle/small{ + icon_state = "tree2" + }, +/obj/structure/flora/rock/pile/largejungle, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Hx" = ( +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"HD" = ( +/obj/item/chair/greyscale{ + dir = 8; + pixel_y = -7; + pixel_x = -3 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/robot_debris, +/obj/effect/decal/cleanable/oil, +/obj/item/stack/cable_coil/cut/yellow, +/turf/open/floor/plating/rust, +/area/ruin/jungle/cavecrew/dormitories) +"HI" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/old, +/area/ruin/jungle/cavecrew/cargo) +"HL" = ( +/obj/structure/barricade/wooden, +/obj/structure/barricade/wooden/crude, +/turf/open/floor/plating/dirt/old, +/area/ruin/powered) +"HQ" = ( +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"HW" = ( +/obj/structure/destructible/tribal_torch/lit{ + pixel_x = -11; + pixel_y = 19 + }, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Ie" = ( +/obj/effect/turf_decal/techfloor{ + dir = 10 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/bridge) +"Ir" = ( +/obj/structure/spacevine, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Is" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/table/wood/reinforced, +/obj/item/paicard{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/flashlight/lamp{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/storage/fancy/cigarettes/cigpack_carp{ + pixel_y = 1; + pixel_x = -5 + }, +/obj/item/lighter/greyscale{ + pixel_x = -1; + pixel_y = -6 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"Iu" = ( +/obj/structure/flora/rock/jungle{ + pixel_x = 9 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Iv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/engineering) +"Ix" = ( +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/dirt/jungle/dark, +/area/ruin/powered) +"Iz" = ( +/obj/structure/girder, +/obj/structure/flora/grass/jungle/b, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/powered) +"IA" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 4; + layer = 3.1 + }, +/mob/living/simple_animal/hostile/frontier/ranged/neutered, +/turf/open/water/jungle, +/area/ruin/jungle/cavecrew/cargo) +"II" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/item/book/manual/wiki/engineering_hacking{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/book/manual/wiki/cooking_to_serve_man{ + pixel_x = 5; + pixel_y = -6 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/garbage{ + pixel_x = 10; + pixel_y = 4 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"IJ" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating, +/area/ruin/powered) +"IM" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"IN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-10" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"IZ" = ( +/obj/item/reagent_containers/syringe/contraband/fentanyl{ + pixel_x = -3; + pixel_y = 4 + }, +/obj/item/reagent_containers/syringe/contraband/methamphetamine, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = -4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/closet/wall{ + dir = 4; + pixel_x = -28 + }, +/obj/item/reagent_containers/syringe/contraband/bath_salts{ + pixel_y = 6; + pixel_x = -4 + }, +/obj/item/restraints/handcuffs/cable/white, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/chem_pile, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/plastic, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/wood{ + icon_state = "wood-broken2" + }, +/area/ruin/jungle/cavecrew/dormitories) +"Jg" = ( +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/cave/explored) +"Jh" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/old{ + pixel_y = -5; + pixel_x = 3 + }, +/obj/effect/mob_spawn/human/corpse/damaged, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Jm" = ( +/obj/structure/flora/rock{ + icon_state = "basalt2"; + pixel_x = -5; + pixel_y = 11 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Jt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/kirbyplants{ + icon_state = "plant-10" + }, +/turf/open/floor/pod/light, +/area/ruin/jungle/cavecrew/hallway) +"Jz" = ( +/turf/closed/wall/rust, +/area/overmap_encounter/planetoid/cave/explored) +"JA" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/structure/lattice/catwalk, +/obj/structure/railing{ + dir = 4; + layer = 3.1 + }, +/turf/open/water/jungle, +/area/ruin/jungle/cavecrew/cargo) +"JB" = ( +/turf/open/floor/plating/dirt/old, +/area/ruin/jungle/cavecrew/cargo) +"JJ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = -21; + pixel_y = 11 + }, +/turf/open/floor/plating/rust, +/area/ruin/jungle/cavecrew/dormitories) +"JK" = ( +/obj/item/soap{ + pixel_x = 13; + pixel_y = 10 + }, +/obj/item/reagent_containers/glass/bucket/wooden{ + pixel_x = -9 + }, +/obj/effect/decal/cleanable/vomit, +/obj/effect/decal/cleanable/wrapping, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/security) +"JO" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "6-8" + }, +/obj/structure/closet/crate/science, +/obj/item/storage/box/stockparts/t2{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/item/storage/fancy/cigarettes/cigpack_xeno, +/obj/item/storage/backpack/duffelbag{ + pixel_y = -5 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"JQ" = ( +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/powered) +"JY" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"Ka" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"Kb" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 1; + name = "tactical chair" + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage) +"Kh" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/hatch{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ruin/jungle/cavecrew/hallway) +"Kw" = ( +/obj/structure/flora/rock/pile/largejungle, +/turf/closed/mineral/random/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Kx" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"Kz" = ( +/obj/structure/cable{ + icon_state = "1-9" + }, +/turf/open/floor/plating/dirt/old, +/area/ruin/powered) +"KA" = ( +/obj/machinery/light/directional/south, +/turf/open/floor/plating/dirt/jungle/dark, +/area/ruin/powered) +"KF" = ( +/obj/machinery/power/shuttle/engine/electric{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/door/poddoor{ + id = "gut_engines"; + name = "Thruster Blast Door" + }, +/turf/open/floor/plating, +/area/ship/storage) +"KH" = ( +/obj/structure/window/reinforced/spawner/east, +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/structure/closet/crate/secure/weapon, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_x = 2 + }, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_x = 6 + }, +/obj/item/grenade/empgrenade{ + pixel_x = -4 + }, +/obj/item/grenade/frag, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"KK" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "2-9" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/powered) +"KM" = ( +/obj/structure/cable{ + icon_state = "2-6" + }, +/obj/structure/cable{ + icon_state = "0-6" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"KW" = ( +/obj/structure/table/wood/reinforced, +/obj/item/table_bell{ + pixel_x = 9; + pixel_y = -1 + }, +/obj/item/cigbutt/cigarbutt{ + pixel_x = -5; + pixel_y = 10 + }, +/obj/item/dice/d2, +/obj/item/spacecash/bundle/c1000{ + pixel_x = 3; + pixel_y = 8 + }, +/obj/item/spacecash/bundle/c1000{ + pixel_x = 6; + pixel_y = 11 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/bridge) +"Lb" = ( +/obj/structure/bed, +/obj/structure/curtain/cloth/grey, +/obj/item/bedsheet/hos, +/obj/machinery/light/directional/south, +/turf/open/floor/carpet/red_gold, +/area/ruin/jungle/cavecrew/dormitories) +"Ll" = ( +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = 14; + pixel_y = 1 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Lm" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating/dirt/jungle/dark/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Ln" = ( +/turf/open/floor/plating/dirt/old/dark/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Lo" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/machinery/fax/frontiersmen, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/bridge) +"Ls" = ( +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"Lv" = ( +/obj/structure/flora/ausbushes/leafybush, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Lw" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/powered) +"Ly" = ( +/obj/structure/flora/tree/jungle/small, +/obj/structure/flora/grass/jungle, +/obj/structure/flora/rock/pile/largejungle, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"LB" = ( +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plating, +/area/ruin/powered) +"LD" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 5; + color = "#808080" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/jungle/cavecrew/security) +"LV" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"Ma" = ( +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Mg" = ( +/obj/effect/turf_decal/industrial/warning/dust/corner, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ruin/powered) +"Mm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-10" + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"Mn" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ruin/jungle/cavecrew/cargo) +"Ms" = ( +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 8 + }, +/area/ruin/powered) +"Mv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned, +/area/ruin/jungle/cavecrew/cargo) +"MC" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/cargo) +"MR" = ( +/mob/living/simple_animal/hostile/carp, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"MT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-5" + }, +/mob/living/simple_animal/hostile/frontier/ranged/trooper/rifle/neutered, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"MW" = ( +/mob/living/simple_animal/crab/evil, +/turf/open/floor/plating/dirt, +/area/overmap_encounter/planetoid/jungle/explored) +"MY" = ( +/obj/machinery/suit_storage_unit/inherit/industrial, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/item/clothing/suit/space/hardsuit/security/independent/frontier, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/jungle/cavecrew/security) +"Nc" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/secure/loot, +/obj/item/wallframe/bounty_board, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"Nf" = ( +/obj/structure/spacevine, +/turf/closed/mineral/random/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Nj" = ( +/obj/structure/flora/ausbushes/sunnybush{ + pixel_x = 12; + pixel_y = 2 + }, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/jungle/cavecrew/cargo) +"Nl" = ( +/obj/structure/closet/cabinet, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/item/clothing/under/rank/security/officer/frontier, +/obj/item/clothing/head/beret/sec/frontier, +/obj/item/clothing/under/misc/pj/blue, +/obj/machinery/light/small/broken/directional/north, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ruin/jungle/cavecrew/dormitories) +"Nn" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"No" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/ruin/powered) +"Np" = ( +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ruin/jungle/cavecrew/security) +"Nr" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/jungle/cavecrew/hallway) +"Ns" = ( +/obj/structure/flora/rock/jungle{ + pixel_x = 3; + pixel_y = 9 + }, +/turf/open/floor/plating/dirt/jungle/dark/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Nu" = ( +/obj/structure/railing{ + dir = 1; + pixel_y = 8 + }, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/cargo) +"NH" = ( +/obj/machinery/door/window/brigdoor/southright{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"NK" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"NL" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/structure/spacevine, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"NN" = ( +/obj/machinery/power/shuttle/engine/electric{ + dir = 1 + }, +/obj/machinery/door/poddoor{ + id = "gut_engines"; + name = "Thruster Blast Door" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ship/storage) +"NR" = ( +/turf/open/floor/plating/dirt/jungle/dark, +/area/overmap_encounter/planetoid/jungle/explored) +"NW" = ( +/obj/structure/destructible/tribal_torch/lit{ + pixel_x = 16; + pixel_y = 15 + }, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Oa" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"Oe" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"Oi" = ( +/obj/machinery/door/airlock/highsecurity, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/security) +"OJ" = ( +/obj/effect/turf_decal/borderfloor{ + dir = 4 + }, +/obj/machinery/door/airlock/hatch{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/dormitories) +"OK" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"OU" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/head/beret/sec/frontier{ + pixel_y = 10; + pixel_x = -4 + }, +/obj/item/storage/toolbox/ammo{ + pixel_y = 2 + }, +/obj/item/storage/toolbox/ammo{ + pixel_y = -6; + pixel_x = -5 + }, +/obj/item/grenade/frag{ + pixel_x = 8; + pixel_y = -6 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/security) +"OZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/mob/living/simple_animal/hostile/frontier/ranged/neutered, +/turf/open/floor/plating, +/area/ruin/powered) +"Pg" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/structure/cable{ + icon_state = "5-8" + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"Pj" = ( +/obj/effect/turf_decal/techfloor, +/obj/structure/closet/crate, +/obj/item/clothing/suit/space/nasavoid/old, +/obj/item/clothing/head/helmet/space/nasavoid/old, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"Pv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/ruin/powered) +"Pz" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/jungle/cavecrew/engineering) +"PB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"PG" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"PR" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"PS" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/plating/dirt/jungle, +/area/ruin/powered) +"PU" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/rust, +/area/ruin/powered) +"Qh" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8; + color = "#808080" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"Qi" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Ql" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/ausbushes/reedbush{ + pixel_y = 14; + pixel_x = 2 + }, +/obj/structure/flora/ausbushes/reedbush{ + pixel_y = 2; + pixel_x = 12 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Qr" = ( +/obj/effect/turf_decal/industrial/warning/dust/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/powered) +"Qx" = ( +/obj/structure/flora/rock/pile/largejungle, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Qy" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/ruin/jungle/cavecrew/hallway) +"Qz" = ( +/obj/structure/flora/tree/jungle/small, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"QE" = ( +/obj/structure/spacevine, +/obj/structure/spacevine, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/jungle/explored) +"QG" = ( +/obj/effect/turf_decal/industrial/warning, +/turf/open/floor/plasteel/patterned, +/area/ruin/jungle/cavecrew/cargo) +"QH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "0-5" + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/jungle/cavecrew/engineering) +"QI" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"QN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-10" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"QX" = ( +/obj/structure/table/wood/reinforced, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/item/flashlight/lamp/green{ + pixel_y = 13; + pixel_x = -7 + }, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_y = 8; + pixel_x = 5 + }, +/obj/item/pen/charcoal{ + pixel_y = 1; + pixel_x = 5 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"Rd" = ( +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/machinery/power/port_gen/pacman, +/obj/effect/turf_decal/industrial/warning, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/jungle/cavecrew/engineering) +"Rh" = ( +/obj/structure/spacevine, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Ri" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/jungle/cavecrew/dormitories) +"RE" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"RL" = ( +/obj/structure/flora/grass/jungle, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"RM" = ( +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"RP" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"RT" = ( +/obj/machinery/computer/crew/syndie{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/bridge) +"Sc" = ( +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/directional/west, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ruin/powered) +"Sj" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/bridge) +"So" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"SH" = ( +/obj/machinery/porta_turret/syndicate/pod{ + dir = 5; + faction = list("frontiersman") + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ship/storage) +"SI" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/autolathe/hacked, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/jungle/cavecrew/engineering) +"SN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ruin/powered) +"ST" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"SY" = ( +/obj/structure/railing{ + dir = 4; + layer = 3.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-9" + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"Tc" = ( +/obj/item/stack/ore/salvage/scrapmetal/five{ + pixel_x = -5; + pixel_y = -12 + }, +/turf/open/floor/plating/dirt/old, +/area/ruin/jungle/cavecrew/cargo) +"Th" = ( +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/plasteel/patterned/brushed, +/area/ruin/jungle/cavecrew/security) +"Ti" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"Tt" = ( +/obj/effect/turf_decal/industrial/loading{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"Ty" = ( +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"TD" = ( +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = 1; + pixel_y = 16 + }, +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = -15; + pixel_y = -5 + }, +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = 7; + pixel_y = 1 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"TJ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating, +/area/ruin/jungle/cavecrew/dormitories) +"TY" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/bridge) +"Ua" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/chair/comfy/brown{ + color = "#66b266"; + dir = 4 + }, +/obj/item/book/manual/wiki/experimentor{ + pixel_x = 10; + pixel_y = -5 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/glass, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"Ud" = ( +/obj/machinery/light/directional/west, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Ul" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/ruin/jungle/cavecrew/cargo) +"Ur" = ( +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 8; + pixel_x = 8 + }, +/turf/open/floor/plating/rust, +/area/ruin/powered) +"Us" = ( +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/stack/sheet/mineral/plasma/twenty{ + pixel_y = 7 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/engineering) +"Uy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"UA" = ( +/obj/structure/spacevine, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/cave/explored) +"UC" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 6 + }, +/obj/machinery/vending/tool, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/jungle/cavecrew/engineering) +"UI" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/techfloor/hole, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/patterned/brushed, +/area/ruin/jungle/cavecrew/security) +"UJ" = ( +/obj/structure/table/wood/reinforced, +/obj/item/modular_computer/laptop/preset/civilian{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/item/newspaper{ + pixel_x = 6; + pixel_y = 10 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/bridge) +"UM" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"UP" = ( +/obj/machinery/light/directional/south, +/turf/open/floor/plating/dirt/old, +/area/ruin/powered) +"UV" = ( +/obj/structure/flora/rock/pile/largejungle, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"UY" = ( +/obj/structure/flora/rock/pile/largejungle{ + pixel_x = -1; + pixel_y = -37 + }, +/obj/structure/flora/rock/pile/largejungle{ + pixel_y = -11; + pixel_x = -1 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Vd" = ( +/obj/structure/flora/tree/jungle, +/obj/structure/flora/grass/jungle{ + pixel_x = -11; + pixel_y = 10 + }, +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/rock/pile/largejungle, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Vs" = ( +/obj/effect/turf_decal/weather/dirt/corner, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Vu" = ( +/obj/effect/turf_decal/techfloor/hole{ + dir = 4; + pixel_x = 4 + }, +/obj/effect/turf_decal/techfloor/hole/right{ + dir = 4; + pixel_x = 4 + }, +/obj/effect/turf_decal/borderfloor{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/grunge{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"Vy" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/jungle/cavecrew/engineering) +"VO" = ( +/obj/structure/closet/secure_closet{ + icon_state = "armory"; + name = "armor locker"; + req_access_txt = "1" + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/cobweb, +/obj/item/clothing/under/rank/security/officer/frontier, +/obj/item/clothing/under/rank/security/officer/frontier, +/obj/item/clothing/under/rank/security/officer/frontier, +/obj/item/clothing/suit/armor/vest/bulletproof/frontier, +/obj/item/clothing/suit/armor/vest/bulletproof/frontier, +/obj/item/clothing/suit/armor/vest/bulletproof/frontier, +/obj/item/clothing/head/helmet/bulletproof/x11/frontier, +/obj/item/clothing/head/helmet/bulletproof/x11/frontier, +/obj/item/clothing/head/helmet/bulletproof/x11/frontier, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/security) +"VU" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/effect/turf_decal/techfloor/corner, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/jungle/cavecrew/engineering) +"VV" = ( +/obj/machinery/light/directional/east, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"VW" = ( +/obj/structure/spacevine, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"VX" = ( +/obj/machinery/door/poddoor/shutters{ + id = "gut_cargo"; + name = "Blast Shutters"; + dir = 4 + }, +/turf/open/floor/engine/hull/interior, +/area/ship/storage) +"VY" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/turf_decal/industrial/radiation{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage) +"VZ" = ( +/turf/closed/wall/r_wall/yesdiag, +/area/ruin/jungle/cavecrew/cargo) +"Wh" = ( +/obj/structure/flora/ausbushes/reedbush{ + pixel_y = 20 + }, +/obj/structure/flora/ausbushes/reedbush{ + pixel_x = -13; + pixel_y = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/structure/railing{ + dir = 6; + layer = 3.1 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"Wk" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"Wq" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage) +"Wu" = ( +/obj/structure/table/reinforced, +/obj/item/storage/box/zipties{ + pixel_y = 7; + pixel_x = 4 + }, +/obj/item/storage/box/syndie_kit/emp{ + pixel_x = -3 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/jungle/cavecrew/security) +"Wy" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/ruin/powered) +"WD" = ( +/obj/structure/toilet{ + dir = 4; + pixel_x = -1; + pixel_y = 5 + }, +/obj/structure/sink{ + pixel_y = 22; + pixel_x = 6 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel/showroomfloor, +/area/ruin/jungle/cavecrew/hallway) +"WE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"WN" = ( +/obj/structure/flora/rock/jungle{ + pixel_y = 13 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/water/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"WQ" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/closet/crate/secure/loot, +/obj/item/storage/box/inteqmaid{ + pixel_x = -5; + pixel_y = 3 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ruin/jungle/cavecrew/cargo) +"Xb" = ( +/turf/open/floor/plating/dirt/jungle, +/area/ruin/powered) +"Xx" = ( +/mob/living/simple_animal/hostile/frontier/ranged/mosin/neutered, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"XM" = ( +/obj/structure/flora/grass/jungle{ + pixel_x = 6; + pixel_y = -22 + }, +/obj/structure/flora/junglebush/b, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"XU" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ruin/powered) +"XV" = ( +/turf/open/floor/plasteel/stairs{ + dir = 1 + }, +/area/ship/storage) +"Ya" = ( +/obj/structure/flora/grass/jungle, +/obj/structure/flora/rock/pile/largejungle, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Yf" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/jukebox, +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/ruin/jungle/cavecrew/hallway) +"Yq" = ( +/obj/structure/table/wood, +/obj/item/toy/cards/deck/syndicate{ + pixel_x = -4; + pixel_y = 1 + }, +/obj/item/toy/figure{ + pixel_x = -3; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ruin/jungle/cavecrew/hallway) +"Yw" = ( +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 1 + }, +/area/ship/storage) +"YE" = ( +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/structure/table/wood, +/obj/item/storage/fancy/nugget_box, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ruin/jungle/cavecrew/security) +"YF" = ( +/turf/open/floor/plating/dirt/jungle/dark/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"YL" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/dirt/old, +/area/ruin/powered) +"YN" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals1, +/turf/open/floor/plasteel/dark, +/area/ruin/jungle/cavecrew/bridge) +"YR" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/fluff/fokoff_sign, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"YS" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/ruin/jungle/cavecrew/hallway) +"Za" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-5" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"Zd" = ( +/obj/structure/flora/grass/jungle{ + pixel_x = -13; + pixel_y = -14 + }, +/obj/structure/flora/rock/pile/largejungle, +/turf/open/floor/plating/dirt/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Zi" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/filingcabinet{ + pixel_x = -9 + }, +/obj/item/kirbyplants{ + icon_state = "plant-03"; + pixel_x = 6 + }, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) +"Zr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/patterned, +/area/ruin/jungle/cavecrew/cargo) +"Zx" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 10 + }, +/obj/structure/rack, +/obj/item/storage/toolbox/electrical, +/obj/item/storage/belt/utility/full/engi, +/obj/item/clothing/glasses/welding{ + pixel_y = 5 + }, +/obj/item/multitool{ + pixel_x = 9 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/jungle/cavecrew/engineering) +"Zy" = ( +/obj/effect/mob_spawn/human/corpse/pirate, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"Zz" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8; + color = "#808080" + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"ZC" = ( +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/machinery/computer/helm, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage) +"ZG" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/structure/flora/ausbushes/stalkybush{ + pixel_x = -8; + pixel_y = 3 + }, +/turf/open/water/jungle/lit, +/area/overmap_encounter/planetoid/jungle/explored) +"ZQ" = ( +/obj/structure/flora/rock/pile/largejungle{ + pixel_x = -20; + pixel_y = -31 + }, +/turf/open/floor/plating/dirt/jungle, +/area/overmap_encounter/planetoid/cave/explored) +"ZT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/dresser, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/newspaper{ + pixel_x = -4; + pixel_y = 8 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/wood, +/area/ruin/jungle/cavecrew/dormitories) + +(1,1,1) = {" +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +"} +(2,1,1) = {" +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +Ma +Ma +YF +Ma +Ma +Ma +es +es +es +es +es +es +es +es +"} +(3,1,1) = {" +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +wt +wt +wt +wt +wt +wt +wt +Pz +Pz +Pz +Pz +wt +wt +wt +wt +wt +wt +wt +wt +Ma +EI +Ma +Qz +Ma +Ma +es +es +es +es +es +es +"} +(4,1,1) = {" +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +wt +wt +wt +wt +wt +wt +wt +wt +wt +Pz +dm +pn +Pz +wt +wt +wt +wt +wt +wt +wt +wt +wt +Ma +Ma +YF +Ma +Ns +Ma +es +es +es +es +es +"} +(5,1,1) = {" +es +es +es +es +es +es +es +es +es +es +es +es +es +es +RM +RM +RM +RM +RM +RM +RM +es +es +es +es +es +es +es +es +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +Pz +VU +QH +Pz +Pz +Pz +wt +wt +wt +wt +wt +wt +wt +wt +jO +Qx +YF +lI +Ma +es +es +es +es +es +"} +(6,1,1) = {" +es +es +es +wt +wt +wt +wt +wt +wt +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +es +es +es +es +es +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +Pz +Bp +gM +xi +SI +Pz +wN +wN +wN +wN +wN +wt +wt +wt +rx +Ma +ij +wt +Ma +es +es +es +es +es +"} +(7,1,1) = {" +es +es +wt +wt +wt +wt +wt +wt +wt +wt +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +es +wt +wt +wt +wt +wt +wt +wt +wt +Nr +Nr +Nr +Nr +Nr +Pz +mb +CN +CZ +Vy +Pz +wN +VO +OU +Wu +wN +wt +wt +Kw +ov +Jh +Lm +wt +wt +es +es +es +es +es +"} +(8,1,1) = {" +es +es +wt +wt +wt +iW +iW +wt +wt +wt +wt +RM +MR +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +wt +wt +wt +wt +wt +wt +wt +wt +wt +Nr +Nr +lV +zJ +gm +Pz +Rd +Us +kR +ag +Pz +mt +np +dH +gk +wN +wN +wt +Kw +Ln +Kw +wt +wt +wt +wt +es +es +es +es +"} +(9,1,1) = {" +es +es +wt +wt +MW +RP +NR +NR +wt +wt +wt +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +Nr +Nr +Yq +dQ +Qy +Ge +Pz +Zx +wr +ja +kH +Pz +MY +am +Bt +af +ae +wN +wt +wt +yx +Jz +wt +wt +wt +wt +wt +es +es +es +"} +(10,1,1) = {" +es +es +wt +wt +Dz +VW +yX +yX +Rh +wt +wt +wt +RM +RM +RM +RM +RM +RM +RM +MR +RM +RM +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +Nr +Bz +aK +dO +Gk +xn +Pz +UC +Iv +Pz +lu +jm +wN +qz +LD +DP +vo +wN +Ri +Ri +aY +Ri +wt +wt +wt +wt +wt +wt +es +es +"} +(11,1,1) = {" +es +es +wt +wt +wt +NL +lt +wt +jg +wt +wt +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +Nr +jr +uo +mz +fv +Nr +Nr +Nr +Nr +Nr +ah +Ti +wN +wN +Th +nv +wN +wN +Ri +BU +we +Ri +Ri +wt +wt +wt +wt +wt +es +es +"} +(12,1,1) = {" +es +es +wt +wt +wt +wt +wt +wt +bK +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +lm +lm +lm +lm +lm +tu +AK +Yf +Nr +WD +zN +Nr +Nr +Uy +Oe +wN +YE +ds +UI +jF +JK +Ri +sJ +TJ +yW +Ri +wt +wt +wt +wt +wt +es +es +"} +(13,1,1) = {" +es +es +es +wt +wt +wt +RM +RM +RM +RM +RM +Vs +uq +Al +fG +RM +RM +RM +RM +wt +wt +wt +wt +wt +mj +pB +wt +wt +wt +lm +lm +RT +Ag +TY +lm +Nr +aL +Nr +Nr +Kh +Nr +Nr +KM +ad +ck +Oi +hz +px +xv +xI +cZ +Ri +Ri +un +Ri +Ri +wt +wt +wt +wt +wt +wt +es +"} +(14,1,1) = {" +es +es +es +es +RM +RM +RM +RM +RM +Vs +Al +xu +Ma +Ma +ZG +Al +wt +wt +wt +wt +wt +wt +wt +WQ +aZ +aa +ed +eW +wt +lm +UJ +iE +sj +Ie +lm +Jt +ST +Nn +MT +rK +Nn +WE +jA +fy +YS +wN +wG +kO +Np +wg +Eb +Ri +xG +mw +Ri +Ri +wt +wt +wt +wt +wt +wt +es +"} +(15,1,1) = {" +es +es +es +RM +RM +RM +RM +RM +Vs +xu +Ma +Ma +ht +Es +Qx +wt +wt +wt +wt +wt +wt +wt +qO +Dq +qx +pB +qx +LV +wt +lm +vM +KW +wZ +Af +AV +CJ +uX +gU +DV +DV +aw +Mm +NK +YS +Nr +wN +wN +uf +wN +wN +wN +Ri +ua +jC +mI +Ri +wt +wt +wt +wt +wt +wt +wt +"} +(16,1,1) = {" +es +es +RM +RM +RM +RM +RM +RM +Dd +Ma +Df +Ma +Qx +Ya +wt +wt +wt +wt +wt +wt +rt +QG +oq +JO +Ul +ks +Nc +Oa +Jz +lm +lm +nu +YN +Em +Bv +SY +aM +Pg +Nr +Nr +Nr +Nr +Nr +Nr +Nr +fS +va +Ms +IJ +fS +fS +Ri +uu +hh +Be +Ri +wt +wt +wt +wt +wt +wt +wt +"} +(17,1,1) = {" +es +RM +RM +RM +RM +RM +RM +RM +Dd +RL +RL +RL +Qz +wt +wt +wt +wt +wt +wt +vr +uK +pL +oq +nt +oH +xr +nt +Tt +wt +lm +Sj +Lo +iq +gd +lm +bU +ef +Wk +Nr +fS +fS +fS +iV +fS +fS +fS +ih +rT +dI +Ep +fS +Ri +Ri +cx +Ri +Ri +Ri +Ri +Ri +Ri +Ri +wt +wt +"} +(18,1,1) = {" +es +RM +RM +RM +RM +RM +RM +RM +Dd +Ma +Ma +ke +Es +wt +wt +wt +wt +wt +qO +Zr +Mv +pL +oW +JB +aI +JB +JB +Cc +cK +oR +Sj +Sj +ei +bh +lm +Nr +Vu +Nr +Nr +fS +fS +lT +Sc +Qr +mu +mu +mu +kb +kb +Ep +mu +PS +dA +dA +zj +Iz +Ri +sH +IZ +fI +Ri +wt +wt +"} +(19,1,1) = {" +RM +RM +RM +RM +RM +RM +RM +RM +RE +dJ +Ma +Ya +wH +wt +wt +wt +wt +wt +wt +oU +CU +xx +Gm +yJ +HI +rr +HI +Tc +dA +Ix +JQ +Sj +Sj +Sj +gQ +mK +hf +Fw +Nr +fS +mC +EG +PU +to +PU +PU +XU +Mg +LB +CC +YL +YL +YL +YL +YL +Kz +yk +eQ +JJ +yj +Ri +wt +wt +"} +(20,1,1) = {" +RM +RM +RM +RM +RM +RM +RM +RM +RM +Dd +Ma +Ma +Es +Kw +wt +wt +wt +wt +wt +wt +xx +nV +yA +yJ +yV +yD +MC +Mn +bb +dI +No +kb +bb +Pv +tj +Wy +jj +bb +fN +fA +tO +kB +Ep +wt +wt +wt +wt +wt +Jz +wt +EP +zX +Ej +na +CF +KA +Ri +Nl +HD +Ri +Ri +wt +wt +"} +(21,1,1) = {" +RM +RM +RM +RM +RM +RM +RM +RM +RM +RE +yX +YR +NW +Qx +wt +Nf +wt +wt +wt +wt +wt +wt +Nj +yV +dT +lz +FB +pt +aQ +aQ +lG +SN +yZ +to +EG +ng +KK +EG +OZ +EO +yZ +tL +wt +Jz +wt +fg +cX +wt +wt +wt +wt +OK +rA +Ej +CF +rN +Ri +Ri +Ri +Ri +wt +wt +wt +"} +(22,1,1) = {" +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +cV +yX +yX +RM +qU +qU +Nf +wt +Jz +wt +wt +JA +eu +IA +eu +VZ +Nu +Ur +rQ +bp +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +AR +Ty +Ud +eO +ye +lR +wt +Jz +wt +WN +Ty +Ty +lD +Cq +CF +Ri +Ua +Is +Ri +wt +wt +wt +"} +(23,1,1) = {" +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +uC +qU +tY +jd +Go +Ll +Ty +nq +Ty +Ty +Ty +BI +mD +VX +vk +fO +Ty +Ty +eS +ue +ue +ue +fO +fO +zz +Ty +Ty +Ty +Ty +Ty +eO +tE +UA +Ud +FY +Ty +lY +Ty +lD +Lw +CF +yk +Cr +ZT +Ri +wt +wt +wt +"} +(24,1,1) = {" +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +uC +QE +tY +jd +Ty +Ty +Ty +Ty +Ty +Ty +Ty +fO +Gh +nR +Pj +fO +fO +fO +fO +ZC +Kb +Yw +Dt +VY +fO +fO +Ty +Ty +Ty +Jg +Ty +Ty +Ir +Ir +TD +Ty +Ty +Ty +lD +Lw +UP +Ri +II +bH +Ri +wt +wt +wt +"} +(25,1,1) = {" +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +Zy +uC +qU +Ir +Ty +Ll +Dh +Lv +Ty +Jg +Ty +Ty +fO +JY +nR +iZ +Kx +BO +Ec +fO +jy +Wq +Yw +GL +sm +xT +NN +Ty +Ty +Ty +Ty +Ty +Ty +Ir +bG +wt +Qi +Ty +lS +Wh +CF +HL +Ri +kV +Ri +Ri +wt +wt +wt +"} +(26,1,1) = {" +es +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +uC +qU +Ir +jd +Ty +Ll +kL +Ty +Ty +Ty +Ty +fO +iN +Xx +QI +Ka +fs +PR +wu +Hx +Ls +vl +Za +og +yv +KF +Ty +Ty +Ty +Ty +Ty +Jg +Ir +wt +wt +wt +ig +Dv +Xb +dA +GN +Ri +Ri +Ri +wt +wt +wt +wt +"} +(27,1,1) = {" +es +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +uC +qU +jd +Ir +Dh +Jg +Ty +Ty +Ty +Ty +Ty +fO +KH +CT +NH +la +nh +PG +XV +nR +QN +IN +Gy +xR +ow +KF +Ty +Ty +Ty +Ty +Ty +Ty +Ty +wt +wt +Ri +Ri +Ri +Ri +OJ +Ri +wt +wt +wt +wt +wt +wt +wt +"} +(28,1,1) = {" +es +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +uC +qU +Ir +Ir +Ty +Lv +Ty +Ty +Ty +Ty +Ty +ho +EZ +hn +eD +fO +fO +fO +fO +xj +Qh +ju +Zz +cU +fO +fO +Ty +Ty +Ty +Ty +VV +iT +wt +wt +Ri +Ri +Zi +jh +yC +PB +Ri +wt +wt +wt +wt +wt +wt +wt +"} +(29,1,1) = {" +es +es +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +qU +oD +Ir +Ir +Dh +ku +Ty +Ty +Ty +Ty +Ty +SH +fO +fO +fO +fO +Ty +Ty +fo +fO +fO +fO +fO +fO +zz +Ty +Ty +Ty +kQ +wt +Jz +wt +wt +wt +Ri +QX +Fy +jZ +ta +hh +Ri +wt +wt +wt +wt +wt +wt +wt +"} +(30,1,1) = {" +es +es +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +qU +jd +Ir +sM +VV +Ty +Dh +Ty +Ty +Ty +Ty +Ty +Ty +Ty +Ty +Ty +Ty +Ty +Ty +Ty +Ty +Ty +Fr +So +So +Ty +Ty +Ty +wt +wt +wt +wt +wt +wt +Ri +Dg +zV +gF +Lb +Ri +Ri +wt +wt +wt +wt +wt +wt +es +"} +(31,1,1) = {" +es +es +RM +RM +RM +RM +RM +RM +RM +RM +DJ +RM +RM +RM +RM +wt +Ir +Nf +wt +Jz +wt +vH +vH +So +So +UM +Ty +Ty +Ty +Jm +Ty +Ty +Ty +Ty +Ty +Fr +So +kQ +aO +UV +Qi +Ty +wt +wt +wt +wt +wt +wt +wt +Ri +Ri +Ri +Ri +Ri +Ri +wt +wt +wt +wt +wt +wt +wt +es +"} +(32,1,1) = {" +es +es +RM +RM +RM +RM +RM +RM +RM +RM +BT +Vs +Al +xu +wt +wt +wt +wt +wt +wt +wt +wt +wt +GR +rn +tW +So +BR +Jg +Ty +Ty +Ty +Ty +Ty +Ty +pb +UY +Fs +ZQ +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +"} +(33,1,1) = {" +es +es +es +RM +RM +RM +RM +RM +RM +RM +Vs +xu +HW +Ma +wt +wt +wt +wt +wt +wt +wt +wt +wt +Jz +kj +XM +HQ +tW +vH +So +vH +So +So +Ty +VV +pb +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +"} +(34,1,1) = {" +es +es +es +es +RM +RM +RM +RM +RM +RM +Dd +Ma +kA +Ma +Kw +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +bJ +lo +Fs +Ap +Fs +gv +Iu +UV +wt +Jz +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +"} +(35,1,1) = {" +es +es +es +es +RM +RM +RM +RM +RM +RM +Dd +Ma +Vd +Ma +Qx +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +Kw +At +UV +HQ +eG +Kw +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +"} +(36,1,1) = {" +es +es +es +es +es +RM +RM +RM +RM +RM +Dd +zG +Ma +Es +Zd +Ma +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +es +"} +(37,1,1) = {" +es +es +es +es +es +RM +RM +RM +RM +RM +Dd +dd +Qx +zG +Ma +RL +Hk +Ma +Dl +RM +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +es +es +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +es +"} +(38,1,1) = {" +es +es +es +es +es +es +RM +RM +RM +RM +RE +dJ +Es +tQ +Ly +oQ +Ma +Ma +IM +RM +RM +RM +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +es +es +es +es +es +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +es +es +"} +(39,1,1) = {" +es +es +es +es +es +es +RM +RM +RM +RM +RM +RE +Ql +dJ +Es +RL +Dl +yX +lg +RM +RM +RM +RM +RM +RM +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +es +es +es +es +es +es +es +wt +wt +wt +wt +wt +es +es +es +es +es +"} +(40,1,1) = {" +es +es +es +es +es +es +es +RM +RM +RM +RM +RM +RM +RE +yX +yX +lg +RM +RM +RM +RM +RM +RM +RM +RM +es +es +es +es +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +"} +(41,1,1) = {" +es +es +es +es +es +es +es +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +MR +RM +RM +RM +RM +RM +es +es +es +es +es +es +es +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +wt +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +"} +(42,1,1) = {" +es +es +es +es +es +es +es +es +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +es +es +es +es +es +es +es +es +es +es +es +wt +wt +wt +wt +wt +wt +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +"} +(43,1,1) = {" +es +es +es +es +es +es +es +es +es +es +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +RM +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +es +"} diff --git a/_maps/RandomRuins/JungleRuins/jungle_demon.dmm b/_maps/RandomRuins/JungleRuins/jungle_demon.dmm index 950fe8863dc4..3e1476a84861 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_demon.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_demon.dmm @@ -157,7 +157,7 @@ /area/ruin/powered) "pm" = ( /obj/structure/table/reinforced, -/obj/item/upgradescroll, +/obj/item/paper, /turf/open/floor/plasteel/dark, /area/ruin/powered) "pE" = ( @@ -220,9 +220,27 @@ /turf/open/floor/plasteel/dark, /area/ruin/powered) "tR" = ( -/obj/structure/closet/gimmick/russian, +/obj/structure/railing{ + dir = 8 + }, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/under/syndicate, +/obj/structure/closet/syndicate{ + desc = "It's a basic storage unit."; + name = "uniform closet" + }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, +/obj/item/clothing/under/syndicate, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/head/helmet/operator, +/obj/item/clothing/head/helmet/operator, +/obj/item/clothing/suit/armor/vest/syndie, +/obj/item/clothing/suit/armor/vest/syndie, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, /turf/open/floor/plasteel/dark, /area/ruin/powered) "uj" = ( @@ -494,8 +512,11 @@ /turf/open/floor/plasteel/dark, /area/ruin/powered) "PA" = ( -/obj/machinery/suit_storage_unit/syndicate, /obj/effect/decal/cleanable/dirt, +/obj/machinery/suit_storage_unit/inherit, +/obj/item/clothing/suit/space/hardsuit/syndi/scarlet, +/obj/item/clothing/mask/breath, +/obj/item/tank/internals/oxygen/red, /turf/open/floor/plasteel/dark, /area/ruin/powered) "QI" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_codelab.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_codelab.dmm index 04ada2692122..1bbc1b76a834 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_codelab.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_codelab.dmm @@ -238,9 +238,10 @@ /obj/structure/fluff/paper/stack{ dir = 6 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, /turf/open/floor/plasteel/white, /area/ruin/unpowered/codelab/subjectrooms) "cO" = ( @@ -424,7 +425,7 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/ruin/unpowered/codelab/subjectrooms) "eY" = ( @@ -617,6 +618,13 @@ /obj/effect/turf_decal/industrial/stand_clear, /turf/open/floor/plating, /area/ruin/unpowered/codelab/maintenance) +"hB" = ( +/obj/effect/turf_decal/corner/opaque/white/mono, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/codelab/subjectrooms) "hE" = ( /turf/closed/wall/mineral/titanium, /area/ruin/unpowered/codelab/reception) @@ -5162,7 +5170,7 @@ ir XS He rY -GN +hB Ru GN hE diff --git a/_maps/RandomRuins/RockRuins/rockplanet_crash_cult.dmm b/_maps/RandomRuins/RockRuins/rockplanet_crash_cult.dmm index d36bbab74454..b663f0ad2bd1 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_crash_cult.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_crash_cult.dmm @@ -480,23 +480,6 @@ }, /turf/open/floor/plating, /area/ruin/unpowered) -"sA" = ( -/obj/docking_port/mobile{ - callTime = 250; - can_move_docking_ports = 1; - dir = 2; - dwidth = 11; - height = 17; - launch_status = 0; - name = "Salvage Ship"; - port_direction = 8; - preferred_direction = 4; - width = 33 - }, -/obj/machinery/door/airlock/external, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/plasteel, -/area/ruin/unpowered) "sN" = ( /obj/machinery/processor, /obj/effect/decal/cleanable/dirt/dust, @@ -1370,6 +1353,11 @@ }, /turf/open/floor/plating, /area/ruin/unpowered) +"WS" = ( +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel, +/area/ruin/unpowered) "Xh" = ( /obj/structure/table, /obj/item/storage/bag/plants/portaseeder, @@ -1386,9 +1374,6 @@ }, /turf/open/floor/plasteel/cult, /area/ruin/unpowered) -"XI" = ( -/turf/closed/mineral/random/rockplanet, -/area/overmap_encounter/planetoid/rockplanet/explored) "XN" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/blood, @@ -1409,6 +1394,9 @@ }, /turf/open/floor/plasteel/cult, /area/ruin/unpowered) +"Zf" = ( +/turf/closed/mineral/random/rockplanet, +/area/overmap_encounter/planetoid/rockplanet/explored) "Zg" = ( /obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 9 @@ -1729,7 +1717,7 @@ RY nv "} (16,1,1) = {" -sA +WS Bz hw ul @@ -1826,10 +1814,10 @@ li Es Es Es -XI +Zf "} (21,1,1) = {" -XI +Zf Es Us Es @@ -1844,12 +1832,12 @@ xD Us eK ou -XI -XI -XI +Zf +Zf +Zf "} (22,1,1) = {" -XI +Zf Es Es jU @@ -1863,14 +1851,14 @@ fg xD xD eK -XI -XI -XI -XI +Zf +Zf +Zf +Zf "} (23,1,1) = {" -XI -XI +Zf +Zf Es SP Es @@ -1889,8 +1877,8 @@ SP Es "} (24,1,1) = {" -XI -XI +Zf +Zf Es ou Es @@ -1904,14 +1892,14 @@ ct xD Es jU -XI -XI +Zf +Zf Es "} (25,1,1) = {" -XI -XI -XI +Zf +Zf +Zf Es Es Nt @@ -1923,16 +1911,16 @@ GW xD xD Es -XI -XI -XI -XI +Zf +Zf +Zf +Zf "} (26,1,1) = {" -XI -XI -XI -XI +Zf +Zf +Zf +Zf Es Es Nt @@ -1945,6 +1933,6 @@ Es Es Es Es -XI -XI +Zf +Zf "} diff --git a/_maps/RandomRuins/RockRuins/rockplanet_nomadcrash.dmm b/_maps/RandomRuins/RockRuins/rockplanet_nomadcrash.dmm new file mode 100644 index 000000000000..7ca31921e401 --- /dev/null +++ b/_maps/RandomRuins/RockRuins/rockplanet_nomadcrash.dmm @@ -0,0 +1,4760 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aw" = ( +/obj/structure/bonfire/prelit, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"aL" = ( +/obj/structure/door_assembly/door_assembly_centcom{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"aN" = ( +/obj/machinery/space_heater, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"aX" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"ba" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock{ + dir = 4; + name = "Crew Berth" + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ruin/rockplanet/nanotrasen) +"bv" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/hull_plating, +/area/overmap_encounter/planetoid/rockplanet/explored) +"cd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "9-10" + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"cl" = ( +/obj/machinery/power/shuttle/engine/electric{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/engine/hull/interior, +/area/ruin/rockplanet/nanotrasen) +"cr" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"cO" = ( +/obj/structure/chair/plastic{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/hull_plating, +/area/overmap_encounter/planetoid/rockplanet/explored) +"cP" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/rock{ + icon_state = "redrocks2" + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"cU" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"df" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"dB" = ( +/turf/open/floor/plasteel/tech/grid, +/area/ruin/rockplanet/nanotrasen) +"dJ" = ( +/obj/structure/flora/rock{ + icon_state = "redrock2" + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"dM" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/railing, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"ei" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/door_assembly/door_assembly_hatch{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"eo" = ( +/turf/open/floor/plating/asteroid/rockplanet/plating/scorched, +/area/overmap_encounter/planetoid/rockplanet/explored) +"fc" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/frame/machine, +/turf/open/floor/plating{ + icon_state = "wet_cracked2" + }, +/area/ruin/rockplanet/nanotrasen) +"fd" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"fe" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/sink{ + pixel_y = 30 + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"fw" = ( +/obj/machinery/power/port_gen/pacman, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"fF" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "Helm" + }, +/turf/open/floor/plasteel/tech, +/area/ruin/rockplanet/nanotrasen) +"fK" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"fM" = ( +/obj/machinery/door/airlock/external{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/rockplanet/nanotrasen) +"ga" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/layer2{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"gn" = ( +/obj/structure/flora/rock/asteroid, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"gs" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit{ + icon_state = "plastic" + }, +/area/ruin/rockplanet/nanotrasen) +"gO" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom/wideband/table{ + dir = 4; + pixel_x = 3 + }, +/obj/effect/decal/cleanable/glass/plasma, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"gY" = ( +/turf/open/floor/plating/asteroid/rockplanet/mud, +/area/overmap_encounter/planetoid/rockplanet/explored) +"ha" = ( +/obj/structure/cable{ + icon_state = "2-5" + }, +/turf/open/floor/plating/asteroid/rockplanet/plating/scorched, +/area/overmap_encounter/planetoid/rockplanet/explored) +"hc" = ( +/obj/effect/gibspawner, +/turf/open/floor/plasteel/tech, +/area/ruin/rockplanet/nanotrasen) +"hm" = ( +/obj/structure/bed/pod, +/obj/effect/mob_spawn/human/corpse/damaged, +/obj/structure/curtain/cloth, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"hy" = ( +/obj/effect/turf_decal/spline/fancy/opaque/yellow{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/item/stack/sheet/metal/five, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"hV" = ( +/obj/structure/flora/rock{ + icon_state = "basalt" + }, +/turf/open/floor/plating/asteroid/rockplanet/mud, +/area/overmap_encounter/planetoid/rockplanet/explored) +"il" = ( +/obj/effect/turf_decal/spline/fancy/opaque/yellow{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"ip" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ruin/rockplanet/nanotrasen) +"is" = ( +/obj/item/chair/greyscale, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"iN" = ( +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"iZ" = ( +/obj/effect/turf_decal/spline/fancy/opaque/yellow{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/rockplanet/nanotrasen) +"jl" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/girder/displaced, +/obj/effect/decal/cleanable/glass/plasma, +/turf/open/floor/plasteel/tech, +/area/ruin/rockplanet/nanotrasen) +"jm" = ( +/turf/closed/mineral/random/rockplanet, +/area/overmap_encounter/planetoid/rockplanet/explored) +"jw" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"jC" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/magmawing, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"jD" = ( +/obj/effect/turf_decal/weather/dirt/corner, +/obj/structure/flora/rock{ + icon_state = "redrock2" + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"jI" = ( +/obj/structure/fence/door{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/plating/scorched, +/area/overmap_encounter/planetoid/rockplanet/explored) +"kf" = ( +/obj/structure/table_frame, +/turf/open/floor/plating/ashplanet/rocky, +/area/ruin/rockplanet/nanotrasen) +"kN" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"kS" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible/layer2{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "2-9" + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"kV" = ( +/obj/structure/flora/rock{ + icon_state = "redrocks2" + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"lg" = ( +/turf/closed/wall, +/area/ruin/rockplanet/nanotrasen) +"lw" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"lz" = ( +/obj/machinery/power/smes/shuttle/precharged, +/turf/open/floor/plating/asteroid/rockplanet/plating/scorched, +/area/overmap_encounter/planetoid/rockplanet/explored) +"mu" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"mz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit{ + icon_state = "panelscorched" + }, +/area/ruin/rockplanet/nanotrasen) +"mW" = ( +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/asteroid/rockplanet/mud, +/area/overmap_encounter/planetoid/rockplanet/explored) +"nf" = ( +/turf/open/floor/plating/asteroid/rockplanet/plasteel, +/area/overmap_encounter/planetoid/rockplanet/explored) +"nB" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"on" = ( +/turf/closed/mineral/random/rockplanet, +/area/ruin/rockplanet/nanotrasen) +"oq" = ( +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + dir = 8; + name = "Air to Distro" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/asteroid/rockplanet/plasteel, +/area/overmap_encounter/planetoid/rockplanet/explored) +"or" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/frame/machine, +/obj/effect/spawner/lootdrop/salvage_matter_bin, +/turf/open/floor/plating/asteroid/rockplanet/plasteel, +/area/overmap_encounter/planetoid/rockplanet/explored) +"oz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/rockplanet/nanotrasen) +"oI" = ( +/obj/effect/turf_decal/spline/fancy/opaque/yellow{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/arrowaxe_small/center{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/rockplanet/nanotrasen) +"oW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"oZ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"pb" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"po" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"pH" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"pJ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"pV" = ( +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + dir = 8; + name = "Air to Distro" + }, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/ruin/rockplanet/nanotrasen) +"qp" = ( +/obj/effect/turf_decal/spline/fancy/opaque/yellow{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/rockplanet/nanotrasen) +"qL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"qM" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"qU" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/ten, +/obj/item/stack/cable_coil/random/five, +/obj/item/stack/cable_coil/random/five, +/obj/structure/cable/yellow{ + icon_state = "4-5" + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"rc" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"rD" = ( +/obj/structure/frame/machine, +/turf/open/floor/plating/dirt/jungle/lit, +/area/ruin/rockplanet/nanotrasen) +"rH" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/obj/structure/flora/driftlog, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"rW" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"rY" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/frame/machine, +/obj/machinery/light/small/directional/north, +/obj/effect/spawner/lootdrop/salvage_matter_bin, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"sn" = ( +/obj/structure/frame/machine, +/obj/item/stock_parts/manipulator/femto, +/turf/open/floor/plating/asteroid/rockplanet/plasteel, +/area/overmap_encounter/planetoid/rockplanet/explored) +"sy" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/obj/structure/railing, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"sK" = ( +/obj/effect/turf_decal/weather/dirt/corner, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"sR" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/closed/wall/mineral/sandstone, +/area/ruin/rockplanet/nanotrasen) +"sX" = ( +/obj/structure/cable/yellow{ + icon_state = "5-8" + }, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/ruin/rockplanet/nanotrasen) +"sZ" = ( +/turf/closed/wall/rust, +/area/overmap_encounter/planetoid/rockplanet/explored) +"tA" = ( +/obj/structure/flora/tree/dead/tall/grey, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"tI" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/rock{ + icon_state = "redrocks1" + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"tN" = ( +/turf/closed/wall, +/area/overmap_encounter/planetoid/rockplanet/explored) +"tX" = ( +/obj/machinery/holopad/emergency/command, +/turf/open/floor/plasteel/tech, +/area/ruin/rockplanet/nanotrasen) +"uh" = ( +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"uo" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/item/stack/cable_coil/random/five, +/obj/item/wirecutters, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"uu" = ( +/obj/machinery/door/airlock/engineering{ + dir = 1; + name = "Engineering" + }, +/turf/closed/wall, +/area/overmap_encounter/planetoid/rockplanet/explored) +"uB" = ( +/turf/open/floor/plasteel/tech, +/area/ruin/rockplanet/nanotrasen) +"uD" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"uK" = ( +/obj/effect/turf_decal/corner_techfloor_grid{ + dir = 6 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/rockplanet/nanotrasen) +"uL" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"uN" = ( +/obj/structure/table, +/obj/item/crowbar/large, +/obj/item/clothing/mask/breath{ + pixel_x = 14; + pixel_y = 7 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 14; + pixel_y = 4 + }, +/obj/item/clothing/mask/breath{ + pixel_x = 14; + pixel_y = 1 + }, +/obj/item/stock_parts/capacitor/adv{ + pixel_x = -5; + pixel_y = 11 + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"uT" = ( +/obj/structure/flora/tree/cactus, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"vi" = ( +/obj/structure/flora/rock{ + icon_state = "redrocks3" + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"vl" = ( +/mob/living/simple_animal/hostile/asteroid/goliath/beast/rockplanet, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"vw" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-10" + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"vF" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"vL" = ( +/obj/structure/flora/rock{ + icon_state = "redrocks1" + }, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/overmap_encounter/planetoid/rockplanet/explored) +"vM" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/rockplanet/grass, +/area/overmap_encounter/planetoid/rockplanet/explored) +"vN" = ( +/obj/effect/turf_decal/spline/fancy/opaque/yellow{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"vS" = ( +/turf/open/floor/plating/asteroid/rockplanet/hull_plating, +/area/overmap_encounter/planetoid/rockplanet/explored) +"vW" = ( +/obj/effect/turf_decal/weather/dirt/corner, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"wf" = ( +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"wq" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/obj/structure/railing, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"wW" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"xk" = ( +/obj/effect/turf_decal/techfloor, +/obj/structure/cable{ + icon_state = "0-1" + }, +/obj/machinery/computer/monitor{ + dir = 1; + icon_state = "computer_broken" + }, +/obj/machinery/light/small/broken/directional/south, +/turf/open/floor/plasteel/tech, +/area/ruin/rockplanet/nanotrasen) +"xG" = ( +/obj/structure/cable{ + icon_state = "0-1" + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/rack, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"yb" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"yn" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/grass, +/area/overmap_encounter/planetoid/rockplanet/explored) +"yw" = ( +/obj/structure/flora/rock/asteroid{ + icon_state = "asteroid2" + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"zg" = ( +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen{ + dir = 1 + }, +/obj/effect/decal/cleanable/glass/plasma, +/turf/open/floor/plating/asteroid/rockplanet/lit{ + icon_state = "plastic" + }, +/area/ruin/rockplanet/nanotrasen) +"zh" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit{ + icon_state = "plastic" + }, +/area/ruin/rockplanet/nanotrasen) +"zp" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/machinery/telecomms/receiver, +/turf/open/floor/plating{ + icon_state = "wet_cracked0" + }, +/area/ruin/rockplanet/nanotrasen) +"zw" = ( +/obj/machinery/door/airlock/maintenance_hatch, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/asteroid/rockplanet/plasteel, +/area/overmap_encounter/planetoid/rockplanet/explored) +"zx" = ( +/obj/machinery/power/smes/shuttle/precharged{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"zz" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 4; + piping_layer = 2 + }, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/ruin/rockplanet/nanotrasen) +"zF" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/closed/mineral/random/rockplanet, +/area/overmap_encounter/planetoid/rockplanet/explored) +"zH" = ( +/obj/structure/fence/door{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/structure/curtain/cloth/grey, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/ruin/rockplanet/nanotrasen) +"zU" = ( +/obj/item/banner/medical/mundane, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"Ab" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/ruin/rockplanet/nanotrasen) +"AS" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"AX" = ( +/obj/effect/turf_decal/spline/fancy/opaque/yellow{ + dir = 4 + }, +/obj/machinery/light/small/broken/directional/east, +/obj/effect/turf_decal/arrowaxe_small/left{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/rockplanet/nanotrasen) +"Ba" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/plating/asteroid/rockplanet/plasteel, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Bc" = ( +/obj/machinery/power/smes/shuttle/precharged{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"Bt" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"BA" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"BX" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Cm" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/closed/wall/mineral/sandstone, +/area/ruin/rockplanet/nanotrasen) +"CC" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating/dirt/jungle/lit, +/area/ruin/rockplanet/nanotrasen) +"CN" = ( +/turf/open/floor/plating/asteroid/rockplanet/stairs, +/area/overmap_encounter/planetoid/rockplanet/explored) +"CT" = ( +/obj/effect/turf_decal/weather/dirt/corner, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"DJ" = ( +/obj/structure/flora/rock/asteroid{ + icon_state = "asteroid2" + }, +/obj/structure/flora/driftlog, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"DP" = ( +/obj/effect/turf_decal/weather/dirt/corner, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"DR" = ( +/obj/structure/closet/crate, +/obj/item/weldingtool/mini, +/obj/item/clothing/mask/gas/welding, +/obj/item/reagent_containers/glass/bottle/welding_fuel, +/obj/item/reagent_containers/glass/bottle/welding_fuel, +/obj/item/reagent_containers/glass/bottle/welding_fuel, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"Ec" = ( +/turf/open/floor/plating/dirt/jungle/lit, +/area/ruin/rockplanet/nanotrasen) +"Em" = ( +/obj/structure/rack, +/obj/item/storage/firstaid{ + pixel_x = 3; + pixel_y = 8 + }, +/obj/item/reagent_containers/glass/rag{ + pixel_x = -3 + }, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/ruin/rockplanet/nanotrasen) +"En" = ( +/obj/effect/decal/cleanable/robot_debris/gib, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Er" = ( +/obj/structure/flora/rock{ + icon_state = "basalt2" + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Ew" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/rockplanet/nanotrasen) +"EF" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ruin/rockplanet/nanotrasen) +"EI" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/gibspawner, +/obj/effect/decal/remains/human, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/rockplanet/nanotrasen) +"EK" = ( +/obj/effect/turf_decal/weather/dirt/corner, +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"EL" = ( +/obj/structure/table_frame, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"EM" = ( +/obj/structure/frame, +/obj/item/stock_parts/micro_laser/high, +/turf/open/floor/engine/hull/interior, +/area/ruin/rockplanet/nanotrasen) +"Fk" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/ruin/rockplanet/nanotrasen) +"FI" = ( +/obj/effect/turf_decal/spline/fancy/opaque/yellow{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/rockplanet/nanotrasen) +"FJ" = ( +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/ruin/rockplanet/nanotrasen) +"FP" = ( +/obj/structure/frame/machine, +/turf/open/floor/plating/asteroid/rockplanet/plating/scorched, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Gu" = ( +/obj/structure/closet/crate, +/obj/item/gun/energy/laser, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"GA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"GB" = ( +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen{ + dir = 5 + }, +/obj/item/chair/stool/bar, +/turf/open/floor/plating/asteroid/rockplanet/lit{ + icon_state = "plastic" + }, +/area/ruin/rockplanet/nanotrasen) +"GK" = ( +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/overmap_encounter/planetoid/rockplanet/explored) +"He" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/pond, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Hi" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Hr" = ( +/obj/structure/rack, +/obj/item/ammo_box/magazine/m45, +/obj/item/ammo_box/magazine/m45{ + pixel_x = -5 + }, +/obj/item/ammo_box/magazine/m45{ + pixel_x = 7 + }, +/obj/item/gun/ballistic/automatic/pistol/m1911/no_mag, +/turf/open/floor/plating/ashplanet/rocky, +/area/ruin/rockplanet/nanotrasen) +"HG" = ( +/obj/structure/flora/driftlog, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"HL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/freezer{ + dir = 8; + name = "Head" + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ruin/rockplanet/nanotrasen) +"Io" = ( +/obj/structure/railing{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/rockplanet/hull_plating, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Ir" = ( +/obj/structure/railing, +/obj/structure/closet/crate, +/obj/item/gun/energy/laser, +/obj/item/stock_parts/cell/high, +/turf/open/floor/plating/asteroid/rockplanet/hull_plating, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Iw" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"IG" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"IH" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"IX" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt/corner, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"IY" = ( +/obj/effect/decal/cleanable/glass/plasma, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"Jf" = ( +/obj/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Jy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-6" + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"JA" = ( +/obj/effect/turf_decal/weather/dirt/corner, +/obj/structure/flora/rock{ + icon_state = "redrocks3" + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"JL" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/grass, +/area/overmap_encounter/planetoid/rockplanet/explored) +"JN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"Kl" = ( +/obj/effect/turf_decal/weather/dirt/corner, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Kn" = ( +/obj/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"KA" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/structure/chair/plastic{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/hull_plating, +/area/overmap_encounter/planetoid/rockplanet/explored) +"KL" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"KN" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"KW" = ( +/obj/effect/decal/cleanable/robot_debris/gib, +/obj/item/stack/sheet/metal/five{ + pixel_x = 3; + pixel_y = 9 + }, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/overmap_encounter/planetoid/rockplanet/explored) +"KX" = ( +/obj/structure/barricade/sandbags, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Le" = ( +/obj/effect/turf_decal/spline/plain/transparent/green{ + dir = 4; + icon_state = "spline_plain_cee" + }, +/obj/structure/frame/machine, +/obj/effect/spawner/lootdrop/salvage_matter_bin, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/rockplanet/nanotrasen) +"Lk" = ( +/turf/open/floor/plasteel/grimy, +/area/ruin/rockplanet/nanotrasen) +"Ly" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"LA" = ( +/obj/structure/cable{ + icon_state = "4-10" + }, +/turf/open/floor/plating/asteroid/rockplanet/plating/scorched, +/area/overmap_encounter/planetoid/rockplanet/explored) +"LN" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"LW" = ( +/obj/structure/rack, +/obj/machinery/recharger{ + pixel_x = 5; + pixel_y = 7 + }, +/obj/item/stock_parts/cell{ + pixel_x = -7; + pixel_y = 8 + }, +/obj/item/stock_parts/cell{ + pixel_x = -7; + pixel_y = 2 + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"LX" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/structure/cursed_money{ + pixel_x = 3; + pixel_y = 10 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/rockplanet/nanotrasen) +"Md" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Me" = ( +/obj/structure/table, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 10; + pixel_y = 10 + }, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 1; + pixel_y = 7 + }, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 10; + pixel_y = 3 + }, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 1; + pixel_y = 3 + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"Mi" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/pond, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Ms" = ( +/obj/structure/flora/rock{ + icon_state = "basalt" + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"MV" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"MW" = ( +/obj/structure/salvageable/autolathe, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"NV" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Oc" = ( +/obj/structure/cable/yellow{ + icon_state = "4-5" + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"Op" = ( +/turf/closed/wall/yesdiag, +/area/ruin/rockplanet/nanotrasen) +"Or" = ( +/mob/living/simple_animal/hostile/asteroid/basilisk/whitesands, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Ot" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/general/visible/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/rockplanet/nanotrasen) +"Ox" = ( +/obj/effect/turf_decal/spline/fancy/opaque/yellow{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/techfloor/hole, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/rockplanet/nanotrasen) +"OM" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/rockplanet/pond, +/area/overmap_encounter/planetoid/rockplanet/explored) +"OP" = ( +/obj/structure/rack, +/obj/item/storage/fancy/cigarettes/cigars, +/obj/item/lighter/greyscale, +/turf/open/floor/plating/asteroid/rockplanet/plasteel, +/area/overmap_encounter/planetoid/rockplanet/explored) +"OS" = ( +/obj/structure/rack, +/obj/item/reagent_containers/glass/bottle/morphine{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/reagent_containers/hypospray/medipen/morphine{ + pixel_y = -3 + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"OY" = ( +/obj/item/reagent_containers/glass/bucket/wooden{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/stack/sheet/cotton/cloth/ten{ + pixel_x = -15; + pixel_y = 8 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/rockplanet/grass, +/area/overmap_encounter/planetoid/rockplanet/explored) +"OZ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Pn" = ( +/obj/machinery/power/smes/engineering{ + charge = 1000 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating/ashplanet/rocky, +/area/ruin/rockplanet/nanotrasen) +"PD" = ( +/obj/structure/bed{ + icon_state = "dirty_mattress"; + name = "dirty mattress" + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"PH" = ( +/obj/structure/frame/machine, +/turf/open/floor/plating/asteroid/rockplanet/hull_plating, +/area/overmap_encounter/planetoid/rockplanet/explored) +"PI" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/plating/asteroid/rockplanet/pond, +/area/overmap_encounter/planetoid/rockplanet/explored) +"PX" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/table, +/obj/machinery/computer/secure_data/laptop{ + dir = 8; + pixel_x = 2; + pixel_y = 6 + }, +/turf/open/floor/plating/asteroid/rockplanet/hull_plating, +/area/ruin/rockplanet/nanotrasen) +"Qc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/command{ + dir = 8; + name = "Bridge"; + req_access_txt = "19" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ruin/rockplanet/nanotrasen) +"Qv" = ( +/turf/template_noop, +/area/template_noop) +"Rj" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/obj/effect/decal/cleanable/glass/plasma, +/turf/open/floor/plasteel/tech, +/area/ruin/rockplanet/nanotrasen) +"Rk" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/ruin/rockplanet/nanotrasen) +"Rn" = ( +/obj/machinery/power/shuttle/engine/electric, +/turf/open/floor/plating/asteroid/rockplanet/hull_plating, +/area/overmap_encounter/planetoid/rockplanet/explored) +"RB" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"RM" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/obj/structure/flora/rock{ + icon_state = "redrocks3" + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"RN" = ( +/obj/structure/fence/door{ + dir = 4 + }, +/obj/structure/curtain/cloth/grey, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/ruin/rockplanet/nanotrasen) +"Sh" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Si" = ( +/obj/machinery/power/shieldwallgen/atmos{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/hull_plating, +/area/overmap_encounter/planetoid/rockplanet/explored) +"So" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/item/stack/sheet/metal/five, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"SH" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"SN" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Tb" = ( +/obj/structure/mecha_wreckage/ripley/firefighter, +/turf/open/floor/plating/asteroid/rockplanet/plating/scorched, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Tn" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel, +/area/ruin/rockplanet/nanotrasen) +"TJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/engineering{ + dir = 1; + name = "Engineering" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/patterned/grid, +/area/ruin/rockplanet/nanotrasen) +"TL" = ( +/obj/effect/turf_decal/spline/fancy/opaque/yellow{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"TT" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Ui" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/techfloor, +/obj/structure/frame/computer{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/rockplanet/nanotrasen) +"UX" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"Vy" = ( +/obj/effect/decal/cleanable/xenoblood/xgibs, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Wl" = ( +/obj/structure/barricade/sandbags, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Wm" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/driftlog, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Xb" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Xj" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/plasteel, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Xk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light/small/broken/directional/south, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"Xq" = ( +/obj/structure/flora/rock{ + icon_state = "redrocks1" + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Xy" = ( +/obj/machinery/door/airlock/external{ + dir = 4 + }, +/turf/open/floor/engine/hull/interior, +/area/ruin/rockplanet/nanotrasen) +"XH" = ( +/turf/open/floor/plating/asteroid/rockplanet/pond, +/area/overmap_encounter/planetoid/rockplanet/explored) +"XK" = ( +/turf/closed/wall/rust, +/area/ruin/rockplanet/nanotrasen) +"XX" = ( +/obj/structure/mineral_door/sandstone, +/turf/open/floor/plating/dirt/jungle/lit, +/area/ruin/rockplanet/nanotrasen) +"Yl" = ( +/obj/structure/table, +/obj/item/modular_computer/laptop{ + pixel_x = 3; + pixel_y = 8 + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"Ym" = ( +/turf/closed/wall/yesdiag, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Yq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/door_assembly/door_assembly_com{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ruin/rockplanet/nanotrasen) +"Yy" = ( +/mob/living/simple_animal/hostile/asteroid/gutlunch, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"YC" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/structure/curtain, +/turf/open/floor/plating, +/area/ruin/rockplanet/nanotrasen) +"YQ" = ( +/turf/closed/wall/mineral/sandstone, +/area/ruin/rockplanet/nanotrasen) +"YT" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light/small/broken/directional/south, +/turf/open/floor/plasteel/telecomms_floor, +/area/ruin/rockplanet/nanotrasen) +"YW" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/general/visible/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-10" + }, +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos, +/area/ruin/rockplanet/nanotrasen) +"Zc" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "6-8" + }, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"Ze" = ( +/obj/structure/closet/crate, +/obj/item/storage/toolbox/emergency, +/obj/item/storage/toolbox/emergency, +/obj/item/stack/sheet/metal/ten, +/turf/open/floor/plating/asteroid/rockplanet/plasteel, +/area/overmap_encounter/planetoid/rockplanet/explored) +"Zf" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/machinery/light/small/broken/directional/south, +/obj/structure/rack, +/obj/item/stock_parts/subspace/crystal{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/stock_parts/subspace/filter, +/obj/item/circuitboard/machine/telecomms/relay, +/turf/open/floor/plating{ + icon_state = "wet_cracked2" + }, +/area/ruin/rockplanet/nanotrasen) +"Zy" = ( +/turf/closed/wall/mineral/iron, +/area/ruin/rockplanet/nanotrasen) +"ZE" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"ZO" = ( +/obj/structure/rack, +/turf/open/floor/plasteel/rockvault, +/area/ruin/rockplanet/nanotrasen) +"ZS" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/rockplanet/lit, +/area/overmap_encounter/planetoid/rockplanet/explored) +"ZZ" = ( +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen{ + dir = 1 + }, +/obj/machinery/light/small/broken/directional/north, +/obj/structure/table_frame, +/turf/open/floor/plating/asteroid/rockplanet/lit{ + icon_state = "plastic" + }, +/area/ruin/rockplanet/nanotrasen) + +(1,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +iN +iN +iN +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(2,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +iN +Kl +Hi +iN +vi +iN +iN +iN +iN +Kl +Hi +iN +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(3,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +iN +iN +Kl +pJ +Md +TT +iN +iN +iN +iN +iN +iN +aX +Ly +Hi +iN +iN +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(4,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +kV +iN +vi +iN +aX +gY +gY +TT +iN +iN +iN +iN +iN +iN +aX +gY +Ly +Hi +iN +iN +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(5,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +iN +iN +iN +aX +gY +gY +TT +iN +HG +iN +iN +iN +iN +rc +RB +gY +TT +iN +iN +iN +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(6,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +uT +iN +Er +aX +gY +pH +yb +iN +iN +iN +Kl +Hi +iN +iN +aX +gY +TT +iN +iN +iN +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(7,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +iN +iN +iN +iN +aX +gY +TT +iN +iN +iN +iN +rc +yb +iN +iN +aX +gY +TT +iN +iN +iN +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(8,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +tA +dJ +iN +iN +DP +KN +sK +Hi +iN +iN +iN +iN +iN +vl +Kl +Md +gY +TT +iN +iN +kV +iN +Qv +Qv +Qv +Qv +Qv +Qv +"} +(9,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +iN +iN +iN +iN +aX +gY +wW +TT +iN +iN +Yy +iN +iN +iN +aX +gY +gY +TT +iN +iN +iN +iN +Qv +Qv +Qv +Qv +Qv +Qv +"} +(10,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +iN +iN +iN +iN +aX +gY +gY +TT +iN +iN +iN +iN +iN +vi +DP +SN +gY +TT +vi +iN +iN +iN +Qv +Qv +Qv +Qv +Qv +Qv +"} +(11,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +jm +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +Ms +iN +iN +iN +Kl +Md +gY +gY +TT +iN +iN +iN +iN +iN +iN +aX +gY +gY +TT +iN +iN +iN +iN +Qv +Qv +Qv +Qv +Qv +Qv +"} +(12,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +iN +iN +iN +iN +iN +kV +aX +gY +gY +gY +TT +iN +KX +KX +KX +KX +iN +aX +gY +gY +TT +iN +iN +Ms +iN +Qv +Qv +Qv +Qv +Qv +Qv +"} +(13,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +iN +iN +iN +iN +iN +iN +aX +gY +gY +gY +TT +KX +iN +iN +iN +iN +EK +Md +gY +pH +yb +iN +iN +iN +iN +iN +Qv +Qv +Qv +Qv +Qv +"} +(14,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +Xq +iN +iN +KX +KX +KX +BA +gY +gY +pH +yb +iN +iN +iN +gn +DJ +aX +gY +gY +TT +iN +iN +iN +iN +iN +vi +Qv +Qv +Qv +Qv +Qv +"} +(15,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +KX +iN +iN +iN +rc +RB +gY +TT +iN +iN +iN +yw +aw +iN +aX +gY +mW +fd +iN +iN +Yy +iN +iN +iN +Qv +Qv +Qv +Qv +Qv +"} +(16,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +iN +iN +iN +aX +gY +TT +iN +iN +iN +HG +yw +vi +DP +qM +nB +uL +iN +Xq +iN +iN +iN +iN +iN +Qv +Qv +Qv +Qv +"} +(17,1,1) = {" +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +Er +iN +iN +iN +vi +aX +gY +TT +iN +iN +iN +iN +Kl +Hi +aX +gY +Ly +cU +iN +iN +iN +iN +Er +iN +iN +Qv +Qv +Qv +Qv +"} +(18,1,1) = {" +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +iN +iN +iN +aX +pH +sy +bv +bv +Io +TT +aX +TT +aX +gY +gY +TT +KX +iN +iN +iN +iN +tA +iN +Qv +Qv +Qv +Qv +"} +(19,1,1) = {" +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +Yy +iN +iN +Or +rc +vW +wq +vS +cO +Ir +TT +aX +Ly +Iw +gY +gY +Ly +Wl +pJ +Hi +vi +iN +iN +dJ +jm +jm +jm +Qv +"} +(20,1,1) = {" +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +iN +gn +iN +Kl +Md +dM +vS +PX +KA +TT +aX +gY +rW +RB +gY +Ym +sZ +jI +Ym +tN +iN +jm +jm +jm +jm +jm +Qv +"} +(21,1,1) = {" +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +iN +Kl +Md +gY +dM +vS +CN +CN +TT +rc +OZ +vW +Md +Ym +sZ +Ba +nf +tN +jm +jm +jm +jm +jm +jm +jm +Qv +"} +(22,1,1) = {" +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +Xq +iN +aX +gY +gY +NV +vF +CT +SH +iN +iN +iN +aX +gY +gY +vS +nf +Tb +Ym +jm +jm +jm +jm +jm +jm +Qv +Qv +"} +(23,1,1) = {" +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +iN +iN +iN +iN +aX +gY +gY +TT +Kl +Md +TT +iN +iN +iN +aX +gY +gY +mu +Si +sZ +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +"} +(24,1,1) = {" +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +iN +kV +iN +iN +iN +aX +gY +gY +TT +aX +gY +jC +iN +iN +iN +DP +lw +gY +rW +tI +jm +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +"} +(25,1,1) = {" +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +vi +iN +iN +iN +iN +iN +vi +aX +IH +gY +TT +Wm +gY +TT +Kl +Hi +iN +aX +gY +Xb +rH +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +"} +(26,1,1) = {" +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +iN +Er +iN +iN +iN +iN +rc +ZE +gY +TT +aX +gY +TT +aX +TT +Kl +Md +gY +gY +Ly +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +"} +(27,1,1) = {" +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +uT +iN +iN +iN +iN +iN +iN +vl +iN +iN +aX +gY +TT +rc +OZ +yb +aX +Ly +Md +gY +gY +EM +XK +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +"} +(28,1,1) = {" +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +iN +iN +iN +iN +iN +iN +iN +jD +Md +gY +Ly +JA +pJ +pJ +Md +gY +gY +lg +cl +Bc +XK +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +"} +(29,1,1) = {" +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +pJ +iN +iN +iN +iN +iN +Xq +iN +iN +iN +iN +aX +gY +gY +gY +oZ +gY +gY +gY +gY +Bt +lg +zx +Xk +XK +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +"} +(30,1,1) = {" +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +vM +Sh +Hi +iN +iN +tA +iN +iN +iN +Er +Kl +Md +gY +gY +YQ +Xy +XK +YQ +XX +XK +XK +XK +kN +pb +XK +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +"} +(31,1,1) = {" +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +PI +gY +gY +Ly +Hi +iN +iN +iN +iN +iN +iN +aX +gY +gY +mu +YQ +uh +XK +zg +zh +lg +Le +XK +XK +UX +XK +on +Zy +Zy +jm +jm +jm +jm +jm +jm +Qv +Qv +"} +(32,1,1) = {" +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +He +OM +gY +yn +Ly +Hi +iN +iN +vi +iN +iN +aX +gY +cr +ZS +YQ +dB +lg +ZZ +mz +lg +YT +lg +fw +oz +Kn +ga +LW +Zy +on +jm +jm +jm +jm +jm +Qv +Qv +"} +(33,1,1) = {" +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +XH +He +OM +JL +hV +TT +iN +iN +iN +iN +iN +cP +gY +YQ +YQ +YQ +fM +lg +GB +gs +lg +ei +XK +Rk +Jy +wf +df +Oc +Hr +Zy +on +jm +jm +jm +jm +Qv +Qv +"} +(34,1,1) = {" +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +XH +PI +OY +vM +TT +uT +kV +iN +Kl +pJ +Iw +gY +Cm +Zf +lg +uK +XK +XK +ip +lg +qL +XK +rY +Ot +kS +YW +Zc +wf +qU +on +jm +jm +jm +jm +Qv +Qv +"} +(35,1,1) = {" +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +XH +He +Mi +jm +yb +iN +iN +iN +aX +gY +uD +YQ +sR +Ec +CC +GA +Ox +hy +vN +FI +qp +TJ +Tn +EF +Zy +IG +Ab +cd +sX +on +jm +jm +jm +jm +Qv +Qv +"} +(36,1,1) = {" +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +XH +jm +jm +iN +Or +iN +Kl +AS +OZ +ZE +YQ +zp +Ec +fc +rD +TL +AX +oI +il +iZ +XK +lg +aL +Zy +pV +Fk +vw +wf +on +jm +jm +jm +jm +Qv +Qv +"} +(37,1,1) = {" +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +iN +aX +Ly +Hi +aX +YQ +rD +uo +lg +lg +ba +XK +Qc +lg +HL +XK +uh +uh +on +zz +KL +Pn +xG +on +jm +jm +jm +jm +Qv +Qv +"} +(38,1,1) = {" +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +iN +KX +aX +gY +IX +Md +YQ +So +fK +XK +uh +MV +lg +Ew +lg +fe +lg +Gu +on +Zy +Zy +zH +Zy +Zy +on +on +jm +jm +jm +Qv +Qv +"} +(39,1,1) = {" +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +Er +iN +BA +mW +uD +gY +XK +DR +lg +lg +Lk +PD +lg +Ew +lg +YC +lg +lg +Zy +Yl +FJ +KL +MW +Em +ZO +Zy +jm +jm +Qv +Qv +Qv +"} +(40,1,1) = {" +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Xq +iN +iN +Kl +pJ +Md +gY +BX +jw +Op +XK +Op +XK +XK +lg +lg +Yq +XK +XK +XK +jm +Zy +kf +wf +Fk +wf +FJ +wf +Zy +jm +jm +Qv +Qv +Qv +"} +(41,1,1) = {" +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +vi +aX +gY +gY +gY +Ly +AS +OZ +RB +gY +XK +LN +is +uB +EI +JN +xk +lg +jm +on +uN +FJ +aN +oW +wf +zU +on +jm +jm +Qv +Qv +Qv +"} +(42,1,1) = {" +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +iN +Kl +Md +gY +po +gY +gY +TT +iN +kV +jm +jm +LX +hc +uh +tX +fF +Ui +lg +jm +on +Me +wf +FJ +wf +wf +FJ +Zy +jm +Qv +Qv +Qv +Qv +"} +(43,1,1) = {" +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +Yy +Kl +Md +Ym +sZ +gY +gY +pH +RM +iN +iN +jm +jm +jm +zF +IY +jl +gO +Rj +lg +jm +on +EL +FJ +wf +hm +OS +hm +Zy +jm +Qv +Qv +Qv +Qv +"} +(44,1,1) = {" +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +vi +iN +iN +aX +Ym +tN +Bt +gY +gY +TT +iN +iN +iN +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +on +on +RN +Zy +Zy +on +on +jm +Qv +Qv +Qv +Qv +"} +(45,1,1) = {" +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +tA +iN +aX +uu +eo +eo +tN +Ym +TT +iN +Ms +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +vL +GK +GK +GK +GK +GK +jm +jm +Qv +Qv +Qv +Qv +Qv +"} +(46,1,1) = {" +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +Ym +sZ +nf +nf +nf +Ze +sZ +TT +iN +iN +jm +jm +jm +jm +jm +jm +jm +jm +jm +GK +GK +Vy +GK +GK +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +Qv +"} +(47,1,1) = {" +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +sZ +sZ +sZ +nf +Xj +OP +tN +Ym +TT +kV +iN +jm +jm +jm +jm +jm +jm +jm +jm +GK +GK +GK +GK +GK +jm +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +Qv +"} +(48,1,1) = {" +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +iN +iN +iN +tN +ha +zw +oq +or +Jf +Ym +OZ +yb +iN +jm +jm +jm +jm +jm +jm +jm +GK +GK +GK +KW +GK +GK +GK +jm +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +Qv +"} +(49,1,1) = {" +Qv +Qv +Qv +jm +jm +jm +iN +iN +iN +iN +Ms +iN +sZ +LA +eo +sZ +sn +Jf +Ym +iN +iN +iN +dJ +jm +jm +jm +jm +jm +En +GK +GK +GK +GK +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +Qv +"} +(50,1,1) = {" +Qv +Qv +Qv +jm +jm +jm +dJ +iN +iN +iN +iN +iN +PH +lz +eo +sZ +Jf +Ym +iN +iN +iN +Qv +jm +jm +jm +jm +jm +Vy +GK +GK +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +Qv +Qv +"} +(51,1,1) = {" +Qv +Qv +Qv +Qv +jm +Qv +iN +iN +iN +vi +iN +iN +Rn +FP +sZ +Ym +iN +iN +vi +iN +Qv +Qv +jm +jm +jm +GK +GK +GK +GK +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(52,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +iN +iN +vS +tN +Ym +iN +kV +Yy +iN +iN +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(53,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +uT +iN +sZ +Ym +iN +iN +tA +iN +iN +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(54,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +iN +iN +vi +iN +iN +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(55,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +Er +iN +iN +Qv +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(56,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +iN +iN +iN +iN +Qv +Qv +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(57,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +jm +jm +jm +jm +jm +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} +(58,1,1) = {" +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +"} diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_medipen_plant.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_medipen_plant.dmm index 2e167f56d1ef..e9d9c42c3028 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_medipen_plant.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_medipen_plant.dmm @@ -17,6 +17,14 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/powered) +"aV" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/ruin/powered) "bu" = ( /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 @@ -69,6 +77,19 @@ /obj/effect/turf_decal/box, /turf/open/floor/engine, /area/ruin/powered) +"cN" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/ruin/powered) "cZ" = ( /obj/structure/table, /obj/machinery/recharger{ @@ -107,6 +128,14 @@ icon_state = "platingdmg1" }, /area/ruin/powered) +"dQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/ruin/powered) "dR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 8 @@ -174,6 +203,15 @@ }, /turf/open/floor/plasteel/white, /area/ruin/powered) +"fh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/ruin/powered) "fl" = ( /obj/structure/table_frame, /obj/item/shard{ @@ -208,23 +246,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white, /area/ruin/powered) -"fG" = ( -/obj/item/shard{ - icon_state = "tiny" - }, -/obj/item/shard{ - icon_state = "small" - }, -/obj/item/shard, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, +"fO" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plating, /area/ruin/powered) -"fJ" = ( +"fY" = ( /obj/effect/turf_decal/industrial/warning{ dir = 8 }, @@ -232,14 +258,18 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 8 - }, /turf/open/floor/plasteel, /area/ruin/powered) -"fO" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plating, +"ge" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/ruin/powered) "gn" = ( /obj/effect/decal/cleanable/dirt, @@ -292,13 +322,6 @@ }, /turf/open/floor/plasteel/white, /area/ruin/powered) -"hq" = ( -/obj/structure/chair/office{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/ruin/powered) "hC" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -507,18 +530,6 @@ }, /turf/open/floor/plasteel/white, /area/ruin/powered) -"nF" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/powered) "nQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 8 @@ -557,6 +568,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white, /area/ruin/powered) +"oL" = ( +/obj/item/shard{ + icon_state = "tiny" + }, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/powered) "oW" = ( /obj/structure/rack, /obj/item/storage/box, @@ -710,20 +733,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white, /area/ruin/powered) -"sT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 8 +"sS" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/fire{ + pixel_x = 3; + pixel_y = -3 }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 }, +/turf/open/floor/plasteel/dark, /area/ruin/powered) "tu" = ( /obj/structure/table, @@ -743,11 +763,6 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/powered) -"uc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, -/area/ruin/powered) "uu" = ( /obj/machinery/vending/cola/random, /obj/effect/turf_decal/corner/transparent/neutral{ @@ -913,6 +928,14 @@ icon_state = "platingdmg1" }, /area/ruin/powered) +"zN" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/powered) "zQ" = ( /obj/structure/table/glass, /obj/effect/turf_decal/industrial/warning{ @@ -982,12 +1005,30 @@ }, /turf/open/floor/plating, /area/ruin/powered) +"BD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/white, +/area/ruin/powered) "BH" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating{ icon_state = "platingdmg2" }, /area/ruin/powered) +"BI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ruin/powered) "BS" = ( /obj/effect/turf_decal/industrial/warning{ dir = 8 @@ -1058,13 +1099,6 @@ /obj/machinery/light/directional/north, /turf/open/floor/plasteel/white, /area/ruin/powered) -"FM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/powered) "FO" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -1146,6 +1180,14 @@ "Jb" = ( /turf/closed/wall, /area/ruin/powered) +"Jm" = ( +/obj/machinery/light/directional/south, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/ruin/powered) "Jq" = ( /obj/effect/turf_decal/industrial/loading, /turf/open/floor/engine, @@ -1281,17 +1323,12 @@ "Nb" = ( /turf/open/floor/plating/asteroid/whitesands, /area/ruin/powered) -"Nd" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 +"NN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/white, /area/ruin/powered) "OB" = ( /obj/effect/decal/cleanable/dirt, @@ -1364,21 +1401,6 @@ icon_state = "platingdmg3" }, /area/ruin/powered) -"Qa" = ( -/obj/item/shard{ - icon_state = "tiny" - }, -/obj/item/shard{ - icon_state = "medium" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) "Qc" = ( /obj/machinery/plumbing/tank, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1402,16 +1424,6 @@ }, /turf/open/floor/plating, /area/ruin/powered) -"Qr" = ( -/obj/machinery/light/directional/south, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/powered) "QP" = ( /obj/machinery/door/airlock/vault/derelict, /obj/structure/cable, @@ -1478,31 +1490,27 @@ }, /turf/open/floor/plasteel, /area/ruin/powered) -"SL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/dark, -/area/ruin/powered) "Tb" = ( /obj/machinery/plumbing, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white, /area/ruin/powered) -"Tc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/ruin/powered) "Te" = ( /obj/effect/turf_decal/industrial/warning, /turf/open/floor/plasteel/white, /area/ruin/powered) +"TY" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/powered) "Ub" = ( /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 @@ -1516,18 +1524,12 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/powered) -"Ud" = ( -/obj/structure/rack, -/obj/item/storage/firstaid/brute, -/obj/item/storage/firstaid/fire{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 +"Uo" = ( +/obj/item/paper{ + default_raw_text = "First, pack the medpens in a box, this is nessarary or else the launchpad won't take the pens. Second, leave them on the pad, and click send. From there, they will be managed and transported to mining vendors all over the galaxy."; + name = "Factory loading instructions" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, +/turf/open/floor/engine, /area/ruin/powered) "UH" = ( /turf/open/floor/plating, @@ -1589,6 +1591,20 @@ /obj/structure/table_frame, /turf/open/floor/plasteel/white, /area/ruin/powered) +"VY" = ( +/obj/item/shard{ + icon_state = "tiny" + }, +/obj/item/shard{ + icon_state = "small" + }, +/obj/item/shard, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/ruin/powered) "Wa" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1722,13 +1738,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/ruin/powered) -"ZJ" = ( -/obj/item/paper{ - default_raw_text = "First, pack the medpens in a box, this is nessarary or else the launchpad won't take the pens. Second, leave them on the pad, and click send. From there, they will be managed and transported to mining vendors all over the galaxy."; - name = "Factory loading instructions" - }, -/turf/open/floor/engine, -/area/ruin/powered) "ZM" = ( /obj/structure/table, /obj/item/paper_bin, @@ -1750,6 +1759,10 @@ }, /turf/open/floor/plasteel, /area/ruin/powered) +"ZQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/powered) (1,1,1) = {" Mb @@ -2066,17 +2079,17 @@ ku Jb kF sE -sE -nF -hq -FM -Qr +gS +cN +aV +dQ +Jm Jb hY kk Qq -fG -xd +VY +Qq mh Hp AO @@ -2097,17 +2110,17 @@ pB dZ bu sE -gS -Nd -uc -Ud -SL +sE +KU +ZQ +sS +ge Ei qs Wa Qk -fJ -eI +fY +fh zk rN iP @@ -2118,7 +2131,7 @@ wq QP Fd Fd -ZJ +Uo Jq lM az @@ -2137,8 +2150,8 @@ FO sz Rs Lj -sT -SE +BI +TY kS SE SE @@ -2168,8 +2181,8 @@ Jb hY en Bn -Qa -rf +oL +zN yc rf rf @@ -2199,8 +2212,8 @@ Jb hn ir ad -Tc -ad +NN +BD zk ad oH diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_youreinsane.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_youreinsane.dmm index 4ea2350301d7..e8932e8b51ed 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_youreinsane.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_youreinsane.dmm @@ -79,8 +79,7 @@ /area/ruin/unpowered) "x" = ( /obj/effect/mob_spawn/human/engineer{ - gender = "female"; - mob_species = null + gender = "female" }, /obj/item/clothing/suit/radiation, /obj/item/clothing/head/radiation{ @@ -90,6 +89,12 @@ /obj/item/geiger_counter, /turf/open/floor/engine, /area/ruin/unpowered) +"y" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/ruin/unpowered) "z" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating{ @@ -139,9 +144,6 @@ dir = 1 }, /obj/structure/frame/machine, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 9 }, @@ -268,7 +270,7 @@ Q u Y j -w +y w w "} diff --git a/_maps/RandomRuins/SpaceRuins/DJstation.dmm b/_maps/RandomRuins/SpaceRuins/DJstation.dmm index 0015c9509123..63659db94417 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation.dmm @@ -351,8 +351,8 @@ dir = 1 }, /obj/structure/rack, -/obj/item/clothing/under/costume/soviet, -/obj/item/clothing/head/trapper, +/obj/item/clothing/under/costume/pirate, +/obj/item/clothing/head/bandana, /obj/effect/turf_decal/corner/opaque/white{ dir = 1 }, diff --git a/_maps/RandomRuins/SpaceRuins/Fast_Food.dmm b/_maps/RandomRuins/SpaceRuins/Fast_Food.dmm index 7371069c7a17..3c98825f7924 100644 --- a/_maps/RandomRuins/SpaceRuins/Fast_Food.dmm +++ b/_maps/RandomRuins/SpaceRuins/Fast_Food.dmm @@ -1645,11 +1645,6 @@ /obj/item/reagent_containers/food/snacks/burger/brain, /turf/open/floor/carpet, /area/ruin/space/has_grav/powered/macspace) -"Fk" = ( -/obj/machinery/atmospherics/components/unary/tank/oxygen, -/obj/machinery/atmospherics/components/unary/tank/oxygen, -/turf/open/floor/mineral/titanium, -/area/ruin/space/has_grav/powered/macspace) "Im" = ( /obj/machinery/door/airlock/silver, /obj/effect/mapping_helpers/airlock/cyclelink_helper, @@ -2226,7 +2221,7 @@ aM ae dk dk -Fk +dk ae VM VM diff --git a/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm b/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm index 63442dfeb7bf..78a1027fb247 100644 --- a/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm +++ b/_maps/RandomRuins/SpaceRuins/corporate_mining.dmm @@ -37,6 +37,14 @@ /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/airless, /area/ruin/space) +"bA" = ( +/obj/machinery/vending/cigarette, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/lightgrey, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/corporatemine/hall) "bG" = ( /obj/structure/cable{ icon_state = "1-4" @@ -124,21 +132,6 @@ }, /turf/open/floor/plasteel/mono/dark, /area/ruin/space/has_grav/corporatemine/crewquarters) -"ei" = ( -/obj/effect/decal/cleanable/oil/slippery, -/obj/machinery/atmospherics/pipe/simple/scrubbers{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/components/binary/valve/digital/on/layer4, -/obj/machinery/atmospherics/components/binary/valve/digital/on/layer2, -/turf/open/floor/plating, -/area/ruin/space/has_grav/corporatemine/hall) "eu" = ( /obj/structure/cable{ icon_state = "4-8" @@ -213,6 +206,27 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/ruin/space/has_grav/corporatemine/hall) +"fF" = ( +/obj/machinery/door/airlock{ + name = "Room 1" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/effect/turf_decal/trimline/opaque/bar/filled/warning{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/bar/filled/warning, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/corporatemine/crewquarters) "fK" = ( /obj/structure/cable{ icon_state = "5-8" @@ -533,20 +547,6 @@ /obj/structure/grille/broken, /turf/open/floor/plating, /area/ruin/space) -"mp" = ( -/obj/structure/table/wood/poker, -/obj/effect/holodeck_effect/cards, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/turf/open/floor/plasteel/grimy, -/area/ruin/space/has_grav/corporatemine/crewquarters) "my" = ( /obj/machinery/door/airlock/wood{ locked = 1; @@ -639,6 +639,17 @@ /obj/item/shovel, /turf/open/floor/plating/asteroid/airless, /area/ruin/space) +"ov" = ( +/obj/structure/table/wood/poker, +/obj/effect/holodeck_effect/cards, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/corporatemine/crewquarters) "oD" = ( /obj/structure/railing, /obj/structure/catwalk/over/plated_catwalk, @@ -842,33 +853,6 @@ /obj/effect/turf_decal/industrial/outline, /turf/open/floor/plasteel/tech/grid, /area/ruin/space/has_grav/corporatemine/hall) -"uJ" = ( -/obj/machinery/door/airlock{ - name = "Room 1" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/effect/turf_decal/trimline/opaque/bar/filled/warning{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/opaque/bar/filled/warning, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/corporatemine/crewquarters) "va" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 @@ -970,6 +954,11 @@ }, /turf/open/floor/plating, /area/ruin/space) +"xK" = ( +/obj/structure/table/wood, +/obj/machinery/fax, +/turf/open/floor/wood, +/area/ruin/space/has_grav/corporatemine/crewquarters) "xT" = ( /obj/structure/cable{ icon_state = "1-10" @@ -1007,11 +996,6 @@ "yl" = ( /turf/open/floor/plating, /area/ruin/space) -"yv" = ( -/obj/structure/table/wood, -/obj/machinery/fax, -/turf/open/floor/wood, -/area/ruin/space/has_grav/corporatemine/crewquarters) "yD" = ( /obj/effect/decal/cleanable/oil/slippery, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -1648,6 +1632,18 @@ }, /turf/open/floor/plating, /area/ruin/space) +"JS" = ( +/obj/effect/decal/cleanable/oil/slippery, +/obj/machinery/atmospherics/pipe/simple/scrubbers{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/components/binary/valve/digital/on/layer4, +/obj/machinery/atmospherics/components/binary/valve/digital/on/layer2, +/turf/open/floor/plating, +/area/ruin/space/has_grav/corporatemine/hall) "Ke" = ( /turf/open/floor/plating/airless, /area/ruin/space) @@ -1817,17 +1813,6 @@ /obj/structure/lattice, /turf/open/floor/plating, /area/ruin/space) -"NV" = ( -/obj/machinery/vending/cigarette, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/corporatemine/hall) "Og" = ( /obj/structure/bed, /obj/item/bedsheet/syndie, @@ -3559,7 +3544,7 @@ bc rn iW BA -yv +xK DF gf BA @@ -3713,7 +3698,7 @@ Al iW Eu AD -ei +JS CH Br WW @@ -4133,7 +4118,7 @@ yD Dn Zz qK -NV +bA pP nf zB @@ -4283,7 +4268,7 @@ BA gj cI nW -uJ +fF pK pK TT @@ -4333,7 +4318,7 @@ Al Al QR Lm -mp +ov qZ tF Qc diff --git a/_maps/RandomRuins/SpaceRuins/hellfactory.dmm b/_maps/RandomRuins/SpaceRuins/hellfactory.dmm index 7ac9ff16fff2..0104b112aeda 100644 --- a/_maps/RandomRuins/SpaceRuins/hellfactory.dmm +++ b/_maps/RandomRuins/SpaceRuins/hellfactory.dmm @@ -25,10 +25,10 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/junction{ dir = 4 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1{ dir = 4 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1{ +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer4{ dir = 4 }, /turf/open/floor/plastic, @@ -40,7 +40,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer1{ dir = 1 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ dir = 1 }, /turf/open/floor/plastic, @@ -55,7 +55,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1{ dir = 8 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer4{ dir = 8 }, /turf/closed/indestructible/reinforced, @@ -70,7 +70,7 @@ "ak" = ( /obj/machinery/atmospherics/components/unary/tank/oxygen{ dir = 8; - gas_type = /datum/gas/water_vapor; + gas_type = "water_vapor"; initialize_directions = 8 }, /turf/open/floor/plasteel/grimy, @@ -122,15 +122,12 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1{ dir = 6 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ dir = 6 }, /turf/open/floor/plastic, /area/ruin/space/has_grav/hellfactory) "av" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 }, @@ -138,6 +135,9 @@ dir = 4 }, /obj/structure/holobox, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ + dir = 4 + }, /turf/open/floor/plastic, /area/ruin/space/has_grav/hellfactory) "ax" = ( @@ -147,7 +147,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer1{ dir = 4 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer4{ dir = 4 }, /turf/open/floor/plastic, @@ -166,7 +166,7 @@ "aC" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4, /turf/open/floor/plastic, /area/ruin/space/has_grav/hellfactory) "aD" = ( @@ -206,7 +206,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1{ dir = 5 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ dir = 5 }, /turf/open/floor/plastic, @@ -218,7 +218,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1{ dir = 4 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ dir = 4 }, /turf/open/floor/plastic, @@ -230,7 +230,7 @@ /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1{ dir = 9 }, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4{ dir = 9 }, /turf/open/floor/plastic, @@ -1030,8 +1030,8 @@ "Nv" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple, /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1, -/obj/machinery/atmospherics/pipe/heat_exchanging/simple, /obj/machinery/light/directional/east, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer4, /turf/open/floor/plastic, /area/ruin/space/has_grav/hellfactory) "Nx" = ( diff --git a/_maps/RandomRuins/SpaceRuins/provinggrounds.dmm b/_maps/RandomRuins/SpaceRuins/provinggrounds.dmm index 521b2beac456..98a95198de5a 100644 --- a/_maps/RandomRuins/SpaceRuins/provinggrounds.dmm +++ b/_maps/RandomRuins/SpaceRuins/provinggrounds.dmm @@ -324,7 +324,6 @@ /area/ruin/space/has_grav/syndicircle/winter) "iR" = ( /obj/effect/mine/shrapnel, -/obj/effect/turf_decal/weather/snow/corner, /obj/item/stack/tile/mineral/snow, /obj/machinery/light/dim/directional/west, /obj/effect/decal/cleanable/dirt/dust, diff --git a/_maps/RandomRuins/SpaceRuins/singularity_lab.dmm b/_maps/RandomRuins/SpaceRuins/singularity_lab.dmm index f8b9e24b2d20..67fb3c35f127 100644 --- a/_maps/RandomRuins/SpaceRuins/singularity_lab.dmm +++ b/_maps/RandomRuins/SpaceRuins/singularity_lab.dmm @@ -1,4 +1,12 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/structure/spacevine/dense, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "ac" = ( /obj/structure/cable{ icon_state = "5-9" @@ -60,21 +68,23 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"ap" = ( -/obj/machinery/conveyor{ - id = "singlabcarg" +"ao" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/railing{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 }, -/area/ruin/space/has_grav/singularitylab) +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/decal/cleanable/blood{ + dir = 4; + icon_state = "gib3" + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/cargo) "aq" = ( /obj/structure/chair/office{ dir = 1 @@ -109,55 +119,18 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab/civvie) -"ax" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/effect/turf_decal/atmos/oxygen, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 1 +"az" = ( +/obj/structure/spacevine, +/obj/structure/spacevine{ + pixel_y = 32 }, -/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/spacevine/dense, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, -/area/ruin/space/has_grav/singularitylab) -"ay" = ( -/obj/machinery/door/airlock{ - dir = 4; - name = "Private Quarters" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, /area/ruin/space/has_grav/singularitylab/civvie) -"aA" = ( -/turf/open/space/basic, -/area/space/nearstation) -"aC" = ( -/obj/structure/flippedtable{ - dir = 1; - icon_state = "" - }, -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" - }, -/turf/open/floor/plating/asteroid, -/area/ruin/space/has_grav/singularitylab) "aD" = ( /obj/structure/cable{ icon_state = "5-9" @@ -169,11 +142,15 @@ /obj/machinery/light/directional/north, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"aI" = ( +"aJ" = ( /obj/structure/spacevine/dense, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 8 +/obj/structure/spacevine/dense{ + pixel_x = 32 + }, +/obj/structure/spacevine/dense{ + pixel_y = -32 }, +/mob/living/simple_animal/hostile/venus_human_trap, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; @@ -224,15 +201,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"aP" = ( -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/stalkybush, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "aQ" = ( /obj/structure/transit_tube/diagonal{ dir = 4 @@ -249,23 +217,6 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab) -"aR" = ( -/obj/structure/table, -/obj/machinery/button/shieldwallgen{ - dir = 8; - id = "singlabhang"; - pixel_x = -5 - }, -/obj/machinery/button/door{ - dir = 8; - id = "singlabhangar"; - pixel_x = 8 - }, -/obj/structure/sign/warning/incident{ - pixel_x = 32 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) "aT" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ dir = 1 @@ -276,28 +227,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"aU" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 4 - }, -/obj/item/pen{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) -"aY" = ( -/turf/closed/wall{ - desc = "A huge chunk of metal holding the roof of the asteroid at bay"; - name = "structural support" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "aZ" = ( /obj/structure/cable{ icon_state = "6-8" @@ -314,6 +243,22 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"ba" = ( +/obj/structure/cable{ + icon_state = "6-9" + }, +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" + }, +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "bb" = ( /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/dirt{ @@ -438,6 +383,13 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav) +"bx" = ( +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "by" = ( /obj/structure/chair/office{ dir = 4 @@ -453,18 +405,25 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab/engineering) -"bD" = ( -/obj/structure/spacevine/dense, -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 1; - piping_layer = 4 +"bC" = ( +/obj/machinery/door/airlock{ + dir = 4; + name = "Private Quarters" }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/area/ruin/space/has_grav/singularitylab) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/civvie) "bH" = ( /obj/structure/railing/corner{ dir = 4 @@ -500,12 +459,6 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab/civvie) -"bO" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) "bV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 4 @@ -523,14 +476,18 @@ /obj/structure/spacevine, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"bZ" = ( -/obj/structure/spacevine/dense, +"ca" = ( +/obj/structure/spacevine, +/obj/item/gun/energy/floragun, +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/gibspawner, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, -/area/ruin/space/has_grav/singularitylab/engineering) +/area/ruin/space/has_grav/singularitylab/civvie) "cb" = ( /obj/effect/turf_decal/siding/thinplating, /obj/effect/turf_decal/siding/thinplating/corner{ @@ -570,18 +527,6 @@ /obj/structure/closet/cardboard/metal, /turf/open/floor/plasteel/patterned/cargo_one, /area/ruin/space/has_grav/singularitylab/cargo) -"ci" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_y = 32 - }, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "cj" = ( /obj/structure/closet/firecloset{ anchored = 1 @@ -592,16 +537,6 @@ /obj/effect/turf_decal/box/corners, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab/civvie) -"cl" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/turf/open/space/basic, -/area/space/nearstation) "cm" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 8 @@ -615,17 +550,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"cr" = ( -/obj/structure/spacevine, -/obj/structure/spacevine{ - pixel_x = 32 - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "cu" = ( /obj/effect/turf_decal/box, /obj/structure/closet/crate/medical, @@ -634,6 +558,18 @@ /obj/item/storage/backpack/duffelbag/med/surgery, /turf/open/floor/plasteel/patterned/cargo_one, /area/ruin/space/has_grav/singularitylab/cargo) +"cv" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = 32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "cw" = ( /obj/structure/cable{ icon_state = "2-8" @@ -654,31 +590,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"cz" = ( -/obj/machinery/door/airlock/engineering{ - dir = 8; - name = "Engine Control" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/engineering) "cB" = ( /obj/structure/cable{ icon_state = "1-2" @@ -694,6 +605,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) +"cC" = ( +/obj/machinery/door/airlock{ + name = "Private Quarters" + }, +/turf/closed/mineral/random, +/area/ruin/space/has_grav) "cD" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -729,10 +646,19 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav) -"cK" = ( -/obj/machinery/power/apc/auto_name/directional/west{ - start_charge = 0 - }, +"cI" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"cK" = ( +/obj/machinery/power/apc/auto_name/directional/west{ + start_charge = 0 + }, /obj/structure/cable{ icon_state = "0-2" }, @@ -757,18 +683,6 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"cP" = ( -/obj/structure/spacevine/dense, -/mob/living/simple_animal/hostile/zombie/kudzu{ - zombiejob = "Assistant" - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "cQ" = ( /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) @@ -790,6 +704,17 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"cT" = ( +/obj/structure/spacevine, +/obj/structure/spacevine{ + pixel_x = 32 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "cU" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 5 @@ -803,6 +728,16 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"cV" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/space/basic, +/area/space/nearstation) "cW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 6 @@ -816,6 +751,16 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"cZ" = ( +/obj/structure/chair/stool/bar{ + dir = 1; + name = "picnic stool"; + pixel_y = 16 + }, +/obj/effect/turf_decal/siding/wood/end, +/obj/structure/spacevine, +/turf/open/floor/wood, +/area/ruin/space/has_grav/singularitylab/civvie) "da" = ( /obj/structure/window/reinforced/fulltile, /obj/structure/grille, @@ -829,31 +774,6 @@ /obj/structure/ore_box, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/cargo) -"dc" = ( -/obj/machinery/door/airlock/engineering{ - dir = 4; - name = "Engine Control" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/engineering) "dd" = ( /obj/structure/bed, /obj/item/bedsheet/nanotrasen, @@ -868,6 +788,21 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/cargo) +"dh" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "dk" = ( /obj/machinery/door/airlock/vault{ name = "Vault" @@ -896,6 +831,48 @@ dir = 1 }, /area/ruin/space/has_grav/singularitylab) +"dr" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/mob/living/simple_animal/hostile/zombie/kudzu{ + zombiejob = "Assistant" + }, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"dt" = ( +/obj/structure/transit_tube/station/dispenser{ + dir = 4 + }, +/obj/structure/railing/corner{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/structure/railing/corner{ + pixel_x = -3; + pixel_y = 23 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/structure/spacevine, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab) "du" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 8 @@ -915,6 +892,17 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) +"dx" = ( +/obj/structure/spacevine/dense, +/mob/living/simple_animal/hostile/zombie/kudzu{ + zombiejob = "Assistant" + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "dz" = ( /obj/structure/railing{ dir = 4 @@ -924,30 +912,30 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/reactor) -"dG" = ( +"dH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/reactor) +"dI" = ( /obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_y = 32 - }, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/spacevine/dense{ - pixel_x = -31; - pixel_y = 32 - }, +/mob/living/simple_animal/hostile/venus_human_trap, +/obj/effect/decal/cleanable/insectguts, /obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/sparsegrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, /area/ruin/space/has_grav/singularitylab) -"dH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/reactor) +"dK" = ( +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "dL" = ( /obj/structure/cable{ icon_state = "4-8" @@ -960,21 +948,6 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab/engineering) -"dM" = ( -/obj/structure/spacevine/dense, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer4{ - dir = 6 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "dP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 4 @@ -1043,26 +1016,6 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"ed" = ( -/obj/machinery/door/airlock{ - dir = 4; - name = "Barracks" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/civvie) "eh" = ( /obj/structure/spacevine, /obj/machinery/atmospherics/components/unary/outlet_injector/on, @@ -1081,35 +1034,19 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"em" = ( -/obj/machinery/mineral/processing_unit_console{ - machinedir = 9; - pixel_x = -32; - pixel_y = -4 +"en" = ( +/obj/machinery/door/airlock{ + dir = 4; + name = "Barracks" }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/singularitylab/cargo) -"eo" = ( -/obj/structure/cable{ - icon_state = "1-6" +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/effect/turf_decal/corner/opaque/purple{ +/obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" - }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 5 - }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/civvie) "eq" = ( /obj/structure/chair{ dir = 4 @@ -1120,23 +1057,6 @@ /obj/effect/turf_decal/corner/opaque/white/full, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"er" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/structure/table/wood/fancy/green, -/obj/structure/fluff/beach_umbrella{ - pixel_x = -5; - pixel_y = 16 - }, -/obj/structure/spacevine, -/obj/machinery/light/floor, -/turf/open/floor/wood, -/area/ruin/space/has_grav/singularitylab/civvie) "es" = ( /obj/structure/transit_tube/curved/flipped{ dir = 4 @@ -1156,28 +1076,13 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) -"et" = ( -/obj/item/gun/energy/e_gun/smg{ - dry_fire_sound = 'sound/items/ding.ogg'; - dry_fire_text = "ding"; - name = "\improper Modified E-TAR SMG"; - pixel_x = 5; - pixel_y = 6 - }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/item/stack/telecrystal{ - pixel_x = -9; - pixel_y = -4 - }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 10 - }, -/obj/structure/sign/poster/official/mini_energy_gun{ - pixel_y = -32 +"eu" = ( +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-4" }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) +/turf/open/floor/plating, +/area/space/nearstation) "ev" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 10 @@ -1187,6 +1092,17 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) +"ew" = ( +/obj/structure/toilet{ + dir = 8; + pixel_x = 6; + pixel_y = 5 + }, +/obj/structure/window/reinforced/tinted/frosted{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/singularitylab/civvie) "ez" = ( /obj/structure/table/wood, /obj/machinery/light/small/directional/west, @@ -1309,17 +1225,6 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab) -"eY" = ( -/obj/structure/spacevine/dense, -/mob/living/simple_animal/hostile/venus_human_trap, -/obj/effect/decal/cleanable/insectguts, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "fa" = ( /obj/structure/spacevine/dense, /turf/open/floor/plating/dirt{ @@ -1348,15 +1253,29 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel/tech/grid, /area/ruin/space/has_grav/singularitylab/engineering) -"fg" = ( -/obj/effect/turf_decal/solarpanel, -/obj/machinery/power/solar, -/obj/structure/cable/yellow, -/obj/structure/cable/yellow{ - icon_state = "1-2" +"fh" = ( +/obj/machinery/power/floodlight{ + anchored = 1 }, -/turf/open/floor/plating, -/area/space/nearstation) +/obj/structure/cable{ + icon_state = "0-6" + }, +/obj/structure/spacevine/dense, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"fk" = ( +/obj/structure/spacevine, +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "fn" = ( /obj/structure/spacevine, /obj/structure/spacevine{ @@ -1381,18 +1300,6 @@ }, /turf/open/floor/plating/asteroid/airless, /area/ruin/space/has_grav/singularitylab) -"fq" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = 32 - }, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "fr" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ dir = 1 @@ -1409,16 +1316,6 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab/civvie) -"ft" = ( -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" - }, -/obj/structure/spacevine, -/turf/open/floor/plating/dirt{ - baseturfs = /turf/open/floor/plating/asteroid - }, -/area/ruin/space/has_grav/singularitylab) "fu" = ( /obj/structure/cable{ icon_state = "5-10" @@ -1440,14 +1337,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"fv" = ( -/obj/structure/spacevine/dense, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "fw" = ( /obj/effect/turf_decal/industrial/warning/corner, /obj/effect/turf_decal/siding/thinplating{ @@ -1462,6 +1351,15 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab/lab) +"fD" = ( +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "fF" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ @@ -1495,6 +1393,17 @@ "fK" = ( /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab/civvie) +"fP" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = -14; + pixel_y = 4 + }, +/obj/structure/mirror{ + pixel_x = -29 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/singularitylab/civvie) "fQ" = ( /obj/structure/table/wood, /obj/machinery/light/small/directional/west, @@ -1526,20 +1435,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/holofloor/wood, /area/ruin/space/has_grav/singularitylab/lab) -"fT" = ( -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) -"fU" = ( -/obj/structure/table, -/turf/closed/mineral/random, -/area/ruin/space/has_grav) "fW" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 6 @@ -1679,24 +1574,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) -"gB" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_y = -32 - }, -/obj/structure/spacevine/dense{ - pixel_x = 32; - pixel_y = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/sparsegrass, -/obj/structure/flora/ausbushes/lavendergrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "gC" = ( /obj/effect/turf_decal/industrial/warning, /obj/structure/railing/corner{ @@ -1766,31 +1643,6 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) -"gM" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/structure/table, -/obj/item/lighter{ - pixel_x = -6; - pixel_y = 3 - }, -/obj/item/clothing/mask/cigarette, -/obj/item/clothing/mask/cigarette{ - pixel_x = 3; - pixel_y = 11 - }, -/obj/item/clothing/mask/cigarette{ - pixel_x = 6; - pixel_y = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) "gN" = ( /obj/structure/cable{ icon_state = "4-10" @@ -1812,29 +1664,11 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/carpet/nanoweave/beige, /area/ruin/space/has_grav/singularitylab/cargo) -"gQ" = ( -/obj/machinery/hydroponics/constructable, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) -"gS" = ( -/obj/structure/cable{ - icon_state = "6-9" - }, +"gR" = ( /obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/lavendergrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/obj/structure/spacevine{ + pixel_y = 32 }, -/area/ruin/space/has_grav/singularitylab) -"gU" = ( -/obj/structure/spacevine/dense, /obj/structure/flora/ausbushes/fullgrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; @@ -1842,18 +1676,6 @@ name = "grass" }, /area/ruin/space/has_grav/singularitylab/civvie) -"gZ" = ( -/obj/effect/decal/remains/human, -/obj/item/clothing/under/rank/rnd/scientist, -/obj/item/clothing/shoes/sneakers/white, -/obj/effect/gibspawner, -/obj/item/gun/energy/lasercannon/unrestricted{ - desc = "An advanced laser cannon, a laser etched inscription in the handle states 'NT-LS-1013'. The casing is made of a lightweight alloy."; - icon_state = "pulse"; - name = "NT-LS-1013" - }, -/turf/open/floor/plating/asteroid, -/area/ruin/space/has_grav/singularitylab) "ha" = ( /obj/effect/turf_decal/siding/thinplating/corner{ dir = 8 @@ -1873,13 +1695,31 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) -"hh" = ( +"hf" = ( /obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_x = -32 +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 8 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) +"hg" = ( +/obj/item/flamethrower/full, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_y = -32 + }, +/mob/living/simple_animal/hostile/venus_human_trap, +/obj/structure/cable{ + icon_state = "1-8" }, /obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/lavendergrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; @@ -1913,13 +1753,6 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab/cargo) -"hn" = ( -/obj/machinery/door/poddoor{ - dir = 4; - id = "singlabhanger" - }, -/turf/open/floor/plating/asteroid, -/area/ruin/space/has_grav/singularitylab) "ho" = ( /obj/machinery/door/airlock/highsecurity{ name = "Testing Lab" @@ -1948,53 +1781,37 @@ }, /turf/open/floor/plasteel/tech, /area/ruin/space/has_grav/singularitylab/lab) -"hy" = ( -/obj/structure/cable{ - icon_state = "4-10" - }, -/obj/structure/spacevine, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/singularitylab/civvie) -"hz" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 +"ht" = ( +/obj/structure/spacevine/dense, +/obj/machinery/power/apc/auto_name/directional/north{ + start_charge = 0 }, -/obj/effect/turf_decal/siding/white{ - dir = 4 +/obj/structure/cable{ + icon_state = "0-2" }, -/turf/open/floor/vault, -/area/ruin/space/has_grav/singularitylab/cargo) -"hB" = ( -/obj/machinery/door/airlock/security{ - name = "Hangar Control" +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" }, -/obj/structure/barricade/wooden/crude, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/area/ruin/space/has_grav/singularitylab) +"hu" = ( +/obj/effect/turf_decal/solarpanel, +/obj/machinery/power/solar, +/obj/structure/cable/yellow, /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/effect/decal/cleanable/blood/tracks, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) -"hE" = ( +/turf/open/floor/plating, +/area/space/nearstation) +"hv" = ( /obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_x = 32 - }, -/obj/structure/spacevine{ +/obj/structure/spacevine/dense{ pixel_y = 32 }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) -"hF" = ( -/obj/structure/spacevine/dense, /obj/structure/spacevine/dense{ - pixel_y = 32 + pixel_x = 32 }, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; @@ -2002,6 +1819,52 @@ name = "grass" }, /area/ruin/space/has_grav/singularitylab/civvie) +"hy" = ( +/obj/structure/cable{ + icon_state = "4-10" + }, +/obj/structure/spacevine, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav/singularitylab/civvie) +"hz" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/open/floor/vault, +/area/ruin/space/has_grav/singularitylab/cargo) +"hA" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/structure/table/wood/fancy/green, +/obj/structure/fluff/beach_umbrella{ + pixel_x = -5; + pixel_y = 16 + }, +/obj/structure/spacevine, +/obj/machinery/light/floor, +/turf/open/floor/wood, +/area/ruin/space/has_grav/singularitylab/civvie) +"hB" = ( +/obj/machinery/door/airlock/security{ + name = "Hangar Control" + }, +/obj/structure/barricade/wooden/crude, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) "hJ" = ( /obj/structure/reagent_dispensers/water_cooler, /obj/effect/turf_decal/corner/transparent/orange{ @@ -2017,6 +1880,17 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) +"hN" = ( +/obj/structure/spacevine/dense, +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ + dir = 8 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "hP" = ( /obj/structure/filingcabinet, /obj/structure/cable{ @@ -2071,18 +1945,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"hX" = ( -/obj/structure/table, -/obj/item/paper{ - default_raw_text = "Whatever happens. Happens." - }, -/obj/item/pen, -/obj/item/reagent_containers/food/drinks/soda_cans/starkist{ - pixel_x = 10; - pixel_y = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) "hY" = ( /obj/machinery/door/poddoor{ id = "singlabcargo2" @@ -2114,6 +1976,9 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"id" = ( +/turf/closed/mineral/random, +/area/ruin/space/has_grav) "ie" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2135,6 +2000,11 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) +"ig" = ( +/obj/machinery/power/emitter/welded, +/obj/structure/cable/yellow, +/turf/open/floor/plating, +/area/space/nearstation) "ih" = ( /obj/structure/table/reinforced, /obj/item/paper{ @@ -2179,38 +2049,36 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"io" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_y = -32 +"ir" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/area/ruin/space/has_grav/singularitylab/civvie) -"ip" = ( -/obj/machinery/power/floodlight{ - anchored = 1 +/turf/open/floor/engine/hull, +/area/space/nearstation) +"iv" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/structure/cable/yellow{ + icon_state = "4-10" }, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab) +"iw" = ( /obj/structure/cable{ - icon_state = "0-6" + icon_state = "2-5" }, /obj/structure/spacevine/dense, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/structure/flora/ausbushes/fullgrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, /area/ruin/space/has_grav/singularitylab/civvie) -"iv" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/structure/cable/yellow{ - icon_state = "4-10" - }, -/turf/open/floor/engine, -/area/ruin/space/has_grav/singularitylab) "iy" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, @@ -2244,21 +2112,6 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"iC" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = 32 - }, -/obj/structure/spacevine/dense{ - pixel_y = -32 - }, -/mob/living/simple_animal/hostile/venus_human_trap, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "iD" = ( /obj/effect/turf_decal/siding/white, /obj/effect/turf_decal/siding/white{ @@ -2292,31 +2145,24 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"iJ" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "iK" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 4 }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"iL" = ( -/obj/machinery/door/airlock/external{ - dir = 4; - name = "Engine Access" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/reactor) "iN" = ( /obj/effect/turf_decal/industrial/warning{ dir = 8 @@ -2337,13 +2183,29 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) -"iX" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-8" +"iV" = ( +/obj/structure/spacevine/dense, +/mob/living/simple_animal/hostile/venus_human_trap, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" }, -/turf/open/floor/plating, -/area/space/nearstation) +/area/ruin/space/has_grav/singularitylab) +"iW" = ( +/obj/structure/spacevine{ + pixel_y = 32 + }, +/obj/structure/spacevine, +/obj/machinery/light/directional/north, +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "iZ" = ( /obj/structure/cable, /obj/structure/poddoor_assembly, @@ -2365,32 +2227,20 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/reactor) -"jd" = ( -/obj/effect/turf_decal/siding/yellow, -/obj/machinery/button/door{ - dir = 8; - id = "singlabcargo2"; - name = "Blast Door Control"; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/cargo) -"jg" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_x = 32 - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "jj" = ( /obj/structure/spacevine, /obj/machinery/air_sensor/atmos/nitrogen_tank, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) +"jk" = ( +/obj/machinery/turretid, +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = 8; + pixel_y = -14 + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ruin/space/has_grav/singularitylab/cargo) "jl" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 8 @@ -2428,15 +2278,6 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"jr" = ( -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "jt" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 1 @@ -2469,6 +2310,19 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"jx" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/obj/structure/chair/stool/bar{ + dir = 8; + name = "picnic stool"; + pixel_x = -10; + pixel_y = 4 + }, +/obj/structure/spacevine, +/turf/open/floor/wood, +/area/ruin/space/has_grav/singularitylab/civvie) "jy" = ( /obj/structure/cable{ icon_state = "5-9" @@ -2495,42 +2349,15 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"jB" = ( -/obj/structure/spacevine, -/obj/structure/spacevine{ - pixel_y = 32 +"jE" = ( +/obj/structure/cable/yellow{ + icon_state = "2-9" }, -/obj/structure/spacevine{ - pixel_x = -32 +/obj/effect/turf_decal/techfloor{ + dir = 4 }, -/obj/structure/spacevine/dense{ - pixel_x = -31; - pixel_y = 32 - }, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/engine, -/area/ruin/space/has_grav/singularitylab) -"jC" = ( -/obj/structure/flippedtable{ - dir = 4; - icon_state = "" - }, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) -"jE" = ( -/obj/structure/cable/yellow{ - icon_state = "2-9" - }, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/obj/effect/turf_decal/techfloor{ + dir = 8 }, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab/engineering) @@ -2551,41 +2378,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"jI" = ( -/obj/structure/railing/corner{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/structure/railing/corner{ - pixel_x = -3; - pixel_y = 23 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/structure/transit_tube/station/dispenser/flipped{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/engine, -/area/ruin/space/has_grav/singularitylab/cargo) "jK" = ( /obj/structure/spacevine{ pixel_y = 32 @@ -2636,28 +2428,13 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"jR" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_y = 32 - }, -/obj/structure/spacevine/dense{ - pixel_x = 32 - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) -"jT" = ( -/obj/structure/spacevine/dense, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +"jS" = ( +/obj/machinery/door/airlock{ + dir = 4; + name = "Bathroom" }, -/area/ruin/space/has_grav/singularitylab) +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "jV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 4 @@ -2670,29 +2447,47 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"kb" = ( -/obj/effect/turf_decal/atmos/carbon_dioxide, -/turf/open/floor/engine, -/area/ruin/space/has_grav/singularitylab) -"ke" = ( -/obj/machinery/door/airlock/freezer{ +"jY" = ( +/obj/machinery/door/airlock{ dir = 4; - name = "Freezer" + name = "Private Quarters" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, /turf/open/floor/plasteel/tech, /area/ruin/space/has_grav/singularitylab/civvie) -"ki" = ( -/obj/machinery/power/shieldwallgen/atmos/strong/roundstart{ - id = "singlabhang" +"kb" = ( +/obj/effect/turf_decal/atmos/carbon_dioxide, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab) +"kd" = ( +/obj/item/clothing/suit/space/hardsuit/engine, +/obj/item/tank/internals/oxygen, +/obj/effect/decal/remains/human, +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/cable/yellow{ - icon_state = "0-8" +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_y = -32 }, -/obj/machinery/door/poddoor{ - dir = 4; - id = "singlabhanger" +/obj/effect/decal/cleanable/blood/old, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" }, -/turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) "kk" = ( /obj/effect/turf_decal/industrial/warning{ @@ -2708,22 +2503,6 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) -"km" = ( -/obj/machinery/door/airlock/hatch{ - dir = 4; - name = "Server Room" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/singularitylab/lab) "kn" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2734,16 +2513,6 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"ko" = ( -/obj/structure/flippedtable{ - dir = 1; - icon_state = "" - }, -/obj/structure/spacevine, -/turf/open/floor/plating/dirt{ - baseturfs = /turf/open/floor/plating/asteroid - }, -/area/ruin/space/has_grav/singularitylab) "kp" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/corner/opaque/red{ @@ -2755,35 +2524,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"kq" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"kr" = ( -/obj/structure/cable{ - icon_state = "5-8" - }, -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) "kt" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 8 @@ -2794,17 +2534,47 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"kx" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "singlabfurn" +"ku" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = 32; + pixel_y = 32 }, -/obj/structure/railing, -/obj/structure/railing{ +/obj/structure/spacevine/dense{ + pixel_x = 32 + }, +/obj/structure/spacevine/dense{ pixel_y = 32 }, -/turf/open/floor/plating, +/obj/machinery/portable_atmospherics/scrubber/huge, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) +"kv" = ( +/obj/structure/railing, +/obj/machinery/conveyor_switch{ + id = "singlabfurn"; + pixel_x = -11; + pixel_y = 13 + }, +/obj/machinery/mineral/processing_unit_console{ + machinedir = 9; + pixel_x = -32; + pixel_y = -4 + }, +/turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/cargo) +"kw" = ( +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/space/nearstation) "ky" = ( /obj/machinery/shower{ dir = 8 @@ -2850,19 +2620,6 @@ /obj/effect/decal/cleanable/insectguts, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"kI" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/techfloor/corner, -/obj/machinery/button/door{ - dir = 1; - id = "singlabcargo1"; - name = "Blast Door Control"; - pixel_y = -25 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) "kK" = ( /obj/structure/cable{ icon_state = "4-10" @@ -2880,6 +2637,12 @@ /obj/structure/closet/crate/freezer, /turf/open/floor/plasteel/patterned/cargo_one, /area/ruin/space/has_grav/singularitylab/cargo) +"kM" = ( +/turf/closed/wall{ + desc = "A huge chunk of metal holding the roof of the asteroid at bay"; + name = "structural support" + }, +/area/ruin/space/has_grav/singularitylab/cargo) "kP" = ( /turf/open/floor/plating/asteroid/airless, /area/ruin/space/has_grav) @@ -2951,25 +2714,6 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"lb" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/spacevine/dense{ - pixel_y = -32 - }, -/obj/structure/spacevine/dense{ - pixel_x = -32; - pixel_y = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "lc" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 1 @@ -3015,14 +2759,6 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/cargo) -"lj" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "singlabfurn" - }, -/obj/structure/railing, -/turf/open/floor/plating, -/area/ruin/space/has_grav/singularitylab/cargo) "lk" = ( /obj/machinery/power/terminal, /obj/structure/cable, @@ -3075,35 +2811,24 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"lu" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/ruin/space/has_grav/singularitylab/civvie) -"lv" = ( -/obj/structure/cable{ - icon_state = "6-10" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/airlock/science{ - dir = 4; - name = "High Energy Applications Research Facility" +"lt" = ( +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" }, +/obj/structure/spacevine, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/lab) +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) +"lu" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/ruin/space/has_grav/singularitylab/civvie) "lw" = ( /obj/machinery/airalarm/directional/north, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ @@ -3121,6 +2846,15 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) +"lx" = ( +/obj/structure/spacevine, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "ly" = ( /obj/effect/turf_decal/siding/thinplating, /obj/structure/cable{ @@ -3153,6 +2887,43 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/reactor) +"lF" = ( +/obj/structure/cable{ + icon_state = "5-9" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/airlock/science{ + dir = 4; + name = "High Energy Applications Research Facility" + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/lab) +"lH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/structure/table/wood/fancy/purple, +/obj/structure/fluff/beach_umbrella{ + pixel_x = -5; + pixel_y = 16 + }, +/obj/machinery/jukebox/boombox, +/obj/structure/spacevine, +/obj/machinery/light/floor, +/turf/open/floor/wood, +/area/ruin/space/has_grav/singularitylab/civvie) "lJ" = ( /obj/structure/transit_tube/crossing/horizontal, /obj/structure/cable{ @@ -3174,6 +2945,18 @@ "lK" = ( /turf/closed/wall/r_wall, /area/ruin/space/has_grav/singularitylab/lab) +"lL" = ( +/obj/structure/spacevine/dense, +/mob/living/simple_animal/hostile/zombie/kudzu{ + zombiejob = "Assistant" + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "lM" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3204,18 +2987,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab/engineering) -"lQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/structure/table, -/obj/item/paper, -/obj/item/pen{ - pixel_x = 2; - pixel_y = -3 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ruin/space/has_grav/singularitylab/cargo) "lS" = ( /obj/machinery/conveyor{ id = "singlabcarg" @@ -3226,6 +2997,25 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) +"lU" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/effect/turf_decal/corner/opaque/purple{ + dir = 5 + }, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/soda_cans/sol_dry{ + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/reagent_containers/food/drinks/soda_cans/sodawater{ + pixel_x = 8; + pixel_y = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "lV" = ( /obj/effect/turf_decal/corner/opaque/green{ dir = 10 @@ -3236,18 +3026,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/wood, /area/ruin/space/has_grav/singularitylab/civvie) -"lZ" = ( -/obj/structure/spacevine, -/obj/structure/spacevine{ - pixel_y = 32 - }, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "mc" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -3274,6 +3052,18 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) +"mj" = ( +/obj/structure/spacevine/dense, +/mob/living/simple_animal/hostile/zombie/kudzu{ + zombiejob = "Assistant" + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "mk" = ( /obj/effect/turf_decal/industrial/warning{ dir = 1 @@ -3330,6 +3120,22 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) +"mu" = ( +/obj/machinery/door/airlock/engineering{ + dir = 8; + name = "Power Control" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/engineering) "mv" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3401,6 +3207,23 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) +"mD" = ( +/obj/structure/table, +/obj/machinery/button/shieldwallgen{ + dir = 8; + id = "singlabhang"; + pixel_x = -5 + }, +/obj/machinery/button/door{ + dir = 8; + id = "singlabhangar"; + pixel_x = 8 + }, +/obj/structure/sign/warning/incident{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) "mE" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/corner/opaque/white/full, @@ -3423,36 +3246,16 @@ /obj/machinery/vending/tool, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab/engineering) -"mJ" = ( -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" - }, -/obj/structure/flippedtable, -/obj/effect/turf_decal/siding/thinplating{ - dir = 6 - }, -/obj/structure/spacevine, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 +"mL" = ( +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" }, -/turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"mK" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) "mP" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3473,26 +3276,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"mU" = ( -/obj/structure/table, -/obj/machinery/button/door{ - dir = 8; - id = "singlablast2"; - name = "Testing Chamber Control"; - pixel_x = -4; - pixel_y = 7 - }, -/obj/effect/turf_decal/corner/opaque/white/full, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) -"mW" = ( -/obj/machinery/conveyor_switch{ - id = "singlabcarg"; - pixel_x = 9; - pixel_y = -5 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/singularitylab) "mY" = ( /obj/structure/railing{ dir = 4; @@ -3504,19 +3287,6 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"na" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = -14; - pixel_y = 4 - }, -/obj/effect/turf_decal/corner/opaque/white/full, -/mob/living/simple_animal/hostile/zombie/kudzu{ - zombiejob = "Scientist" - }, -/obj/effect/turf_decal/siding/thinplating/light/corner, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) "nc" = ( /obj/structure/particle_accelerator/particle_emitter/left{ dir = 4 @@ -3612,40 +3382,28 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"no" = ( -/obj/structure/railing, -/obj/machinery/conveyor_switch{ - id = "singlabfurn"; - pixel_x = -11; - pixel_y = 13 - }, -/obj/machinery/mineral/processing_unit_console{ - machinedir = 9; - pixel_x = -32; - pixel_y = -4 +"nn" = ( +/obj/machinery/conveyor{ + id = "singlabcarg" }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/singularitylab/cargo) -"np" = ( -/obj/structure/spacevine, -/obj/structure/spacevine{ - pixel_x = 32 +/obj/structure/railing{ + dir = 4 }, -/turf/open/floor/plating/asteroid, -/area/ruin/space/has_grav/singularitylab) -"nq" = ( -/obj/item/clothing/suit/space/hardsuit/engine, -/obj/item/flamethrower/full, -/obj/effect/decal/remains/human, -/obj/structure/spacevine/dense, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/structure/spacevine/dense, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, -/area/ruin/space/has_grav/singularitylab/engineering) +/area/ruin/space/has_grav/singularitylab) +"np" = ( +/obj/structure/spacevine, +/obj/structure/spacevine{ + pixel_x = 32 + }, +/turf/open/floor/plating/asteroid, +/area/ruin/space/has_grav/singularitylab) "nr" = ( /obj/structure/spacevine, /turf/open/floor/plating/asteroid, @@ -3673,25 +3431,6 @@ /obj/structure/closet/crate/bin, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"nw" = ( -/obj/machinery/door/airlock{ - dir = 4; - name = "Private Quarters" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/civvie) "nx" = ( /obj/effect/turf_decal/corner/opaque/beige{ dir = 4 @@ -3699,25 +3438,9 @@ /obj/machinery/light/directional/east, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"nA" = ( -/obj/structure/spacevine/dense, -/mob/living/simple_animal/hostile/zombie/kudzu{ - zombiejob = "Assistant" - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) -"nB" = ( +"nz" = ( /obj/structure/cable{ - icon_state = "6-9" - }, -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" + icon_state = "4-9" }, /obj/structure/spacevine/dense, /obj/structure/flora/ausbushes/fullgrass, @@ -3749,90 +3472,25 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ruin/space/has_grav/singularitylab) -"nJ" = ( -/obj/machinery/rnd/server, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/tech/grid, -/area/ruin/space/has_grav/singularitylab/lab) -"nK" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/space/nearstation) -"nM" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/mining{ - dir = 4; - name = "Cargo Bay" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/cargo) -"nN" = ( +"nG" = ( /obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_y = -32 - }, +/obj/effect/decal/cleanable/blood/old, /obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) -"nO" = ( -/obj/structure/sign/warning/biohazard{ - pixel_x = 32; - pixel_y = 5 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/machinery/power/shieldwallgen/anchored{ - req_access = null - }, -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-10" - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) -"nR" = ( -/obj/structure/spacevine, -/obj/structure/spacevine{ - pixel_y = 32 - }, -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/ppflowers, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, /area/ruin/space/has_grav/singularitylab/civvie) +"nI" = ( +/turf/open/space/basic, +/area/space/nearstation) +"nJ" = ( +/obj/machinery/rnd/server, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/tech/grid, +/area/ruin/space/has_grav/singularitylab/lab) "nS" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 9 @@ -3840,19 +3498,17 @@ /obj/machinery/computer/cargo/express, /turf/open/floor/carpet/nanoweave/beige, /area/ruin/space/has_grav/singularitylab/cargo) -"nV" = ( +"nT" = ( /obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = 32 - }, +/mob/living/simple_animal/hostile/venus_human_trap, +/obj/machinery/atmospherics/components/unary/outlet_injector/on, /obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/ppflowers, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, -/area/ruin/space/has_grav/singularitylab/civvie) +/area/ruin/space/has_grav/singularitylab) "nW" = ( /obj/structure/spacevine, /obj/structure/closet/crate/bin, @@ -3883,6 +3539,31 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) +"ob" = ( +/obj/machinery/door/airlock/engineering{ + dir = 8; + name = "Engine Control" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/engineering) "oc" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 5 @@ -3954,13 +3635,6 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab/civvie) -"op" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/turf/open/space/basic, -/area/space/nearstation) "oq" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced{ @@ -3983,21 +3657,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) -"ou" = ( -/obj/effect/decal/remains/human, -/obj/item/clothing/shoes/sneakers/white, -/obj/item/clothing/under/rank/rnd/scientist, -/obj/item/gun/energy/e_gun/iot, -/obj/item/flashlight/seclite, -/obj/effect/gibspawner, -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "ov" = ( /obj/effect/turf_decal/siding/white{ dir = 10 @@ -4033,6 +3692,20 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab/lab) +"oz" = ( +/obj/structure/cable{ + icon_state = "6-9" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen{ + pixel_x = -4; + pixel_y = 2 + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ruin/space/has_grav/singularitylab/cargo) "oA" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/industrial/warning{ @@ -4051,6 +3724,42 @@ /obj/machinery/ore_silo, /turf/open/floor/pod, /area/ruin/space/has_grav/singularitylab/cargo) +"oF" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine{ + pixel_y = -32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"oG" = ( +/obj/structure/flippedtable, +/obj/structure/spacevine/dense{ + pixel_x = -31; + pixel_y = 32 + }, +/obj/structure/spacevine, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/space/has_grav/singularitylab) +"oH" = ( +/obj/structure/spacevine, +/obj/structure/spacevine{ + pixel_x = -32 + }, +/obj/structure/spacevine{ + pixel_y = -32 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "oJ" = ( /obj/structure/bed, /obj/item/bedsheet/cosmos, @@ -4074,31 +3783,13 @@ }, /turf/open/floor/plating/asteroid/airless, /area/ruin/space/has_grav/singularitylab/civvie) -"oN" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_y = 32 - }, -/obj/structure/closet/emcloset, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) -"oP" = ( -/obj/structure/spacevine/dense, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +"oR" = ( +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-9" }, -/area/ruin/space/has_grav/singularitylab) +/turf/open/floor/plating, +/area/space/nearstation) "oS" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/industrial/warning/corner{ @@ -4121,23 +3812,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"oV" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/structure/table/wood/fancy/blue, -/obj/structure/fluff/beach_umbrella{ - pixel_x = -5; - pixel_y = 16 - }, -/obj/structure/spacevine, -/obj/machinery/light/floor, -/turf/open/floor/wood, -/area/ruin/space/has_grav/singularitylab/civvie) "oW" = ( /obj/effect/turf_decal/siding/thinplating, /obj/structure/cable{ @@ -4145,20 +3819,40 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"oY" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/machinery/recharger{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/effect/turf_decal/corner/opaque/purple{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "oZ" = ( /obj/machinery/camera/xray{ network = list("sl12") }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"pc" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "1-2" +"pd" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = 32 }, -/obj/item/book/manual/wiki/engineering_singulo_tesla, -/turf/open/space/basic, -/area/space/nearstation) +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "pe" = ( /obj/machinery/light/directional/north, /turf/open/floor/engine, @@ -4225,41 +3919,11 @@ /obj/item/pen, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/reactor) -"pv" = ( -/obj/structure/spacevine/dense, -/mob/living/simple_animal/hostile/venus_human_trap, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) -"pw" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) "px" = ( /obj/item/tank/internals/oxygen, /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) -"pB" = ( -/obj/effect/turf_decal/solarpanel, -/obj/machinery/power/tracker, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/plating, -/area/space/nearstation) "pC" = ( /obj/structure/rack, /obj/effect/turf_decal/box, @@ -4269,6 +3933,25 @@ "pE" = ( /turf/closed/wall/r_wall, /area/ruin/space/has_grav/singularitylab/reactor) +"pF" = ( +/obj/machinery/door/airlock/external{ + dir = 4; + name = "Engine Access" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/reactor) "pG" = ( /obj/structure/cable{ icon_state = "5-10" @@ -4299,12 +3982,38 @@ /obj/structure/spacevine, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) +"pK" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/obj/effect/turf_decal/atmos/oxygen, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 1 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "pL" = ( /obj/machinery/computer/rdconsole/experiment{ dir = 8 }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab/lab) +"pM" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/space/basic, +/area/space/nearstation) "pN" = ( /obj/effect/turf_decal/siding/thinplating, /obj/structure/spacevine, @@ -4340,6 +4049,23 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) +"pT" = ( +/obj/item/banner/engineering{ + anchored = 1 + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"pU" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "singlabfurn" + }, +/obj/structure/railing, +/obj/structure/railing{ + pixel_y = 32 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/singularitylab/cargo) "pY" = ( /obj/structure/cable{ icon_state = "5-10" @@ -4402,33 +4128,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab/lab) -"qg" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/structure/table/wood/fancy/cyan, -/obj/structure/fluff/beach_umbrella{ - pixel_x = -5; - pixel_y = 16 - }, -/obj/structure/spacevine, -/obj/machinery/light/floor, -/turf/open/floor/wood, -/area/ruin/space/has_grav/singularitylab/civvie) -"qj" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/turf/open/space/basic, -/area/space/nearstation) "qk" = ( /obj/effect/turf_decal/industrial/warning, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ @@ -4446,18 +4145,18 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) -"qm" = ( +"qn" = ( /obj/structure/spacevine/dense, /obj/structure/spacevine/dense{ - pixel_x = -32 + pixel_y = 32 }, -/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/sparsegrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, -/area/ruin/space/has_grav/singularitylab/civvie) +/area/ruin/space/has_grav/singularitylab) "qo" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 4 @@ -4495,6 +4194,18 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/engineering) +"qu" = ( +/obj/structure/spacevine{ + pixel_y = 32 + }, +/obj/structure/spacevine, +/obj/machinery/vending/wardrobe/chef_wardrobe, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "qy" = ( /obj/structure/cable{ icon_state = "5-9" @@ -4517,6 +4228,18 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"qC" = ( +/obj/structure/spacevine{ + pixel_y = 32 + }, +/obj/structure/spacevine, +/obj/machinery/vending/dinnerware, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "qF" = ( /obj/structure/lattice/catwalk, /obj/structure/cable{ @@ -4524,6 +4247,27 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) +"qG" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/obj/structure/spacevine/dense{ + pixel_y = -32 + }, +/obj/structure/spacevine/dense{ + pixel_x = -32; + pixel_y = -32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "qK" = ( /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) @@ -4539,18 +4283,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) -"qN" = ( -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "qQ" = ( /obj/structure/transit_tube/curved/flipped, /obj/structure/cable{ @@ -4586,13 +4318,26 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"qU" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" +"qV" = ( +/obj/structure/table, +/obj/structure/sign/poster/official/moth/hardhats{ + pixel_x = -32 }, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) +/obj/structure/spacevine, +/obj/item/assembly/igniter{ + pixel_x = 7; + pixel_y = 3 + }, +/obj/item/assembly/igniter{ + pixel_x = 2; + pixel_y = -6 + }, +/obj/item/assembly/igniter{ + pixel_x = -7; + pixel_y = 3 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/singularitylab/engineering) "qZ" = ( /obj/effect/turf_decal/techfloor, /obj/effect/turf_decal/techfloor{ @@ -4605,83 +4350,35 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ruin/space/has_grav/singularitylab) -"ra" = ( -/obj/structure/transit_tube/station/dispenser{ - dir = 4 - }, -/obj/structure/railing/corner{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/structure/railing/corner{ - pixel_x = -3; - pixel_y = 23 - }, +"rc" = ( +/obj/effect/turf_decal/corner/opaque/white/full, /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/structure/spacevine, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/engine, -/area/ruin/space/has_grav/singularitylab) -"rc" = ( -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 9 +/obj/effect/turf_decal/corner/opaque/purple{ + dir = 9 }, /obj/effect/turf_decal/industrial/warning/corner{ dir = 1 }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"rf" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "rg" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab) -"rh" = ( -/obj/item/seeds/kudzu, -/obj/structure/sign/poster/contraband/kudzu{ - pixel_y = 32 - }, -/obj/structure/spacevine/dense, -/obj/structure/closet/firecloset{ - anchored = 1 +"ri" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/obj/structure/cable/yellow{ + icon_state = "1-8" }, -/area/ruin/space/has_grav/singularitylab/civvie) +/turf/open/space/basic, +/area/space/nearstation) "rj" = ( /obj/structure/chair, /turf/open/floor/plasteel, @@ -4693,6 +4390,15 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) +"rn" = ( +/obj/machinery/mineral/processing_unit_console{ + machinedir = 9; + pixel_x = -32; + pixel_y = -4 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/singularitylab/cargo) "rp" = ( /obj/structure/cable{ icon_state = "1-2" @@ -4707,13 +4413,13 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"rs" = ( -/obj/effect/decal/cleanable/blood/drip{ - pixel_x = 2; - pixel_y = 2 +"rt" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) "ru" = ( /obj/effect/turf_decal/box, /obj/item/clothing/shoes/magboots, @@ -4730,17 +4436,41 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/reactor) -"rA" = ( +"rw" = ( /obj/structure/spacevine/dense, -/mob/living/simple_animal/hostile/venus_human_trap, -/obj/machinery/atmospherics/components/unary/outlet_injector/on, -/obj/structure/flora/ausbushes/fullgrass, +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 1; + piping_layer = 4 + }, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, /area/ruin/space/has_grav/singularitylab) +"ry" = ( +/obj/structure/sign/warning/biohazard{ + pixel_x = 32; + pixel_y = 5 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/machinery/power/shieldwallgen/anchored{ + req_access = null + }, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-10" + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "rB" = ( /obj/structure/window/reinforced/fulltile, /obj/structure/grille, @@ -4751,15 +4481,6 @@ /obj/effect/turf_decal/corner/opaque/green/border, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"rE" = ( -/obj/machinery/power/emitter/welded{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/plating, -/area/space/nearstation) "rG" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/machinery/vending/cola/pwr_game, @@ -4831,25 +4552,6 @@ /obj/structure/spacevine, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"sa" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/spacevine/dense{ - pixel_x = -32; - pixel_y = 32 - }, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "sc" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/industrial/warning, @@ -4858,38 +4560,9 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"sd" = ( -/obj/structure/spacevine, -/obj/structure/spacevine{ - pixel_x = 32 - }, -/obj/structure/spacevine{ - pixel_y = -32 - }, -/obj/structure/spacevine{ - pixel_y = -32 - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "se" = ( /turf/open/space/basic, /area/ruin/space/has_grav) -"sf" = ( -/obj/structure/spacevine{ - pixel_y = 32 - }, -/obj/structure/spacevine, -/obj/machinery/vending/wardrobe/chef_wardrobe, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "sh" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/item/weldingtool/empty, @@ -4897,16 +4570,22 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"sk" = ( -/obj/structure/cable{ - icon_state = "6-10" +"si" = ( +/obj/machinery/door/airlock/engineering{ + dir = 4; + name = "Engine Control" }, -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 1 +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 4 @@ -4914,7 +4593,31 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/engineering) +"sl" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"sp" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine{ + pixel_x = 32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, /area/ruin/space/has_grav/singularitylab) "sr" = ( /obj/structure/closet/wall{ @@ -4934,26 +4637,25 @@ /obj/effect/turf_decal/box/corners, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab/civvie) -"sv" = ( -/obj/machinery/airalarm/directional/west, -/turf/open/floor/carpet/nanoweave/purple, -/area/ruin/space/has_grav/singularitylab/lab) -"sw" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = 32 +"st" = ( +/obj/structure/cable{ + icon_state = "1-6" }, +/obj/structure/spacevine/dense, /obj/structure/spacevine/dense{ - pixel_x = 32; - pixel_y = 32 + pixel_x = -32 }, -/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/fullgrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, /area/ruin/space/has_grav/singularitylab) +"sv" = ( +/obj/machinery/airalarm/directional/west, +/turf/open/floor/carpet/nanoweave/purple, +/area/ruin/space/has_grav/singularitylab/lab) "sA" = ( /obj/machinery/conveyor{ id = "singlabfurn" @@ -4970,15 +4672,6 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ruin/space/has_grav/singularitylab/engineering) -"sF" = ( -/obj/structure/spacevine, -/obj/structure/flora/ausbushes/stalkybush, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "sG" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 8 @@ -4994,20 +4687,6 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) -"sI" = ( -/obj/structure/spacevine, -/obj/structure/spacevine{ - pixel_x = -32 - }, -/obj/structure/spacevine{ - pixel_y = -32 - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "sJ" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/corner/opaque/purple{ @@ -5037,18 +4716,6 @@ /obj/effect/turf_decal/techfloor, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"sU" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "sV" = ( /obj/structure/cable{ icon_state = "4-8" @@ -5061,6 +4728,15 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/cargo) +"sW" = ( +/obj/structure/spacevine/dense, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "sX" = ( /obj/machinery/door/poddoor{ id = "singlabcargo1" @@ -5068,9 +4744,31 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab) +"sZ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/mining{ + dir = 4; + name = "Cargo Bay" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, /turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab) +/area/ruin/space/has_grav/singularitylab/cargo) "tb" = ( /obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ @@ -5093,6 +4791,27 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"tk" = ( +/obj/structure/spacevine/dense, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) +"tl" = ( +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" + }, +/turf/open/floor/plating/asteroid, +/area/ruin/space/has_grav/singularitylab) "tq" = ( /turf/template_noop, /area/template_noop) @@ -5103,6 +4822,19 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) +"ts" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine{ + pixel_x = 32 + }, +/mob/living/simple_animal/hostile/venus_human_trap, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "tv" = ( /obj/structure/spacevine/dense, /obj/structure/spacevine{ @@ -5121,17 +4853,6 @@ "ty" = ( /turf/closed/wall, /area/ruin/space/has_grav/singularitylab/civvie) -"tz" = ( -/obj/structure/cable{ - icon_state = "5-9" - }, -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" - }, -/obj/effect/turf_decal/siding/thinplating, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) "tA" = ( /obj/structure/cable{ icon_state = "6-8" @@ -5142,21 +4863,6 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"tB" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/spacevine/dense{ - pixel_x = 32 - }, -/obj/structure/flora/ausbushes/lavendergrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "tE" = ( /obj/structure/spacevine, /obj/structure/spacevine{ @@ -5173,13 +4879,20 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"tF" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-9" +"tI" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = 32 }, -/turf/open/floor/plating, -/area/space/nearstation) +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "tL" = ( /obj/structure/cable{ icon_state = "5-9" @@ -5203,15 +4916,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"tQ" = ( -/obj/structure/table, -/obj/item/paper, -/obj/item/pen{ - pixel_x = -4; - pixel_y = 2 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ruin/space/has_grav/singularitylab/cargo) "tR" = ( /obj/effect/turf_decal/siding/thinplating, /obj/structure/cable{ @@ -5219,6 +4923,14 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"tV" = ( +/obj/structure/table, +/obj/item/clipboard{ + pixel_x = 9; + pixel_y = 7 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/singularitylab/engineering) "ua" = ( /obj/structure/spacevine, /turf/open/floor/plating/dirt{ @@ -5229,13 +4941,6 @@ /obj/machinery/rnd/experimentor, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab/lab) -"uk" = ( -/obj/machinery/door/poddoor{ - dir = 4; - id = "singlabhanger" - }, -/turf/open/floor/engine, -/area/ruin/space/has_grav/singularitylab) "ul" = ( /obj/structure/sign/warning/testchamber{ pixel_y = 32 @@ -5275,19 +4980,24 @@ "un" = ( /turf/open/floor/plasteel/freezer, /area/ruin/space/has_grav/singularitylab/civvie) -"ur" = ( +"up" = ( /obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_x = 32 +/obj/structure/spacevine/dense{ + pixel_y = -32 + }, +/obj/structure/spacevine/dense{ + pixel_x = 32; + pixel_y = -32 }, -/mob/living/simple_animal/hostile/venus_human_trap, /obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/lavendergrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, -/area/ruin/space/has_grav/singularitylab/civvie) +/area/ruin/space/has_grav/singularitylab) "us" = ( /obj/structure/transit_tube, /obj/structure/cable{ @@ -5375,6 +5085,24 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"uI" = ( +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" + }, +/obj/structure/flippedtable, +/obj/effect/turf_decal/siding/thinplating{ + dir = 6 + }, +/obj/structure/spacevine, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) "uJ" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/corner/opaque/red{ @@ -5416,21 +5144,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/reactor) -"uQ" = ( -/obj/structure/spacevine{ - pixel_y = 32 - }, -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = 32; - pixel_y = 32 - }, -/obj/structure/spacevine/dense{ - pixel_x = 32 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/engine, -/area/ruin/space/has_grav/singularitylab) "uS" = ( /obj/effect/turf_decal/corner/transparent/orange{ dir = 1 @@ -5438,6 +5151,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/reactor) +"uU" = ( +/turf/open/floor/engine/hull, +/area/space/nearstation) "uV" = ( /obj/structure/tank_dispenser/plasma, /turf/open/floor/plasteel, @@ -5449,44 +5165,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"uX" = ( -/obj/effect/turf_decal/box, -/obj/machinery/light/directional/north, -/obj/item/gun/energy/lasercannon/unrestricted{ - desc = "An advanced laser cannon, a laser etched inscription in the handle states 'NT-LS-1013'. The casing is made of a lightweight alloy."; - icon_state = "pulse"; - name = "NT-LS-1013" - }, -/obj/item/gun/energy/laser/iot, -/obj/item/gun/energy/laser/iot{ - dry_fire_sound = 'sound/items/ding.ogg'; - dry_fire_text = "ding" - }, -/obj/structure/safe{ - name = "Prototype Storage" - }, -/turf/open/floor/engine, -/area/ruin/space/has_grav/singularitylab/lab) -"uY" = ( -/obj/item/flamethrower/full, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_y = -32 - }, -/mob/living/simple_animal/hostile/venus_human_trap, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "uZ" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 8 @@ -5519,17 +5197,16 @@ /obj/structure/cable, /turf/open/floor/plasteel/tech/grid, /area/ruin/space/has_grav/singularitylab/engineering) -"ve" = ( -/obj/structure/cable{ - icon_state = "6-9" +"vd" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "1-8" }, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/area/ruin/space/has_grav/singularitylab) +/turf/open/space/basic, +/area/space/nearstation) "vg" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 1 @@ -5541,6 +5218,32 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"vh" = ( +/obj/machinery/door/airlock/freezer{ + dir = 4; + name = "Freezer" + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/civvie) +"vi" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_y = 32 + }, +/obj/structure/spacevine/dense{ + pixel_x = -32; + pixel_y = 32 + }, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "vk" = ( /obj/effect/turf_decal/techfloor, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ @@ -5564,6 +5267,25 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab/cargo) +"vr" = ( +/obj/machinery/door/airlock/security{ + dir = 8; + name = "Front Office" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/lab) "vu" = ( /obj/structure/cable{ icon_state = "1-10" @@ -5593,25 +5315,31 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"vy" = ( -/obj/machinery/door/airlock/security{ - dir = 8; - name = "Front Office" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 +"vz" = ( +/obj/structure/spacevine, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/area/ruin/space/has_grav/singularitylab/civvie) +"vD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/lab) +/obj/structure/table/wood/fancy/cyan, +/obj/structure/fluff/beach_umbrella{ + pixel_x = -5; + pixel_y = 16 + }, +/obj/structure/spacevine, +/obj/machinery/light/floor, +/turf/open/floor/wood, +/area/ruin/space/has_grav/singularitylab/civvie) "vE" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5632,6 +5360,18 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"vL" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine{ + pixel_x = -32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "vO" = ( /obj/effect/turf_decal/siding/yellow/corner{ dir = 1 @@ -5639,18 +5379,6 @@ /obj/effect/turf_decal/corner/transparent/orange/three_quarters, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"vT" = ( -/obj/structure/flippedtable{ - dir = 4; - icon_state = "" - }, -/obj/effect/turf_decal/siding/thinplating, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/spacevine, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) "vU" = ( /obj/effect/turf_decal/siding/yellow/corner{ dir = 4 @@ -5660,22 +5388,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"vV" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/spacevine/dense{ - pixel_x = -32; - pixel_y = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "vW" = ( /obj/effect/turf_decal/siding/white{ dir = 8 @@ -5686,16 +5398,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/vault, /area/ruin/space/has_grav/singularitylab/cargo) -"vX" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/flippedtable{ - dir = 2; - icon_state = "" - }, -/turf/open/floor/carpet/nanoweave/purple, -/area/ruin/space/has_grav/singularitylab/lab) "vY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 5 @@ -5703,18 +5405,6 @@ /obj/structure/spacevine, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"vZ" = ( -/obj/structure/spacevine{ - pixel_y = 32 - }, -/obj/structure/spacevine, -/obj/machinery/vending/dinnerware, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "wa" = ( /obj/structure/spacevine, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ @@ -5804,43 +5494,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"wu" = ( -/obj/machinery/door/airlock/external{ - dir = 4; - name = "Engine Access" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/reactor) -"wv" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_y = 32 - }, -/obj/structure/spacevine/dense{ - pixel_x = 32 - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) -"ww" = ( -/obj/machinery/field/generator/anchored, -/turf/open/floor/plating, -/area/space/nearstation) "wx" = ( /obj/structure/transit_tube/curved{ dir = 1 @@ -5883,22 +5536,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"wH" = ( -/obj/structure/spacevine/dense, -/mob/living/simple_animal/hostile/venus_human_trap, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "wM" = ( /obj/structure/spacevine, /mob/living/simple_animal/hostile/venus_human_trap, @@ -5916,20 +5553,6 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab/civvie) -"wP" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/spacevine/dense{ - pixel_y = -32 - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "wR" = ( /obj/structure/cable{ icon_state = "0-4" @@ -5940,16 +5563,17 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"wU" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "4-8" +"wV" = ( +/obj/structure/spacevine/dense, +/mob/living/simple_animal/hostile/zombie/kudzu{ + zombiejob = "Assistant" }, -/obj/structure/cable/yellow{ - icon_state = "1-8" +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" }, -/turf/open/space/basic, -/area/space/nearstation) +/area/ruin/space/has_grav/singularitylab/civvie) "wW" = ( /obj/structure/railing{ dir = 4; @@ -5982,19 +5606,6 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"xa" = ( -/obj/effect/turf_decal/siding/wood/end{ - dir = 4 - }, -/obj/structure/chair/stool/bar{ - dir = 8; - name = "picnic stool"; - pixel_x = -10; - pixel_y = 4 - }, -/obj/structure/spacevine, -/turf/open/floor/wood, -/area/ruin/space/has_grav/singularitylab/civvie) "xe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 4 @@ -6038,45 +5649,39 @@ /obj/item/paper_bin, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"xm" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/space/basic, -/area/space/nearstation) -"xn" = ( -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/lavendergrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) -"xo" = ( -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/sparsegrass, -/obj/structure/flora/ausbushes/lavendergrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) -"xr" = ( -/obj/machinery/door/airlock{ - dir = 4; - name = "Bathroom" - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) "xu" = ( /obj/effect/turf_decal/corner/transparent/orange{ dir = 5 }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/reactor) +"xv" = ( +/obj/structure/transit_tube/station/dispenser{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/railing/corner{ + pixel_x = -3; + pixel_y = 23 + }, +/obj/structure/railing/corner{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/spacevine, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab) "xw" = ( /obj/structure/cable{ icon_state = "4-8" @@ -6161,20 +5766,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"xF" = ( -/obj/machinery/power/shieldwallgen/atmos/strong/roundstart{ - dir = 1; - id = "singlabhang" - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor{ - dir = 4; - id = "singlabhanger" - }, -/turf/open/floor/engine, -/area/ruin/space/has_grav/singularitylab) "xG" = ( /obj/effect/turf_decal/siding/thinplating/end, /turf/open/floor/plasteel, @@ -6216,16 +5807,6 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"xM" = ( -/obj/structure/spacevine/dense, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "xO" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -6234,27 +5815,8 @@ /obj/structure/cable{ icon_state = "1-10" }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) -"xR" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/spacevine/dense{ - pixel_y = 32 - }, -/obj/structure/spacevine/dense{ - pixel_x = -32; - pixel_y = 32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "xS" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -6304,6 +5866,26 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab/engineering) +"ya" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/effect/turf_decal/corner/opaque/purple{ + dir = 9 + }, +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "yc" = ( /obj/structure/chair{ dir = 4 @@ -6353,27 +5935,6 @@ "yi" = ( /turf/closed/wall/r_wall, /area/ruin/space/has_grav/singularitylab/engineering) -"yk" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) -"ym" = ( -/obj/machinery/turretid, -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_x = 8; - pixel_y = -14 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ruin/space/has_grav/singularitylab/cargo) "yn" = ( /obj/machinery/light/directional/south, /turf/open/floor/engine/hull/reinforced, @@ -6388,20 +5949,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"yp" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = 32 - }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "yr" = ( /obj/structure/railing{ dir = 4; @@ -6441,6 +5988,25 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"yw" = ( +/obj/machinery/door/airlock{ + dir = 8; + name = "Private Quarters" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/civvie) "yy" = ( /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/plasteel, @@ -6494,6 +6060,24 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"yI" = ( +/obj/structure/spacevine/dense, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "To Environment" + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "yL" = ( /obj/effect/turf_decal/siding/thinplating, /obj/structure/cable{ @@ -6538,16 +6122,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) -"yW" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/space/basic, -/area/space/nearstation) "yZ" = ( /obj/structure/cable{ icon_state = "6-9" @@ -6563,22 +6137,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"za" = ( -/obj/item/pickaxe/rusted, -/obj/structure/spacevine, -/obj/structure/spacevine{ - pixel_y = -32 - }, -/obj/structure/spacevine{ - pixel_y = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "zb" = ( /obj/structure/sign/poster/retro/science{ pixel_y = -32 @@ -6612,6 +6170,10 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab/lab) +"zf" = ( +/obj/item/stack/cable_coil/cut/yellow, +/turf/open/space/basic, +/area/space/nearstation) "zg" = ( /obj/structure/transit_tube/curved{ dir = 4 @@ -6654,18 +6216,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/carpet/nanoweave/purple, /area/ruin/space/has_grav/singularitylab/lab) -"zl" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "zm" = ( /obj/structure/sign/poster/official/high_class_martini{ pixel_x = -32 @@ -6692,6 +6242,17 @@ /obj/machinery/vending/cigarette, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab/engineering) +"zs" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/button/door{ + dir = 8; + id = "singlabcargo2"; + name = "Blast Door Control"; + pixel_x = 24 + }, +/obj/structure/spacevine, +/turf/open/floor/plating, +/area/ruin/space/has_grav/singularitylab) "zt" = ( /obj/machinery/conveyor{ id = "singlabcarg" @@ -6717,6 +6278,13 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/reactor) +"zv" = ( +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-10" + }, +/turf/open/floor/plating, +/area/space/nearstation) "zw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, @@ -6745,38 +6313,15 @@ /obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"zz" = ( -/obj/structure/spacevine/dense, -/mob/living/simple_animal/hostile/zombie/kudzu{ - zombiejob = "Assistant" - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) -"zB" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/spacevine/dense{ - pixel_y = -32 - }, -/obj/structure/spacevine/dense{ - pixel_x = -32; - pixel_y = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/sparsegrass, -/obj/structure/flora/ausbushes/lavendergrass, +"zA" = ( +/obj/machinery/hydroponics/constructable, +/obj/structure/spacevine, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, -/area/ruin/space/has_grav/singularitylab) +/area/ruin/space/has_grav/singularitylab/civvie) "zC" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/corner/opaque/white/full, @@ -6843,6 +6388,21 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"zK" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/space/nearstation) +"zL" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "zM" = ( /obj/structure/cable{ icon_state = "6-10" @@ -6863,9 +6423,6 @@ /obj/effect/turf_decal/corner/transparent/orange/border, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) -"zP" = ( -/turf/open/floor/engine/hull, -/area/space/nearstation) "zR" = ( /obj/structure/spacevine/dense, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, @@ -6912,20 +6469,6 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/on, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav) -"Ae" = ( -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 1 - }, -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" - }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) "Ah" = ( /obj/structure/table, /obj/structure/sign/poster/contraband/power{ @@ -6980,6 +6523,26 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"Ar" = ( +/obj/effect/turf_decal/solarpanel, +/obj/machinery/power/solar, +/obj/structure/cable/yellow, +/turf/open/floor/plating, +/area/space/nearstation) +"As" = ( +/obj/structure/spacevine, +/obj/structure/spacevine{ + pixel_y = 32 + }, +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "At" = ( /obj/structure/cable{ icon_state = "1-2" @@ -7015,13 +6578,6 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab/lab) -"Ay" = ( -/obj/effect/decal/cleanable/blood/drip{ - pixel_x = 5; - pixel_y = 3 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) "AA" = ( /obj/structure/cable{ icon_state = "0-8" @@ -7035,6 +6591,22 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) +"AB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/mob/living/simple_animal/hostile/venus_human_trap, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "AC" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, @@ -7046,13 +6618,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"AD" = ( -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "AE" = ( /obj/structure/chair{ dir = 1 @@ -7087,20 +6652,11 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"AL" = ( -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) -"AM" = ( -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/lavendergrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) +"AL" = ( +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/effect/turf_decal/industrial/warning, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "AN" = ( /obj/structure/closet/emcloset{ anchored = 1 @@ -7134,12 +6690,36 @@ }, /turf/closed/wall, /area/ruin/space/has_grav/singularitylab) +"AS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "AT" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 10 }, /turf/closed/wall, /area/ruin/space/has_grav/singularitylab) +"AV" = ( +/obj/structure/table, +/obj/machinery/button/door{ + dir = 8; + id = "singlablast2"; + name = "Testing Chamber Control"; + pixel_x = -4; + pixel_y = 7 + }, +/obj/effect/turf_decal/corner/opaque/white/full, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "AW" = ( /obj/structure/cable{ icon_state = "0-2" @@ -7162,6 +6742,22 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) +"Ba" = ( +/obj/item/pickaxe/rusted, +/obj/structure/spacevine, +/obj/structure/spacevine{ + pixel_y = -32 + }, +/obj/structure/spacevine{ + pixel_y = -32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "Bb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 5 @@ -7174,16 +6770,6 @@ "Bc" = ( /turf/open/floor/plating/asteroid/airless, /area/ruin/space/has_grav/singularitylab/civvie) -"Be" = ( -/obj/structure/spacevine/dense, -/mob/living/simple_animal/hostile/venus_human_trap, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "Bf" = ( /obj/machinery/conveyor{ id = "singlabcarg" @@ -7213,6 +6799,18 @@ /obj/structure/spacevine, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) +"Bi" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "Bk" = ( /obj/machinery/door/airlock/highsecurity{ name = "Secure Weapon Storage" @@ -7241,56 +6839,46 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"Bp" = ( -/obj/structure/spacevine/dense, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 +"Bq" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer4{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "To Environment" +/obj/structure/cable/yellow{ + icon_state = "2-5" }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/obj/structure/cable/yellow{ + icon_state = "1-6" }, -/area/ruin/space/has_grav/singularitylab) +/turf/open/space/basic, +/area/space/nearstation) "Bw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"Bz" = ( -/obj/structure/spacevine/dense, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) +"Bx" = ( +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow, +/turf/open/floor/plating, +/area/space/nearstation) "BB" = ( /obj/effect/turf_decal/industrial/warning, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) -"BH" = ( -/obj/structure/chair/office{ - dir = 8; - name = "tinkering chair" +"BE" = ( +/obj/structure/cable{ + icon_state = "6-10" }, -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 5 +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) -"BI" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 4 @@ -7298,13 +6886,23 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/siding/thinplating, -/obj/effect/decal/cleanable/blood{ - dir = 4; - icon_state = "gib3" +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) +"BG" = ( +/obj/machinery/field/generator/anchored, +/turf/open/floor/plating, +/area/space/nearstation) +"BH" = ( +/obj/structure/chair/office{ + dir = 8; + name = "tinkering chair" + }, +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 5 }, /turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/cargo) +/area/ruin/space/has_grav/singularitylab/lab) "BK" = ( /obj/structure/window/reinforced{ dir = 1 @@ -7322,13 +6920,6 @@ /obj/item/pickaxe/rusted, /turf/open/floor/plating/asteroid/airless, /area/ruin/space/has_grav/singularitylab/civvie) -"BP" = ( -/obj/machinery/door/poddoor{ - dir = 4; - id = "singlablas1" - }, -/turf/open/floor/engine, -/area/ruin/space/has_grav/singularitylab/lab) "BR" = ( /obj/structure/cable{ icon_state = "1-2" @@ -7538,23 +7129,6 @@ /obj/effect/turf_decal/siding/thinplating/corner, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"Cu" = ( -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/lavendergrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) -"CB" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/space/basic, -/area/space/nearstation) "CC" = ( /obj/structure/transit_tube/curved/flipped, /obj/structure/cable{ @@ -7572,15 +7146,6 @@ /obj/machinery/portable_atmospherics/pump, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"CE" = ( -/obj/structure/flippedtable, -/obj/structure/spacevine/dense{ - pixel_x = -31; - pixel_y = 32 - }, -/obj/structure/spacevine, -/turf/open/floor/plasteel/tech/techmaint, -/area/ruin/space/has_grav/singularitylab) "CF" = ( /obj/structure/lattice/catwalk, /obj/machinery/airalarm/directional/east, @@ -7599,48 +7164,17 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) -"CK" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-5" - }, -/obj/structure/cable/yellow{ - icon_state = "1-6" - }, -/turf/open/space/basic, -/area/space/nearstation) -"CL" = ( -/obj/structure/transit_tube/station/dispenser{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/railing/corner{ - pixel_x = -3; - pixel_y = 23 - }, -/obj/structure/railing/corner{ - pixel_x = -3; - pixel_y = 2 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/spacevine, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 8 +"CJ" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 8 +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" }, -/turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) "CN" = ( /obj/effect/turf_decal/siding/yellow{ @@ -7655,23 +7189,31 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"CR" = ( -/obj/structure/cable{ - icon_state = "1-10" - }, -/obj/structure/spacevine, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, +"CP" = ( +/obj/effect/decal/remains/human, +/obj/item/clothing/shoes/sneakers/white, +/obj/item/clothing/under/rank/rnd/scientist, +/obj/item/gun/energy/e_gun/iot, +/obj/item/flashlight/seclite, +/obj/effect/gibspawner, +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/fullgrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, -/area/ruin/space/has_grav/singularitylab/civvie) +/area/ruin/space/has_grav/singularitylab) +"CT" = ( +/obj/effect/turf_decal/siding/yellow, +/obj/machinery/button/door{ + dir = 8; + id = "singlabcargo2"; + name = "Blast Door Control"; + pixel_x = 24 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/cargo) "CU" = ( /obj/structure/spacevine/dense, /obj/structure/spacevine{ @@ -7755,42 +7297,32 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) -"Dh" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/space/basic, -/area/space/nearstation) -"Di" = ( -/obj/structure/spacevine, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/engineering) -"Dl" = ( -/obj/structure/cable{ - icon_state = "4-9" - }, +/area/ruin/space/has_grav/singularitylab) +"Dg" = ( /obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_y = 32 + }, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/obj/structure/spacevine/dense{ + pixel_x = -31; + pixel_y = 32 + }, /obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/sparsegrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, /area/ruin/space/has_grav/singularitylab) -"Dn" = ( -/obj/structure/flippedtable{ - dir = 1; - icon_state = "" - }, -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" - }, +"Di" = ( +/obj/structure/spacevine, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/engineering) +"Dj" = ( /obj/structure/spacevine/dense, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; @@ -7837,6 +7369,14 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) +"Du" = ( +/obj/structure/spacevine/dense, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/engineering) "Dw" = ( /obj/structure/particle_accelerator/particle_emitter/center{ dir = 4 @@ -7856,25 +7396,18 @@ /obj/effect/turf_decal/box, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab/lab) +"Dy" = ( +/obj/machinery/door/poddoor{ + dir = 4; + id = "singlablas2" + }, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab/lab) "Dz" = ( /obj/structure/reagent_dispensers/beerkeg, /obj/effect/turf_decal/box, /turf/open/floor/plasteel/patterned/cargo_one, /area/ruin/space/has_grav/singularitylab/cargo) -"DB" = ( -/obj/structure/cable{ - icon_state = "2-5" - }, -/obj/structure/spacevine/dense, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "DC" = ( /obj/structure/transit_tube, /obj/structure/plasticflaps/opaque{ @@ -7954,25 +7487,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"DL" = ( -/obj/structure/cable{ - icon_state = "5-9" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/airlock/science{ - dir = 4; - name = "High Energy Applications Research Facility" - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/lab) "DM" = ( /obj/machinery/conveyor{ id = "singlabcarg" @@ -8016,6 +7530,31 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) +"DZ" = ( +/obj/structure/cable{ + icon_state = "6-10" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/door/airlock/science{ + dir = 4; + name = "High Energy Applications Research Facility" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/lab) "Ed" = ( /obj/structure/chair/comfy/brown{ dir = 4 @@ -8036,6 +7575,14 @@ /obj/structure/spacevine, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab/civvie) +"Eh" = ( +/obj/effect/turf_decal/solarpanel, +/obj/machinery/power/tracker, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/space/nearstation) "Ei" = ( /obj/structure/cable{ icon_state = "4-8" @@ -8107,9 +7654,11 @@ /obj/machinery/air_sensor/atmos/oxygen_tank, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) -"Ew" = ( +"Eu" = ( /obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/fullgrass, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; @@ -8163,18 +7712,6 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"EF" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "EG" = ( /obj/structure/transit_tube, /obj/structure/cable{ @@ -8232,18 +7769,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"EO" = ( -/obj/structure/table, -/obj/machinery/button/door{ - dir = 8; - id = "singlablast1"; - name = "Testing Chamber Control"; - pixel_x = -4; - pixel_y = 7 - }, -/obj/effect/turf_decal/corner/opaque/white/full, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) "EP" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 1 @@ -8301,22 +7826,6 @@ /obj/effect/turf_decal/corner/transparent/orange, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) -"EY" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_y = -32 - }, -/obj/structure/spacevine/dense{ - pixel_x = 32; - pixel_y = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "EZ" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/corner/opaque/white/full, @@ -8474,10 +7983,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"FA" = ( -/obj/item/wrench, -/turf/open/space/basic, -/area/space/nearstation) "FB" = ( /obj/machinery/door/airlock/highsecurity{ name = "Testing Lab" @@ -8503,6 +8008,13 @@ }, /turf/open/floor/plasteel/tech, /area/ruin/space/has_grav/singularitylab/lab) +"FD" = ( +/obj/structure/sign/poster/official/moth/boh{ + pixel_x = -32 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "FE" = ( /obj/structure/window/plasma/reinforced{ dir = 1 @@ -8513,17 +8025,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"FF" = ( -/obj/structure/cable{ - icon_state = "4-9" - }, -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" - }, -/obj/structure/spacevine, -/turf/open/floor/plasteel/tech/techmaint, -/area/ruin/space/has_grav/singularitylab) "FH" = ( /obj/effect/turf_decal/box, /obj/item/clothing/shoes/magboots, @@ -8531,12 +8032,13 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel/tech/grid, /area/ruin/space/has_grav/singularitylab/engineering) -"FI" = ( -/turf/closed/wall{ - desc = "A huge chunk of metal holding the roof of the asteroid at bay"; - name = "structural support" +"FJ" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/area/ruin/space/has_grav/singularitylab) +/turf/open/space/basic, +/area/space/nearstation) "FL" = ( /obj/effect/turf_decal/techfloor{ dir = 1 @@ -8598,6 +8100,18 @@ }, /turf/open/floor/wood, /area/ruin/space/has_grav/singularitylab/civvie) +"FV" = ( +/obj/structure/spacevine/dense, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "FW" = ( /obj/structure/cable/yellow{ icon_state = "4-9" @@ -8618,20 +8132,6 @@ /obj/structure/railing, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/cargo) -"Ge" = ( -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" - }, -/obj/structure/spacevine, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) "Gf" = ( /obj/structure/table, /turf/open/floor/wood, @@ -8646,79 +8146,69 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab) -"Gm" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 5 - }, -/obj/structure/spacevine, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/civvie) -"Gn" = ( +"Gh" = ( /obj/structure/spacevine, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/singularitylab/civvie) -"Gq" = ( -/obj/machinery/the_singularitygen{ - anchored = 1 - }, -/turf/open/floor/plating, -/area/space/nearstation) -"Gr" = ( -/obj/structure/cable{ - icon_state = "1-10" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 - }, -/obj/effect/turf_decal/siding/yellow{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/cargo) -"Gs" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = 32; - pixel_y = 32 - }, -/obj/structure/spacevine/dense{ +/obj/structure/spacevine{ pixel_x = 32 }, -/obj/structure/spacevine/dense{ - pixel_y = 32 +/obj/structure/spacevine{ + pixel_y = -32 + }, +/obj/structure/spacevine{ + pixel_y = -32 }, -/obj/machinery/portable_atmospherics/scrubber/huge, -/obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, -/area/ruin/space/has_grav/singularitylab) -"Gv" = ( -/obj/structure/cable{ +/area/ruin/space/has_grav/singularitylab/civvie) +"Gi" = ( +/obj/machinery/door/airlock/external{ + dir = 4; + name = "Engine Access" + }, +/obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 9 +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/reactor) +"Gm" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 5 }, -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" +/obj/structure/spacevine, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/civvie) +"Gn" = ( +/obj/structure/spacevine, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav/singularitylab/civvie) +"Gr" = ( +/obj/structure/cable{ + icon_state = "1-10" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 + dir = 9 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 9 + }, +/obj/effect/turf_decal/siding/yellow{ dir = 4 }, /turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) +/area/ruin/space/has_grav/singularitylab/cargo) "Gw" = ( /obj/machinery/door/airlock/public/glass{ name = "Kitchen" @@ -8732,16 +8222,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"GA" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/external{ - dir = 4; - name = "Interior Mine" - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/cargo) "GC" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -8796,20 +8276,33 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"GH" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/open/space/basic, -/area/space/nearstation) "GJ" = ( /obj/effect/decal/cleanable/insectguts, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) +"GK" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_y = 32 + }, +/obj/structure/spacevine/dense{ + pixel_x = 32 + }, +/obj/structure/spacevine/dense{ + pixel_y = -32 + }, +/obj/structure/spacevine/dense{ + pixel_x = 32; + pixel_y = 32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "GL" = ( /obj/machinery/particle_accelerator/control_box, /turf/open/floor/engine, @@ -8840,6 +8333,13 @@ /obj/effect/turf_decal/box, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) +"GP" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/space/basic, +/area/space/nearstation) "GQ" = ( /obj/effect/turf_decal/industrial/warning{ dir = 1 @@ -8872,18 +8372,6 @@ /obj/structure/spacevine, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"GV" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_x = 32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "GW" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -8921,6 +8409,27 @@ /obj/effect/turf_decal/box, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) +"Hc" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/engine/hull, +/area/space/nearstation) +"He" = ( +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "Hg" = ( /obj/effect/turf_decal/siding/thinplating/corner{ dir = 4 @@ -8937,6 +8446,15 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab/reactor) +"Hi" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) "Hj" = ( /obj/machinery/conveyor{ id = "singlabcarg" @@ -8952,6 +8470,25 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab/cargo) +"Hk" = ( +/obj/machinery/door/poddoor{ + dir = 4; + id = "singlabhanger" + }, +/turf/open/floor/plating/asteroid, +/area/ruin/space/has_grav/singularitylab) +"Hm" = ( +/obj/structure/table, +/obj/machinery/button/door{ + dir = 8; + id = "singlablast1"; + name = "Testing Chamber Control"; + pixel_x = -4; + pixel_y = 7 + }, +/obj/effect/turf_decal/corner/opaque/white/full, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "Hn" = ( /obj/effect/turf_decal/siding/yellow/corner{ dir = 8 @@ -8964,37 +8501,26 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"Hx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/singularitylab/civvie) -"Hy" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_y = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) -"Hz" = ( +"Hr" = ( /obj/structure/spacevine/dense, /obj/structure/spacevine/dense{ - pixel_y = 32 + pixel_x = -32 }, /obj/structure/spacevine/dense{ - pixel_x = -31; - pixel_y = 32 + pixel_x = -32; + pixel_y = -32 }, +/obj/structure/flora/ausbushes/fullgrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, /area/ruin/space/has_grav/singularitylab) +"Hx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/turf/open/floor/plating/asteroid/airless, +/area/ruin/space/has_grav/singularitylab/civvie) "HA" = ( /obj/structure/cable{ icon_state = "2-10" @@ -9004,16 +8530,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"HC" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/space/basic, -/area/space/nearstation) "HD" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 10 @@ -9023,6 +8539,13 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"HE" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 5; + pixel_y = 3 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) "HF" = ( /obj/structure/chair/office, /obj/effect/mob_spawn/human/corpse/charredskeleton, @@ -9042,6 +8565,22 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"HK" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_y = 32 + }, +/obj/structure/spacevine/dense{ + pixel_y = -32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "HL" = ( /obj/effect/turf_decal/siding/thinplating, /obj/structure/spacevine/dense, @@ -9053,6 +8592,28 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"HN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/mining{ + dir = 4; + name = "Cargo Bay" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/cargo) "HO" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -9080,17 +8641,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /turf/open/floor/plasteel/grimy, /area/ruin/space/has_grav/singularitylab/lab) -"HT" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_x = 32 - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "HU" = ( /obj/structure/fireaxecabinet{ pixel_y = 32 @@ -9101,17 +8651,6 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/engineering) -"HV" = ( -/obj/structure/spacevine/dense, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 6 - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "HW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 5 @@ -9121,6 +8660,22 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) +"HX" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_y = -32 + }, +/obj/structure/spacevine/dense{ + pixel_x = 32; + pixel_y = -32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "HY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 5 @@ -9132,23 +8687,11 @@ /area/ruin/space/has_grav/singularitylab/cargo) "Ia" = ( /obj/machinery/porta_turret{ - stun_projectile = "/obj/projectile/beam/hitscan/disabler" - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plasteel/tech/techmaint, -/area/ruin/space/has_grav/singularitylab/cargo) -"Ib" = ( -/obj/structure/spacevine/dense, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/structure/flora/ausbushes/lavendergrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" + stun_projectile = "/obj/projectile/beam/hitscan/disabler" }, -/area/ruin/space/has_grav/singularitylab/civvie) +/obj/machinery/light/small/directional/north, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/space/has_grav/singularitylab/cargo) "Ic" = ( /obj/effect/turf_decal/siding/thinplating/corner{ dir = 1 @@ -9158,6 +8701,18 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"Id" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "If" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, @@ -9175,19 +8730,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"Ih" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/space/basic, -/area/space/nearstation) -"Ii" = ( -/obj/machinery/door/airlock{ - name = "Private Quarters" - }, -/turf/closed/mineral/random, -/area/ruin/space/has_grav) "Ij" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 10 @@ -9234,12 +8776,18 @@ /obj/machinery/power/shieldwallgen/atmos, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) -"Is" = ( -/obj/effect/turf_decal/solarpanel, -/obj/machinery/power/solar, -/obj/structure/cable/yellow, -/turf/open/floor/plating, -/area/space/nearstation) +"Iq" = ( +/obj/structure/flippedtable{ + dir = 4; + icon_state = "" + }, +/obj/effect/turf_decal/siding/thinplating, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/spacevine, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) "Iu" = ( /obj/structure/transit_tube/diagonal{ dir = 4 @@ -9315,16 +8863,9 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/reactor) -"IM" = ( -/obj/effect/turf_decal/solarpanel, -/obj/machinery/power/solar, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/plating, +"IK" = ( +/obj/item/wrench, +/turf/open/space/basic, /area/space/nearstation) "IO" = ( /obj/structure/railing{ @@ -9363,11 +8904,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/engine/hull/reinforced, /area/ruin/space/has_grav/singularitylab/reactor) -"IV" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow, -/turf/open/floor/plating, -/area/space/nearstation) "IW" = ( /obj/structure/cable{ icon_state = "4-8" @@ -9473,6 +9009,28 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plasteel/tech, /area/ruin/space/has_grav/singularitylab/engineering) +"Jr" = ( +/obj/item/gun/energy/ionrifle/carbine{ + desc = "The Ion Projector is contained within a sleek metal case. Engraved on the handle are the letters S.H. The stock is warm to the touch"; + dry_fire_text = "RECHARGING"; + name = "ion projector"; + pixel_x = 2; + pixel_y = 5; + selfcharge = 1 + }, +/obj/item/screwdriver{ + pixel_y = -6 + }, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/effect/turf_decal/corner/opaque/purple{ + dir = 9 + }, +/obj/structure/sign/poster/official/ion_carbine{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "Ju" = ( /obj/structure/chair/office{ dir = 8 @@ -9546,6 +9104,40 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab/civvie) +"JJ" = ( +/obj/item/gun/energy/e_gun/smg{ + dry_fire_sound = 'sound/items/ding.ogg'; + dry_fire_text = "ding"; + name = "\improper Modified E-TAR SMG"; + pixel_x = 5; + pixel_y = 6 + }, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/item/stack/telecrystal{ + pixel_x = -9; + pixel_y = -4 + }, +/obj/effect/turf_decal/corner/opaque/purple{ + dir = 10 + }, +/obj/structure/sign/poster/official/mini_energy_gun{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) +"JK" = ( +/obj/effect/decal/remains/human, +/obj/item/clothing/under/rank/rnd/scientist, +/obj/item/clothing/shoes/sneakers/white, +/obj/effect/gibspawner, +/obj/item/gun/energy/lasercannon/unrestricted{ + desc = "An advanced laser cannon, a laser etched inscription in the handle states 'NT-LS-1013'. The casing is made of a lightweight alloy."; + icon_state = "pulse"; + name = "NT-LS-1013" + }, +/turf/open/floor/plating/asteroid, +/area/ruin/space/has_grav/singularitylab) "JL" = ( /obj/structure/spacevine, /obj/effect/decal/cleanable/insectguts, @@ -9569,6 +9161,13 @@ /obj/item/stack/sheet/glass/fifty, /turf/open/floor/plasteel/patterned/cargo_one, /area/ruin/space/has_grav/singularitylab/cargo) +"JO" = ( +/obj/machinery/door/poddoor{ + dir = 4; + id = "singlablas1" + }, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab/lab) "JP" = ( /obj/structure/closet/emcloset{ anchored = 1 @@ -9581,17 +9180,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"JQ" = ( -/obj/structure/sign/poster/retro/science{ - pixel_y = 32 - }, -/obj/structure/chair/office{ - desc = "Technologically enhanced for the optimal research position."; - dir = 8; - name = "science chair" - }, -/turf/open/floor/carpet/nanoweave/purple, -/area/ruin/space/has_grav/singularitylab/lab) "JS" = ( /obj/structure/sign/warning/radiation{ pixel_x = 32 @@ -9603,17 +9191,6 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) -"JT" = ( -/obj/structure/spacevine/dense, -/mob/living/simple_animal/hostile/zombie/kudzu{ - zombiejob = "Assistant" - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "JU" = ( /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) @@ -9663,23 +9240,100 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab) -"Kc" = ( -/obj/structure/spacevine, -/turf/closed/wall{ - desc = "A huge chunk of metal holding the roof of the asteroid at bay"; - name = "structural support" +"Kb" = ( +/obj/structure/chair/stool/bar{ + dir = 4; + name = "picnic stool"; + pixel_x = 9; + pixel_y = 7 }, -/area/ruin/space/has_grav/singularitylab) +/obj/effect/turf_decal/siding/wood/end{ + dir = 8 + }, +/obj/structure/spacevine, +/turf/open/floor/wood, +/area/ruin/space/has_grav/singularitylab/civvie) "Ke" = ( /turf/closed/indestructible/rock{ base_icon_state = "smoothrocks" }, /area/ruin/space/has_grav) +"Kf" = ( +/obj/structure/cable{ + icon_state = "6-9" + }, +/obj/structure/spacevine/dense, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) +"Kg" = ( +/obj/structure/spacevine/dense, +/mob/living/simple_animal/hostile/venus_human_trap, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 6 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"Kh" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_y = 32 + }, +/obj/structure/spacevine/dense{ + pixel_x = -31; + pixel_y = 32 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "Ki" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/turf_decal/box, /turf/open/floor/plasteel/patterned/cargo_one, /area/ruin/space/has_grav/singularitylab/cargo) +"Kj" = ( +/obj/item/seeds/kudzu, +/obj/structure/sign/poster/contraband/kudzu{ + pixel_y = 32 + }, +/obj/structure/spacevine/dense, +/obj/structure/closet/firecloset{ + anchored = 1 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"Kk" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine{ + pixel_x = -32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "Kn" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ dir = 4 @@ -9700,28 +9354,14 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"Kr" = ( -/obj/item/gun/energy/ionrifle/carbine{ - desc = "The Ion Projector is contained within a sleek metal case. Engraved on the handle are the letters S.H. The stock is warm to the touch"; - dry_fire_text = "RECHARGING"; - name = "ion projector"; - pixel_x = 2; - pixel_y = 5; - selfcharge = 1 - }, -/obj/item/screwdriver{ - pixel_y = -6 - }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 9 - }, -/obj/structure/sign/poster/official/ion_carbine{ - pixel_x = -32 +"Kq" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "singlabfurn" }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) +/obj/structure/railing, +/turf/open/floor/plating, +/area/ruin/space/has_grav/singularitylab/cargo) "Ks" = ( /obj/structure/cable{ icon_state = "6-8" @@ -9764,26 +9404,16 @@ /obj/structure/window/plasma/reinforced{ dir = 1 }, -/obj/structure/spacevine, -/obj/machinery/computer/atmos_control/tank/nitrogen_tank, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) -"Ky" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_x = -32 - }, -/obj/structure/spacevine{ - pixel_y = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/lavendergrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/obj/structure/spacevine, +/obj/machinery/computer/atmos_control/tank/nitrogen_tank, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) +"KB" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/area/ruin/space/has_grav/singularitylab/civvie) +/turf/open/floor/engine/hull, +/area/space/nearstation) "KC" = ( /obj/machinery/hydroponics/constructable, /obj/structure/spacevine, @@ -9791,6 +9421,13 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab/civvie) +"KE" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/space/basic, +/area/space/nearstation) "KF" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 1 @@ -9811,6 +9448,27 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"KI" = ( +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" + }, +/obj/item/flashlight/seclite, +/turf/open/floor/plating/asteroid, +/area/ruin/space/has_grav/singularitylab) +"KK" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = -14; + pixel_y = 4 + }, +/obj/effect/turf_decal/corner/opaque/white/full, +/mob/living/simple_animal/hostile/zombie/kudzu{ + zombiejob = "Scientist" + }, +/obj/effect/turf_decal/siding/thinplating/light/corner, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "KL" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/plasteel/tech/techmaint, @@ -9862,6 +9520,17 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) +"KU" = ( +/obj/structure/spacevine/dense, +/mob/living/simple_animal/hostile/venus_human_trap, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "KW" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced{ @@ -9884,6 +9553,21 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"KY" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/obj/structure/spacevine/dense{ + pixel_x = 32 + }, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "KZ" = ( /obj/structure/cable{ icon_state = "2-5" @@ -9902,6 +9586,17 @@ dir = 1 }, /area/ruin/space/has_grav/singularitylab) +"Ld" = ( +/obj/structure/flippedtable{ + dir = 1; + icon_state = "" + }, +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" + }, +/turf/open/floor/plating/asteroid, +/area/ruin/space/has_grav/singularitylab) "Le" = ( /obj/structure/cable{ icon_state = "6-9" @@ -9922,17 +9617,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"Ln" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = 32 - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +"Ll" = ( +/obj/machinery/conveyor_switch{ + id = "singlabcarg"; + pixel_x = 9; + pixel_y = -5 }, -/area/ruin/space/has_grav/singularitylab/civvie) +/turf/open/floor/plating, +/area/ruin/space/has_grav/singularitylab) "Lq" = ( /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/engineering) @@ -10011,6 +9703,17 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab/engineering) +"LH" = ( +/obj/structure/cable{ + icon_state = "4-9" + }, +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" + }, +/obj/structure/spacevine, +/turf/open/floor/plasteel/tech/techmaint, +/area/ruin/space/has_grav/singularitylab) "LM" = ( /obj/structure/cable{ icon_state = "0-4" @@ -10053,6 +9756,12 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab) +"LQ" = ( +/turf/closed/wall{ + desc = "A huge chunk of metal holding the roof of the asteroid at bay"; + name = "structural support" + }, +/area/ruin/space/has_grav/singularitylab/hangar) "LY" = ( /obj/effect/turf_decal/corner/opaque/green{ dir = 6 @@ -10146,20 +9855,39 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"Mk" = ( -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +"Mm" = ( +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/effect/turf_decal/corner/opaque/purple{ + dir = 1 }, -/area/ruin/space/has_grav/singularitylab/civvie) +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" + }, +/obj/effect/turf_decal/corner/opaque/purple{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "Mo" = ( /obj/structure/chair/comfy/brown{ dir = 8 }, /turf/open/floor/wood, /area/ruin/space/has_grav/singularitylab/civvie) +"Mq" = ( +/obj/structure/chair/stool/bar{ + dir = 8; + name = "picnic stool"; + pixel_x = -10; + pixel_y = 4 + }, +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/obj/structure/spacevine, +/turf/open/floor/wood, +/area/ruin/space/has_grav/singularitylab/civvie) "Ms" = ( /obj/structure/spacevine{ pixel_y = -32 @@ -10185,15 +9913,18 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) -"My" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" +"Mx" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine{ + pixel_y = -32 }, -/obj/structure/cable/yellow{ - icon_state = "1-4" +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" }, -/turf/open/floor/engine/hull, -/area/space/nearstation) +/area/ruin/space/has_grav/singularitylab/civvie) "MA" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -10215,11 +9946,13 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) -"MF" = ( -/obj/machinery/power/emitter/welded, -/obj/structure/cable/yellow, -/turf/open/floor/plating, -/area/space/nearstation) +"MD" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) "MG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 4 @@ -10265,28 +9998,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"MO" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/plating, -/area/space/nearstation) -"MQ" = ( -/obj/structure/spacevine/dense, -/obj/machinery/power/apc/auto_name/directional/north{ - start_charge = 0 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "MS" = ( /obj/structure/dresser, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -10325,25 +10036,6 @@ /obj/item/stack/cable_coil/cut/yellow, /turf/open/floor/engine/hull/reinforced, /area/ruin/space/has_grav/singularitylab/reactor) -"MW" = ( -/obj/machinery/door/airlock{ - dir = 8; - name = "Private Quarters" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/civvie) "MX" = ( /obj/structure/transit_tube/curved{ dir = 1 @@ -10388,6 +10080,18 @@ /obj/structure/spacevine, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) +"Nd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/structure/table, +/obj/item/paper, +/obj/item/pen{ + pixel_x = 2; + pixel_y = -3 + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ruin/space/has_grav/singularitylab/cargo) "Ni" = ( /obj/structure/spacevine, /obj/structure/spacevine{ @@ -10452,10 +10156,6 @@ }, /turf/open/floor/wood, /area/ruin/space/has_grav/singularitylab/civvie) -"Nu" = ( -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) "Nw" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -10466,14 +10166,57 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/reactor) -"NG" = ( -/obj/effect/turf_decal/solarpanel, -/obj/machinery/power/solar, -/obj/structure/cable/yellow{ - icon_state = "0-2" +"Nx" = ( +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"Ny" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_y = 32 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"NB" = ( +/turf/closed/wall{ + desc = "A huge chunk of metal holding the roof of the asteroid at bay"; + name = "structural support" + }, +/area/ruin/space/has_grav/singularitylab) +"NC" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine{ + pixel_x = 32 + }, +/obj/structure/spacevine{ + pixel_y = 32 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) +"NE" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/external{ + dir = 4; + name = "Interior Mine" }, -/turf/open/floor/plating, -/area/space/nearstation) +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/cargo) "NH" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/industrial/warning{ @@ -10497,17 +10240,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"NJ" = ( -/obj/structure/spacevine/dense, -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ - dir = 8 - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "NK" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 8 @@ -10535,19 +10267,6 @@ }, /turf/open/floor/plating/asteroid/airless, /area/ruin/space/has_grav/singularitylab/civvie) -"NN" = ( -/obj/structure/chair/stool/bar{ - dir = 4; - name = "picnic stool"; - pixel_x = 9; - pixel_y = 7 - }, -/obj/effect/turf_decal/siding/wood/end{ - dir = 8 - }, -/obj/structure/spacevine, -/turf/open/floor/wood, -/area/ruin/space/has_grav/singularitylab/civvie) "NP" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ @@ -10555,18 +10274,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"NR" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "NS" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/corner/opaque/purple{ @@ -10574,23 +10281,16 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"NU" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_y = 32 - }, -/obj/structure/spacevine/dense{ - pixel_x = 32 - }, -/obj/structure/spacevine/dense{ - pixel_y = -32 +"NT" = ( +/obj/structure/flippedtable{ + dir = 1; + icon_state = "" }, -/obj/structure/spacevine/dense{ - pixel_x = 32; - pixel_y = 32 +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" }, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/spacevine/dense, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; @@ -10653,17 +10353,6 @@ /obj/structure/tank_dispenser/plasma, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/reactor) -"Oe" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = -14; - pixel_y = 4 - }, -/obj/structure/mirror{ - pixel_x = -29 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/singularitylab/civvie) "Oh" = ( /obj/structure/spacevine, /obj/machinery/atmospherics/components/binary/valve/digital/layer4{ @@ -10684,14 +10373,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"Ol" = ( -/obj/structure/spacevine, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "Om" = ( /obj/structure/cable{ icon_state = "4-8" @@ -10713,6 +10394,13 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"Op" = ( +/obj/machinery/door/airlock/public/glass{ + dir = 4; + name = "Hydroponics" + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/civvie) "Oq" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/corner/opaque/purple{ @@ -10740,6 +10428,17 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"Ov" = ( +/obj/structure/sign/poster/retro/science{ + pixel_y = 32 + }, +/obj/structure/chair/office{ + desc = "Technologically enhanced for the optimal research position."; + dir = 8; + name = "science chair" + }, +/turf/open/floor/carpet/nanoweave/purple, +/area/ruin/space/has_grav/singularitylab/lab) "Ox" = ( /obj/structure/transit_tube/curved/flipped{ dir = 8 @@ -10755,12 +10454,6 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"Oy" = ( -/turf/closed/wall{ - desc = "A huge chunk of metal holding the roof of the asteroid at bay"; - name = "structural support" - }, -/area/ruin/space/has_grav/singularitylab/hangar) "Oz" = ( /obj/structure/particle_accelerator/fuel_chamber{ dir = 4 @@ -10790,6 +10483,16 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) +"OC" = ( +/obj/structure/flippedtable{ + dir = 1; + icon_state = "" + }, +/obj/structure/spacevine, +/turf/open/floor/plating/dirt{ + baseturfs = /turf/open/floor/plating/asteroid + }, +/area/ruin/space/has_grav/singularitylab) "OE" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, @@ -10828,22 +10531,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"OK" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/machinery/recharger{ - pixel_x = 5; - pixel_y = -5 - }, -/obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) "OL" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 9 @@ -10918,17 +10605,6 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"OU" = ( -/obj/structure/spacevine/dense, -/mob/living/simple_animal/hostile/venus_human_trap, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "OV" = ( /obj/structure/lattice/catwalk, /turf/open/floor/plating, @@ -10940,24 +10616,20 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) -"OZ" = ( -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" +"OX" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine{ + pixel_x = 32 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" }, -/obj/item/flashlight/seclite, -/turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) "Pa" = ( /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"Pb" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) "Pd" = ( /obj/structure/bed, /obj/item/bedsheet/nanotrasen, @@ -11009,15 +10681,6 @@ }, /turf/open/floor/holofloor/wood, /area/ruin/space/has_grav/singularitylab/lab) -"Pk" = ( -/obj/structure/spacevine, -/obj/structure/spacevine/dense, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "Pl" = ( /obj/structure/cable{ icon_state = "1-2" @@ -11098,24 +10761,21 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) -"Pv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +"Px" = ( +/obj/structure/spacevine, +/obj/structure/spacevine{ + pixel_y = 32 }, -/obj/effect/turf_decal/siding/wood/corner, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 +/obj/structure/spacevine{ + pixel_x = -32 }, -/obj/structure/table/wood/fancy/purple, -/obj/structure/fluff/beach_umbrella{ - pixel_x = -5; - pixel_y = 16 +/obj/structure/spacevine/dense{ + pixel_x = -31; + pixel_y = 32 }, -/obj/machinery/jukebox/boombox, -/obj/structure/spacevine, -/obj/machinery/light/floor, -/turf/open/floor/wood, -/area/ruin/space/has_grav/singularitylab/civvie) +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab) "Pz" = ( /obj/effect/turf_decal/box, /obj/structure/closet/crate, @@ -11195,6 +10855,19 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"PL" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine{ + pixel_y = 32 + }, +/obj/structure/closet/emcloset, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "PM" = ( /obj/structure/table, /obj/machinery/reagentgrinder, @@ -11220,6 +10893,15 @@ /obj/machinery/computer/atmos_alert, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"PS" = ( +/obj/structure/spacevine, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "PT" = ( /obj/structure/table/reinforced, /obj/item/binoculars, @@ -11245,36 +10927,49 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"Qc" = ( -/obj/structure/spacevine, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +"PY" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/area/ruin/space/has_grav/singularitylab/civvie) -"Qd" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/cable/yellow{ + icon_state = "2-4" }, -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/turf/open/floor/engine/hull, +/area/space/nearstation) +"PZ" = ( +/obj/effect/turf_decal/box, +/obj/machinery/light/directional/north, +/obj/item/gun/energy/lasercannon/unrestricted{ + desc = "An advanced laser cannon, a laser etched inscription in the handle states 'NT-LS-1013'. The casing is made of a lightweight alloy."; + icon_state = "pulse"; + name = "NT-LS-1013" }, -/area/ruin/space/has_grav/singularitylab) -"Qg" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "1-8" +/obj/item/gun/energy/laser/iot, +/obj/item/gun/energy/laser/iot{ + dry_fire_sound = 'sound/items/ding.ogg'; + dry_fire_text = "ding" + }, +/obj/structure/safe{ + name = "Prototype Storage" + }, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab/lab) +"Qe" = ( +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" }, +/obj/structure/spacevine, +/turf/open/floor/plating/dirt{ + baseturfs = /turf/open/floor/plating/asteroid + }, +/area/ruin/space/has_grav/singularitylab) +"Qh" = ( +/obj/machinery/power/rad_collector/anchored, /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "0-2" }, -/turf/open/space/basic, +/turf/open/floor/plating, /area/space/nearstation) "Qi" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ @@ -11285,69 +10980,37 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"Qj" = ( -/obj/structure/lattice/catwalk, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/space/basic, -/area/space/nearstation) "Ql" = ( -/obj/item/banner/engineering{ - anchored = 1 - }, -/turf/open/floor/engine/hull, -/area/space/nearstation) -"Qm" = ( /obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_y = 32 - }, -/obj/structure/spacevine/dense{ - pixel_x = -32; - pixel_y = 32 - }, -/obj/structure/spacevine/dense{ +/obj/structure/spacevine{ pixel_x = -32 }, +/obj/structure/spacevine{ + pixel_y = -32 + }, /obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/lavendergrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, -/area/ruin/space/has_grav/singularitylab) +/area/ruin/space/has_grav/singularitylab/civvie) "Qo" = ( /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav) -"Qr" = ( -/obj/structure/spacevine, -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) -"Qs" = ( -/obj/structure/cable{ - icon_state = "1-2" +"Qq" = ( +/obj/machinery/power/shieldwallgen/atmos/strong/roundstart{ + id = "singlabhang" }, -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/mob/living/simple_animal/hostile/venus_human_trap, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/obj/machinery/door/poddoor{ + dir = 4; + id = "singlabhanger" }, +/turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) "Qt" = ( /obj/effect/turf_decal/corner/transparent/orange{ @@ -11358,14 +11021,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/reactor) -"Qw" = ( -/obj/structure/table, -/obj/item/clipboard{ - pixel_x = 9; - pixel_y = 7 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/singularitylab/engineering) "Qx" = ( /obj/structure/table/wood, /obj/machinery/light/small/directional/west, @@ -11409,9 +11064,6 @@ /obj/structure/spacevine, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"QB" = ( -/turf/closed/mineral/random, -/area/ruin/space/has_grav) "QC" = ( /obj/structure/cable{ icon_state = "1-6" @@ -11423,19 +11075,6 @@ /obj/effect/decal/cleanable/blood/tracks, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"QD" = ( -/obj/structure/spacevine{ - pixel_y = 32 - }, -/obj/structure/spacevine, -/obj/machinery/light/directional/north, -/obj/structure/flora/ausbushes/stalkybush, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "QE" = ( /obj/effect/turf_decal/corner/transparent/orange{ dir = 10 @@ -11447,25 +11086,19 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) -"QH" = ( -/obj/item/clothing/suit/space/hardsuit/engine, -/obj/item/tank/internals/oxygen, -/obj/effect/decal/remains/human, -/obj/structure/cable{ - icon_state = "4-8" - }, +"QF" = ( /obj/structure/spacevine/dense, /obj/structure/spacevine/dense{ - pixel_y = -32 + pixel_x = 32 }, -/obj/effect/decal/cleanable/blood/old, /obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/ppflowers, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, -/area/ruin/space/has_grav/singularitylab) +/area/ruin/space/has_grav/singularitylab/civvie) "QI" = ( /obj/structure/spacevine, /obj/machinery/light/directional/north, @@ -11483,29 +11116,43 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"QO" = ( +/obj/machinery/power/shieldwallgen/atmos/strong/roundstart{ + dir = 1; + id = "singlabhang" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "singlabhanger" + }, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab) "QQ" = ( /obj/effect/decal/remains/human, /obj/item/clothing/shoes/sneakers/white, /obj/item/clothing/under/rank/rnd/scientist, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab/lab) -"QT" = ( -/obj/structure/spacevine, -/mob/living/simple_animal/hostile/zombie/kudzu{ - zombiejob = "Assistant" - }, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "QV" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 1 }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"QW" = ( +/obj/structure/cable{ + icon_state = "5-9" + }, +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" + }, +/obj/effect/turf_decal/siding/thinplating, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) "QX" = ( /obj/structure/cable/yellow{ icon_state = "1-6" @@ -11519,12 +11166,35 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) +"QY" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/obj/structure/spacevine/dense{ + pixel_y = -32 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "QZ" = ( /obj/structure/railing{ dir = 8 }, /turf/open/floor/plasteel/stairs, /area/ruin/space/has_grav/singularitylab/engineering) +"Rb" = ( +/obj/machinery/power/emitter/welded{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/space/nearstation) "Rc" = ( /obj/structure/railing/corner, /obj/effect/turf_decal/industrial/warning/corner, @@ -11540,6 +11210,16 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) +"Rf" = ( +/obj/structure/spacevine/dense, +/mob/living/simple_animal/hostile/venus_human_trap, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "Rh" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 5 @@ -11566,15 +11246,14 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/engineering) -"Ro" = ( -/obj/structure/spacevine, -/mob/living/simple_animal/hostile/venus_human_trap, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +"Rl" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/area/ruin/space/has_grav/singularitylab/civvie) +/obj/item/book/manual/wiki/engineering_singulo_tesla, +/turf/open/space/basic, +/area/space/nearstation) "Rp" = ( /obj/structure/transit_tube/horizontal, /obj/structure/plasticflaps/opaque{ @@ -11591,6 +11270,26 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) +"Rq" = ( +/obj/structure/cable{ + icon_state = "1-6" + }, +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/effect/turf_decal/corner/opaque/purple{ + dir = 8 + }, +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" + }, +/obj/effect/turf_decal/corner/opaque/purple{ + dir = 5 + }, +/obj/effect/turf_decal/corner/opaque/purple{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "Rr" = ( /obj/structure/cable{ icon_state = "6-8" @@ -11613,6 +11312,19 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/reactor) +"Rw" = ( +/obj/structure/cable{ + icon_state = "6-9" + }, +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "Rx" = ( /obj/structure/dresser, /obj/item/radio/intercom/directional/west, @@ -11704,15 +11416,23 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"RN" = ( -/obj/structure/toilet{ - dir = 4; - pixel_x = -6; - pixel_y = 6 +"RP" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/structure/table/wood/fancy/blue, +/obj/structure/fluff/beach_umbrella{ + pixel_x = -5; + pixel_y = 16 + }, +/obj/structure/spacevine, +/obj/machinery/light/floor, +/turf/open/floor/wood, +/area/ruin/space/has_grav/singularitylab/civvie) "RR" = ( /obj/effect/turf_decal/corner/transparent/orange{ dir = 5 @@ -11726,53 +11446,26 @@ /obj/structure/cable{ icon_state = "6-9" }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood{ - icon_state = "bubblegumfoot" - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/cargo) -"RV" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/reactor) -"RW" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/civvie) -"RX" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = 32 - }, -/obj/machinery/portable_atmospherics/scrubber/huge, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) -"RZ" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_x = -32 +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 }, -/obj/structure/spacevine{ - pixel_y = -32 +/obj/effect/decal/cleanable/blood{ + icon_state = "bubblegumfoot" }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/cargo) +"RV" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/reactor) +"RW" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, +/turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) "Sa" = ( /obj/structure/cable{ @@ -11808,23 +11501,16 @@ /obj/structure/spacevine, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) -"Sh" = ( -/obj/item/stack/cable_coil/cut/yellow, -/turf/open/space/basic, -/area/space/nearstation) -"Si" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_y = -32 +"Sj" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "4-8" }, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/ppflowers, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/obj/structure/cable/yellow{ + icon_state = "2-4" }, -/area/ruin/space/has_grav/singularitylab/civvie) +/turf/open/space/basic, +/area/space/nearstation) "Sk" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -11833,17 +11519,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"Sm" = ( -/obj/structure/toilet{ - dir = 8; - pixel_x = 6; - pixel_y = 5 - }, -/obj/structure/window/reinforced/tinted/frosted{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/singularitylab/civvie) "Sn" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, @@ -11905,23 +11580,29 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab/lab) -"SF" = ( +"Sv" = ( +/obj/structure/railing/corner{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/structure/railing/corner{ + pixel_x = -3; + pixel_y = 23 + }, /obj/structure/cable{ icon_state = "1-2" }, /obj/structure/cable{ - icon_state = "1-4" + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" }, /obj/effect/turf_decal/siding/thinplating{ dir = 4 }, -/obj/structure/railing/corner{ - pixel_x = -3; - pixel_y = 23 - }, -/obj/structure/railing/corner{ - pixel_x = -3; - pixel_y = 2 +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 }, /obj/structure/transit_tube/station/dispenser/flipped{ dir = 8 @@ -11933,17 +11614,36 @@ dir = 8 }, /turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab/cargo) +"SC" = ( +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, /area/ruin/space/has_grav/singularitylab) -"SH" = ( -/obj/structure/chair/stool/bar{ - dir = 1; - name = "picnic stool"; - pixel_y = 16 +"SE" = ( +/obj/structure/toilet{ + dir = 4; + pixel_x = -6; + pixel_y = 6 }, -/obj/effect/turf_decal/siding/wood/end, -/obj/structure/spacevine, -/turf/open/floor/wood, -/area/ruin/space/has_grav/singularitylab/civvie) +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) +"SJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/flippedtable{ + dir = 2; + icon_state = "" + }, +/turf/open/floor/carpet/nanoweave/purple, +/area/ruin/space/has_grav/singularitylab/lab) "SK" = ( /obj/structure/closet/emcloset{ anchored = 1 @@ -11960,11 +11660,49 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) +"SM" = ( +/obj/structure/spacevine, +/obj/structure/spacevine/dense, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "SQ" = ( /obj/machinery/rnd/production/protolathe/department/engineering, /obj/structure/spacevine, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/engineering) +"SR" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/space/basic, +/area/space/nearstation) +"SS" = ( +/obj/machinery/door/poddoor{ + dir = 4; + id = "singlabhanger" + }, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab) +"ST" = ( +/obj/structure/flippedtable{ + dir = 4; + icon_state = "" + }, +/obj/structure/spacevine/dense, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "SW" = ( /obj/structure/chair/office{ dir = 4 @@ -11982,6 +11720,18 @@ /obj/machinery/atmospherics/pipe/simple/supply/visible/layer4, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"SY" = ( +/obj/structure/cable{ + icon_state = "6-9" + }, +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "SZ" = ( /obj/effect/spawner/structure/window, /obj/structure/curtain/cloth/fancy, @@ -11997,6 +11747,18 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) +"Tb" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "Td" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, @@ -12008,6 +11770,35 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) +"Th" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/structure/railing/corner{ + pixel_x = -3; + pixel_y = 23 + }, +/obj/structure/railing/corner{ + pixel_x = -3; + pixel_y = 2 + }, +/obj/structure/transit_tube/station/dispenser/flipped{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab) "Ti" = ( /obj/structure/transit_tube/curved, /obj/structure/cable{ @@ -12017,18 +11808,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"To" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_y = 32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "Tq" = ( /obj/effect/turf_decal/siding/yellow/corner{ dir = 8 @@ -12051,15 +11830,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"Tu" = ( -/obj/structure/spacevine, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) "Tv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 5 @@ -12105,22 +11875,6 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab/civvie) -"TC" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_y = 32 - }, -/obj/structure/spacevine/dense{ - pixel_y = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "TD" = ( /obj/structure/cable{ icon_state = "4-8" @@ -12152,6 +11906,20 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"TG" = ( +/obj/structure/cable{ + icon_state = "5-9" + }, +/obj/effect/turf_decal/siding/thinplating, +/obj/item/gun/energy/e_gun/smg{ + dry_fire_sound = 'sound/items/ding.ogg'; + dry_fire_text = "ding"; + name = "\improper Modified E-TAR SMG"; + pixel_x = 5; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) "TH" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/corner/opaque/white/full, @@ -12164,14 +11932,34 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/turf_decal/siding/thinplating/dark{ +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/singularitylab/cargo) +"TK" = ( +/obj/structure/cable{ + icon_state = "5-8" + }, +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/flippedtable{ + dir = 8; + icon_state = "" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/singularitylab/cargo) +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "TL" = ( /obj/machinery/rnd/production/circuit_imprinter/department/engi, /turf/open/floor/plasteel/dark, @@ -12220,13 +12008,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"TQ" = ( -/obj/machinery/power/rad_collector/anchored, -/obj/structure/cable/yellow{ - icon_state = "0-10" - }, -/turf/open/floor/plating, -/area/space/nearstation) "TR" = ( /obj/structure/cable{ icon_state = "4-8" @@ -12310,19 +12091,25 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) -"Uf" = ( -/obj/structure/chair/stool/bar{ - dir = 8; - name = "picnic stool"; - pixel_x = -10; - pixel_y = 4 +"Ue" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 }, -/obj/effect/turf_decal/siding/wood/end{ - dir = 4 +/obj/structure/spacevine/dense{ + pixel_y = 32 }, -/obj/structure/spacevine, -/turf/open/floor/wood, -/area/ruin/space/has_grav/singularitylab/civvie) +/obj/structure/spacevine/dense{ + pixel_x = -32; + pixel_y = 32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "Ui" = ( /obj/effect/turf_decal/siding/thinplating, /obj/structure/cable{ @@ -12385,6 +12172,50 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/engineering) +"Up" = ( +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"Ur" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_y = 32 + }, +/obj/structure/spacevine/dense{ + pixel_x = 32 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) +"Ut" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine{ + pixel_y = -32 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"Ux" = ( +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/lavendergrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "Uy" = ( /obj/machinery/door/airlock{ name = "Bedroom" @@ -12407,6 +12238,45 @@ "UD" = ( /turf/open/floor/engine/hull/reinforced, /area/ruin/space/has_grav/singularitylab/reactor) +"UF" = ( +/obj/effect/turf_decal/solarpanel, +/obj/machinery/power/solar, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/space/nearstation) +"UG" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/obj/structure/spacevine/dense{ + pixel_y = -32 + }, +/obj/structure/spacevine/dense{ + pixel_x = -32; + pixel_y = -32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) +"UH" = ( +/obj/structure/spacevine/dense, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "UI" = ( /obj/structure/spacevine, /obj/structure/spacevine/dense{ @@ -12435,6 +12305,33 @@ baseturfs = /turf/open/floor/plating/asteroid }, /area/ruin/space/has_grav/singularitylab) +"UL" = ( +/obj/structure/sign/poster/retro/lasergun{ + pixel_x = -32 + }, +/obj/effect/turf_decal/box, +/obj/machinery/light/directional/north, +/obj/item/gun/energy/e_gun/smg{ + dry_fire_sound = 'sound/items/ding.ogg'; + dry_fire_text = "ding"; + name = "\improper Modified E-TAR SMG"; + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/gun/energy/e_gun/smg{ + dry_fire_sound = 'sound/items/ding.ogg'; + dry_fire_text = "ding"; + name = "\improper Modified E-TAR SMG"; + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/gun/energy/laser, +/obj/item/gun/energy/laser, +/obj/structure/safe{ + name = "Prototype Storage" + }, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab/lab) "UM" = ( /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer4{ dir = 8 @@ -12447,18 +12344,13 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"UR" = ( -/obj/structure/spacevine, -/obj/item/gun/energy/floragun, -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/gibspawner, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +"UP" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "2-8" }, -/area/ruin/space/has_grav/singularitylab/civvie) +/turf/open/space/basic, +/area/space/nearstation) "UU" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 9 @@ -12479,6 +12371,22 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) +"UW" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = 32 + }, +/obj/structure/spacevine/dense{ + pixel_x = 32; + pixel_y = 32 + }, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "UY" = ( /obj/structure/spacevine/dense, /obj/structure/spacevine/dense{ @@ -12486,6 +12394,40 @@ }, /turf/open/floor/engine, /area/ruin/space/has_grav/singularitylab) +"Vb" = ( +/obj/structure/spacevine/dense{ + pixel_x = -32 + }, +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"Vc" = ( +/obj/structure/spacevine/dense, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer4{ + dir = 6 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) +"Ve" = ( +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 5; + pixel_y = 11 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) "Vg" = ( /obj/structure/sign/warning/radiation/rad_area{ pixel_x = 32 @@ -12540,6 +12482,12 @@ /obj/item/gun/energy/floragun, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"Vn" = ( +/obj/machinery/the_singularitygen{ + anchored = 1 + }, +/turf/open/floor/plating, +/area/space/nearstation) "Vo" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 6 @@ -12549,18 +12497,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"Vp" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine{ - pixel_x = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "Vq" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/effect/turf_decal/industrial/warning/corner, @@ -12608,62 +12544,51 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"Vw" = ( -/obj/effect/turf_decal/corner/opaque/green{ - dir = 10 - }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/civvie) -"Vz" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/tech/grid, -/area/ruin/space/has_grav/singularitylab/engineering) -"VA" = ( +"Vv" = ( +/obj/item/clothing/suit/space/hardsuit/engine, +/obj/item/flamethrower/full, +/obj/effect/decal/remains/human, /obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/lavendergrass, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) -"VD" = ( -/obj/structure/table, -/obj/structure/sign/poster/official/moth/hardhats{ - pixel_x = -32 - }, -/obj/structure/spacevine, -/obj/item/assembly/igniter{ - pixel_x = 7; - pixel_y = 3 + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = -6 +/area/ruin/space/has_grav/singularitylab/engineering) +"Vw" = ( +/obj/effect/turf_decal/corner/opaque/green{ + dir = 10 }, -/obj/item/assembly/igniter{ - pixel_x = -7; - pixel_y = 3 +/obj/effect/turf_decal/corner/opaque/green{ + dir = 5 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/civvie) +"Vz" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/tech/grid, /area/ruin/space/has_grav/singularitylab/engineering) "VE" = ( /obj/machinery/light/directional/west, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) -"VF" = ( -/obj/machinery/door/airlock/public/glass{ - dir = 4; - name = "Hydroponics" +"VG" = ( +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" }, -/turf/open/floor/plasteel/tech, /area/ruin/space/has_grav/singularitylab/civvie) +"VH" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space/nearstation) "VI" = ( /obj/structure/curtain/cloth, /obj/machinery/light/small/directional/north, @@ -12716,6 +12641,37 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) +"VT" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine{ + pixel_x = -32 + }, +/obj/structure/spacevine{ + pixel_y = -32 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"VU" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/effect/turf_decal/corner/opaque/purple{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) "VV" = ( /obj/structure/transit_tube/curved/flipped{ dir = 4 @@ -12817,13 +12773,6 @@ }, /turf/open/floor/plating/asteroid/airless, /area/ruin/space/has_grav/singularitylab/civvie) -"Wg" = ( -/obj/effect/decal/cleanable/blood/drip{ - pixel_x = 5; - pixel_y = 11 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) "Wh" = ( /obj/structure/spacevine, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -12850,20 +12799,27 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/lab) -"Wl" = ( -/obj/structure/cable{ - icon_state = "5-9" +"Wm" = ( +/obj/effect/turf_decal/solarpanel, +/obj/machinery/power/solar, +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/effect/turf_decal/siding/thinplating, -/obj/item/gun/energy/e_gun/smg{ - dry_fire_sound = 'sound/items/ding.ogg'; - dry_fire_text = "ding"; - name = "\improper Modified E-TAR SMG"; - pixel_x = 5; - pixel_y = 6 +/obj/structure/cable/yellow{ + icon_state = "0-2" }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) +/turf/open/floor/plating, +/area/space/nearstation) +"Wo" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/space/basic, +/area/space/nearstation) "Wp" = ( /obj/structure/railing/corner{ dir = 4 @@ -12895,25 +12851,26 @@ /obj/effect/decal/cleanable/ash, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"Wy" = ( -/obj/structure/window/reinforced{ - dir = 1 +"Ww" = ( +/obj/machinery/door/airlock{ + dir = 4; + name = "Barracks" }, -/obj/effect/turf_decal/corner/opaque/white/full, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 5 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/soda_cans/sol_dry{ - pixel_x = -6; - pixel_y = -3 +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 }, -/obj/item/reagent_containers/food/drinks/soda_cans/sodawater{ - pixel_x = 8; - pixel_y = 8 +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ruin/space/has_grav/singularitylab/civvie) "Wz" = ( /obj/machinery/door/airlock/vault{ name = "Vault Access" @@ -12948,6 +12905,17 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"WE" = ( +/obj/structure/spacevine, +/mob/living/simple_animal/hostile/zombie/kudzu{ + zombiejob = "Assistant" + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "WG" = ( /obj/structure/reagent_dispensers/water_cooler, /obj/machinery/light/directional/east, @@ -12971,6 +12939,10 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) +"WJ" = ( +/obj/structure/table, +/turf/closed/mineral/random, +/area/ruin/space/has_grav) "WK" = ( /obj/structure/rack, /obj/item/gun/energy/e_gun/rdgun{ @@ -13048,43 +13020,18 @@ }, /turf/open/floor/holofloor/wood, /area/ruin/space/has_grav/singularitylab/lab) -"WU" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/mining{ - dir = 4; - name = "Cargo Bay" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/cargo) -"WV" = ( +"WT" = ( /obj/structure/spacevine/dense, /obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/mob/living/simple_animal/hostile/zombie/kudzu{ - zombiejob = "Assistant" + pixel_y = -32 }, -/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/sparsegrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; name = "grass" }, -/area/ruin/space/has_grav/singularitylab/civvie) +/area/ruin/space/has_grav/singularitylab) "WW" = ( /obj/structure/transit_tube/curved/flipped{ dir = 1 @@ -13101,22 +13048,6 @@ /obj/structure/spacevine, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"Xa" = ( -/obj/machinery/door/airlock/engineering{ - dir = 8; - name = "Power Control" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/engineering) "Xc" = ( /obj/structure/chair/office, /obj/structure/sign/poster/official/wtf_is_co2{ @@ -13127,6 +13058,21 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/reactor) +"Xe" = ( +/obj/structure/spacevine{ + pixel_y = 32 + }, +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = 32; + pixel_y = 32 + }, +/obj/structure/spacevine/dense{ + pixel_x = 32 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/engine, +/area/ruin/space/has_grav/singularitylab) "Xf" = ( /obj/structure/filingcabinet, /obj/item/pen/fountain, @@ -13147,6 +13093,15 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab) +"Xh" = ( +/obj/structure/table, +/obj/item/paper, +/obj/item/pen{ + pixel_x = -4; + pixel_y = 2 + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ruin/space/has_grav/singularitylab/cargo) "Xk" = ( /obj/machinery/airalarm/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer4{ @@ -13164,44 +13119,26 @@ }, /turf/open/floor/carpet/nanoweave/beige, /area/ruin/space/has_grav/singularitylab/cargo) -"Xn" = ( -/obj/machinery/door/airlock{ +"Xp" = ( +/obj/structure/table, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/singularitylab/engineering) +"Xt" = ( +/obj/machinery/door/airlock/hatch{ dir = 4; - name = "Barracks" + name = "Server Room" }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 4 }, /obj/machinery/door/firedoor/border_only{ dir = 8 }, -/turf/open/floor/plasteel/tech, -/area/ruin/space/has_grav/singularitylab/civvie) -"Xo" = ( -/obj/machinery/hydroponics/constructable, -/obj/structure/spacevine, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab/civvie) -"Xp" = ( -/obj/structure/table, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/singularitylab/engineering) -"Xs" = ( -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = 32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/area/ruin/space/has_grav/singularitylab/civvie) +/turf/open/floor/plating, +/area/ruin/space/has_grav/singularitylab/lab) "Xv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 4 @@ -13211,13 +13148,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"Xw" = ( -/obj/structure/flippedtable{ - dir = 8; - icon_state = "" - }, -/turf/open/floor/plating/asteroid, -/area/ruin/space/has_grav/singularitylab) "Xx" = ( /obj/effect/turf_decal/corner/opaque/white/full, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ @@ -13229,8 +13159,18 @@ /obj/effect/turf_decal/corner/opaque/purple{ dir = 1 }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab/lab) +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) +"XB" = ( +/obj/structure/spacevine, +/obj/structure/spacevine/dense, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "XD" = ( /obj/effect/turf_decal/industrial/warning/corner{ dir = 4 @@ -13269,34 +13209,11 @@ }, /turf/closed/wall/r_wall, /area/ruin/space/has_grav/singularitylab/reactor) -"XG" = ( -/obj/structure/cable{ - icon_state = "1-6" - }, -/obj/structure/spacevine/dense, -/obj/structure/spacevine/dense{ - pixel_x = -32 - }, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "XJ" = ( /obj/structure/lattice/catwalk, /obj/structure/spacevine, /turf/open/floor/plating, /area/ruin/space/has_grav/singularitylab) -"XN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/singularitylab) "XR" = ( /obj/effect/turf_decal/siding/thinplating, /obj/effect/decal/cleanable/blood{ @@ -13321,6 +13238,18 @@ /obj/structure/filingcabinet, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"Ya" = ( +/obj/structure/table, +/obj/item/paper{ + default_raw_text = "Whatever happens. Happens." + }, +/obj/item/pen, +/obj/item/reagent_containers/food/drinks/soda_cans/starkist{ + pixel_x = 10; + pixel_y = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) "Yc" = ( /obj/structure/cable{ icon_state = "1-2" @@ -13340,6 +13269,46 @@ /obj/effect/decal/cleanable/blood, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) +"Yh" = ( +/obj/structure/spacevine, +/mob/living/simple_animal/hostile/venus_human_trap, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"Yi" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/effect/turf_decal/corner/opaque/white/full, +/obj/structure/table, +/obj/item/lighter{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/item/clothing/mask/cigarette, +/obj/item/clothing/mask/cigarette{ + pixel_x = 3; + pixel_y = 11 + }, +/obj/item/clothing/mask/cigarette{ + pixel_x = 6; + pixel_y = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab/lab) +"Yj" = ( +/turf/closed/wall{ + desc = "A huge chunk of metal holding the roof of the asteroid at bay"; + name = "structural support" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "Yk" = ( /obj/machinery/conveyor{ id = "singlabcarg" @@ -13373,13 +13342,6 @@ /obj/structure/chair, /turf/open/floor/carpet/nanoweave/purple, /area/ruin/space/has_grav/singularitylab/lab) -"Yo" = ( -/obj/machinery/door/poddoor{ - dir = 4; - id = "singlablas2" - }, -/turf/open/floor/engine, -/area/ruin/space/has_grav/singularitylab/lab) "Yp" = ( /obj/structure/transit_tube/curved/flipped{ dir = 8 @@ -13399,14 +13361,19 @@ }, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"Ys" = ( +"Yt" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, /obj/structure/spacevine/dense, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 10 +/obj/structure/spacevine/dense{ + pixel_x = -32 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 +/obj/structure/spacevine/dense{ + pixel_x = -32; + pixel_y = 32 }, +/obj/structure/flora/ausbushes/sparsegrass, /turf/open/floor/plating/grass/jungle{ baseturfs = /turf/open/floor/plasteel; desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; @@ -13493,17 +13460,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/reactor) -"YG" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/button/door{ - dir = 8; - id = "singlabcargo2"; - name = "Blast Door Control"; - pixel_x = 24 - }, -/obj/structure/spacevine, -/turf/open/floor/plating, -/area/ruin/space/has_grav/singularitylab) "YH" = ( /obj/structure/transit_tube, /obj/structure/cable{ @@ -13520,13 +13476,25 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plating/asteroid, /area/ruin/space/has_grav/singularitylab) -"YJ" = ( -/obj/structure/sign/poster/official/moth/boh{ - pixel_x = -32 +"YK" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = 32 }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"YL" = ( +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "YN" = ( /obj/structure/table, /obj/item/paper_bin, @@ -13556,45 +13524,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/cargo) -"YV" = ( -/obj/structure/sign/poster/retro/lasergun{ - pixel_x = -32 - }, -/obj/effect/turf_decal/box, -/obj/machinery/light/directional/north, -/obj/item/gun/energy/e_gun/smg{ - dry_fire_sound = 'sound/items/ding.ogg'; - dry_fire_text = "ding"; - name = "\improper Modified E-TAR SMG"; - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/gun/energy/e_gun/smg{ - dry_fire_sound = 'sound/items/ding.ogg'; - dry_fire_text = "ding"; - name = "\improper Modified E-TAR SMG"; - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/gun/energy/laser, -/obj/item/gun/energy/laser, -/obj/structure/safe{ - name = "Prototype Storage" - }, -/turf/open/floor/engine, -/area/ruin/space/has_grav/singularitylab/lab) -"YW" = ( -/obj/structure/cable{ - icon_state = "6-9" - }, -/obj/structure/spacevine/dense, -/obj/structure/flora/ausbushes/fullgrass, -/turf/open/floor/plating/grass/jungle{ - baseturfs = /turf/open/floor/plasteel; - desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; - name = "grass" - }, -/area/ruin/space/has_grav/singularitylab) "YX" = ( /obj/effect/turf_decal/corner/opaque/white/full, /turf/open/floor/plasteel, @@ -13611,23 +13540,51 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/space/has_grav/singularitylab/engineering) +"Za" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine/dense{ + pixel_x = 32 + }, +/obj/machinery/portable_atmospherics/scrubber/huge, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab) "Zc" = ( /turf/closed/wall, /area/ruin/space/has_grav/singularitylab) -"Zh" = ( -/obj/structure/cable{ - icon_state = "6-9" +"Ze" = ( +/obj/structure/spacevine, +/turf/closed/wall{ + desc = "A huge chunk of metal holding the roof of the asteroid at bay"; + name = "structural support" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen{ - pixel_x = -4; - pixel_y = 2 +/area/ruin/space/has_grav/singularitylab) +"Zg" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ruin/space/has_grav/singularitylab/cargo) +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/space/basic, +/area/space/nearstation) +"Zj" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor/corner, +/obj/machinery/button/door{ + dir = 1; + id = "singlabcargo1"; + name = "Blast Door Control"; + pixel_y = -25 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/singularitylab) "Zk" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -13710,12 +13667,6 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab) -"Zx" = ( -/turf/closed/wall{ - desc = "A huge chunk of metal holding the roof of the asteroid at bay"; - name = "structural support" - }, -/area/ruin/space/has_grav/singularitylab/cargo) "Zy" = ( /obj/structure/cable{ icon_state = "6-10" @@ -13805,6 +13756,16 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"ZO" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/space/basic, +/area/space/nearstation) "ZR" = ( /obj/structure/cable{ icon_state = "4-8" @@ -13817,6 +13778,34 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/singularitylab/civvie) +"ZS" = ( +/obj/structure/cable{ + icon_state = "1-10" + }, +/obj/structure/spacevine, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) +"ZU" = ( +/obj/structure/spacevine/dense, +/obj/structure/spacevine{ + pixel_x = 32 + }, +/turf/open/floor/plating/grass/jungle{ + baseturfs = /turf/open/floor/plasteel; + desc = "A patch of overgrown grass. Hints of plasteel plating lay under it."; + name = "grass" + }, +/area/ruin/space/has_grav/singularitylab/civvie) "ZV" = ( /obj/structure/transit_tube/horizontal, /obj/structure/cable{ @@ -13881,7 +13870,7 @@ tq tq tq tq -QB +id tq tq tq @@ -13927,17 +13916,17 @@ tq tq tq tq -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id tq -QB -QB +id +id tq tq "} @@ -13953,7 +13942,7 @@ tq tq tq tq -QB +id tq tq tq @@ -14002,19 +13991,19 @@ tq tq tq tq -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id tq tq "} @@ -14024,18 +14013,18 @@ tq tq tq tq -QB -QB +id +id tq tq tq -QB -QB +id +id tq Ke Ke Ke -QB +id Ke tq tq @@ -14047,8 +14036,8 @@ tq tq tq tq -QB -QB +id +id tq tq tq @@ -14057,7 +14046,7 @@ tq tq tq tq -QB +id tq tq tq @@ -14078,20 +14067,20 @@ tq tq tq tq -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id tq tq "} @@ -14100,7 +14089,7 @@ tq tq tq tq -QB +id Ke Ke Ke @@ -14110,22 +14099,22 @@ Ke Ke Ke Ke -QB -QB -QB +id +id +id Ke Ke -QB +id tq tq tq -QB +id tq tq tq -QB -QB -QB +id +id +id tq tq tq @@ -14133,8 +14122,8 @@ tq tq tq tq -QB -QB +id +id tq tq tq @@ -14142,10 +14131,10 @@ tq tq tq tq -QB -QB -QB -QB +id +id +id +id tq tq tq @@ -14154,14 +14143,14 @@ tq tq tq tq -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id tq tq tq @@ -14179,29 +14168,29 @@ tq tq tq Ke -QB +id Ke tq Ke -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id Ke tq tq Ke Ke Ke -QB +id tq -QB -QB -QB +id +id +id tq tq tq @@ -14209,35 +14198,35 @@ tq tq tq tq -QB -QB -QB -QB +id +id +id +id tq tq tq tq -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id tq tq tq tq tq tq -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id tq tq tq @@ -14256,28 +14245,28 @@ tq Ke Ke Ke -QB +id Ke Ke Ke -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id Ke Ke Ke Ke -QB +id Ke -QB +id tq tq -QB +id tq tq tq @@ -14286,18 +14275,18 @@ tq tq tq tq -QB -QB -QB -QB +id +id +id +id tq tq tq tq tq tq -QB -QB +id +id tq tq tq @@ -14305,15 +14294,15 @@ tq tq tq tq -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id tq tq tq @@ -14331,25 +14320,25 @@ tq tq Ke Ke -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Ke tq tq @@ -14362,10 +14351,10 @@ tq tq tq tq -QB -QB -QB -QB +id +id +id +id tq tq tq @@ -14373,23 +14362,23 @@ tq tq tq tq -QB -QB -QB +id +id +id tq tq tq tq tq tq -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id kP tq tq @@ -14407,26 +14396,26 @@ tq tq Ke Ke -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Ke tq tq @@ -14439,8 +14428,8 @@ tq tq tq tq -QB -QB +id +id tq tq tq @@ -14450,23 +14439,23 @@ tq tq tq tq -QB -QB +id +id tq tq tq tq tq tq -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id kP tq tq @@ -14481,29 +14470,29 @@ tq tq "} (9,1,1) = {" -QB +id Ke -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Ke Ke tq @@ -14516,8 +14505,8 @@ tq tq tq tq -QB -QB +id +id tq tq tq @@ -14534,14 +14523,14 @@ tq tq tq tq -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id kP kP kP @@ -14562,26 +14551,26 @@ tq Ke Ke Ke -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Ke Ke tq @@ -14600,9 +14589,9 @@ tq tq tq tq -QB -QB -QB +id +id +id tq tq tq @@ -14610,14 +14599,14 @@ tq tq tq tq -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id kP kP kP @@ -14639,27 +14628,27 @@ tq tq tq Ke -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Ke Ke tq @@ -14676,9 +14665,9 @@ tq tq tq tq -QB -QB -QB +id +id +id tq tq tq @@ -14687,14 +14676,14 @@ tq tq tq tq -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id kP kP kP @@ -14716,28 +14705,28 @@ tq tq Ke Ke -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Ke Ke tq @@ -14753,24 +14742,24 @@ tq tq tq tq -QB -QB -QB -QB +id +id +id +id tq tq tq tq tq tq -QB -QB -QB -QB +id +id +id +id kP kP -QB -QB +id +id kP kP kP @@ -14792,30 +14781,30 @@ tq tq Ke Ke -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -sa -Qs -rf -XG -vV -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +Yt +AB +dh +st +Hr +id +id +id +id +id +id Ke Ke tq @@ -14830,24 +14819,24 @@ tq tq tq tq -QB +id tq -QB +id tq tq tq tq tq tq -QB -QB -QB -QB +id +id +id +id kP kP kP -QB -QB +id +id kP kP kP @@ -14866,40 +14855,40 @@ tq tq "} (14,1,1) = {" -QB +id Ke -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -xR -zl -Ew -fq -fq -YW -sU -lb -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +Ue +AS +fD +pd +pd +SY +Tb +UG +id +id +id +id +id Ke Ke Ke Ke Ke -QB +id Ke Ke Ke @@ -14916,14 +14905,14 @@ tq tq tq tq -QB -QB -QB -QB +id +id +id +id kP kP kP -QB +id kP kP kP @@ -14943,42 +14932,42 @@ tq tq "} (15,1,1) = {" -QB +id Ke -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -ci -Qd -nN -QB -QB -sw -Dl -EY -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +qn +Id +WT +id +id +UW +nz +HX +id +id +id +id +id +id +id +id +id +id +id +id +id Ke Ke tq @@ -14992,15 +14981,15 @@ tq tq tq tq -QB -QB -QB -QB +id +id +id +id kP kP kP kP -QB +id kP kP kP @@ -15023,14 +15012,14 @@ tq tq Ke Ke -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id Zc Zc Zc @@ -15039,45 +15028,45 @@ ii Iz iZ Zc -QB -QB +id +id mo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Ke tq tq tq tq tq -QB -QB +id +id tq tq tq -QB -QB -QB -QB +id +id +id +id kP kP kP kP kP -QB +id kP kP kP @@ -15100,16 +15089,16 @@ tq tq tq Ke -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id Zc -jB +Px zx zx Bh @@ -15121,19 +15110,19 @@ Zc Or Zc Zc -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id Ke Ke tq @@ -15145,10 +15134,10 @@ Ke tq tq tq -QB -QB -QB -QB +id +id +id +id kP kP kP @@ -15156,8 +15145,8 @@ kP kP kP kP -QB -QB +id +id kP kP tq @@ -15177,18 +15166,18 @@ tq tq tq Ke -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id Zc tr -OU -fT +KU +SC jj Re eh @@ -15196,28 +15185,28 @@ FE wR th jN -bD +rw Zc -QB -QB -QB -dG -zB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +Dg +qG +id +id +id +id +id +id +id +id +id Ke Ke Ke Ke Ke -QB +id Ke Ke tq @@ -15233,8 +15222,8 @@ kP kP kP kP -QB -QB +id +id kP kP tq @@ -15261,11 +15250,11 @@ Ke Ke Ke Ke -QB +id Zc tr -fT -OU +SC +KU VW vb xK @@ -15273,34 +15262,34 @@ zJ KH Es Fx -bD +rw Zc -QB -QB -Hz -xo -gB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -Ke -Ke -Ke -QB -QB +id +id +Kh +mL +up +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +Ke +Ke +Ke +id +id Ke Ke kP @@ -15311,8 +15300,8 @@ kP kP kP kP -QB -QB +id +id kP tq tq @@ -15338,9 +15327,9 @@ Qo Qo Qo Ke -QB +id Zc -uQ +Xe UY wX Bh @@ -15348,37 +15337,37 @@ OP fG Kx Wh -Ew +fD Oh ac Zc Zc -CE +oG UU fw -FI -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +NB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Ke Ke Ke @@ -15388,8 +15377,8 @@ kP kP kP kP -QB -QB +id +id kP tq tq @@ -15412,10 +15401,10 @@ Ke Qo Qo Qo -QB +id Qo Ke -QB +id Zc Zc Zc @@ -15424,8 +15413,8 @@ Jb WI Zc PR -NJ -Ew +hN +fD De TX wk @@ -15435,31 +15424,31 @@ jQ Ot Kt iQ -ra +dt ut kT -QB -FI -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -FI -QB -QB -QB -QB -QB -QB +id +NB +id +id +id +id +id +id +id +id +id +id +id +id +id +NB +id +id +id +id +id +id Ke Ke Ke @@ -15486,10 +15475,10 @@ tq tq tq Ke -QB -QB -QB -QB +id +id +id +id Qo Ke Ke @@ -15498,11 +15487,11 @@ Ni Bh Bh Bh -HV -ax +Eu +pK aj -oP -Ew +UH +fD Gy VP kA @@ -15537,12 +15526,12 @@ us us Jc HW -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id Ke Ke kP @@ -15563,10 +15552,10 @@ tq tq tq Ke -QB -QB -QB -QB +id +id +id +id Qo Qo Ke @@ -15575,10 +15564,10 @@ XE OW OW Et -aI -rA +hf +nT FE -dM +Vc SX MN jM @@ -15593,7 +15582,7 @@ iB iN wm Zw -FI +NB BX BX BX @@ -15606,21 +15595,21 @@ BX BX BX BX -QB -FI -QB -QB -QB -QB +id +NB +id +id +id +id kU oa -QB -FI -QB -QB -QB -QB -QB +id +NB +id +id +id +id +id Ke kP kP @@ -15637,11 +15626,11 @@ tq "} (24,1,1) = {" tq -QB -QB +id +id Ke -QB -QB +id +id Qo Qo Qo @@ -15654,14 +15643,14 @@ Zc Zc CD CD -HV -Bp +Eu +yI Ou kb kD Zc -QB -QB +id +id cU cX zE @@ -15678,26 +15667,26 @@ Eo EX zq Di -VD +qV OH Uo ce BX -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id Ci CC my UV yS -QB -QB -QB +id +id +id Ke Ke kP @@ -15715,31 +15704,31 @@ tq (25,1,1) = {" tq tq -QB +id Ke -QB -QB +id +id Qo -QB -QB -QB -QB -QB +id +id +id +id +id Qo Qo Ad AR -Gs -RX -yp +ku +Za +tI nZ iF sH Ss Zc -QB -Qm -Ew +id +vi +fD wW lJ mY @@ -15750,32 +15739,32 @@ BX BX hP by -Qw +tV RR MH QZ In Di -bZ -bZ +Du +Du TZ BX rg jL kU -QB -QB -QB -QB -QB -QB -FI +id +id +id +id +id +id +NB os KT la -QB -QB -QB +id +id +id Ke kP kP @@ -15794,17 +15783,17 @@ tq tq tq Ke -QB -QB +id +id Qo -QB -QB -QB -QB -QB +id +id +id +id +id Qo -QB -QB +id +id AT om om @@ -15814,14 +15803,14 @@ Zc Zc Zc Zc -QB -TC -QB -FI +id +HK +id +NB OM -FI -Ge -FF +NB +lt +LH BX BX BX @@ -15834,7 +15823,7 @@ dX CI CY Cb -nq +Vv QE KQ EV @@ -15842,17 +15831,17 @@ jL kU kU kU -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id HP EN yS -QB -QB +id +id Ke Ke kP @@ -15871,33 +15860,33 @@ tq tq tq Ke -QB -QB +id +id Qo -QB +id Qo Qo Qo Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -NU -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +GK +id +id eF -QB -Ys +id +tk Xg Jq cB @@ -15920,17 +15909,17 @@ Fy kU kU jp -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id os KT la -FI -QB +NB +id Ke Ke kP @@ -15948,34 +15937,34 @@ tq tq Ke Ke -QB -QB +id +id Qo Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id eF -QB -pv -QH +id +iV +kd BX bo JU @@ -15999,16 +15988,16 @@ nr ua uN uN -Vp -hh -QB -QB -QB +vL +Kk +id +id +id HP Nj vY -QB -QB +id +id Ke Ke kP @@ -16024,35 +16013,35 @@ tq tq tq Ke -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -FI +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +NB bl -FI -MQ -uY +NB +ht +hg BX EK rB @@ -16060,7 +16049,7 @@ rB EK rB BX -Xa +mu yi JS FW @@ -16076,17 +16065,17 @@ JD ua ua ua -jT -cP -Cu -QB -QB -FI +Dj +lL +Ux +id +id +NB os Nc Bb zY -QB +id Ke Ke kP @@ -16099,37 +16088,37 @@ tq "} (30,1,1) = {" tq -QB -Ke -QB -QB -QB -QB -QB -QB -QB -FI -QB -QB -QB -FI -QB -QB -QB -FI -QB -QB -QB -QB -QB -QB -QB -FI +id +Ke +id +id +id +id +id +id +id +NB +id +id +id +NB +id +id +id +NB +id +id +id +id +id +id +id +NB rZ Na -QB -jC -vT +id +ST +Iq BX Ei xZ @@ -16140,7 +16129,7 @@ YZ vE yi yi -cz +ob yi yi BX @@ -16154,17 +16143,17 @@ ET JD ua ua -jT -Ew -Ew -QB -QB -QB +Dj +fD +fD +id +id +id pI aQ LP qc -QB +id Ke Ke kP @@ -16176,13 +16165,13 @@ tq "} (31,1,1) = {" tq -QB +id Ke -QB -QB -QB -QB -QB +id +id +id +id +id rZ VZ DC @@ -16191,7 +16180,7 @@ YH YH DC Ph -CL +xv Ph NV YH @@ -16204,7 +16193,7 @@ YH DC wx tE -QB +id vg gI BX @@ -16222,11 +16211,11 @@ ru yi ok ua -jT -jT -jT -jT -jT +Dj +Dj +Dj +Dj +Dj Ly ha JD @@ -16235,14 +16224,14 @@ ua ua Mi xG -QB -QB -QB +id +id +id WQ GX TN bY -QB +id Ke Ke kP @@ -16255,33 +16244,33 @@ tq tq tq Ke -QB -QB -QB -QB +id +id +id +id Ck ys wY -FI -QB -QB -QB -FI +NB +id +id +id +NB Yu Pu kk -Kc -QB -QB -QB -QB -QB -QB -QB -FI +Ze +id +id +id +id +id +id +id +NB ec -QB -QB +id +id vg ly BX @@ -16298,12 +16287,12 @@ HO mB yi Fw -jT -jT -zz -jT -pv -Ew +Dj +Dj +dx +Dj +iV +fD ua BT ha @@ -16313,13 +16302,13 @@ Mi Vo kU kU -QB -QB -QB -QB +id +id +id +id pI zg -QB +id Ke Ke Ke @@ -16333,31 +16322,31 @@ tq tq Ke Ke -QB -QB -QB +id +id +id DG uE -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id ql gK Yy -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id hW xH Wv @@ -16375,13 +16364,13 @@ Rk Md yi Fw -jT -jT -jT +Dj +Dj +Dj ua ua -Ew -Cu +fD +Ux ua oc ha @@ -16391,13 +16380,13 @@ kU kU kU jp -QB -QB -QB -QB +id +id +id +id QA vY -QB +id Ke Ke Ke @@ -16410,34 +16399,34 @@ tq tq tq Ke -QB -QB -QB +id +id +id pS -QB -QB -QB -QB +id +id +id +id BM Bc WH -Ln -Ib -fv -tB +YK +FV +aa +KY WH Bc Bc -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id ZC OJ -QB +id BX fe ea @@ -16456,10 +16445,10 @@ AQ AQ ua ua -jT -cP -Cu -Cu +Dj +lL +Ux +Ux ua oc EM @@ -16469,14 +16458,14 @@ GJ kU ua UK -QB -QB -QB +id +id +id os og -QB -QB -QB +id +id +id Ke Ke tq @@ -16487,13 +16476,13 @@ tq Ke Ke Ke -QB -QB -FI +id +id +NB bl -FI -QB -QB +NB +id +id ty ty ty @@ -16507,14 +16496,14 @@ ty ty ty EU -QB -QB -QB -QB -QB +id +id +id +id +id ZC Ui -QB +id BX BX BX @@ -16525,7 +16514,7 @@ pE pE pE pE -dc +si pE pE pE @@ -16533,10 +16522,10 @@ pE pE AQ AQ -jT -HT -Ew -GV +Dj +OX +fD +sp AQ ua kn @@ -16549,11 +16538,11 @@ ua uN kU as -FI +NB Rp -FI -QB -QB +NB +id +id Ke se tq @@ -16562,14 +16551,14 @@ tq (36,1,1) = {" tq Ke -QB -QB -QB -QB -QB +id +id +id +id +id RL -QB -QB +id +id Bc ty MS @@ -16584,19 +16573,19 @@ dd Qx ty EU -WV -qm +dr +iJ fa Zu Zu jQ JC -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id pE Xc pt @@ -16608,13 +16597,13 @@ KO Yv cE pE -QB -QB -hE -QB +id +id +NC +id cf -QB -QB +id +id Wc Cl kH @@ -16628,9 +16617,9 @@ Vs zV Am Ud -QB -QB -QB +id +id +id Ke Qo tq @@ -16641,12 +16630,12 @@ tq Ke Ke Ke -QB -QB -QB +id +id +id RL -QB -QB +id +id Bc ty qo @@ -16661,8 +16650,8 @@ Ns Mo ty fn -xn -ip +dK +fh Zu Zu lg @@ -16670,10 +16659,10 @@ pG DK uN uN -QB -QB -QB -QB +id +id +id +id pE oT JX @@ -16685,13 +16674,13 @@ Fu rv Wb pE -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id kU Rh EC @@ -16705,9 +16694,9 @@ QV uW xW Ud -QB -QB -QB +id +id +id Ke Qo tq @@ -16718,22 +16707,22 @@ tq tq tq Ke -QB -QB -QB +id +id +id RL -QB -QB +id +id Bc ty -ay +jY ty SZ ty tx Bc ty -MW +yw ty SZ ty @@ -16744,13 +16733,13 @@ PF kt GU fW -QB +id ua -jT -wP -QB -QB -QB +Dj +QY +id +id +id pE Qt YC @@ -16762,18 +16751,18 @@ RV xS yQ pE -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id kU kU Rh -ve -jT +Kf +Dj ua ua ua @@ -16782,9 +16771,9 @@ jQ aT KZ lM -QB -QB -QB +id +id +id Ke Ke tq @@ -16795,12 +16784,12 @@ tq tq tq Ke -QB -QB -QB +id +id +id RL -QB -QB +id +id Bc NX rX @@ -16820,14 +16809,14 @@ ae hQ bj fW -QB -QB -QB -wv -iC -QB -QB -QB +id +id +id +Ur +aJ +id +id +id pE KM zi @@ -16839,19 +16828,19 @@ gi Od uV pE -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id kU ua -jT -ve -jT +Dj +Kf +Dj ua ua nr @@ -16859,10 +16848,10 @@ Vi nk qk Ud -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -16872,12 +16861,12 @@ tq tq tq Ke -QB -QB -QB +id +id +id RL -QB -QB +id +id Bc Bc Bc @@ -16895,16 +16884,16 @@ WH Nn dQ fW -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id pE UC oT @@ -16912,32 +16901,32 @@ Ed Ed uD pE -iL +Gi pE pE pE -QB -QB -QB -fU -QB -QB -QB -QB -QB +id +id +id +WJ +id +id +id +id +id LO ua -Dn -nB -eY +NT +ba +dI ua nr lc bi jO Ud -QB -QB +id +id Ke Ke Ke @@ -16945,16 +16934,16 @@ tq tq "} (41,1,1) = {" -QB -QB +id +id Ke Ke -QB -QB -QB +id +id +id RL -QB -QB +id +id Bc Bc ty @@ -16971,17 +16960,17 @@ ty WH Nn AK -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id pE Rc zu @@ -16991,30 +16980,30 @@ bH pE wF pE -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id LO -ko -ou -gS +OC +CP +Rw ET ET pY HG -FI +NB Rp -FI -QB +NB +id Ke Qo Qo @@ -17022,16 +17011,16 @@ tq tq "} (42,1,1) = {" -QB -QB +id +id Ke -QB -QB -QB -QB +id +id +id +id RL -QB -QB +id +id Bc Bc ty @@ -17048,7 +17037,7 @@ ty WH Nm tR -QB +id pE pE pE @@ -17066,7 +17055,7 @@ GY cG dp pE -wu +pF pE pE pE @@ -17076,22 +17065,22 @@ pE pE pE pE -QB -QB -QB -QB -QB +id +id +id +id +id Fw ua -jT +Dj JZ OQ -mJ +uI kU -QB +id ZV -QB -QB +id +id Ke Qo tq @@ -17102,14 +17091,14 @@ tq tq tq Ke -QB -QB -QB -FI +id +id +id +NB bl -FI -QB -QB +NB +id +id Bc ty Pd @@ -17125,17 +17114,17 @@ ty Bc Nn tR -QB +id pE -Nu -Nu +VH +VH UD IU UD -Nu -YJ -Nu -Nu +VH +FD +VH +VH pE Ix cG @@ -17144,31 +17133,31 @@ GL Wp pE Er -Nu -Nu -Nu +VH +VH +VH UD IU UD -Nu -Nu +VH +VH pE -QB -QB -QB -QB -QB +id +id +id +id +id Fw -ft -ft +Qe +Qe dY aD kU -QB -QB +id +id ZV -QB -QB +id +id Ke Qo tq @@ -17179,14 +17168,14 @@ tq tq tq Ke -QB -QB -QB +id +id +id JA Yp -QB -QB -QB +id +id +id Bc ty Zq @@ -17195,24 +17184,24 @@ SZ tx Bc ty -nw +bC ty SZ ty Bc hS tR -QB +id pE -Nu -aA -aA -zP -aA -aA -aA -aA -aA +VH +nI +nI +uU +nI +nI +nI +nI +nI pE Ix cG @@ -17221,31 +17210,31 @@ cG dp pE Dp -aA -aA -aA -aA -zP -aA -aA -Nu +nI +nI +nI +nI +uU +nI +nI +VH pE -QB -QB -QB -QB -QB +id +id +id +id +id kU ua ua qT aD kU -QB -QB +id +id ZV -QB -QB +id +id Ke Ke Ke @@ -17256,13 +17245,13 @@ tq tq tq Ke -QB -QB +id +id jq Ta El -QB -QB +id +id Zu Zu ty @@ -17279,17 +17268,17 @@ Bc Bc hS oW -QB +id pE -Nu -aA -pB -My -fg -fg -fg -Is -aA +VH +nI +Eh +ir +hu +hu +hu +Ar +nI pE Ix ye @@ -17298,33 +17287,33 @@ nc Ao pE Dp -aA -NG -IM -IM -kq -Is -aA -Nu +nI +UF +Wm +Wm +PY +Ar +nI +VH pE -QB -QB -QB -QB -QB +id +id +id +id +id kU -aC -Xw -sk -tz -OZ -QB -QB +Ld +tl +BE +QW +KI +id +id ZV -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -17333,13 +17322,13 @@ tq tq tq Ke -QB -QB +id +id DG IY -QB -QB -QB +id +id +id wh Zu Zu @@ -17356,17 +17345,17 @@ qa Aq WC Mu -QB +id pE -Nu -aA -aA -bO -aA -aA -aA -aA -aA +VH +nI +nI +KB +nI +nI +nI +nI +nI pE gC ag @@ -17375,33 +17364,33 @@ ag lD pE xV -Sh -aA -aA -aA -bO -aA -aA -Nu +zf +nI +nI +nI +KB +nI +nI +VH pE -QB -QB -QB -QB -QB -QB -gZ +id +id +id +id +id +id +JK kU qT -Wl +TG kU -QB +id kU ZV kU -QB -QB -QB +id +id +id Ke tq tq @@ -17410,14 +17399,14 @@ tq tq Ke Ke -QB -FI +id +NB bl -FI -QB -QB -lZ -Pk +NB +id +id +az +SM Zu Zu WH @@ -17432,18 +17421,18 @@ Hg Tw vw Mu -QB -QB +id +id pE -Nu -aA -NG -pw -fg -fg -fg -Is -aA +VH +nI +UF +sl +hu +hu +hu +Ar +nI pE da da @@ -17452,33 +17441,33 @@ da da pE PC -aA -NG -IM -IM -mK -Is -aA -Nu +nI +UF +Wm +Wm +Hc +Ar +nI +VH pE -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id fb VX qT aD kX -QB -QB +id +id ZV -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -17486,14 +17475,14 @@ tq (48,1,1) = {" tq Ke -QB -QB -QB +id +id +id eF -QB -QB -nR -Qr +id +id +As +XB lg ae ae @@ -17510,52 +17499,52 @@ Hg zH Bc Bc -QB +id pE -Nu -aA -aA -bO -aA -aA -aA -aA -aA +VH +nI +nI +KB +nI +nI +nI +nI +nI UD -aA -aA -aA -aA -aA +nI +nI +nI +nI +nI MV -xm -aA -aA -aA -aA -bO -aA -aA -Nu +KE +nI +nI +nI +nI +KB +nI +nI +VH pE -QB -QB -QB -QB -QB +id +id +id +id +id lK lK lK -lv -DL +DZ +lF lK lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -17563,15 +17552,15 @@ tq (49,1,1) = {" tq Ke -QB -QB -QB +id +id +id eF -QB -lZ -Qr -wH -DB +id +az +XB +Kg +iw xU xU xU @@ -17579,47 +17568,47 @@ ls Mh PN Zu -gU -nA +Up +mj Zu Zu KF mh -QB -QB -QB +id +id +id pE UD -aA -aA -bO -aA -aA -aA -aA -aA +nI +nI +KB +nI +nI +nI +nI +nI HR -aA -aA -aA -aA -aA +nI +nI +nI +nI +nI HR -xm -aA -aA -aA -aA -bO -aA -aA +KE +nI +nI +nI +nI +KB +nI +nI UD pE -QB -QB -QB -QB -QB +id +id +id +id +id lK Pj pi @@ -17627,12 +17616,12 @@ vu Cm AE lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -17640,63 +17629,63 @@ tq (50,1,1) = {" tq Ke -QB -QB -QB +id +id +id eF -QB +id wh Pp -CR -gU -Ol +ZS +Up +vz Zu JI JI JI bt JI -Xs -nV -ur +cv +QF +ts Zu hS yL -QB -Ii -QB +id +cC +id pE Rs -zP -zP -Dh -Ih -Ih -Ih -Ih -pc -Pb -Ih -Ih -CK -Ih -Ih -Pb -cl -Ih -Ih -Ih -Ih -Qj -zP -zP +uU +uU +cV +FJ +FJ +FJ +FJ +Rl +rt +FJ +FJ +Bq +FJ +FJ +rt +pM +FJ +FJ +FJ +FJ +Zg +uU +uU yn pE -QB -QB -QB -QB -QB +id +id +id +id +id lK kK fS @@ -17704,12 +17693,12 @@ Kn jG WS lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -17718,20 +17707,20 @@ tq tq Ke Ke -QB -QB +id +id eF -QB +id fa Nn tL Zu -fv -io +aa +Ut ty ty ty -ed +Ww ty ty ty @@ -17739,41 +17728,41 @@ ty Zu EP ps -QB -QB -QB +id +id +id pE UD -aA -aA -xm -aA -aA -aA -aA -Nu -aA -aA -TQ -iX -tF -aA -aA -Nu -aA -aA -aA -aA -xm -aA -aA +nI +nI +KE +nI +nI +nI +nI +VH +nI +nI +zv +kw +oR +nI +nI +VH +nI +nI +nI +nI +KE +nI +nI UD pE -QB -QB -QB -QB -QB +id +id +id +id +id lK ho lK @@ -17781,12 +17770,12 @@ Vl BU lK lK -FI +NB Rp -FI -QB -QB -QB +NB +id +id +id Ke tq tq @@ -17795,16 +17784,16 @@ tq tq tq Ke -QB -QB +id +id eF -QB +id Zu Zy nm Zu -fv -Hy +aa +Mx Aw Jk mn @@ -17816,41 +17805,41 @@ Aw Bc hS Pg -QB -QB -QB +id +id +id pE -Nu -aA -aA -xm -aA -aA -aA -aA -Nu -aA -aA -aA -aA -aA -aA -aA -Nu -aA -aA -aA -aA -xm -aA -aA -Nu +VH +nI +nI +KE +nI +nI +nI +nI +VH +nI +nI +nI +nI +nI +nI +nI +VH +nI +nI +nI +nI +KE +nI +nI +VH pE -QB -QB -QB -QB -QB +id +id +id +id +id lK Lz lK @@ -17858,12 +17847,12 @@ xA Ju YB lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke Ke tq @@ -17872,16 +17861,16 @@ tq tq tq Ke -QB -QB +id +id eF -QB +id Zu Nn tL Zu -JT -Si +wV +oF ty gO ty @@ -17893,41 +17882,41 @@ ty Bc EP FM -QB -QB -QB +id +id +id pE -Nu -aA -aA -xm -aA -aA -aA -aA -Nu -aA -aA -aA -aA -aA -aA -aA -Nu -aA -aA -aA -FA -xm -aA -aA -Nu +VH +nI +nI +KE +nI +nI +nI +nI +VH +nI +nI +nI +nI +nI +nI +nI +VH +nI +nI +nI +IK +KE +nI +nI +VH pE -QB -QB -QB -QB -QB +id +id +id +id +id lK mv lK @@ -17935,13 +17924,13 @@ fF HS fI lK -QB +id ZV -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq "} @@ -17949,16 +17938,16 @@ tq tq tq Ke -QB -FI +id +NB bl -FI +NB QI Au nm Zu -fv -Hy +aa +Mx ty ty ty @@ -17970,37 +17959,37 @@ ty Bc hS bn -QB -QB -QB +id +id +id pE -Nu -aA -aA -yW -MF -Nu -Nu -Nu -ww -Nu -Nu -Nu -Nu -Nu -Nu -Nu -ww -Nu -Nu -Nu -rE -GH -aA -aA -Nu +VH +nI +nI +Sj +ig +VH +VH +VH +BG +VH +VH +VH +VH +VH +VH +VH +BG +VH +VH +VH +Rb +Wo +nI +nI +VH pE -QB +id lK lK lK @@ -18008,33 +17997,33 @@ lK lK FB lK -vy +vr lK lK lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke Ke tq "} (55,1,1) = {" tq -QB +id Ke -QB -QB +id +id wp Rj NI GE HL Zu -fv +aa Ms Aw Jk @@ -18048,36 +18037,36 @@ Bc EP FM AN -QB -QB +id +id pE -Nu -aA -aA -xm -aA -aA -aA -aA -Nu -aA -aA -aA -Nu -aA -aA -aA -Nu -aA -aA -aA -aA -xm -aA -aA -Nu +VH +nI +nI +KE +nI +nI +nI +nI +VH +nI +nI +nI +VH +nI +nI +nI +VH +nI +nI +nI +nI +KE +nI +nI +VH pE -QB +id lK nJ KL @@ -18087,13 +18076,13 @@ Om uJ nh lK -RN +SE lK -QB +id ZV -QB -QB -QB +id +id +id Ke Ke tq @@ -18101,17 +18090,17 @@ tq "} (56,1,1) = {" tq -QB +id Ke Ke -QB +id BS yr TM zR pN Zu -fv +aa Ms ty gO @@ -18125,36 +18114,36 @@ Bc hS bn cj -QB -QB +id +id pE -Nu -aA -aA -qj -IV -aA -aA -aA -Nu -aA -aA -aA -Nu -aA -aA -aA -Nu -aA -aA -aA -MO -wU -aA -aA -Nu +VH +nI +nI +ZO +Bx +nI +nI +nI +VH +nI +nI +nI +VH +nI +nI +nI +VH +nI +nI +nI +Qh +ri +nI +nI +VH pE -QB +id lK qf oy @@ -18164,24 +18153,24 @@ mP RD MA lK -xr +jS lK -QB +id ZV -QB -QB -QB +id +id +id Ke Qo tq tq "} (57,1,1) = {" -QB -QB +id +id tq Ke -QB +id wp GQ KX @@ -18201,53 +18190,53 @@ ty Bc EP FM -QB -QB -QB +id +id +id pE UD -aA -aA -xm -aA -aA -aA -aA -Nu -aA -aA -aA -Nu -aA -aA -aA -Nu -aA -aA -aA -aA -xm -aA -aA +nI +nI +KE +nI +nI +nI +nI +VH +nI +nI +nI +VH +nI +nI +nI +VH +nI +nI +nI +nI +KE +nI +nI UD pE -QB +id lK Zk ze -km +Xt lK eW nd pj -na +KK rk lK -QB +id ZV -QB -QB -QB +id +id +id Ke Qo tq @@ -18258,9 +18247,9 @@ tq tq tq Ke -FI +NB bl -FI +NB LB tA kZ @@ -18278,37 +18267,37 @@ Aw Bc hS bn -QB -QB -QB +id +id +id pE Rs -zP -Ql -qU -aA -aA -aA -aA -Nu -Nu -Nu -Nu -Gq -Nu -Nu -Nu -Nu -aA -aA -aA -aA -qU -Ql -zP +uU +pT +zK +nI +nI +nI +nI +VH +VH +VH +VH +Vn +VH +VH +VH +VH +nI +nI +nI +nI +zK +pT +uU yn pE -QB +id lK PI RE @@ -18320,11 +18309,11 @@ Ex Tt fJ lK -QB +id ZV -QB -QB -QB +id +id +id Ke Qo tq @@ -18335,9 +18324,9 @@ tq tq tq Ke -QB +id RL -QB +id WH Nn BW @@ -18355,39 +18344,39 @@ ty Bc EP FM -QB -QB -QB +id +id +id pE UD -aA -aA -qU -aA -aA -aA -aA -Nu -aA -aA -aA -Nu -aA -aA -aA -Nu -aA -aA -aA -aA -xm -aA -aA +nI +nI +zK +nI +nI +nI +nI +VH +nI +nI +nI +VH +nI +nI +nI +VH +nI +nI +nI +nI +KE +nI +nI UD pE -QB +id lK -JQ +Ov Rr LM lK @@ -18397,11 +18386,11 @@ EZ Ym oK lK -QB +id ZV -QB -QB -QB +id +id +id Ke Qo tq @@ -18412,9 +18401,9 @@ tq tq tq Ke -QB +id RL -QB +id WH Zy kZ @@ -18432,53 +18421,53 @@ ty Bc hS yL -QB -QB -QB +id +id +id pE -Nu -aA -aA -yW -IV -aA -aA -aA -Nu -aA -aA -aA -Nu -aA -aA -aA -Nu -aA -aA -aA -MO -GH -aA -aA -Nu +VH +nI +nI +Sj +Bx +nI +nI +nI +VH +nI +nI +nI +VH +nI +nI +nI +VH +nI +nI +nI +Qh +Wo +nI +nI +VH pE -QB +id lK mE CX cw Pl -gM +Yi GF zC Ym zk lK -QB +id ZV -QB -QB -QB +id +id +id Ke Ke tq @@ -18489,9 +18478,9 @@ tq tq tq Ke -QB +id RL -QB +id WH Nn Fz @@ -18499,7 +18488,7 @@ Bc Bc ty VI -Oe +fP bg Pa bV @@ -18509,37 +18498,37 @@ Aw Bc EP ps -QB -QB -QB +id +id +id pE -Nu -aA -aA -xm -FA -aA -aA -aA -Nu -aA -aA -aA -Nu -aA -aA -aA -Nu -aA -aA -aA -aA -xm -aA -aA -Nu +VH +nI +nI +KE +IK +nI +nI +nI +VH +nI +nI +nI +VH +nI +nI +nI +VH +nI +nI +nI +nI +KE +nI +nI +VH pE -QB +id lK co Sn @@ -18551,12 +18540,12 @@ pf ZD Cr lK -FI +NB Rp -FI -QB -QB -QB +NB +id +id +id Ke tq tq @@ -18566,9 +18555,9 @@ tq tq tq Ke -QB +id RL -QB +id WH HA qb @@ -18576,7 +18565,7 @@ Ey Bc ty ky -Sm +ew ty Pa WG @@ -18586,37 +18575,37 @@ ty Bc hS ZY -QB -QB -QB +id +id +id pE -Nu -aA -aA -qj -MF -Nu -Nu -Nu -ww -Nu -Nu -Nu -Nu -Nu -Nu -Nu -ww -Nu -Nu -Nu -rE -wU -aA -aA -Nu +VH +nI +nI +ZO +ig +VH +VH +VH +BG +VH +VH +VH +VH +VH +VH +VH +BG +VH +VH +VH +Rb +ri +nI +nI +VH pE -QB +id lK xC ei @@ -18628,24 +18617,24 @@ rI OS kp lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke Ke tq "} (63,1,1) = {" tq -QB +id Ke Ke -QB +id RL -QB +id Bc Bc TO @@ -18655,7 +18644,7 @@ ty ty ty ty -Xn +en ty ty ty @@ -18663,37 +18652,37 @@ ty Bc CV Mu -QB -QB -QB +id +id +id pE -Nu -aA -aA -xm -aA -aA -aA -aA -Nu -aA -aA -aA -aA -aA -aA -aA -Nu -aA -aA -aA -aA -xm -aA -aA -Nu +VH +nI +nI +KE +nI +nI +nI +nI +VH +nI +nI +nI +nI +nI +nI +nI +VH +nI +nI +nI +nI +KE +nI +nI +VH pE -QB +id lK FX LN @@ -18705,13 +18694,13 @@ lK Bk lK lK -QB +id ZV -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq "} @@ -18719,11 +18708,11 @@ tq tq tq Ke -QB -QB +id +id RL -QB -QB +id +id Bc Bc af @@ -18733,44 +18722,44 @@ Bc Bc WH xL -qN -EF -EF +Vb +Bi +Bi uv Bc jt -QB -QB -QB -QB +id +id +id +id pE -Nu -aA -aA -xm -aA -aA -aA -aA -Nu -aA -aA -aA -aA -aA -aA -aA -Nu -aA -aA -aA -aA -xm -aA -aA -Nu +VH +nI +nI +KE +nI +nI +nI +nI +VH +nI +nI +nI +nI +nI +nI +nI +VH +nI +nI +nI +nI +KE +nI +nI +VH pE -QB +id lK dP pL @@ -18782,13 +18771,13 @@ lK Lw zb lK -QB +id ZV -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq "} @@ -18796,12 +18785,12 @@ tq tq tq Ke -QB -QB +id +id RL -QB -QB -QB +id +id +id in Ic aZ @@ -18816,38 +18805,38 @@ WH WH lg aL -QB -QB -QB -QB +id +id +id +id pE UD -aA -aA -xm -aA -aA -aA -aA -Nu -aA -nK -aA -aA -aA -nK -aA -Nu -aA -aA -aA -aA -xm -aA -aA +nI +nI +KE +nI +nI +nI +nI +VH +nI +eu +nI +nI +nI +eu +nI +VH +nI +nI +nI +nI +KE +nI +nI UD pE -QB +id lK dP uc @@ -18855,17 +18844,17 @@ dP kE xw lK -YV +UL Lw WK lK -QB +id ZV -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq "} @@ -18873,11 +18862,11 @@ tq tq tq Ke -QB -QB +id +id RL -QB -QB +id +id Bc JP bV @@ -18893,56 +18882,56 @@ gF gF fX Sd -QB -QB -QB -QB +id +id +id +id pE Rs -zP -zP -op -Ih -Ih -Ih -Ih -Ih -Ih -Qg -Ih -Pb -Ih -HC -Ih -Ih -Ih -Ih -Ih -Ih -CB -zP -zP +uU +uU +UP +FJ +FJ +FJ +FJ +FJ +FJ +vd +FJ +rt +FJ +SR +FJ +FJ +FJ +FJ +FJ +FJ +GP +uU +uU yn pE -QB +id lK dP Lw dP -Wy +lU xw lK Dx Lw Su lK -QB +id ZV -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq "} @@ -18950,11 +18939,11 @@ tq tq tq Ke -QB -FI +id +NB bl -FI -QB +NB +id Bc iA gN @@ -18969,39 +18958,39 @@ Tw Tw Vj WP -QB -QB -QB -QB -QB +id +id +id +id +id pE UD -aA -aA -zP -aA -aA -aA -aA -aA -aA -aA -aA -Ql -aA -aA -aA -aA -aA -aA -aA -aA -zP -aA -aA +nI +nI +uU +nI +nI +nI +nI +nI +nI +nI +nI +pT +nI +nI +nI +nI +nI +nI +nI +nI +uU +nI +nI UD pE -QB +id lK fy ga @@ -19009,16 +18998,16 @@ fy gm TR lK -uX +PZ QQ pC lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke Ke tq @@ -19027,11 +19016,11 @@ tq tq Ke Ke -QB +id kU fo -QB -QB +id +id Bc DT Vt @@ -19040,45 +19029,45 @@ Zu Zu Zu FP -fv -xM -jr -jr +aa +nG +VG +VG Zu bN -QB -QB -QB -QB -QB +id +id +id +id +id pE -Nu -aA -aA -zP -aA -aA -aA -aA -aA -aA -aA -aA -zP -aA -aA -aA -aA -aA -aA -aA -aA -zP -aA -aA -Nu +VH +nI +nI +uU +nI +nI +nI +nI +nI +nI +nI +nI +uU +nI +nI +nI +nI +nI +nI +nI +nI +uU +nI +nI +VH pE -QB +id lK lK lK @@ -19090,12 +19079,12 @@ lK lK lK lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -19103,108 +19092,108 @@ tq (69,1,1) = {" Ke Ke -QB +id yg wg pH -QB -QB +id +id Bc Bc Vr VR Zu -fv -fv -Ol +aa +aa +vz yh -fv -fv -fv +aa +aa +aa Zu Zu IP -QB -QB -QB -QB +id +id +id +id pE -Nu -Nu +VH +VH UD ll UD -Nu -Nu -Nu -Nu -Nu -Nu +VH +VH +VH +VH +VH +VH UD ll UD -Nu -Nu -Nu -Nu -Nu -Nu +VH +VH +VH +VH +VH +VH UD ll UD -Nu -Nu +VH +VH pE -QB +id lK sv cK -vX -eo -Gv -Ae -OK -Kr +SJ +Rq +ya +Mm +oY +Jr GR lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke tq tq "} (70,1,1) = {" Ke -QB -QB +id +id xx kU -QB -QB +id +id Bc Bc Bc ZR ps -fv +aa Zu Zu -NN +Kb yh Zu Zu Zu -NN +Kb xJ Zu -sI -QB -QB -QB +oH +id +id +id pE XF pE @@ -19232,7 +19221,7 @@ pE pE pE pE -QB +id lK Xf HF @@ -19242,24 +19231,24 @@ RG sh Lk BH -et +JJ lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke tq tq "} (71,1,1) = {" Ke -QB -FI +id +NB gD -aY +Yj ty ty ty @@ -19267,74 +19256,74 @@ ty ph TW ps -jr +VG Zu Zu -qg -SH +vD +cZ Zu Zu Zu -Pv -SH +lH +cZ wM -Qc -Ky -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +lx +Ql +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id lK PT Td ih mp -kr +TK YX Ty NP -aU +VU lK -FI +NB Rp -FI -QB -QB -QB +NB +id +id +id Ke tq tq "} (72,1,1) = {" Ke -QB -QB +id +id ZV ty yH @@ -19344,49 +19333,49 @@ PB ZE Bo ps -gU -VA +Up +Nx Zu -xa +jx Zu Zu FP Zu -Uf +Mq Zu Zu -Ol -nA -RZ -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +vz +mj +VT +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id lK nl Vq @@ -19398,20 +19387,20 @@ oA oS TH lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke tq tq "} (73,1,1) = {" Ke -QB -QB +id +id ZV ty Iv @@ -19421,13 +19410,13 @@ lu Bc Jl XR -jr -xM +VG +nG Zu Zu fa -VA -nA +Nx +mj Zu Zu fa @@ -19439,30 +19428,30 @@ ty ty yh wr -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id lK lK VJ @@ -19475,20 +19464,20 @@ yd VS Oq lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke tq tq "} (74,1,1) = {" Ke -QB -QB +id +id ZV ty FS @@ -19498,13 +19487,13 @@ lu Bc hS RK -Ol +vz Zu Zu -Ol -Be -gU -jr +vz +Rf +Up +VG fa fa fa @@ -19516,48 +19505,48 @@ PM ty ty jK -AD -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +bx +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id lK Fq sc GZ -EO +Hm tg AL GO -mU +AV NZ sJ lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke Ke tq @@ -19565,7 +19554,7 @@ tq (75,1,1) = {" Ke Ke -QB +id ZV ty gJ @@ -19575,48 +19564,48 @@ eP du zM yh -Ol +vz Zu -NN +Kb Zu Zu fa -fv -NN +aa +Kb Zu Zu -fv -fv +aa +aa Ft pq Gf AI ty -vZ -Mk -QB -QB -QB -QB -QB -QB +qC +YL +id +id +id +id +id +id Qo Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id Qo Qo Qo -QB +id lK qR Cp @@ -19629,20 +19618,20 @@ DX gw ne lK -QB +id ZV -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq "} (76,1,1) = {" tq Ke -QB +id ZV ty ty @@ -19652,66 +19641,66 @@ ty Gn Zu jy -Ol +vz Zu -er -SH +hA +cZ fa fa -Ol -oV -SH +vz +RP +cZ Zu -fv -fv +aa +aa Ft pq pq vI ty -sf -Mk -QB -QB -QB -QB -QB +qu +YL +id +id +id +id +id Qo -QB +id Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id Qo Qo Qo -QB -QB +id +id lK ul NH xO KR -nO +ry KR KR Wj XD lK lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke Ke tq @@ -19719,27 +19708,27 @@ tq (77,1,1) = {" tq Ke -FI +NB Rp -FI -QB +NB +id Bc WH WH WH wO -fv -fv +aa +aa Zu -Uf +Mq Zu fa -fv -Tu -Uf +aa +PS +Mq Zu Zu -Bz +sW EL ty sN @@ -19748,47 +19737,47 @@ pq zS Eg fK -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id Qo Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id Qo Qo -QB +id lK lK -BP -BP -BP +JO +JO +JO lK -Yo -Yo -Yo +Dy +Dy +Dy lK lK lK -QB +id ZV -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -19796,27 +19785,27 @@ tq (78,1,1) = {" tq Ke -QB +id nj la -QB +id Bc WH WH hy Zu -fv -aP +aa +He Zu -Ol -Ol -Ol +vz +vz +vz Zu -sF -Ol +fk +vz Zu -Ol -AD +vz +bx yh Gw pq @@ -19824,31 +19813,31 @@ Gf ty ty AG -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id Qo Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id lK Lw Lw @@ -19858,13 +19847,13 @@ Lw Lw Lw lK -QB -QB -QB +id +id +id ZV -QB -QB -QB +id +id +id Ke Ke tq @@ -19876,56 +19865,56 @@ Ke Ke HP cL -QB +id Bc WH WH Tz Zu -gU -nA -Ol +Up +mj +vz Zu Zu -Ol -Ol -QT +vz +vz +WE Zu fa yh yh yh ty -ke +vh IQ ty -rh -gU -QB -QB -QB -QB +Kj +Up +id +id +id +id Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id lK pe pl @@ -19935,13 +19924,13 @@ pe Ax rO lK -QB -QB -QB +id +id +id ZV -QB -QB -QB +id +id +id Ke Qo tq @@ -19951,58 +19940,58 @@ tq tq tq Ke -QB +id ZV -QB +id Bc Bc WH Zu Zu -fv -VA -VA -Qc +aa +Nx +Nx +lx bb Zu -Ol -fv +vz +aa fa fa -VA -fv +Nx +aa yh ty un TT ty -oN -UR -QB -QB +PL +ca +id +id Qo Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id lK Lw Lw @@ -20012,13 +20001,13 @@ Lw Lw Lw lK -QB -QB -FI +id +id +NB Rp -FI -QB -QB +NB +id +id Ke Qo tq @@ -20030,56 +20019,56 @@ tq Ke Ke ZV -QB +id Bc Bc Bc Zu Zu JI -jg +ZU xz -Ro -Ol -Ol +Yh +vz +vz yh fa -fv +aa rY fa -fv -Mk +aa +YL ty un bk ty -To -Qc -QB -QB +gR +lx +id +id Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id lK lK lK @@ -20090,12 +20079,12 @@ lK lK lK lK -QB -QB +id +id ZV -QB -QB -QB +id +id +id Ke Ke tq @@ -20107,8 +20096,8 @@ tq tq Ke ZV -QB -QB +id +id Bc WH WH @@ -20116,64 +20105,64 @@ bN ty ty ty -VF +Op ty -QD +iW KC KC Ik Ik Ik -gU -AM +Up +cI ty un IX ty Mg WH -QB -QB +id +id Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Qo Qo Qo Qo -QB -QB -QB -QB -QB +id +id +id +id +id cW Fc -QB -QB -QB -QB +id +id +id +id Ke Ke tq @@ -20184,8 +20173,8 @@ tq Ke Ke ZV -QB -QB +id +id WH WH WH @@ -20195,7 +20184,7 @@ ai Vm gH rD -AD +bx yh Zu Zu @@ -20209,49 +20198,49 @@ Fg ty CU WH -QB -QB +id +id Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Qo Qo bv Qo Qo -QB -QB -QB -QB -QB +id +id +id +id +id VV OL -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq "} @@ -20259,10 +20248,10 @@ tq tq tq Ke -QB +id ZV -QB -QB +id +id Ek WH Zu @@ -20285,49 +20274,49 @@ ty ty ty CU -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id Qo Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id EI Qo cH Qo Qo Qo -QB -QB -QB -QB +id +id +id +id ZV -QB -QB -QB -QB -QB +id +id +id +id +id Ke Ke tq @@ -20336,11 +20325,11 @@ tq tq tq Ke -QB +id ZV -QB -QB -QB +id +id +id fn Zu Ms @@ -20351,10 +20340,10 @@ lV rD yh WO -Xo -gQ -gQ -Xo +zA +zL +zL +zA Zu fa fa @@ -20362,64 +20351,64 @@ NM qs We zX -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id Qo Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id IB -GA +NE IB IB Qo Qo Qo Qo -QB +id ZV -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq tq "} (86,1,1) = {" tq -QB +id Ke -QB +id ZV -QB -QB -QB -jR -fv +id +id +id +hv +aa Ms ty sM @@ -20428,75 +20417,75 @@ Jv rD yh Zu -Ol -Qc -Qc +vz +lx +lx fs Zu fa tv -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id Qo Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Cg sV dg IB Qo -QB -QB -QB -QB +id +id +id +id ZV -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq tq "} (87,1,1) = {" tq -QB +id Ke -QB +id ZV -QB -QB -QB -QB -hF +id +id +id +id +Ny Ms ty ty @@ -20505,60 +20494,60 @@ ty ty xB Zu -QT -Qc +WE +lx Zu Zu -Qc +lx Jx -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id lh TI lh -QB -QB -QB -QB -QB -FI +id +id +id +id +id +NB Rp -FI -QB -QB -QB -QB +NB +id +id +id +id Ke tq tq @@ -20567,12 +20556,12 @@ tq tq tq Ke -FI +NB Rp -FI -QB -QB -QB +NB +id +id +id UJ fa Zu @@ -20585,57 +20574,57 @@ KC KC KC WO -Xo -za -QB -QB -QB -QB -QB -QB +zA +Ba +id +id +id +id +id +id Qo Qo -QB -QB -QB -QB +id +id +id +id Qo -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id Qo -QB -QB -QB +id +id +id kU -QB -QB -FI +id +id +NB kU kU -QB -QB -Zx +id +id +kM ES hl zc -Zx -QB -QB -QB -FI +kM +id +id +id +NB kU Ox -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq tq @@ -20644,51 +20633,51 @@ tq tq tq Ke -QB +id eB kU -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id yh yh JI JI -cr -sd -QB -QB -QB -QB -QB -QB +cT +Gh +id +id +id +id +id +id Qo Qo -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id Qo -QB -QB -QB +id +id +id yg Bw Ti @@ -20699,7 +20688,7 @@ od od Zp eH -jI +Sv eH Zp od @@ -20708,11 +20697,11 @@ od my MX pH -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq tq @@ -20721,75 +20710,75 @@ tq tq Ke Ke -QB +id Ci Iu HW -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Qo Qo -QB -QB -QB +id +id +id mq bM kU -FI -QB -QB -QB -QB -Zx +NB +id +id +id +id +kM vm ij Jy -Zx -QB -QB -QB -FI -QB -QB -QB -QB -QB -QB -QB +kM +id +id +id +NB +id +id +id +id +id +id +id Ke Ke tq @@ -20797,77 +20786,77 @@ tq (91,1,1) = {" tq Ke -QB -QB -QB +id +id +id kU oa kU -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Qo Qo -QB -QB -QB -QB +id +id +id +id xx kU kU -QB -QB -QB -QB -Zx +id +id +id +id +kM Te ev YU Tx -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id Ke tq "} @@ -20877,57 +20866,57 @@ Ke Ke Ke Ke -QB +id Ci Iu HW -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id ZV kU kU -QB -QB -QB -QB -QB +id +id +id +id +id rj qK GD @@ -20938,73 +20927,73 @@ IB IB IB IB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id Ke Ke tq "} (93,1,1) = {" tq -QB -QB +id +id tq Ke Ke -QB +id kU oa kU -FI -QB -QB -QB -QB -FI -QB -QB -QB -Oy -QB -QB -QB -QB -QB -QB -FI -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +NB +id +id +id +id +NB +id +id +id +LQ +id +id +id +id +id +id +NB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id ZV kU kU -QB -QB -QB -QB -Zx +id +id +id +id +kM wB qK Uk @@ -21012,28 +21001,28 @@ Mj IB Ez Ma -ym +jk gP IB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id Ke tq tq "} (94,1,1) = {" tq -QB +id tq tq tq Ke Ke -QB +id Ci CC my @@ -21043,7 +21032,7 @@ od od my EG -SF +Th EG my od @@ -21055,48 +21044,48 @@ od my WW HW -QB -QB -QB -QB -FI -QB -QB -QB -QB -QB -QB -FI -QB -QB -QB -QB -QB -FI +id +id +id +id +NB +id +id +id +id +id +id +NB +id +id +id +id +id +NB kU Ox kU -QB -QB -QB -QB -QB -QB -Zx -QB +id +id +id +id +id +id +kM +id IB -WU +HN IB OO SW qy pp IB -QB -QB -QB -QB -QB +id +id +id +id +id Ke Ke tq @@ -21104,32 +21093,32 @@ tq "} (95,1,1) = {" tq -QB +id tq tq tq tq Ke Ke -QB -QB -FI -QB -QB -QB -QB -FI +id +id +NB +id +id +id +id +NB Xk GM ox -FI -QB -QB -QB -QB -QB -QB -FI +NB +id +id +id +id +id +id +NB kU qQ od @@ -21152,15 +21141,15 @@ od my MX pH -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id IB Zv nv @@ -21169,11 +21158,11 @@ Xl KW DH IB -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq tq @@ -21181,55 +21170,55 @@ tq "} (96,1,1) = {" tq -QB +id tq tq tq tq tq Ke -QB -QB -QB -QB -QB -FI -QB +id +id +id +id +id +NB +id Zc Ig xg vk Zc -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -FI -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +NB +id +id +id +id +id kU -FI -QB -QB -QB -QB -QB -FI +NB +id +id +id +id +id +NB kU -QB -QB +id +id lr lr lr @@ -21246,10 +21235,10 @@ jl wt mi IB -QB -QB -QB -QB +id +id +id +id Ke Ke tq @@ -21258,18 +21247,18 @@ tq "} (97,1,1) = {" tq -QB +id tq tq tq tq tq Ke -QB -QB -QB -QB -FI +id +id +id +id +NB qq ZW GG @@ -21284,29 +21273,29 @@ lk VQ cQ cQ -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id lr vW hz @@ -21323,10 +21312,10 @@ JY Xv if IB -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -21340,18 +21329,18 @@ tq tq tq tq -QB +id Ke -QB -QB -QB -QB -QB +id +id +id +id +id FL nu If -XN -yk +If +Hi WB DE DE @@ -21361,29 +21350,29 @@ DE aK DE cQ -FI -QB -QB -QB +NB +id +id +id mx -QB -Oy +id +LQ ws ws ws -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id lr rK oE @@ -21397,13 +21386,13 @@ jV RU IE cb -lQ +Nd Me IB -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -21417,13 +21406,13 @@ tq tq tq tq -QB +id Ke Ke Ke Ke -QB -QB +id +id FL xe GW @@ -21449,18 +21438,18 @@ cS cS yA EJ -FI +NB Zc Zc Zc Zc Zc Zc -QB -QB -QB -QB -QB +id +id +id +id +id lr vW hz @@ -21472,15 +21461,15 @@ bu IB Ef lp -Zh +oz Tv nS pp IB -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -21493,14 +21482,14 @@ tq tq tq tq -QB -QB -QB +id +id +id tq tq Ke -QB -QB +id +id FL wq Fa @@ -21530,14 +21519,14 @@ ZX Zc Sk bX -hX +Ya xk Zc -QB -QB -QB -QB -QB +id +id +id +id +id lr lr lr @@ -21554,10 +21543,10 @@ Un sG sG IB -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -21568,16 +21557,16 @@ tq tq tq tq -QB -QB -QB -QB -QB +id +id +id +id +id tq Ke Ke -QB -QB +id +id FL wq yC @@ -21610,15 +21599,15 @@ dq rQ Dr Zc -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id IB gs sA @@ -21631,13 +21620,13 @@ OT uO IH IB -QB -QB -QB -QB +id +id +id +id Ke Ke -QB +id tq tq "} @@ -21646,15 +21635,15 @@ tq tq tq tq -QB -QB +id +id tq tq tq Ke -QB -QB -QB +id +id +id FL wq yC @@ -21679,23 +21668,23 @@ Ss Ss BB wq -Wg +Ve ZX Zc UM bX -aR +mD XZ Zc -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id IB Oa IB @@ -21704,15 +21693,15 @@ IB IB SK hJ -BI -tQ +ao +Xh Ul IB -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq tq @@ -21722,16 +21711,16 @@ tq tq tq tq -QB -QB -QB +id +id +id tq tq tq Ke -QB -QB -QB +id +id +id FL PJ yC @@ -21756,7 +21745,7 @@ Ss Ss BB MG -Ay +HE cQ Zc Zc @@ -21764,32 +21753,32 @@ Zc Zc Zc Zc -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id IB -kx -no -lj -em +pU +kv +Kq +rn IB IB IB -nM +sZ IB IB IB -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq tq @@ -21798,8 +21787,8 @@ tq (104,1,1) = {" tq tq -QB -QB +id +id tq tq tq @@ -21807,8 +21796,8 @@ tq tq Ke Ke -QB -FI +id +NB mQ Qi yC @@ -21833,27 +21822,27 @@ Ss Ss BB Qi -rs +MD DE -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id IB -kx +pU FZ -lj +Kq IC IB lw @@ -21862,11 +21851,11 @@ rN CN vU IB -QB -QB -QB -QB -QB +id +id +id +id +id Ke tq tq @@ -21875,7 +21864,7 @@ tq (105,1,1) = {" tq tq -QB +id tq tq tq @@ -21884,8 +21873,8 @@ tq tq tq Ke -QB -QB +id +id FL Qi yC @@ -21912,21 +21901,21 @@ BB Qi DE DE -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id IB nE ol @@ -21939,10 +21928,10 @@ OB pk tM IB -QB -QB -QB -QB +id +id +id +id Ke Ke tq @@ -21961,8 +21950,8 @@ tq tq tq Ke -QB -QB +id +id FL kY yC @@ -21988,22 +21977,22 @@ Ss BB Qi DE -mW -FI +Ll +NB aH kU kU kU MB -FI +NB Ko uN -NR -NR +CJ +CJ uN eX -FI -QB +NB +id IB db UA @@ -22016,10 +22005,10 @@ dw cu tM IB -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -22038,7 +22027,7 @@ tq tq tq Ke -QB +id ZA TE Qi @@ -22075,8 +22064,8 @@ JV JV DM Bf -ap -ap +nn +nn Bf Yk zt @@ -22093,10 +22082,10 @@ dw Ki YO IB -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -22113,10 +22102,10 @@ tq tq tq tq -QB +id Ke -QB -QB +id +id FL Qi yC @@ -22170,10 +22159,10 @@ zn Dz tM IB -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -22188,12 +22177,12 @@ tq tq tq tq -QB -QB -QB +id +id +id Ke Ke -QB +id FL Qi yC @@ -22233,10 +22222,10 @@ Se XJ XJ XJ -YG +zs OV Mc -jd +CT kS ch mz @@ -22247,10 +22236,10 @@ Hn kR vO IB -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -22265,12 +22254,12 @@ tq tq tq tq -QB -QB -QB +id +id +id tq Ke -FI +NB WR Co yC @@ -22296,22 +22285,22 @@ Ss BB Qi an -kI -FI +Zj +NB BV -QB -QB -QB -QB -FI +id +id +id +id +NB WX np AA np nr MB -FI -QB +NB +id IB IB IB @@ -22324,10 +22313,10 @@ IB IB IB IB -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -22347,8 +22336,8 @@ tq tq tq Ke -QB -QB +id +id oU yC Ss @@ -22374,37 +22363,37 @@ BB Qi DE sS -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Ke Ke Ke @@ -22424,8 +22413,8 @@ tq tq tq Ke -QB -QB +id +id Zs mk Ss @@ -22451,59 +22440,59 @@ BB Qi Yg sS -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -Ke -Ke -Ke -Ke -Ke -QB -QB -QB -QB -QB -QB -QB -Ke -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +Ke +Ke +Ke +Ke +Ke +id +id +id +id +id +id +id +Ke +id tq "} (113,1,1) = {" tq tq tq -QB -QB +id +id tq tq tq tq tq -QB +id Ke -QB -QB -FI +id +id +NB hb Ss Ss @@ -22528,38 +22517,38 @@ BB eA DW uw -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Ke Ke tq tq tq Ke -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id Ke Ke tq @@ -22568,19 +22557,19 @@ tq (114,1,1) = {" tq tq -QB -QB -QB -QB +id +id +id +id tq tq tq tq -QB +id Ke -QB -QB -QB +id +id +id OR Ss Ss @@ -22604,26 +22593,26 @@ Ss iv Wu of -FI -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB -QB +NB +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id +id Ke Ke tq @@ -22632,10 +22621,10 @@ tq tq Ke Ke -QB -QB -QB -QB +id +id +id +id Ke Ke tq @@ -22644,12 +22633,12 @@ tq "} (115,1,1) = {" tq -QB -QB -QB -QB -QB -QB +id +id +id +id +id +id tq tq tq @@ -22657,41 +22646,41 @@ tq Ke Ke Ke -QB -ki -uk -uk -uk -uk -uk -uk -uk -uk -uk -uk -uk -uk -uk -uk -uk -uk -uk -uk -uk -xF -QB -QB -QB -QB +id +Qq +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +SS +QO +id +id +id +id Ke Ke Ke Ke Ke -QB -QB -QB -QB +id +id +id +id Ke Ke Ke @@ -22699,7 +22688,7 @@ Ke Ke Ke Ke -QB +id Ke Ke tq @@ -22709,10 +22698,10 @@ tq tq tq Ke -QB -QB -QB -QB +id +id +id +id Ke tq tq @@ -22721,11 +22710,11 @@ tq "} (116,1,1) = {" tq -QB -QB -QB -QB -QB +id +id +id +id +id tq tq tq @@ -22756,7 +22745,7 @@ kU kU kU hK -QB +id Ke Ke Ke @@ -22784,11 +22773,11 @@ tq tq tq tq -QB +id Ke -QB -QB -QB +id +id +id Ke Ke tq @@ -22800,7 +22789,7 @@ tq tq tq tq -QB +id tq tq tq @@ -22812,40 +22801,40 @@ tq tq tq Ke -hn -hn -hn -hn -hn -hn -hn -hn -hn -hn -hn -hn -hn -hn -hn -hn -hn -hn -hn -hn -hn +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk +Hk Ke Ke tq tq tq tq -QB -QB -QB -QB +id +id +id +id tq -QB -QB +id +id tq tq tq @@ -22865,7 +22854,7 @@ tq Ke Ke Ke -QB +id Ke tq tq @@ -22916,12 +22905,12 @@ tq tq tq tq -QB -QB -QB +id +id +id tq tq -QB +id tq tq tq diff --git a/_maps/RandomRuins/SpaceRuins/spacemall.dmm b/_maps/RandomRuins/SpaceRuins/spacemall.dmm index dc7fd7e0b454..a8413ce407c3 100644 --- a/_maps/RandomRuins/SpaceRuins/spacemall.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacemall.dmm @@ -950,19 +950,6 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall/maint) -"dJ" = ( -/obj/effect/decal/cleanable/blood/gibs/body, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/spacemall/maint) "dK" = ( /obj/effect/decal/cleanable/blood/gibs, /obj/structure/cable{ @@ -1324,16 +1311,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop) -"eT" = ( -/obj/structure/rack, -/obj/effect/turf_decal/corner/transparent/black/diagonal, -/obj/item/paper{ - name = "Cheap Kalixcian Phrasebook"; - default_raw_text = "Rsku suok sz zalo - My sugarcube is full of eels." - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/spacemall/shop) "eU" = ( /obj/structure/mirror{ pixel_y = -30 @@ -1877,16 +1854,6 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/wood, /area/ruin/space/has_grav/spacemall/maint) -"hh" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/turf/open/floor/plating, -/area/ruin/space/has_grav/spacemall/maint) "hj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 6 @@ -2161,6 +2128,16 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall/shop2) +"ii" = ( +/obj/effect/decal/cleanable/blood/gibs/body, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/spacemall/maint) "im" = ( /obj/effect/turf_decal/corner/transparent/red/diagonal, /obj/structure/disposalpipe/junction/yjunction{ @@ -2972,18 +2949,6 @@ "ll" = ( /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall) -"lm" = ( -/obj/machinery/door/window{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/spacemall/shop) "ln" = ( /obj/structure/rack, /obj/effect/turf_decal/siding/thinplating/dark/end{ @@ -3044,6 +3009,15 @@ /obj/structure/table, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall) +"lw" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/spacemall/maint) "lx" = ( /obj/effect/turf_decal/corner/transparent/black/diagonal, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, @@ -4693,22 +4667,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall) -"rp" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating, -/area/ruin/space/has_grav/spacemall/maint) "rq" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 @@ -5174,19 +5132,6 @@ }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/spacemall) -"sZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/spacemall/shop) "td" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -5225,6 +5170,21 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/dorms) +"tj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/spacemall/maint) "tl" = ( /obj/structure/rack, /obj/structure/window/reinforced/spawner, @@ -5929,24 +5889,6 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/spacemall) -"vO" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/spacemall/dorms) "vQ" = ( /mob/living/simple_animal/hostile/poison/giant_spider{ environment_smash = 0 @@ -6266,6 +6208,22 @@ /obj/effect/turf_decal/box/white, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop) +"xh" = ( +/obj/effect/turf_decal/corner/opaque/blue/half, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ruin/space/has_grav/spacemall/shop2) "xo" = ( /obj/structure/rack, /obj/effect/turf_decal/siding/thinplating/dark, @@ -6898,21 +6856,6 @@ /obj/effect/decal/cleanable/plasma, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall) -"zA" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/spacemall/shop) "zB" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/spider/stickyweb, @@ -7798,25 +7741,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop) -"Dd" = ( -/obj/effect/turf_decal/corner/opaque/blue/half, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/ruin/space/has_grav/spacemall/shop2) "Df" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 4 @@ -8121,22 +8045,6 @@ }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/shop) -"Ei" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating, -/area/ruin/space/has_grav/spacemall/maint) "Ek" = ( /obj/machinery/camera/autoname{ dir = 6; @@ -9061,6 +8969,16 @@ /obj/effect/turf_decal/corner/transparent/green/diagonal, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/spacemall) +"Ht" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/spacemall/shop) "Hv" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile/indestructable, @@ -9245,6 +9163,16 @@ name = "bathroom floor" }, /area/ruin/space/has_grav/spacemall) +"Im" = ( +/obj/structure/rack, +/obj/effect/turf_decal/corner/transparent/black/diagonal, +/obj/item/paper{ + name = "Cheap Kalixcian Phrasebook"; + default_raw_text = "Rsku suok sz zalo - My sugarcube is full of eels." + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/spacemall/shop) "In" = ( /obj/structure/cable{ icon_state = "4-8" @@ -9379,22 +9307,6 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall/maint) -"IN" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating, -/area/ruin/space/has_grav/spacemall/maint) "IO" = ( /obj/effect/decal/cleanable/blood/footprints{ dir = 1 @@ -9774,6 +9686,19 @@ }, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/spacemall) +"KJ" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 9 + }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating, +/area/ruin/space/has_grav/spacemall/maint) "KL" = ( /obj/effect/turf_decal/corner/transparent/blue{ dir = 4 @@ -10366,6 +10291,15 @@ /obj/structure/spider/stickyweb, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall) +"ME" = ( +/obj/machinery/door/window{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/spacemall/shop) "MF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ dir = 10 @@ -11034,24 +10968,6 @@ }, /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall/shop) -"Pc" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/spacemall/maint) "Pe" = ( /obj/structure/cable{ icon_state = "4-8" @@ -11686,6 +11602,21 @@ /obj/effect/decal/cleanable/vomit/old, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall) +"Rj" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/spacemall/maint) "Rk" = ( /obj/machinery/door/airlock/external/glass, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, @@ -11940,6 +11871,22 @@ /obj/structure/catwalk/over/plated_catwalk, /turf/open/floor/plating, /area/ruin/space/has_grav/spacemall/maint) +"Ss" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/spacemall) "St" = ( /obj/effect/turf_decal/corner/opaque/blue/three_quarters{ dir = 8 @@ -13241,32 +13188,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/dorms) -"Xz" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/spacemall/maint) -"XB" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating, -/area/ruin/space/has_grav/spacemall/maint) "XC" = ( /obj/structure/table/reinforced, /turf/open/floor/plasteel, @@ -13497,24 +13418,6 @@ /obj/structure/table, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/spacemall/shop2) -"Yz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/spacemall/maint) "YA" = ( /obj/item/storage/toolbox/electrical, /obj/item/stack/sheet/mineral/uranium/five, @@ -14760,7 +14663,7 @@ tZ tZ yt ly -vO +qr fR dn BH @@ -16098,7 +16001,7 @@ QS fi YP zY -Yz +tj zY ED fl @@ -16184,7 +16087,7 @@ Kh Kh Hv bA -IN +vn YI Yo Bg @@ -16287,7 +16190,7 @@ Ge HY Yo PB -rp +KJ Hn Pq ki @@ -16394,11 +16297,11 @@ QL Vy Yo wE -dJ +ii pe he td -sZ +Ht VW hQ RH @@ -16444,11 +16347,11 @@ xZ Vy Yo sL -Xz +lw pe xY Sm -lm +ME LY Ac pe @@ -16466,7 +16369,7 @@ vS Wr xp TZ -Dd +xh Yo ZS Wb @@ -16535,7 +16438,7 @@ Kh qK sy sT -XB +NX NX PM og @@ -16618,7 +16521,7 @@ pQ St nh Yo -Ei +ZS cr Hv Kh @@ -16953,7 +16856,7 @@ nM iT pe UW -AG +Ss kv pU XD @@ -17144,7 +17047,7 @@ FM kj qK aA -Ei +ZS pe zS XC @@ -17199,7 +17102,7 @@ pe cA eW LP -zA +DU kr RG dO @@ -17494,7 +17397,7 @@ cD In Yo Yo -Pc +Rj pe pe pe @@ -17716,7 +17619,7 @@ to OV sp ny -hh +Vt Lt bQ Hv @@ -17747,7 +17650,7 @@ mt ps Wd pe -eT +Im TX LS Qf diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm index d91f8f24b4b6..5b3bedb82a7d 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_abandoned_mechbay.dmm @@ -868,15 +868,6 @@ /obj/machinery/light/dim/directional/east, /turf/open/floor/plasteel/tech, /area/ruin/wasteplanet/abandoned_mechbay/engineering) -"iG" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - dir = 2 - }, -/turf/open/floor/concrete/slab_4, -/area/ruin/wasteplanet/abandoned_mechbay/mainhall) "iR" = ( /obj/effect/turf_decal/trimline/transparent/neutral/filled/warning{ dir = 8 @@ -1196,9 +1187,6 @@ }, /turf/open/floor/concrete/slab_4, /area/ruin/wasteplanet/abandoned_mechbay/mainhall) -"ms" = ( -/turf/closed/mineral/random/wasteplanet, -/area/ruin/wasteplanet/abandoned_mechbay) "mx" = ( /obj/machinery/camera/autoname{ dir = 10 @@ -1359,6 +1347,9 @@ }, /turf/open/floor/concrete/slab_1, /area/ruin/wasteplanet/abandoned_mechbay/mainhall) +"oI" = ( +/turf/closed/mineral/random/wasteplanet, +/area/ruin/wasteplanet/abandoned_mechbay) "oL" = ( /obj/effect/turf_decal/trimline/transparent/neutral/filled/warning{ dir = 4 @@ -2589,9 +2580,6 @@ "DU" = ( /turf/closed/wall/concrete, /area/ruin/wasteplanet/abandoned_mechbay/mechlab) -"DV" = ( -/turf/closed/mineral/random/wasteplanet, -/area/overmap_encounter/planetoid/cave/explored) "DY" = ( /obj/machinery/door/airlock/engineering{ name = "Mech Lab"; @@ -3504,6 +3492,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/concrete/slab_1, /area/overmap_encounter/planetoid/cave/explored) +"Pl" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/machinery/camera/autoname, +/turf/open/floor/concrete/slab_4, +/area/ruin/wasteplanet/abandoned_mechbay/mainhall) "PF" = ( /obj/effect/turf_decal/trimline/transparent/neutral/filled/warning{ dir = 4 @@ -3892,6 +3887,9 @@ dir = 1 }, /area/ruin/wasteplanet/abandoned_mechbay/bay2) +"Ur" = ( +/turf/closed/mineral/random/wasteplanet, +/area/overmap_encounter/planetoid/cave/explored) "UH" = ( /obj/machinery/light/small/directional/east, /turf/open/floor/plating/asteroid/wasteplanet, @@ -4317,12 +4315,12 @@ vd vd vd vd -DV +Ur vd -DV +Ur PK -DV -DV +Ur +Ur vd vd vd @@ -4360,19 +4358,19 @@ vd vd vd vd -DV -DV -DV -DV -DV -DV -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur vd vd vd @@ -4408,21 +4406,21 @@ vd vd vd vd -DV -DV -DV -DV +Ur +Ur +Ur +Ur PK -DV -DV -DV -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur vd vd vd @@ -4456,22 +4454,22 @@ vd vd vd vd -DV -DV +Ur +Ur PK -DV -DV -DV -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur PK PK -DV +Ur vd vd vd @@ -4504,24 +4502,24 @@ vd vd vd vd -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur PK -DV -DV -DV -DV +Ur +Ur +Ur +Ur eb -DV -DV -DV -DV +Ur +Ur +Ur +Ur PK -DV -DV +Ur +Ur vd vd PK @@ -4552,30 +4550,30 @@ vd vd vd vd -DV -DV +Ur +Ur PK -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur eb eb tM Hh eb -DV -DV -DV -DV +Ur +Ur +Ur +Ur PK -DV -DV +Ur +Ur vd -DV -DV -DV +Ur +Ur +Ur vd vd vd @@ -4600,13 +4598,13 @@ vd vd vd vd -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur eb tM eb @@ -4616,19 +4614,19 @@ yy yy yy qb -DV -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur PK -DV -DV -DV -DV +Ur +Ur +Ur +Ur vd vd vd @@ -4648,13 +4646,13 @@ vd vd vd vd -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur eb kJ eb @@ -4665,20 +4663,20 @@ pG aw pG Tb -DV -DV -DV -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur PK -DV +Ur PK -DV +Ur vd vd vd @@ -4695,14 +4693,14 @@ vd vd vd vd -DV -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur eb eb tM @@ -4724,14 +4722,14 @@ dR dR eb eb -DV -DV -DV -DV +Ur +Ur +Ur +Ur vd vd au -ms +oI vd vd vd @@ -4744,13 +4742,13 @@ vd vd vd vd -DV -DV -DV +Ur +Ur +Ur PK -DV -DV -DV +Ur +Ur +Ur tM eb ib @@ -4773,13 +4771,13 @@ DU dR dR eb -DV -DV -DV -DV +Ur +Ur +Ur +Ur PK vd -ms +oI vd vd vd @@ -4793,11 +4791,11 @@ vd vd vd vd -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur eb Hh tM @@ -4822,15 +4820,15 @@ DU DU dR dR -DV -DV +Ur +Ur PK -DV -DV -DV -DV +Ur +Ur +Ur +Ur vd -ms +oI vd vd "} @@ -4841,12 +4839,12 @@ vd vd vd vd -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur tM eb tM @@ -4873,12 +4871,12 @@ TL dR dR PK -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur PK vd vd @@ -4889,12 +4887,12 @@ vd vd vd vd -DV -DV -DV +Ur +Ur +Ur PK -DV -DV +Ur +Ur tM eb kJ @@ -4922,13 +4920,13 @@ uO Hm dR dR -DV -DV -DV +Ur +Ur +Ur PK -DV -DV -DV +Ur +Ur +Ur vd vd "} @@ -4938,12 +4936,12 @@ vd vd vd vd -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur eb eb Og @@ -4973,26 +4971,26 @@ NW dR dR PK -DV -DV -DV -DV -DV -ms -ms +Ur +Ur +Ur +Ur +Ur +oI +oI "} (15,1,1) = {" vd vd vd vd -DV -DV -DV +Ur +Ur +Ur PK -DV -DV -DV +Ur +Ur +Ur eb eb eb @@ -5022,11 +5020,11 @@ Kj Lv dR dR -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur vd vd "} @@ -5035,13 +5033,13 @@ vd vd vd vd -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur tM eb eb @@ -5071,11 +5069,11 @@ wq wq wq wq -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur PK vd "} @@ -5084,13 +5082,13 @@ vd vd vd vd -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur eb eb eb @@ -5120,26 +5118,26 @@ QM lt wq wq -DV +Ur PK -DV -DV -DV -DV +Ur +Ur +Ur +Ur vd "} (18,1,1) = {" vd vd vd -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur PK -DV +Ur eb eb eb @@ -5169,26 +5167,26 @@ kD fY wq wq -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur vd vd "} (19,1,1) = {" vd vd -DV -DV -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur tM Hh tM @@ -5218,9 +5216,9 @@ DN IY wq wq -DV -DV -DV +Ur +Ur +Ur vd vd vd @@ -5229,14 +5227,14 @@ vd (20,1,1) = {" vd vd -DV -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur tM eb eb @@ -5267,9 +5265,9 @@ DN Jf wq wq -DV -DV -DV +Ur +Ur +Ur vd vd vd @@ -5278,13 +5276,13 @@ vd (21,1,1) = {" vd vd -DV +Ur PK -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur tM eb eb @@ -5316,8 +5314,8 @@ BA pa wq wq -DV -DV +Ur +Ur vd vd vd @@ -5325,16 +5323,16 @@ vd vd "} (22,1,1) = {" -DV -DV -DV -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur eb eb kJ @@ -5365,8 +5363,8 @@ UK wq wq wq -DV -DV +Ur +Ur vd vd vd @@ -5374,16 +5372,16 @@ vd vd "} (23,1,1) = {" -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur PK -DV -DV -DV -DV +Ur +Ur +Ur +Ur eb eb eb @@ -5414,8 +5412,8 @@ HK sG Hj wq -DV -DV +Ur +Ur PK vd vd @@ -5424,14 +5422,14 @@ vd "} (24,1,1) = {" vd -DV -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur Og eb eb @@ -5463,30 +5461,30 @@ eR vj ec wq -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur vd vd "} (25,1,1) = {" vd vd -DV +Ur vd vd -DV -DV -DV +Ur +Ur +Ur eb eb Hh eb Og -DV -DV +Ur +Ur KG VG VG @@ -5512,10 +5510,10 @@ WT wq wq wq -DV -DV -DV -DV +Ur +Ur +Ur +Ur PK vd vd @@ -5528,13 +5526,13 @@ vd vd vd vd -DV +Ur xz xz eb eb -DV -DV +Ur +Ur KG KG eA @@ -5549,7 +5547,7 @@ ir DC fd zE -iG +Pl aM iU YX @@ -5561,11 +5559,11 @@ Bw fX wq wq -DV +Ur PK -DV -DV -DV +Ur +Ur +Ur vd vd "} @@ -5579,10 +5577,10 @@ vd vd vd xz -DV -DV -DV -DV +Ur +Ur +Ur +Ur KG KG VG @@ -5610,10 +5608,10 @@ zR Vx wq wq -DV -DV -DV -DV +Ur +Ur +Ur +Ur vd vd vd @@ -5629,8 +5627,8 @@ vd vd vd PK -DV -DV +Ur +Ur KG KG Dk @@ -5659,8 +5657,8 @@ Yf qH wq wq -DV -DV +Ur +Ur PK vd vd @@ -5678,8 +5676,8 @@ vd vd vd vd -DV -DV +Ur +Ur KG VG Om @@ -5708,10 +5706,10 @@ hv tW wq wq -DV -DV +Ur +Ur vd -DV +Ur vd vd vd @@ -5728,7 +5726,7 @@ vd vd vd vd -DV +Ur KG VG VG @@ -5757,8 +5755,8 @@ Ec YP wq wq -DV -DV +Ur +Ur vd vd vd @@ -5777,7 +5775,7 @@ vd vd vd vd -DV +Ur aX nF nF @@ -5806,12 +5804,12 @@ wq wq wq wq -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur vd "} (32,1,1) = {" @@ -5825,7 +5823,7 @@ vd vd vd vd -DV +Ur PK aX nF @@ -5855,10 +5853,10 @@ ET gJ Im Im -DV +Ur PK -DV -DV +Ur +Ur vd vd vd @@ -5872,10 +5870,10 @@ vd vd vd vd -DV -DV +Ur +Ur PK -DV +Ur aX nF JY @@ -5903,10 +5901,10 @@ uQ Vk gJ Im -DV -DV -DV -DV +Ur +Ur +Ur +Ur PK vd vd @@ -5922,9 +5920,9 @@ vd vd vd xz -DV -DV -DV +Ur +Ur +Ur aX nF ey @@ -5952,11 +5950,11 @@ uQ Iq gJ Im -DV +Ur PK -DV -DV -DV +Ur +Ur +Ur vd vd vd @@ -6001,10 +5999,10 @@ uQ Iq gJ Im -DV -DV -DV -DV +Ur +Ur +Ur +Ur vd vd vd @@ -6050,9 +6048,9 @@ uQ Hn gJ Im -DV -DV -DV +Ur +Ur +Ur vd vd vd @@ -6099,10 +6097,10 @@ Js CM gJ Im -DV -DV +Ur +Ur PK -DV +Ur vd vd vd @@ -6148,11 +6146,11 @@ iB CM gJ Im -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur vd vd vd @@ -6197,10 +6195,10 @@ Im Im Im Im -DV -DV -DV -DV +Ur +Ur +Ur +Ur vd vd vd @@ -6216,39 +6214,39 @@ vd vd vd vd -DV -DV -DV +Ur +Ur +Ur uu -DV -DV +Ur +Ur PK -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur PK -DV -DV -DV -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur Im Ad Im -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur PK -DV +Ur vd vd vd @@ -6265,38 +6263,38 @@ vd vd vd vd -DV -DV -DV +Ur +Ur +Ur uu -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur PK -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur PK -DV +Ur vd -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur Im Im Im PK -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur vd vd vd @@ -6313,38 +6311,38 @@ vd vd vd vd -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur PK -DV -DV -DV -DV +Ur +Ur +Ur +Ur PK -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur vd vd PK -DV -DV -DV -DV -DV -DV -DV -DV -DV +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur +Ur PK -DV -DV +Ur +Ur vd vd vd @@ -6368,30 +6366,30 @@ vd vd vd vd -DV +Ur vd -DV -DV +Ur +Ur vd -DV -DV -DV +Ur +Ur +Ur PK vd -DV -DV +Ur +Ur vd vd vd PK -DV +Ur vd vd -DV +Ur vd -DV -DV -DV +Ur +Ur +Ur vd vd vd @@ -6418,28 +6416,28 @@ vd vd vd vd -DV +Ur vd vd -DV +Ur vd vd PK -DV +Ur vd vd -DV +Ur vd vd vd vd vd PK -DV +Ur vd vd PK -DV +Ur vd vd vd @@ -6470,7 +6468,7 @@ vd vd vd vd -DV +Ur vd vd vd diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index 46515e65a7b8..e4b936dc379c 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -1,497 +1,5141 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"f" = ( -/obj/effect/landmark/portal_exit{ - id = "pandora_entrance" +"ar" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/mineral/gold/five, +/obj/item/stack/sheet/mineral/gold/five, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"aD" = ( +/obj/machinery/hydroponics/soil, +/obj/item/reagent_containers/food/snacks/grown/mushroom/chanterelle, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"aL" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" }, -/turf/open/indestructible/hierophant, -/area/ruin) -"k" = ( -/obj/effect/portal/permanent/one_way{ - id = "pandora_entrance" +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -7; + pixel_y = 8 }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"bc" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/ammo_box/c9mm, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet) +"bd" = ( +/turf/open/water/waste/lit, +/area/ruin/wasteplanet) +"bt" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/plating/asteroid/wasteplanet/lit, +/area/ruin/wasteplanet) +"bL" = ( +/obj/structure/fluff/divine/convertaltar, +/obj/item/nullrod/tribal_knife, +/obj/item/clothing/accessory/pandora_hope, +/turf/open/indestructible/hierophant/two/waste, +/area/ruin/wasteplanet) +"bY" = ( +/obj/structure/salvageable/computer{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"cd" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"cg" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"cn" = ( +/obj/structure/railing/wood{ + dir = 1 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"df" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife/combat/bone, +/obj/item/flashlight/flare/torch, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"dh" = ( +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"dH" = ( +/turf/closed/indestructible/riveted/hierophant, +/area/ruin/wasteplanet) +"er" = ( +/obj/structure/table/wood, +/obj/item/restraints/handcuffs/cable/sinew, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"eB" = ( +/obj/item/reagent_containers/glass/bucket/wooden, +/turf/open/floor/plating/grass/wasteplanet, +/area/ruin/wasteplanet) +"fF" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"fL" = ( +/obj/structure/table/wood, +/obj/item/stack/sheet/bone{ + pixel_x = 10 + }, +/obj/item/flashlight/flare/torch, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"fZ" = ( +/obj/structure/chair/wood/wings, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"ge" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife/combat/bone{ + pixel_x = -20 + }, +/obj/item/reagent_containers/food/snacks/salad/edensalad, +/obj/item/reagent_containers/food/snacks/grown/berries/death{ + pixel_x = 6; + pixel_y = 10 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"gm" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/suit/hooded/cloak/bone, +/obj/item/claymore/bone, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"gr" = ( +/obj/structure/flora/grass/jungle/b, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/rockplanet) -"m" = ( +/area/ruin/wasteplanet) +"gO" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"gX" = ( /obj/effect/light_emitter{ set_cap = 3; set_luminosity = 5 }, -/turf/open/indestructible/hierophant, -/area/ruin) -"n" = ( -/obj/structure/fluff/divine/powerpylon, -/turf/open/indestructible/hierophant, -/area/ruin) -"q" = ( -/obj/structure/window/plasma/fulltile, -/turf/open/indestructible/hierophant, -/area/ruin) -"s" = ( -/turf/open/indestructible/hierophant, -/area/ruin) -"u" = ( -/obj/machinery/light/floor, -/turf/open/indestructible/hierophant, -/area/ruin) -"x" = ( -/turf/open/indestructible/hierophant/two, -/area/ruin) -"z" = ( -/obj/structure/fluff/divine/defensepylon, -/turf/open/indestructible/hierophant/two, -/area/ruin) -"C" = ( +/turf/open/indestructible/hierophant/two/waste, +/area/ruin/wasteplanet) +"hU" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 5 + }, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"hZ" = ( +/obj/structure/railing/wood{ + dir = 8 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"iG" = ( +/obj/structure/salvageable/computer{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"iT" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"iU" = ( /mob/living/simple_animal/hostile/asteroid/elite/pandora/dungeon, /obj/effect/light_emitter{ set_cap = 3; set_luminosity = 5 }, -/turf/open/indestructible/hierophant/two, -/area/ruin) -"I" = ( -/obj/machinery/light/floor, -/turf/open/indestructible/hierophant/two, -/area/ruin) -"J" = ( -/obj/machinery/door/poddoor/gates/indestructible{ - id = "pandora_dead" - }, -/turf/open/indestructible/hierophant/two, -/area/ruin) -"M" = ( -/turf/closed/indestructible/riveted/hierophant, -/area/ruin) -"O" = ( +/turf/open/indestructible/hierophant/two/waste, +/area/ruin/wasteplanet) +"jf" = ( +/obj/item/trash/can{ + icon_state = "shamblers" + }, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"jj" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 7; + pixel_y = 10 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"jk" = ( +/obj/structure/table/wood, +/obj/item/clothing/head/hooded/cloakhood/bone, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"jl" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/water/waste/lit, +/area/ruin/wasteplanet) +"jn" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -7; + pixel_y = 7 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 7; + pixel_y = 10 + }, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"jq" = ( +/obj/structure/table/wood, +/obj/item/stack/sheet/bone, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"jt" = ( +/obj/structure/chair/wood, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"jB" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 6; + pixel_y = 7 + }, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"jF" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/grown/berries/glow, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"jV" = ( +/turf/closed/wall/mineral/wood/nonmetal, +/area/ruin/wasteplanet) +"jY" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 5 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"kc" = ( +/obj/structure/table/wood, +/obj/item/storage/belt/mining/primitive, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"kj" = ( +/obj/structure/table/wood, +/obj/item/stack/sheet/sinew, +/obj/item/stack/sheet/sinew, +/obj/item/stack/sheet/sinew, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"kP" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"kV" = ( +/obj/structure/guncase, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"kZ" = ( +/obj/item/stack/sheet/bone, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"le" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 7; + pixel_y = -2 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"lx" = ( +/obj/structure/fluff/divine/shrine, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"lz" = ( +/obj/structure/chair/comfy/shuttle, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"lD" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/mineral/silver/five, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"lT" = ( +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"lZ" = ( +/obj/structure/chair/wood{ + dir = 1 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"mb" = ( +/obj/structure/destructible/tribal_torch, +/turf/open/floor/plating/grass/wasteplanet, +/area/ruin/wasteplanet) +"mr" = ( +/obj/structure/table/wood, +/obj/item/stack/sheet/bone{ + pixel_x = 11 + }, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"mw" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 5 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/turf/open/indestructible/hierophant/two/waste, +/area/ruin/wasteplanet) +"mA" = ( +/obj/structure/destructible/tribal_torch, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"mE" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -10; + pixel_y = -5 + }, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"mF" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/water/waste/lit, +/area/ruin/wasteplanet) +"mI" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/plating/grass/wasteplanet, +/area/ruin/wasteplanet) +"mO" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 1 + }, +/turf/open/water/waste/lit, +/area/ruin/wasteplanet) +"nq" = ( +/obj/item/stack/sheet/bone, +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"nr" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 6; + pixel_y = -9 + }, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"oi" = ( +/turf/open/water/waste, +/area/ruin/wasteplanet) +"or" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 13; + pixel_y = 7 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"oB" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 7; + pixel_y = -2 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/obj/structure/barricade/wooden, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"oG" = ( +/turf/closed/mineral/random/wasteplanet, +/area/ruin/wasteplanet) +"oI" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 8; + pixel_y = -12 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"pr" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/banner, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"pQ" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/cactus_fruit, +/obj/item/storage/belt/mining/primitive, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"qo" = ( +/obj/structure/closet/cabinet, +/obj/item/spear/bonespear, +/obj/item/clothing/suit/armor/riot/chaplain/studentuni, +/obj/item/reagent_containers/food/snacks/grown/berries/death, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"qs" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = 4; + pixel_x = 8 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = -12; + pixel_x = -11 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = 13; + pixel_x = 4 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = 7; + pixel_x = -11 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = 4; + pixel_x = -4 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"qU" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/suit/armor/riot/chaplain/studentuni, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"rh" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet) +"rT" = ( +/obj/item/toy/plush/goatplushie/angry/realgoat{ + name = "wall-dwelling goat plushie" + }, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"sp" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"sE" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"sV" = ( +/obj/structure/closet/cabinet, +/obj/item/claymore/bone, +/obj/item/clothing/suit/armor/riot/chaplain/studentuni, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"tB" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/obj/effect/mob_spawn/human/corpse/nanotrasensoldier, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"tF" = ( +/obj/machinery/hydroponics/soil, +/obj/item/reagent_containers/food/snacks/grown/mushroom/jupitercup, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"tR" = ( +/obj/structure/closet/crate/grave, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"tU" = ( +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"uc" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"uv" = ( +/obj/structure/table/reinforced, +/obj/item/gem/phoron, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"vd" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"ve" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = 7; + pixel_x = 8 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"vD" = ( +/obj/structure/table/wood, +/obj/item/flashlight/flare/torch, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"wu" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/rockplanet) -"S" = ( +/area/ruin/wasteplanet) +"ww" = ( +/obj/item/stack/sheet/bone, +/obj/structure/chair/wood, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"wA" = ( +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/plating/grass/wasteplanet, +/area/ruin/wasteplanet) +"xj" = ( +/obj/structure/fluff/divine/shrine, /obj/effect/light_emitter{ set_cap = 3; set_luminosity = 5 }, -/turf/open/indestructible/hierophant/two, -/area/ruin) -"X" = ( -/obj/machinery/door/poddoor/gates/indestructible{ - id = "pandora_dead" +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"xk" = ( +/obj/structure/table/wood, +/obj/item/spear/bonespear, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"xu" = ( +/obj/structure/destructible/tribal_torch, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"xB" = ( +/obj/structure/girder, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet) +"xI" = ( +/obj/structure/mineral_door/wood, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"yq" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"yI" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"yT" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = -3; + pixel_x = 4 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 5; + pixel_y = 11 + }, +/obj/structure/mineral_door/wood, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"zs" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"zy" = ( +/obj/effect/mob_spawn/human/corpse/nanotrasenassaultsoldier, +/turf/open/indestructible/hierophant/two/waste, +/area/ruin/wasteplanet) +"zI" = ( +/obj/structure/window/reinforced/fulltile/shuttle, +/obj/structure/grille, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet) +"Al" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"AI" = ( +/obj/structure/flora/rock, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"AK" = ( +/obj/structure/table/wood, +/obj/item/stack/sheet/bone, +/obj/item/stack/sheet/bone, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"AM" = ( +/obj/machinery/door/airlock/titanium, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"Bb" = ( +/mob/living/simple_animal/hostile/skeleton{ + desc = "A villager resurrected by the power of an unknown deity, eternally seeking vengeance for its people." + }, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"Bv" = ( +/obj/structure/bonfire, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"BB" = ( +/turf/open/floor/plating/grass/wasteplanet, +/area/ruin/wasteplanet) +"BL" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet) +"CG" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -9; + pixel_y = 3 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"CH" = ( +/obj/machinery/power/shuttle/engine/electric/bad{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet) +"CW" = ( +/obj/structure/railing/corner/wood{ + dir = 8 + }, +/obj/structure/railing/corner/wood{ + dir = 1 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Dj" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet) +"Du" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Dx" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = 10 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = -3; + pixel_x = -15 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = -3; + pixel_x = 4 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"DF" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/grass/wasteplanet, +/area/ruin/wasteplanet) +"DQ" = ( +/obj/structure/railing/corner/wood{ + dir = 1 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"DX" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = 10 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = -3; + pixel_x = 4 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"DZ" = ( +/turf/open/indestructible/hierophant/two/waste, +/area/ruin/wasteplanet) +"Eb" = ( +/obj/item/gun/ballistic/automatic/pistol/commander/no_mag, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"Eo" = ( +/obj/structure/barricade/wooden, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Et" = ( +/obj/structure/flora/grass/jungle/b, +/obj/item/trash/can{ + icon_state = "lemon-lime" + }, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"Ez" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/turf/open/indestructible/hierophant/two/waste, +/area/ruin/wasteplanet) +"EN" = ( +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Fc" = ( +/mob/living/simple_animal/hostile/skeleton{ + desc = "A villager resurrected by the power of an unknown deity, eternally seeking vengeance for its people." + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Fn" = ( +/obj/item/gun/ballistic/automatic/smg/proto/unrestricted{ + pixel_y = -18 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 6; + pixel_y = 9 }, -/turf/open/indestructible/hierophant, -/area/ruin) -"Y" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/turf/open/indestructible/hierophant/two/waste, +/area/ruin/wasteplanet) +"FP" = ( +/obj/item/kitchen/knife/combat/bone{ + pixel_x = 15 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"FV" = ( +/obj/effect/mob_spawn/human/corpse/nanotrasensoldier, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Gu" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"Gx" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Hc" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 6; + pixel_y = -9 + }, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"Hi" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/water/waste/lit, +/area/ruin/wasteplanet) +"Hl" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -7; + pixel_y = 8 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Ht" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -10; + pixel_y = -5 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = 10; + pixel_x = 4 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 11; + pixel_y = 7 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"HE" = ( +/obj/machinery/hydroponics/soil, +/obj/item/reagent_containers/food/snacks/grown/mushroom/libertycap, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"Ih" = ( +/obj/structure/fluff/divine/defensepylon, +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 5 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"JB" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 5; + pixel_y = 11 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"JD" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 6; + pixel_y = 9 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Ki" = ( /turf/template_noop, /area/template_noop) +"Kx" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -9; + pixel_y = -12 + }, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"KA" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/drinks/trophy/silver_cup, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"KH" = ( +/obj/item/ammo_box/magazine/smgm9mm{ + pixel_y = -6; + pixel_x = -8 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 6; + pixel_y = 9 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"KM" = ( +/obj/structure/bed, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"KO" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -8; + pixel_y = -4 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Li" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/suit/armor/bone, +/obj/item/fireaxe/boneaxe, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Lj" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"Lp" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 11; + pixel_y = 11 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Lz" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -6 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"LB" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/water/waste/lit, +/area/ruin/wasteplanet) +"LW" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Mo" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 5; + pixel_y = 11 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 6; + pixel_y = -9 + }, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"Mp" = ( +/obj/structure/fluff/divine/powerpylon, +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 5 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Mv" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"MA" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -9; + pixel_y = -12 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"MB" = ( +/obj/structure/statue/bone/rib{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"MQ" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 11; + pixel_y = 7 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"MU" = ( +/obj/structure/closet/crate/wooden, +/obj/item/pickaxe, +/obj/item/flashlight/flare/torch, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Ne" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"NA" = ( +/turf/open/floor/plating/asteroid/wasteplanet/lit, +/area/ruin/wasteplanet) +"NS" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 6; + pixel_y = -9 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -7; + pixel_y = 8 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 5; + pixel_y = 11 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"NZ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 1 + }, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"Os" = ( +/obj/effect/turf_decal/weather/dirt/corner, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"Ot" = ( +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"Oz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet) +"OL" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/water/waste/lit, +/area/ruin/wasteplanet) +"OM" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 5; + pixel_y = 11 + }, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"OO" = ( +/obj/structure/table/reinforced, +/obj/item/ammo_box/magazine/co9mm, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"OU" = ( +/obj/effect/mob_spawn/human/corpse/nanotrasenassaultsoldier, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"OV" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 5 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -10; + pixel_y = 7 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Po" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 5; + pixel_y = 11 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"PC" = ( +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"PT" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/mineral/diamond/five, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Qd" = ( +/obj/machinery/hydroponics/soil, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"Qj" = ( +/obj/structure/bonfire, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"QC" = ( +/obj/structure/statue/bone/rib, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"QD" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/water/waste/lit, +/area/ruin/wasteplanet) +"QH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"QW" = ( +/obj/structure/table/wood, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Ro" = ( +/obj/item/gun/ballistic/bow, +/obj/item/ammo_casing/caseless/arrow/wood, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Rx" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"RJ" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"RT" = ( +/obj/structure/table/wood, +/obj/item/spear/bonespear, +/obj/item/stack/sheet/sinew, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"RV" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = 7; + pixel_x = 8 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"St" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/melonfruitbowl, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"SS" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet) +"Tc" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = 10 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 6; + pixel_y = -9 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Tu" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"TU" = ( +/obj/structure/railing/wood{ + dir = 9 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Ut" = ( +/obj/item/trash/can{ + icon_state = "energy_drink" + }, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"Ux" = ( +/obj/item/trash/can, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"UK" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/suit/armor/bone, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"UQ" = ( +/obj/structure/table/wood, +/obj/item/ammo_casing/caseless/arrow/wood{ + pixel_y = -3 + }, +/obj/item/ammo_casing/caseless/arrow/wood{ + pixel_y = 2 + }, +/obj/item/ammo_casing/caseless/arrow/wood{ + pixel_y = 7 + }, +/obj/item/ammo_casing/caseless/arrow/wood{ + pixel_y = 12 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"UW" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = 1; + pixel_x = 8 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Vb" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"Vm" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_y = 7; + pixel_x = 8 + }, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"VF" = ( +/obj/effect/decal/remains/human, +/obj/structure/chair/wood, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"VP" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"VT" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/titanium/white, +/area/ruin/wasteplanet) +"Wn" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"Ww" = ( +/obj/machinery/hydroponics/soil, +/obj/item/reagent_containers/food/snacks/grown/mushroom/plumphelmet, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"WS" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 4 + }, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"Xd" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/mineral/gold/five, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Xq" = ( +/mob/living/simple_animal/hostile/skeleton{ + desc = "A villager resurrected by the power of an unknown deity, eternally seeking vengeance for its people." + }, +/turf/open/floor/plating/grass/wasteplanet, +/area/ruin/wasteplanet) +"Xx" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/mortar/bone, +/obj/item/pestle, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"XL" = ( +/obj/machinery/power/smes/shuttle/precharged{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet) +"XQ" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty" + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 6; + pixel_y = 9 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Yg" = ( +/obj/structure/closet/crate/wooden, +/obj/item/shovel/serrated, +/obj/item/flashlight/flare/torch, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Yi" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/head/crown, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"Yn" = ( +/obj/item/scythe, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"Yq" = ( +/obj/effect/turf_decal/weather/dirt/corner{ + dir = 8 + }, +/turf/open/water/waste, +/area/ruin/wasteplanet) +"Yw" = ( +/obj/item/gun/ballistic/automatic/pistol/commander/no_mag, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"YM" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 11; + pixel_y = 7 + }, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"YY" = ( +/obj/structure/frame/machine, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet) +"Zg" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/dirt/old/waste, +/area/ruin/wasteplanet) +"Zq" = ( +/turf/closed/wall/mineral/titanium, +/area/ruin/wasteplanet) +"Zr" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/salad/herbsalad, +/turf/open/floor/wood/waste, +/area/ruin/wasteplanet) +"Zw" = ( +/obj/structure/fluff/divine/nexus, +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 5 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) +"ZU" = ( +/obj/structure/girder, +/obj/structure/girder, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet) +"ZZ" = ( +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = -11; + pixel_y = -5 + }, +/obj/item/ammo_casing/spent{ + icon_state = "pistol-brass-empty"; + pixel_x = 6; + pixel_y = 9 + }, +/turf/open/indestructible/hierophant/waste, +/area/ruin/wasteplanet) (1,1,1) = {" -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -Y -Y -Y -Y -Y -Y +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki "} (2,1,1) = {" -M -m -s -s -M -s -s -s -s -s -M -s -s -m -M -Y -Y -Y -Y -Y -Y +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +NA +NA +NA +bt +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki "} (3,1,1) = {" -M -s -n -s -q -s -s -s -s -s -q -s -n -s -M -Y -Y -Y -Y -Y -Y +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +Ki +Ki +Ki +Ki +Ki +Ki +Ki "} (4,1,1) = {" -M -s -s -q -q -s -s -u -s -s -q -q -s -s -M -Y -Y -Y -Y -Y -Y +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +NA +NA +Zq +NA +NA +NA +NA +Zq +NA +bt +NA +NA +NA +NA +NA +NA +NA +NA +NA +NA +Ki +Ki +Ki +Ki +Ki +Ki "} (5,1,1) = {" -M -M -q -q -u -s -s -s -s -s -u -q -q -M -M -Y -Y -Y -Y -Y -Y +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +NA +NA +NA +Zq +YY +Zq +Zq +CH +Zq +NA +NA +NA +NA +oG +oG +NA +NA +NA +NA +NA +NA +NA +Ki +Ki +Ki +Ki +Ki "} (6,1,1) = {" -M -s -s -s -s -s -s -s -s -s -s -s -s -s -M -Y -Y -Y -Y -Y -Y +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +NA +NA +Zq +Zq +XL +rh +bc +XL +xB +xB +NA +NA +oG +oG +oG +NA +NA +NA +NA +NA +NA +NA +Ki +Ki +Ki +Ki +Ki "} (7,1,1) = {" -M -s -s -s -M -M -x -x -x -M -M -s -s -s -M -M -M -M -M -M -O +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +NA +bt +NA +Zq +lz +SS +BL +Oz +Dj +kP +Zq +NA +NA +oG +oG +NA +NA +NA +NA +NA +NA +NA +NA +NA +Ki +Ki +Ki +Ki "} (8,1,1) = {" -M -s -u -s -M -z -x -x -x -z -M -s -u -s -M -I -x -x -I -M -k +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +NA +NA +NA +ZU +tU +lT +QH +lT +kP +NZ +AM +NA +NA +oG +oG +Ot +NA +NA +NA +bd +NA +NA +NA +NA +NA +Ki +Ki +Ki "} (9,1,1) = {" -M -s -s -s -x -x -x -C -x -x -x -s -s -s -X -x -x -x -x -J -O +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ki +Ki +Ki +NA +NA +NA +xB +lz +kP +lT +lT +kP +pr +Zq +NA +NA +oG +oG +Ot +NA +bd +NA +NA +NA +NA +NA +NA +NA +Ki +Ki +Ki "} (10,1,1) = {" -M -s -s -s -x -x -x -S -x -x -x -s -s -f -X -x -x -x -x -J -O +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ki +NA +NA +NA +Zq +Zq +kV +VT +sE +OO +Zq +Zq +NA +NA +oG +oG +Ot +NA +NA +NA +bd +NA +NA +NA +NA +NA +Ki +Ki +Ki "} (11,1,1) = {" -M -s -u -s -M -z -x -x -x -z -M -s -u -s -M -I -x -x -I -M -O +Ki +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +NA +NA +NA +Zq +Zq +iG +bY +Zq +xB +NA +NA +NA +oG +oG +Ot +Ot +bd +NA +NA +NA +NA +NA +NA +NA +NA +Ki +Ki "} (12,1,1) = {" -M -s -s -s -M -M -x -x -x -M -M -s -s -s -M -M -M -M -M -M -O +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +BB +BB +BB +wA +BB +BB +oG +oG +oG +oG +oG +oG +NA +bt +NA +Zq +zI +zI +Zq +NA +NA +NA +oG +oG +Ot +Ot +bd +bd +NA +NA +NA +NA +dh +NA +NA +NA +Ki +Ki "} (13,1,1) = {" -M -s -s -s -s -s -s -s -s -s -s -s -s -s -M -Y -Y -Y -Y -Y -Y +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +BB +BB +mI +BB +DF +BB +DF +BB +BB +BB +oG +oG +oG +oG +NA +NA +NA +NA +NA +NA +NA +NA +bt +NA +oG +oG +Ot +Ot +bd +Ot +Ot +Ot +NA +NA +NA +NA +NA +NA +Ki +Ki "} (14,1,1) = {" -M -M -q -q -u -s -s -s -s -s -u -q -q -M -M -Y -Y -Y -Y -Y -Y +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +BB +DF +BB +dh +dh +dh +dh +dh +BB +DF +BB +oG +oG +oG +oG +oG +NA +NA +NA +NA +NA +NA +NA +NA +oG +oG +oG +Ot +oi +oi +Ot +Ot +dh +Ot +NA +NA +NA +NA +NA +Ki +Ki "} (15,1,1) = {" -M -s -s -q -q -s -s -u -s -s -q -q -s -s -M -Y -Y -Y -Y -Y -Y +Ki +Ki +Ki +Ki +oG +oG +oG +oG +BB +BB +BB +dh +dh +Wn +mF +Al +dh +dh +BB +wA +BB +oG +oG +oG +oG +oG +oG +NA +NA +bt +NA +NA +oG +oG +oG +Ot +Ot +oi +Ot +Ot +Ot +Ot +Ot +Ot +dh +NA +NA +NA +Ki +Ki "} (16,1,1) = {" -M -s -n -s -q -s -s -s -s -s -q -s -n -s -M -Y -Y -Y -Y -Y -Y +Ki +Ki +Ki +Ki +oG +oG +oG +BB +DF +mb +dh +Qd +Wn +mO +bd +WS +Al +dh +dh +BB +BB +oG +oG +oG +oG +oG +oG +oG +NA +NA +NA +oG +oG +oG +oG +Ot +oi +oi +Ot +Ot +Ot +Ot +dh +Ot +Ot +Ot +NA +NA +Ki +Ki "} (17,1,1) = {" -M -m -s -s -M -s -s -s -s -s -M -s -s -m -M -Y -Y -Y -Y -Y -Y +Ki +Ki +Ki +oG +oG +oG +oG +BB +DF +dh +HE +Wn +mO +bd +oi +oi +QD +Al +dh +wA +BB +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ot +Ot +oi +Ot +Ot +Ot +dh +Ot +Ot +Ot +Ot +Ot +NA +NA +NA +Ki "} (18,1,1) = {" -M -M -M -M -M -M -M -M -M -M -M -M -M -M -M -Y -Y -Y -Y -Y -Y +Ki +Ki +Ki +oG +oG +oG +mI +BB +Yn +Qd +Wn +mO +bd +oi +oi +oi +bd +Rx +dh +BB +BB +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ot +oi +oi +Ot +mA +Ot +dh +Ot +Ot +Ot +Ot +AI +NA +NA +NA +Ki +"} +(19,1,1) = {" +Ki +Ki +Ki +oG +oG +oG +BB +Xq +aD +Wn +mO +oi +oi +oi +oi +oi +bd +Rx +dh +BB +DF +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ot +Ot +oi +Ot +Ot +Ot +dh +dh +wu +Ot +Ot +Ot +Ot +NA +NA +NA +Ki +"} +(20,1,1) = {" +Ki +Ki +Ki +oG +oG +oG +BB +wA +Qd +cd +bd +oi +oi +bd +oi +bd +bd +Rx +dh +mI +BB +oG +oG +Ux +gr +oG +oG +oG +oG +oG +oG +oG +Ot +Ot +oi +oi +Ot +Ot +dh +dh +Vm +nr +Kx +Ot +Ot +Ot +NA +NA +NA +Ki +"} +(21,1,1) = {" +Ki +Ki +Ki +oG +oG +oG +DF +eB +tF +jl +bd +oi +oi +oi +Os +Hi +Yq +iT +dh +BB +BB +oG +oG +Ot +rT +jf +oG +oG +oG +oG +oG +Ot +Ot +oi +oi +Ot +Ot +dh +dh +mA +wu +Kx +ve +Ot +Lj +Ot +Ot +NA +NA +Ki +"} +(22,1,1) = {" +Ki +Ki +Ki +oG +oG +oG +BB +DF +Qd +OL +LB +bd +oi +oi +Rx +dh +Vb +yq +dh +dh +BB +oG +oG +Et +Ot +gr +oG +oG +oG +oG +oG +Ot +oi +oi +Ot +Ot +dh +dh +Ot +Ot +Kx +Ot +Ot +Ot +Ot +Ot +oG +oG +oG +Ki +"} +(23,1,1) = {" +Ki +Ki +Ki +oG +oG +oG +BB +BB +dh +Qd +Vb +LB +bd +Os +VP +dh +dh +gO +vd +dh +dh +oG +oG +oG +Ut +oG +oG +oG +oG +Ot +Ot +oi +oi +Ot +AI +Ot +dh +Ot +Ot +jV +Ot +Ot +jV +jV +Ot +oG +oG +oG +oG +Ki +"} +(24,1,1) = {" +Ki +Ki +Ki +oG +oG +oG +oG +BB +BB +dh +Ww +Vb +Hi +VP +dh +dh +dh +dh +Mv +Al +dh +oG +oG +oG +oG +oG +oG +oG +Ot +Ot +Ot +oi +oi +Ot +Ot +Ot +dh +Ot +TU +CW +hZ +hZ +DQ +jV +Ot +oG +oG +oG +Ki +Ki +"} +(25,1,1) = {" +Ki +Ki +Ki +oG +oG +oG +oG +BB +DF +wA +dh +dh +dh +dh +dh +dh +dh +dh +Vb +yq +dh +dh +oG +oG +oG +oG +Ot +Ot +Ot +Ot +oi +oi +Ot +Ot +Ot +dh +dh +Ot +cn +Ro +fF +Tu +PC +jV +oG +oG +oG +oG +Ki +Ki +"} +(26,1,1) = {" +Ki +Ki +Ki +Ki +oG +oG +oG +oG +BB +BB +BB +mb +mI +BB +BB +BB +dh +dh +dh +gO +vd +dh +oG +oG +Ot +Ot +Ot +Ot +Ot +oi +oi +Ot +Ot +Ot +dh +dh +Ot +Ot +cn +PC +PC +xu +PC +jV +oG +oG +oG +Ki +Ki +Ki +"} +(27,1,1) = {" +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +BB +BB +BB +DF +BB +oG +oG +oG +dh +dh +dh +gO +zs +oG +Ot +AI +Ot +Ot +Ot +oi +oi +Ot +Ot +Ot +Ot +dh +dh +Ot +jV +DQ +PC +PC +PC +jV +jV +oG +oG +oG +Ki +Ki +Ki +"} +(28,1,1) = {" +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +dh +dh +dh +Vb +Yq +Ot +Ot +Ot +Ot +oi +oi +oi +Ot +Ot +Ot +dh +dh +Ot +Ot +jV +xI +jV +xk +UQ +jV +oG +oG +oG +oG +Ki +Ki +Ki +"} +(29,1,1) = {" +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ot +Ot +dh +dh +dh +cd +oi +Ot +oi +oi +oi +oi +Ot +Ot +Ot +Ot +dh +dh +Ot +Ot +Ot +dh +jV +jV +jV +jV +oG +oG +oG +Ki +Ki +Ki +Ki +"} +(30,1,1) = {" +Ki +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ot +Ot +mA +dh +dh +Ot +oi +oi +oi +Ot +Ot +Ot +Ot +Ot +Ot +mA +dh +dh +dh +dh +dh +dh +Ot +Ot +Ot +oG +oG +oG +oG +Ki +Ki +Ki +Ki +"} +(31,1,1) = {" +Ki +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ot +Ot +Ot +Ot +dh +dh +dh +Ot +Ot +Ot +Lj +Ot +Ot +Ot +Ot +dh +dh +dh +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +"} +(32,1,1) = {" +Ki +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +Ot +Ot +Ot +dh +dh +dh +Ot +dh +dh +Ot +mA +Ot +Ot +AI +Ot +Ot +dh +dh +Ot +Ot +Ot +AI +Ot +Ot +Ot +Ot +Ot +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +"} +(33,1,1) = {" +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +Ot +Ot +Ot +dh +dh +Ot +Ot +Ot +Ot +dh +dh +dh +Ot +Ot +Ot +Ot +dh +dh +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +"} +(34,1,1) = {" +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +Ot +Ot +Ot +Ot +dh +dh +mA +Ot +Ot +Ot +Ot +Ot +dh +dh +Ot +Ot +Ot +Ot +dh +Ot +Ot +Lj +Ot +Ot +Ot +Ot +Ot +Ot +Ot +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +"} +(35,1,1) = {" +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +Ot +Ot +Ot +mA +dh +dh +Ot +Ot +Lj +Ot +Ot +Ot +Ot +Ot +dh +dh +dh +Ot +Ot +dh +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +"} +(36,1,1) = {" +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +Ot +Ot +Lj +Ot +dh +dh +Ot +Ot +Ot +Ot +jV +jV +jV +Ot +Ot +Ot +Ot +dh +dh +dh +dh +Ot +Ot +jV +jV +jV +jV +jV +jV +Ot +Ot +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +"} +(37,1,1) = {" +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +Ot +Ot +Ot +Ot +Ot +dh +Ot +Ot +Ot +Ot +jV +jV +UK +jV +jV +jV +Ot +Ot +dh +dh +dh +dh +Ot +Ot +jV +St +fL +kZ +Li +jV +jV +oG +oG +oG +oG +oG +oG +oG +oG +Ki +Ki +"} +(38,1,1) = {" +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +Ot +Ot +jV +jV +jV +xI +jV +Ot +Ot +jV +jV +RT +kZ +jt +jF +jV +Lj +Ot +Ot +dh +dh +Ot +Ot +jV +jV +kZ +LW +PC +PC +PC +jV +oG +oG +oG +jV +jV +jV +jV +oG +oG +Ki +"} +(39,1,1) = {" +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +jV +jV +jV +PC +PC +qs +jV +jV +Ot +jV +PC +Tu +PC +kZ +jk +jV +Ot +Ot +Ot +dh +dh +Ot +Ot +jV +RV +yI +Fc +PC +PC +PC +jV +oG +oG +jV +jV +df +mr +jV +jV +oG +Ki +"} +(40,1,1) = {" +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +jV +jV +er +fL +PC +Tu +PC +kj +jV +Ot +jV +PC +PC +Bv +Fc +jV +jV +Ot +Ot +Ot +dh +dh +dh +dh +xI +UW +Tc +FP +Qj +PC +PC +jV +oG +jV +jV +PC +Fc +nq +Tu +jV +oG +Ki +"} +(41,1,1) = {" +Ki +Ki +Ki +Ki +oG +oG +oG +oG +jV +PC +LW +PC +PC +PC +VF +kc +jV +Ot +jV +KM +PC +fF +DX +jV +Ot +Ot +MB +dh +dh +Zg +dh +Ot +jV +yI +PC +fF +PC +Tu +PC +jV +oG +jV +qU +Tu +PC +fF +kZ +jV +oG +oG +"} +(42,1,1) = {" +Ki +Ki +Ki +Ki +oG +oG +oG +oG +jV +Tu +PC +PC +Bv +PC +Tu +AK +jV +Ot +jV +jV +PC +Tu +Dx +yT +dh +dh +dh +dh +dh +dh +mA +Ot +jV +jV +PC +Tu +sp +PC +KM +jV +oG +jV +jV +oI +Bv +Lp +PC +jV +oG +oG +"} +(43,1,1) = {" +Ki +Ki +Ki +oG +oG +oG +oG +oG +jV +KM +Fc +PC +PC +PC +kZ +jV +jV +Ot +Ot +jV +jV +jV +jV +jV +Ot +mA +Ot +Ot +dh +dh +dh +dh +Ot +jV +PC +PC +jk +pQ +jV +jV +Ot +Ot +jV +PC +or +CG +KM +jV +oG +oG +"} +(44,1,1) = {" +Ki +Ki +Ki +oG +oG +oG +oG +oG +jV +jV +jV +sV +PC +PC +jV +jV +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +dh +dh +dh +dh +dh +dh +jV +jV +jV +jV +jV +jV +Ot +Ot +dh +xI +MA +PC +KM +jV +jV +oG +oG +"} +(45,1,1) = {" +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +jV +jV +jV +jV +jV +Ot +Ot +Ot +Ot +Ot +Ot +AI +Ot +Ot +Ot +dh +dh +dh +dh +Ot +QC +Ot +dh +dh +Ot +Ot +Ot +Ot +Ot +Ot +dh +dh +jV +jV +jV +jV +jV +Ot +oG +oG +"} +(46,1,1) = {" +Ki +Ki +oG +oG +oG +oG +oG +dH +dH +dH +dH +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Zg +Ne +dh +dh +dh +Ot +Ot +Ot +Ot +Ot +dh +dh +dh +dh +MB +Ot +mA +Zg +Ot +Ot +Ot +Ot +Ot +Ot +Ot +oG +oG +"} +(47,1,1) = {" +Ki +Ki +oG +oG +oG +oG +dH +dH +EN +EN +dH +dH +dH +dH +dH +dH +Ot +Ot +Ot +Ot +mA +Ot +Ne +Mo +dh +dh +OM +dh +Ot +Ot +AI +Ot +Ot +Zg +dh +Ot +dh +dh +Bb +dh +dh +Ot +Ot +Ot +Ot +Ot +Ot +AI +oG +oG +"} +(48,1,1) = {" +Ki +oG +oG +oG +oG +dH +dH +EN +EN +EN +EN +EN +EN +EN +Ih +dH +dH +dH +Ot +Ot +uc +dh +tB +Eb +Gu +Ot +Ot +dh +Ot +Ot +Ot +Ot +mA +dh +Ot +Ot +Ot +Ot +Ot +dh +dh +dh +dh +mA +Ot +Ot +Ot +Ot +oG +oG +"} +(49,1,1) = {" +Ki +oG +oG +oG +oG +dH +EN +EN +EN +EN +EN +EN +EN +EN +EN +EN +EN +dH +dH +Ot +dh +jB +dh +Hc +hU +Ot +Ot +dh +Ot +Ot +Ot +Ot +Ot +dh +Ot +Ot +Ot +Ot +Ot +Ot +Ot +Ot +dh +Ot +Ot +Lj +Ot +Ot +oG +oG +"} +(50,1,1) = {" +Ki +oG +oG +oG +oG +dH +EN +EN +DZ +DZ +DZ +DZ +dH +EN +EN +EN +EN +EN +dH +Mp +dh +OM +mE +dh +Ot +Ot +dh +dh +Ot +Ot +jV +jV +jV +xI +jV +jV +jV +Ot +Ot +QC +Ot +Ot +Zg +Ot +Ot +Ot +Ot +oG +oG +oG +"} +(51,1,1) = {" +Ki +oG +oG +oG +dH +dH +EN +EN +DZ +gX +DZ +DZ +EN +EN +DZ +DZ +DZ +aL +Eo +jY +Ht +mE +jn +hU +mA +Ot +dh +dh +Ot +jV +jV +PC +RJ +jj +YM +gm +jV +jV +Ot +Ot +jV +jV +xI +jV +jV +jV +jV +oG +oG +Ki +"} +(52,1,1) = {" +Ki +oG +oG +oG +dH +Mp +EN +EN +DZ +DZ +DZ +DZ +EN +EN +DZ +mw +DZ +EN +le +Eo +KO +Yw +Zg +Ot +Ot +Ot +dh +dh +Ot +jV +Yg +PC +PC +MQ +Tu +fZ +jq +jV +Ot +Ot +jV +yI +Po +Gx +ww +Xx +jV +oG +oG +Ki +"} +(53,1,1) = {" +Ki +oG +oG +oG +dH +EN +EN +EN +DZ +DZ +DZ +DZ +EN +EN +DZ +DZ +zy +XQ +EN +cg +oB +FV +Mp +Ot +Ot +Ot +dh +dh +Ot +jV +PC +Tu +fF +PC +Fc +kZ +vD +jV +Ot +oG +jV +PC +Bv +JB +Tu +ge +jV +oG +oG +Ki +"} +(54,1,1) = {" +Ki +oG +oG +oG +dH +EN +EN +EN +dH +EN +EN +EN +dH +EN +EN +EN +Du +EN +EN +Hl +NS +Eo +dH +dH +Ot +Ot +Ot +dh +dh +jV +PC +PC +PC +Bv +PC +PC +kZ +jV +oG +oG +jV +PC +Fc +fF +qo +jV +jV +oG +oG +Ki +"} +(55,1,1) = {" +Ki +oG +oG +oG +dH +EN +EN +EN +EN +EN +EN +EN +EN +DZ +DZ +DZ +DZ +DZ +EN +Lz +EN +jY +EN +dH +dH +Ot +Ot +dh +dh +jV +MU +PC +PC +PC +PC +PC +PC +jV +oG +oG +jV +KM +PC +PC +jV +jV +oG +oG +Ki +Ki +"} +(56,1,1) = {" +Ki +oG +oG +oG +dH +Mp +EN +EN +EN +EN +EN +EN +EN +DZ +DZ +DZ +DZ +DZ +OV +DZ +Ez +DZ +EN +EN +dH +Ot +Ot +dh +Ot +jV +jV +Zr +lZ +Tu +PC +PC +jV +jV +oG +oG +jV +jV +jV +jV +jV +oG +oG +oG +Ki +Ki +"} +(57,1,1) = {" +Ki +oG +oG +oG +dH +dH +EN +EN +Ih +EN +EN +EN +EN +DZ +DZ +iU +DZ +DZ +EN +DZ +DZ +DZ +EN +EN +dH +dH +Ot +dh +Ot +Ot +jV +QW +kc +PC +PC +PC +jV +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ki +Ki +Ki +"} +(58,1,1) = {" +Ki +oG +oG +oG +oG +dH +dH +dH +dH +dH +dH +xj +EN +DZ +DZ +DZ +DZ +DZ +EN +DZ +DZ +DZ +EN +EN +Ih +dH +Ot +Ot +dh +Ot +jV +jV +jV +KM +KM +jV +jV +oG +oG +oG +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +"} +(59,1,1) = {" +Ki +oG +oG +oG +oG +oG +dH +Zw +KA +ar +dH +EN +EN +DZ +DZ +DZ +DZ +DZ +EN +EN +EN +EN +EN +EN +EN +dH +Ot +Ot +dh +dh +Ot +Ot +jV +jV +jV +jV +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +"} +(60,1,1) = {" +Ki +oG +oG +oG +oG +oG +dH +PT +EN +EN +EN +EN +ZZ +JD +EN +EN +EN +EN +dH +EN +EN +EN +dH +EN +EN +dH +Ot +Ot +dh +Ot +dh +Ot +Ot +Ot +oG +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +"} +(61,1,1) = {" +Ki +oG +oG +oG +oG +oG +dH +lD +EN +DZ +DZ +Fn +OU +ZZ +xj +EN +EN +EN +EN +DZ +DZ +DZ +DZ +EN +EN +dH +AI +Ot +Ot +dh +Ot +dh +tR +Ot +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +"} +(62,1,1) = {" +Ki +oG +oG +oG +oG +oG +dH +dH +EN +DZ +bL +DZ +KH +dH +dH +EN +EN +EN +EN +DZ +DZ +DZ +DZ +EN +EN +dH +dH +Ot +Ot +dh +tR +dh +Ot +Ot +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +"} +(63,1,1) = {" +Ki +Ki +oG +oG +oG +oG +oG +dH +lx +DZ +DZ +DZ +EN +uv +dH +EN +EN +EN +EN +DZ +DZ +gX +DZ +EN +EN +EN +dH +Ot +tR +dh +Ot +tR +Ot +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +"} +(64,1,1) = {" +Ki +Ki +oG +oG +oG +oG +oG +dH +dH +lx +EN +EN +EN +lD +dH +Ih +EN +EN +dH +DZ +DZ +DZ +DZ +EN +EN +EN +dH +Ot +Ot +Ot +Ot +Ot +oG +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +"} +(65,1,1) = {" +Ki +Ki +Ki +oG +oG +oG +oG +oG +dH +dH +dH +Yi +Xd +Zw +dH +EN +EN +EN +EN +EN +EN +EN +EN +EN +EN +dH +dH +oG +Ot +Ot +oG +oG +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +"} +(66,1,1) = {" +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +dH +dH +dH +dH +dH +EN +EN +EN +EN +EN +EN +EN +EN +EN +dH +dH +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +"} +(67,1,1) = {" +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +dH +dH +Mp +EN +EN +EN +Mp +dH +dH +dH +dH +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +"} +(68,1,1) = {" +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +dH +dH +dH +dH +dH +dH +dH +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +"} +(69,1,1) = {" +Ki +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +"} +(70,1,1) = {" +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +oG +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki +Ki "} diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_unhonorable.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_unhonorable.dmm index 37b6d1321dd1..194e34a6a838 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_unhonorable.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_unhonorable.dmm @@ -1,397 +1,2256 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"c" = ( -/obj/structure/sign/warning/radiation, -/turf/closed/wall/r_wall, -/area/ruin) -"d" = ( -/obj/structure/radioactive, +"aF" = ( +/obj/item/clothing/head/radiation, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"aP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"bc" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/road/line/edge/transparent/yellow{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"bX" = ( +/obj/effect/decal/cleanable/greenglow/filled, +/obj/effect/dummy/lighting_obj{ + light_color = "#80B425"; + light_power = 2 + }, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"bZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/stairs/old, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"cd" = ( +/obj/structure/fence/corner{ + dir = 1 + }, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"e" = ( -/obj/structure/reagent_dispensers/fueltank, +/area/ruin/wasteplanet/wasteplanet_radiation) +"cn" = ( +/obj/structure/sign/warning/radiation/rad_area{ + pixel_x = 32 + }, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_radiation) +"dC" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plastic, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"dU" = ( +/obj/structure/salvageable/circuit_imprinter, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"g" = ( +/area/ruin/wasteplanet/wasteplanet_radiation) +"eD" = ( +/obj/item/clothing/suit/radiation, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"eO" = ( +/turf/closed/wall/r_wall/rust/yesdiag, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"eW" = ( +/obj/machinery/portable_atmospherics/canister/tritium, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"fb" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/miskilamo_big/one{ + color = "#580818" + }, +/turf/open/floor/plasteel, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"fK" = ( +/obj/effect/decal/remains/xeno/larva, +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"gn" = ( +/obj/item/clothing/suit/radiation, +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"i" = ( -/obj/effect/gibspawner, +/area/ruin/wasteplanet/wasteplanet_radiation) +"gr" = ( +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_radiation) +"gx" = ( +/mob/living/simple_animal/hostile/hivebot/wasteplanet, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"j" = ( -/obj/item/grenade/syndieminibomb, -/obj/item/ammo_box/magazine/aknt, +/area/ruin/wasteplanet/wasteplanet_radiation) +"gM" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"gX" = ( +/obj/effect/decal/cleanable/shreds, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"k" = ( -/obj/structure/radioactive/stack, +/area/ruin/wasteplanet/wasteplanet_radiation) +"ig" = ( +/obj/item/reagent_containers/pill/potassiodide{ + pixel_x = 4; + pixel_y = -6 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = 12 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plastic, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"iA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"iQ" = ( +/turf/closed/wall/r_wall, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"iS" = ( +/obj/item/circuitboard/machine/rad_collector, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"iT" = ( +/obj/structure/spawner/wasteplanet/hivebot/low_threat, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"l" = ( -/obj/structure/table/reinforced, -/obj/item/ammo_box/magazine/aknt{ - pixel_x = -15; - pixel_y = -9 +/area/ruin/wasteplanet/wasteplanet_radiation) +"jh" = ( +/obj/structure/sign/warning/radiation/rad_area{ + pixel_y = 31 + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_radiation) +"kd" = ( +/obj/machinery/door/airlock/public/glass{ + dir = 8 }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/plastic, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"kq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/kirbyplants/fullysynthetic, +/turf/open/floor/plasteel, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"kS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/isf_big/seven{ + color = "#580818" + }, +/turf/open/floor/plasteel, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"lJ" = ( +/obj/effect/radiation/waste/intense, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"lL" = ( +/obj/structure/fence/cut/large, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"m" = ( -/obj/effect/radiation, +/area/ruin/wasteplanet/wasteplanet_radiation) +"lS" = ( +/obj/structure/sign/warning/longtermwaste{ + pixel_y = 32 + }, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"n" = ( -/obj/item/ammo_box/magazine/aknt, +/area/ruin/wasteplanet/wasteplanet_radiation) +"mi" = ( +/obj/item/clothing/head/radiation, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"o" = ( -/obj/structure/fence/door, +/area/ruin/wasteplanet/wasteplanet_radiation) +"my" = ( +/obj/structure/fence, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"p" = ( -/obj/item/stack/sheet/mineral/uranium/five, -/obj/effect/mine/shrapnel, +/area/ruin/wasteplanet/wasteplanet_radiation) +"mF" = ( +/obj/machinery/door/airlock/maintenance/external{ + dir = 4 + }, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"mQ" = ( +/obj/machinery/power/rad_collector, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"mV" = ( +/obj/structure/fence{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_radiation) +"mZ" = ( +/mob/living/simple_animal/bot/secbot{ + hacked = 1 + }, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"q" = ( -/obj/structure/table/reinforced, -/obj/item/gun/ballistic/automatic/assualt/ak47/nt, +/area/ruin/wasteplanet/wasteplanet_radiation) +"no" = ( +/obj/machinery/vending/sovietsoda, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plastic, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"nN" = ( +/obj/structure/radioactive{ + pixel_x = 7 + }, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"oA" = ( +/obj/machinery/light/dim{ + dir = 1; + pixel_y = 20 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"oF" = ( +/obj/effect/decal/cleanable/oil/slippery, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"r" = ( -/obj/item/stack/sheet/mineral/uranium/five, +/area/ruin/wasteplanet/wasteplanet_radiation) +"oY" = ( +/obj/machinery/door/airlock/maintenance/glass{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"ph" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 4; + piping_layer = 2 + }, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"pp" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"pr" = ( +/obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"s" = ( -/obj/structure/fence/corner{ - dir = 10 +/area/ruin/wasteplanet/wasteplanet_radiation) +"pZ" = ( +/obj/structure/fence/cut/medium{ + dir = 8 }, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"t" = ( -/obj/item/stack/sheet/mineral/uranium/five, -/obj/structure/radioactive/stack, +/area/ruin/wasteplanet/wasteplanet_radiation) +"qy" = ( +/obj/structure/closet/radiation{ + anchored = 1 + }, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"qF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"rI" = ( +/mob/living/simple_animal/bot/cleanbot{ + hacked = 1 + }, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"v" = ( -/obj/machinery/door/airlock/vault, -/obj/effect/mapping_helpers/airlock/locked, +/area/ruin/wasteplanet/wasteplanet_radiation) +"sh" = ( +/obj/structure/radioactive/stack{ + pixel_y = -12 + }, +/obj/structure/radioactive{ + pixel_y = 6 + }, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"sw" = ( +/obj/structure/table/greyscale, +/obj/item/reagent_containers/food/drinks/bottle/vodka{ + pixel_x = 6; + pixel_y = 17 + }, +/obj/item/storage/fancy/cigarettes/dromedaryco, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/powered) -"x" = ( -/obj/item/stack/sheet/mineral/uranium/five, -/obj/structure/radioactive, +/area/ruin/wasteplanet/wasteplanet_radiation) +"sR" = ( +/obj/machinery/power/smes/engineering, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"tl" = ( +/obj/item/stack/ore/uranium, +/obj/effect/turf_decal/industrial/warning/dust/corner, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"ty" = ( +/turf/template_noop, +/area/template_noop) +"tA" = ( +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"tN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"uf" = ( +/obj/structure/girder, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_radiation) +"uF" = ( +/obj/machinery/light/broken{ + dir = 1; + pixel_y = 20 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plasteel, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"uZ" = ( +/obj/structure/salvageable/autolathe, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"y" = ( -/obj/structure/table/reinforced, -/obj/item/gun/energy/e_gun/nuclear, +/area/ruin/wasteplanet/wasteplanet_radiation) +"vL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/spawner/structure/window/hollow/reinforced, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"vV" = ( +/obj/item/clothing/head/helmet/r_trapper{ + pixel_x = 1; + pixel_y = 7 + }, +/obj/item/clothing/under/syndicate, +/obj/structure/closet/radiation/empty{ + anchored = 1 + }, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"wn" = ( +/obj/structure/flora/ash/glowshroom, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"z" = ( -/obj/structure/sign/warning/radiation, -/turf/closed/wall/r_wall/rust, -/area/ruin) -"A" = ( -/obj/item/grenade/frag, -/obj/structure/reagent_dispensers/fueltank, +/area/ruin/wasteplanet/wasteplanet_radiation) +"wG" = ( +/obj/machinery/power/rad_collector, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"wI" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + pixel_y = -24 + }, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"xj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/firealarm/directional/north, +/obj/effect/decal/cleanable/garbage, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"xt" = ( +/turf/closed/wall/r_wall/rust/yesdiag, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"yj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"yu" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"yW" = ( +/obj/effect/spawner/structure/window/hollow, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"zv" = ( +/obj/structure/mecha_wreckage/ripley/firefighter, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"B" = ( +/area/ruin/wasteplanet/wasteplanet_radiation) +"zC" = ( +/turf/closed/wall/r_wall, +/area/ruin/wasteplanet/wasteplanet_radiation) +"zH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/vault, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/plasteel/dark, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"zL" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/stack/sheet/mineral/uranium/five, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"Aa" = ( +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/port_gen/pacman/super/not_very{ + anchored = 1; + sheet_left = 1; + sheets = 10 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/sign/poster/contraband/cybersun{ + pixel_y = 31 + }, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"AV" = ( +/obj/effect/turf_decal/industrial/warning/dust/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/radiation/waste/intense, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"BH" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/auto_name/directional/north{ + emergency_lights = 1 + }, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"BI" = ( +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_radiation) +"Dd" = ( +/obj/effect/turf_decal/road/line/edge/transparent/yellow, +/turf/open/floor/plasteel/dark, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"DJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4{ + dir = 1 + }, +/obj/machinery/light/small/broken{ + dir = 1; + pixel_y = 16 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Er" = ( +/obj/structure/railing/modern{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/road/line/transparent/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/road/line/transparent/yellow, +/obj/effect/turf_decal/road/line/transparent/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/road/line/edge/transparent/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/road/line/edge/transparent/yellow, +/turf/open/floor/plasteel/dark, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"EF" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"Gc" = ( /turf/closed/wall/r_wall/rust, -/area/ruin) -"C" = ( -/obj/item/ammo_box/magazine/aknt, -/obj/structure/reagent_dispensers/fueltank, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"Gl" = ( +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_radiation) +"Gn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_radiation) +"Hf" = ( +/turf/closed/wall/r_wall/rust, +/area/ruin/wasteplanet/wasteplanet_radiation) +"Hm" = ( +/obj/machinery/door/airlock/maintenance/external{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4 + }, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Hn" = ( +/obj/structure/sign/warning/radiation/rad_area{ + pixel_y = -32 + }, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"D" = ( +/area/ruin/wasteplanet/wasteplanet_radiation) +"HJ" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"HR" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/isf_big/three{ + color = "#580818" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Im" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"IE" = ( +/obj/item/stack/ore/uranium, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"Jq" = ( +/obj/item/stack/ore/uranium, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"Jw" = ( +/obj/structure/girder, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_radiation) +"Jy" = ( +/obj/item/chair/stool/bar{ + pixel_x = 10; + pixel_y = -6 + }, +/obj/item/reagent_containers/pill/potassiodide{ + pixel_x = 8; + pixel_y = 7 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plastic, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Kl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/broken{ + dir = 8; + pixel_x = -23 + }, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Kp" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/syndicake{ + pixel_x = 4; + pixel_y = 13 + }, +/obj/item/reagent_containers/food/snacks/syndicake{ + pixel_y = 3 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small{ + dir = 1; + pixel_y = 17 + }, +/turf/open/floor/plastic, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Ku" = ( +/turf/closed/wall/r_wall/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"KA" = ( /obj/structure/fence, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_radiation) +"Ld" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"Lh" = ( +/obj/machinery/advanced_airlock_controller{ + pixel_y = 30 + }, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Ln" = ( +/obj/structure/chair/plastic{ + dir = 1 + }, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"E" = ( -/obj/effect/radiation, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"F" = ( -/turf/closed/wall/r_wall, -/area/ruin) -"G" = ( -/obj/item/stack/sheet/mineral/uranium/five, -/obj/effect/gibspawner, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"H" = ( -/obj/item/grenade/stingbang, +/area/ruin/wasteplanet/wasteplanet_radiation) +"Lp" = ( +/mob/living/simple_animal/bot/hygienebot{ + hacked = 1 + }, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"I" = ( -/obj/item/flashlight/lantern, +/area/ruin/wasteplanet/wasteplanet_radiation) +"Mh" = ( +/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"K" = ( -/obj/effect/mine/shrapnel, +/area/ruin/wasteplanet/wasteplanet_radiation) +"Mq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"MV" = ( +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"L" = ( -/obj/structure/sign/warning/radiation, +/area/ruin/wasteplanet/wasteplanet_radiation) +"MX" = ( +/obj/item/stack/cable_coil/cut/red, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"M" = ( +/area/ruin/wasteplanet/wasteplanet_radiation) +"Na" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_radiation) +"Nj" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Nx" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"Ny" = ( +/obj/item/stack/ore/uranium, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"NG" = ( +/obj/structure/closet/crate/radiation{ + anchored = 1 + }, +/obj/item/nuke_core, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"NO" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/road/line/transparent/yellow, +/turf/open/floor/plasteel/dark, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"OK" = ( +/obj/structure/fence/corner{ + dir = 10 + }, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"O" = ( -/obj/structure/marker_beacon, +/area/ruin/wasteplanet/wasteplanet_radiation) +"PB" = ( +/obj/structure/reagent_dispensers/watertank/high, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"P" = ( -/obj/effect/gibspawner, +/area/ruin/wasteplanet/wasteplanet_radiation) +"PV" = ( +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Qp" = ( +/obj/effect/radiation/waste/intense, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"Qz" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plastic, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"QB" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_radiation) +"QU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/radiation/waste, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Rg" = ( +/obj/structure/flippedtable{ + dir = 4 + }, +/obj/item/storage/pill_bottle/potassiodide{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plastic, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Rv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Rz" = ( /obj/structure/radioactive/waste, +/obj/effect/decal/cleanable/greenglow/filled, +/obj/effect/dummy/lighting_obj{ + light_color = "#80B425"; + light_power = 2 + }, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"RU" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_radiation) +"Sf" = ( +/turf/closed/wall/r_wall, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"Sg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_radiation) +"SQ" = ( +/obj/structure/sign/warning/nosmoking/burnt{ + pixel_x = -27 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Tf" = ( +/obj/structure/radioactive{ + pixel_x = -1; + pixel_y = 7 + }, +/obj/structure/radioactive{ + pixel_x = 8 + }, +/obj/structure/radioactive{ + pixel_x = 8; + pixel_y = 19 + }, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"Th" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"Tm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/advanced_airlock_controller/internal{ + dir = 4; + pixel_x = 26 + }, +/obj/structure/sign/warning/radiation{ + pixel_x = -32 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"TE" = ( +/obj/structure/fence, +/obj/machinery/atmospherics/pipe/simple/scrubbers, /turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) -"Q" = ( -/obj/structure/fence/corner, +/area/ruin/wasteplanet/wasteplanet_radiation) +"UR" = ( /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"R" = ( -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/blood/old, -/obj/item/clothing/suit/radiation, -/obj/item/clothing/head/radiation{ - pixel_y = 8 +/area/ruin/wasteplanet/wasteplanet_radiation) +"Va" = ( +/obj/structure/radioactive/stack, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"Vg" = ( +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Vn" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/vault, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/firedoor/heavy, +/turf/open/floor/plasteel/dark, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"VA" = ( +/obj/structure/radioactive{ + pixel_x = -6; + pixel_y = 9 + }, +/obj/structure/radioactive{ + pixel_x = 3; + pixel_y = 4 }, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"VE" = ( +/turf/closed/wall/r_wall/rust/yesdiag, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"VP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/miskilamo_big/five{ + color = "#580818" + }, +/turf/open/floor/plasteel, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"VY" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"S" = ( -/obj/structure/sign/warning/longtermwaste{ - pixel_y = 32 +/area/ruin/wasteplanet/wasteplanet_radiation) +"Wa" = ( +/obj/structure/table, +/obj/machinery/microwave, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plastic, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"WB" = ( +/obj/structure/radioactive{ + pixel_x = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"Xc" = ( +/obj/item/geiger_counter{ + pixel_y = 1 }, -/obj/structure/radioactive, +/obj/item/trash/syndi_cakes{ + pixel_y = 1 + }, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"Xi" = ( +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"Xl" = ( +/turf/closed/mineral/random/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_radiation) +"XC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable/yellow, +/obj/machinery/power/terminal, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/maint) +"XO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"XU" = ( +/obj/structure/fence/door, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"U" = ( -/obj/structure/radioactive, +/area/ruin/wasteplanet/wasteplanet_radiation) +"Yd" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Yk" = ( +/obj/item/trash/can, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Yl" = ( +/turf/closed/wall/r_wall/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"Yp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/industrial/warning/dust, +/turf/open/floor/plating/rust, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) +"YO" = ( +/obj/structure/fence/post{ + dir = 4 + }, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"W" = ( +/area/ruin/wasteplanet/wasteplanet_radiation) +"Zd" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plastic, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"Zg" = ( +/obj/structure/railing/modern{ + dir = 6 + }, +/obj/effect/turf_decal/road/line/transparent/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/road/line/transparent/yellow, +/obj/effect/turf_decal/road/line/transparent/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/road/line/edge/transparent/yellow, +/obj/effect/turf_decal/road/line/edge/transparent/yellow{ + dir = 4 + }, +/obj/effect/decal/cleanable/molten_object/large, +/turf/open/floor/plasteel/dark, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"ZC" = ( /obj/structure/fence{ dir = 8 }, /turf/open/floor/plating/asteroid/wasteplanet, -/area/overmap_encounter/planetoid/wasteplanet/explored) -"Z" = ( -/obj/effect/mine/shrapnel, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin) +/area/ruin/wasteplanet/wasteplanet_radiation) +"ZJ" = ( +/turf/closed/wall/r_wall, +/area/ruin/wasteplanet/wasteplanet_radiation/main) +"ZP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/wasteplanet/wasteplanet_radiation/containment) (1,1,1) = {" -c -B -F -B -F -F -F -F -z -a -a -a -a -a -a -a -a +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty "} (2,1,1) = {" -B -F -B -F -B -F -B -F -F -D -D -D -D -D -D -s -a +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +UR +UR +UR +UR +ty +ty +UR +UR +Gl +UR +Gl +Gl +ty +ty +ty "} (3,1,1) = {" -B -B -x -d -e -i -t -B -F -M -k -M -M -U -M -W -a +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +UR +UR +UR +Gl +UR +Gl +Gl +UR +UR +UR +Xl +Xl +MV +Xl +ty +ty "} (4,1,1) = {" -B -B -d -G -g -j -g -F -B -S -M -M -M -M -M -W -a +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +UR +wn +UR +OK +KA +my +my +lL +cd +Xl +Xl +Xl +Xl +Xl +Xl +UR +ty "} (5,1,1) = {" -F -F -y -n -p -e -r -B -F -M -M -M -K -M -M -W -a +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +UR +UR +UR +ZC +UR +UR +UR +gX +ZC +UR +Xl +Xl +Xl +Xl +UR +UR +ty "} (6,1,1) = {" -F -B -q -A -E -g -I -B -O -M -m -M -M -M -k -L -O +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +UR +Gl +UR +pZ +UR +UR +UR +UR +ZC +UR +Xl +Xl +Xl +Xl +UR +UR +ty "} (7,1,1) = {" -B -B -l -n -i -C -Z -v -M -M -U -M -M -M -M -o -M +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +UR +UR +UR +UR +mV +UR +wn +UR +Gl +ZC +UR +Xl +Gl +UR +UR +UR +UR +ty "} (8,1,1) = {" -B -F -r -p -H -g -i -B -O -M -M -M -U -M -M -W -O +ty +ty +ty +UR +ty +ty +ty +ty +ty +UR +UR +ty +ty +ty +ty +ty +UR +Xl +UR +UR +mV +RU +UR +UR +Gl +YO +UR +Gl +UR +UR +UR +wn +UR +ty "} (9,1,1) = {" -F -F -P -g -e -r -d -B -F -M -M -M -M -M -M -W -a +ty +UR +UR +UR +UR +ty +ty +ty +UR +UR +UR +Lp +ty +ty +ty +UR +UR +Xl +UR +UR +mV +UR +UR +UR +Sg +XU +UR +Gl +UR +MX +UR +UR +UR +ty "} (10,1,1) = {" -F -F -F -F -B -B -F -F -F -D -D -D -D -D -D -Q -a +ty +UR +Xl +Xl +Xl +Xl +Xl +UR +UR +MX +UR +UR +UR +UR +UR +UR +UR +UR +UR +Gl +Hf +lS +gx +UR +UR +YO +Gl +gr +UR +UR +gr +UR +UR +ty "} (11,1,1) = {" -z -F -F -B -B -B -B -B -c -a -a -a -a -a -R -a -a +ty +UR +Xl +Xl +Xl +Xl +Xl +Xl +UR +UR +UR +UR +UR +UR +Gl +Gl +UR +UR +UR +Gl +zC +UR +UR +UR +UR +ZC +Gl +Gl +Mh +UR +Gl +UR +UR +ty +"} +(12,1,1) = {" +ty +Xl +Xl +Xl +Xl +Xl +Xl +Xl +UR +UR +UR +UR +Gl +Gl +Gl +UR +UR +UR +UR +Xl +ZJ +xt +Gn +cn +Na +Ku +UR +UR +UR +uZ +Xl +Xl +UR +ty +"} +(13,1,1) = {" +ty +Xl +Xl +Xl +Xl +Xl +Xl +UR +UR +eO +Yl +Sf +Sf +Yl +Yl +Yl +Yl +xt +Gl +Xl +Xl +Ku +Ku +gM +Hm +Ku +sw +Ln +Xl +Xl +Xl +Xl +UR +ty +"} +(14,1,1) = {" +ty +Xl +Gl +UR +UR +UR +UR +UR +eO +Yl +Yl +Yl +Sf +Sf +Sf +Yl +Yl +Ku +xt +Xl +Xl +ZJ +Ku +Lh +Nj +ZJ +TE +Xl +Xl +Xl +Xl +Xl +UR +ty +"} +(15,1,1) = {" +ty +UR +gr +UR +UR +UR +BI +UR +Sf +Sf +Yl +VA +iS +EF +eD +NG +Sf +ZJ +Xl +Xl +Xl +Xl +Ku +DJ +iA +ZJ +mi +Gl +Xl +Xl +Xl +Xl +UR +ty +"} +(16,1,1) = {" +ty +ty +UR +UR +wn +UR +uf +UR +Sf +Yl +sh +bX +Xi +Jq +lJ +WB +Yl +Ku +Ku +ZJ +ZJ +Ku +Ku +mF +Ku +Ku +gn +Xl +Xl +Xl +Xl +Xl +UR +ty +"} +(17,1,1) = {" +ty +ty +ty +UR +UR +UR +UR +UR +Sf +Yl +wG +zL +Ld +nN +Rz +eO +Yl +Ku +oA +PV +pp +SQ +Kl +Im +XO +ZJ +Xl +Xl +Xl +Xl +Xl +UR +UR +ty +"} +(18,1,1) = {" +ty +ty +ty +UR +UR +UR +UR +rI +Yl +Yl +Qp +Ld +tl +Yl +Yl +Sf +xt +Dd +Er +Vg +fb +VP +Rv +tN +Yk +ZJ +Xl +Xl +Xl +UR +UR +UR +UR +ty +"} +(19,1,1) = {" +ty +ty +ty +UR +gr +MX +UR +Hn +Yl +Sf +BH +ZP +Yp +Vn +Tm +zH +QU +NO +bZ +Yd +HR +kS +Yd +qF +Rv +Ku +jh +Gl +Gl +UR +wn +UR +ty +ty +"} +(20,1,1) = {" +ty +ty +UR +UR +UR +MV +UR +UR +Yl +Sf +vV +fK +AV +Yl +Sf +Sf +xt +bc +Zg +Rv +Rv +yj +yj +yu +kq +ZJ +Gl +gr +gr +UR +UR +ty +ty +ty +"} +(21,1,1) = {" +ty +UR +Xl +UR +UR +UR +wn +UR +Sf +Yl +IE +Xi +aF +tA +Ny +eO +Yl +ZJ +uF +yj +XO +Gc +iQ +oY +Gc +Gc +uZ +Xl +Xl +Xl +UR +ty +ty +ty +"} +(22,1,1) = {" +ty +UR +Xl +UR +UR +UR +UR +UR +Sf +Yl +Va +tA +Xi +Qp +Ld +eW +Yl +ZJ +yW +kd +yW +Gc +ph +Mq +Xc +Gc +Xl +Xl +Xl +Xl +UR +UR +ty +ty +"} +(23,1,1) = {" +ty +Xl +Xl +Xl +Xl +Xl +Xl +UR +Yl +Yl +Yl +Rz +mQ +Tf +qy +Rz +Sf +ZJ +no +dC +Zd +Gc +Nx +HJ +Th +iQ +UR +Xl +Xl +pr +UR +UR +UR +ty +"} +(24,1,1) = {" +ty +Xl +Xl +Xl +Xl +Xl +Xl +UR +eO +Yl +Yl +Sf +Sf +Yl +Yl +Sf +Sf +Ku +Kp +Qz +Jy +iQ +xj +aP +wI +Gc +UR +Xl +Xl +Xl +UR +UR +UR +ty +"} +(25,1,1) = {" +ty +Xl +Xl +UR +Xl +Xl +Xl +UR +UR +eO +Yl +Yl +Sf +Sf +Yl +Yl +Yl +Ku +Wa +ig +Rg +iQ +Aa +XC +sR +iQ +UR +dU +UR +UR +mZ +UR +UR +ty +"} +(26,1,1) = {" +ty +Xl +Xl +Xl +Xl +UR +UR +UR +dU +UR +UR +UR +Xl +Xl +Xl +UR +UR +xt +ZJ +Ku +Ku +Gc +Gc +vL +Gc +VE +UR +wn +UR +MX +UR +wn +UR +ty +"} +(27,1,1) = {" +ty +UR +Xl +Xl +Xl +Xl +Xl +Xl +UR +UR +UR +Xl +Xl +Xl +UR +wn +UR +UR +UR +Xl +Xl +Xl +Xl +QB +Xl +UR +UR +UR +UR +UR +UR +UR +UR +ty +"} +(28,1,1) = {" +ty +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Gl +Jw +UR +UR +UR +UR +MX +UR +UR +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +UR +UR +UR +UR +BI +UR +UR +ty +"} +(29,1,1) = {" +ty +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Gl +UR +UR +UR +UR +Gl +Gl +UR +UR +Xl +Xl +Xl +VY +Xl +Xl +UR +UR +gr +Gl +Xl +Xl +Xl +ty +ty +"} +(30,1,1) = {" +ty +ty +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +UR +Xl +UR +iT +UR +UR +oF +UR +UR +Xl +UR +UR +UR +UR +UR +Gl +Jw +Xl +Xl +Xl +ty +ty +"} +(31,1,1) = {" +ty +ty +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +UR +UR +UR +UR +UR +UR +UR +uf +UR +UR +UR +UR +UR +UR +UR +Xl +Xl +Xl +ty +ty +"} +(32,1,1) = {" +ty +ty +ty +ty +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +Xl +UR +UR +Gl +Xl +ty +Xl +UR +wn +UR +gr +Gl +UR +UR +UR +zv +Xl +Xl +ty +ty +ty +"} +(33,1,1) = {" +ty +ty +ty +ty +gr +PB +UR +Gl +Xl +ty +ty +Xl +Xl +UR +UR +UR +ty +ty +ty +ty +UR +UR +UR +UR +UR +UR +UR +UR +UR +UR +ty +ty +ty +ty +"} +(34,1,1) = {" +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty +ty "} diff --git a/_maps/_basemap.dm b/_maps/_basemap.dm index fa90eedff88a..11542625c870 100644 --- a/_maps/_basemap.dm +++ b/_maps/_basemap.dm @@ -1,5 +1,5 @@ /// VERY IMPORTANT FOR RUNNING FAST IN PRODUCTION! -/// If you define this flag, more things will init during initializations rather than when they're needed, such as planetoids. +/// If you define this flag, centcom will load. It's also supposed to preload planetoids, but that is disabled. //#define FULL_INIT #ifdef FULL_INIT @@ -8,10 +8,8 @@ #include "map_files\generic\blank.dmm" #endif -#ifndef LOWMEMORYMODE - #ifdef ALL_MAPS - #ifdef CIBUILDING - #include "templates.dm" - #endif +#ifdef ALL_MAPS + #ifdef CIBUILDING + #include "templates.dm" #endif #endif diff --git a/_maps/configs/independent_beluga.json b/_maps/configs/independent_beluga.json index 8c4a50db50d6..520b70dddc6b 100644 --- a/_maps/configs/independent_beluga.json +++ b/_maps/configs/independent_beluga.json @@ -4,7 +4,7 @@ "prefix": "ISV", "namelists": ["CRUISE", "NATURAL"], "map_short_name": "Beluga-class", - "map_path": "_maps/shuttles/shiptest/independent_beluga.dmm", + "map_path": "_maps/shuttles/independent/independent_beluga.dmm", "description": "The Beluga-Class is a transport vessel for those with especially rich blood. Featuring a modest kitchen, hired Inteq security, and luxurious decoration, the Beluga is a first choice pick for many wealthy spacers trying to get from point A to B. The independent ship features several rooms for its guests and a well furnished meeting room for any corporate occassion.", "tags": [ "RP Focus", diff --git a/_maps/configs/independent_box.json b/_maps/configs/independent_box.json index f4a836900702..32bb02219819 100644 --- a/_maps/configs/independent_box.json +++ b/_maps/configs/independent_box.json @@ -6,7 +6,7 @@ "tags": [ "Medical" ], - "map_path": "_maps/shuttles/shiptest/independent_box.dmm", + "map_path": "_maps/shuttles/independent/independent_box.dmm", "namelists": [ "GENERAL", "SPACE", diff --git a/_maps/configs/independent_boyardee.json b/_maps/configs/independent_boyardee.json index f5f14556d842..eacf31372fdd 100644 --- a/_maps/configs/independent_boyardee.json +++ b/_maps/configs/independent_boyardee.json @@ -15,7 +15,7 @@ ], "starting_funds": 5000, "map_short_name": "Boyardee-class", - "map_path": "_maps/shuttles/shiptest/independent_boyardee.dmm", + "map_path": "_maps/shuttles/independent/independent_boyardee.dmm", "job_slots": { "Bartender": { "outfit": "/datum/outfit/job/bartender", diff --git a/_maps/configs/independent_bubble.json b/_maps/configs/independent_bubble.json index 6c94b80564ee..5284f758d47e 100644 --- a/_maps/configs/independent_bubble.json +++ b/_maps/configs/independent_bubble.json @@ -2,7 +2,7 @@ "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "map_name": "Bubble-class Colonial Ship", "map_short_name": "Bubble-class", - "map_path": "_maps/shuttles/shiptest/independent_bubble.dmm", + "map_path": "_maps/shuttles/independent/independent_bubble.dmm", "description": "While the most famous colony ships were hulking, highly-advanced affairs designed to ferry hundreds-if-not-thousands of settlers to far-off worlds and create cities in a matter of months – the Kalixcian Moonlight, the Candor, the First Train to Fort Sol – the Bubble-class is designed to cater to homesteaders aiming to establish a small ranch or village out in the great vastness of space. The Bubble-class is highly compact but complete with all the necessities for colony creation – extensive R&D equipment, robust mining gear, and a small selection of personal arms for fending off hostile fauna. While the Bubble-class has been historically utilized by the Solarian Federation for colony efforts, their proprietary version has recently been phased out of operation.", "tags": [ "Generalist", diff --git a/_maps/configs/independent_byo.json b/_maps/configs/independent_byo.json index 36fc8718678a..35598191c6b5 100644 --- a/_maps/configs/independent_byo.json +++ b/_maps/configs/independent_byo.json @@ -2,7 +2,7 @@ "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "map_name": "BYO-class Do-It-Yourself Enthusiast Special", "map_short_name": "BYO-class", - "map_path": "_maps/shuttles/shiptest/independent_byo.dmm", + "map_path": "_maps/shuttles/independent/independent_byo.dmm", "description": "The BYO can barely be considered a “ship” when initially deployed; more of a construction platform launched hazardously into space. The only thing that separates crews on a BYO from breathable safety and the cold vacuum of space are typically little airtight flaps of plastic. Equipped with a plethora of building material and tools fit for construction, BYO vessels are seen in a variety of shapes and sizes, and almost never with any consistency of form.", "tags": [ "Engineering", diff --git a/_maps/configs/independent_caravan.json b/_maps/configs/independent_caravan.json index 3e244cbf49b5..55398ad6fc94 100644 --- a/_maps/configs/independent_caravan.json +++ b/_maps/configs/independent_caravan.json @@ -2,7 +2,7 @@ "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "map_name": "Caravan-class Modular ship", "map_short_name": "Caravan-class", - "map_path": "_maps/shuttles/shiptest/independent_caravan.dmm", + "map_path": "_maps/shuttles/independent/independent_caravan.dmm", "prefix": "ISV", "description": "The Caravan is a relatively new freighter pattern, designed around a modular pod system that enables the ship to serve in a variety of roles beyond simple transportation. These pods are designed around a quick-release mechanism that allows the main hull to bluespace jump in, detach the pods, and load a new set of empty Caravan-type pods in a matter of minutes. While impressive in theory, the lack of empty compatible cargo pods in Frontier space renders the quick-detach system useless. Additionally, the modular attachment system is prone to wear and tear, necessitating more frequent and costly maintenance than other freighters. Despite these shortcomings, the Caravan has still earned a reputation as a versatile platform for a variety of missions. The main hull features a robust power pack and respectable crew accommodations, and most examples on the Frontier carry pods loaded for mining and survey duties.", "tags": [ diff --git a/_maps/configs/independent_dwayne.json b/_maps/configs/independent_dwayne.json index 2d312fabc045..34a353fe332e 100644 --- a/_maps/configs/independent_dwayne.json +++ b/_maps/configs/independent_dwayne.json @@ -9,7 +9,7 @@ "MERCANTILE" ], "map_short_name": "Mk.II Dwayne-class ", - "map_path": "_maps/shuttles/shiptest/independent_dwayne.dmm", + "map_path": "_maps/shuttles/independent/independent_dwayne.dmm", "description": "The Dwayne is one of the older classes of ships commonly seen on the Frontier, and one of the few such classes that doesn’t also carry a reputation for nightmarish conditions or high accident rates. Originally conceived of as a “mothership” for Nanotrasen mining shuttles that could enable long-duration mining missions at minimal cost, severe budget overruns and issues with the mining shuttle docking system left Nanotrasen with a massive number of mostly-completed hulls upon the project’s cancellation. These hulls were then quickly refurbished and sold on the civilian market, where they proved an immediate success on the Frontier. Contemporary Dwaynes can typically be found carrying a variety of mining equipment and extensive modifications unique to their captains. Recently-available aftermarket modifications have solved the Dwayne’s longstanding shuttle dock issues, allowing modern Dwaynes to finally serve their original design purpose, provided the captain is able to source a shuttle.", "tags": [ "Mining", diff --git a/_maps/configs/independent_halftrack.json b/_maps/configs/independent_halftrack.json index 8dcb1f4cba25..0569a4c395a2 100644 --- a/_maps/configs/independent_halftrack.json +++ b/_maps/configs/independent_halftrack.json @@ -12,7 +12,7 @@ "Combat", "Cargo" ], - "map_path": "_maps/shuttles/shiptest/independent_halftrack.dmm", + "map_path": "_maps/shuttles/independent/independent_halftrack.dmm", "job_slots": { "Captain": { "outfit": "/datum/outfit/job/captain", diff --git a/_maps/configs/independent_junker.json b/_maps/configs/independent_junker.json index 26d3ab445766..e32c13b36210 100644 --- a/_maps/configs/independent_junker.json +++ b/_maps/configs/independent_junker.json @@ -12,7 +12,7 @@ "Survival Challenge" ], "starting_funds": 0, - "map_path": "_maps/shuttles/shiptest/independent_junker.dmm", + "map_path": "_maps/shuttles/independent/independent_junker.dmm", "limit": 1, "job_slots": { "Assistant": { diff --git a/_maps/configs/independent_kilo.json b/_maps/configs/independent_kilo.json index 7877bbfcd08e..43e2d0d62d41 100644 --- a/_maps/configs/independent_kilo.json +++ b/_maps/configs/independent_kilo.json @@ -13,7 +13,7 @@ ], "map_short_name": "Kilo-class", "starting_funds": 1500, - "map_path": "_maps/shuttles/shiptest/independent_kilo.dmm", + "map_path": "_maps/shuttles/independent/independent_kilo.dmm", "job_slots": { "Captain": { "outfit": "/datum/outfit/job/captain/western", diff --git a/_maps/configs/independent_lagoon.json b/_maps/configs/independent_lagoon.json index 3be6a5d95b74..9d5535ca6232 100644 --- a/_maps/configs/independent_lagoon.json +++ b/_maps/configs/independent_lagoon.json @@ -12,7 +12,7 @@ "CRUISE" ], "map_short_name": "Lagoon-class", - "map_path": "_maps/shuttles/shiptest/independent_lagoon.dmm", + "map_path": "_maps/shuttles/independent/independent_lagoon.dmm", "starting_funds": 3000, "job_slots": { "Captain": { diff --git a/_maps/configs/independent_litieguai.json b/_maps/configs/independent_litieguai.json index 8128d3f6c980..d189af20b550 100644 --- a/_maps/configs/independent_litieguai.json +++ b/_maps/configs/independent_litieguai.json @@ -6,7 +6,7 @@ "tags": [ "Medical" ], - "map_path": "_maps/shuttles/shiptest/independent_litieguai.dmm", + "map_path": "_maps/shuttles/independent/independent_litieguai.dmm", "namelists": [ "SPACE", "BEASTS", diff --git a/_maps/configs/independent_masinyane.json b/_maps/configs/independent_masinyane.json index 0d5a6a26e984..4407f412bc92 100644 --- a/_maps/configs/independent_masinyane.json +++ b/_maps/configs/independent_masinyane.json @@ -11,7 +11,7 @@ "MYTHOLOGICAL", "NATURAL" ], - "map_path": "_maps/shuttles/shiptest/independent_masinyane.dmm", + "map_path": "_maps/shuttles/independent/independent_masinyane.dmm", "job_slots": { "Private Ship Owner": { "outfit": "/datum/outfit/job/captain/independent/owner", diff --git a/_maps/configs/independent_meta.json b/_maps/configs/independent_meta.json index 26bd1504b3a9..457c116c24ef 100644 --- a/_maps/configs/independent_meta.json +++ b/_maps/configs/independent_meta.json @@ -13,7 +13,7 @@ "SPACE", "HISTORICAL" ], - "map_path": "_maps/shuttles/shiptest/independent_meta.dmm", + "map_path": "_maps/shuttles/independent/independent_meta.dmm", "job_slots": { "Captain": { "outfit": "/datum/outfit/job/captain", diff --git a/_maps/configs/independent_mudskipper.json b/_maps/configs/independent_mudskipper.json index b7aff1138267..22de128d2667 100644 --- a/_maps/configs/independent_mudskipper.json +++ b/_maps/configs/independent_mudskipper.json @@ -13,7 +13,7 @@ "GENERAL", "SPACE" ], - "map_path": "_maps/shuttles/shiptest/independent_mudskipper.dmm", + "map_path": "_maps/shuttles/independent/independent_mudskipper.dmm", "roundstart": true, "limit": 2, "starting_funds": 1500, diff --git a/_maps/configs/independent_nemo.json b/_maps/configs/independent_nemo.json index 5296c2d663c6..8733d8aa0d1e 100644 --- a/_maps/configs/independent_nemo.json +++ b/_maps/configs/independent_nemo.json @@ -15,7 +15,7 @@ "Robotics" ], "starting_funds": 500, - "map_path": "_maps/shuttles/shiptest/independent_nemo.dmm", + "map_path": "_maps/shuttles/independent/independent_nemo.dmm", "job_slots": { "Research Director": { "outfit": "/datum/outfit/job/rd", diff --git a/_maps/configs/independent_pill.json b/_maps/configs/independent_pill.json index 18b1a3968033..42c2a4943f3c 100644 --- a/_maps/configs/independent_pill.json +++ b/_maps/configs/independent_pill.json @@ -11,7 +11,7 @@ "tags": [ "Specialist" ], - "map_path": "_maps/shuttles/shiptest/independent_pillbottle.dmm", + "map_path": "_maps/shuttles/independent/independent_pillbottle.dmm", "limit":1, "starting_funds": 0, "job_slots": { diff --git a/_maps/configs/independent_rigger.json b/_maps/configs/independent_rigger.json index ed778696bd74..8229cee469de 100644 --- a/_maps/configs/independent_rigger.json +++ b/_maps/configs/independent_rigger.json @@ -16,7 +16,7 @@ "Robotics", "Generalist" ], - "map_path": "_maps/shuttles/shiptest/independent_rigger.dmm", + "map_path": "_maps/shuttles/independent/independent_rigger.dmm", "roundstart": true, "limit": 2, "job_slots": { diff --git a/_maps/configs/independent_rube_goldberg.json b/_maps/configs/independent_rube_goldberg.json index 8f538bed67a5..055dbc86ee68 100644 --- a/_maps/configs/independent_rube_goldberg.json +++ b/_maps/configs/independent_rube_goldberg.json @@ -9,7 +9,7 @@ "map_short_name": "Rube Goldberg-class", "description": "The Rube Goldberg-class Engineering Project is an experience, and a monument to insanity. Featuring a powerful supermatter engine in combination with an Escher-esque structural layout, complicated pipe and wire network, and utter disregard for basic safety procedures and common sense, this ship is a disaster waiting to happen.", "tags": ["Engineering", "Construction"], - "map_path": "_maps/shuttles/shiptest/independent_rube_goldberg.dmm", + "map_path": "_maps/shuttles/independent/independent_rube_goldberg.dmm", "limit": 1, "job_slots": { "Chief at Engineering": { diff --git a/_maps/configs/independent_schmiedeberg.json b/_maps/configs/independent_schmiedeberg.json index 457b8d602f4f..a21435659743 100644 --- a/_maps/configs/independent_schmiedeberg.json +++ b/_maps/configs/independent_schmiedeberg.json @@ -9,7 +9,7 @@ "Medical", "Chemistry" ], - "map_path": "_maps/shuttles/shiptest/independent_schmiedeberg.dmm", + "map_path": "_maps/shuttles/independent/independent_schmiedeberg.dmm", "namelists": [ "SUNS", "GENERAL" diff --git a/_maps/configs/independent_shepherd.json b/_maps/configs/independent_shepherd.json index 39249ac48314..ce677e1d3d11 100644 --- a/_maps/configs/independent_shepherd.json +++ b/_maps/configs/independent_shepherd.json @@ -8,7 +8,7 @@ "Botany", "Service" ], - "map_path": "_maps/shuttles/shiptest/independent_shepherd.dmm", + "map_path": "_maps/shuttles/independent/independent_shepherd.dmm", "prefix": "ISV", "namelists": [ "MYTHOLOGICAL" diff --git a/_maps/configs/independent_shetland.json b/_maps/configs/independent_shetland.json index fc2741514879..a1d88413bc18 100644 --- a/_maps/configs/independent_shetland.json +++ b/_maps/configs/independent_shetland.json @@ -13,7 +13,7 @@ "Service", "Medical" ], - "map_path": "_maps/shuttles/shiptest/independent_shetland.dmm", + "map_path": "_maps/shuttles/independent/independent_shetland.dmm", "map_id": "independent_shetland", "roundstart": true, "job_slots": { diff --git a/_maps/configs/independent_tranquility.json b/_maps/configs/independent_tranquility.json index f56ad1bbd1f3..a7ddabe6e4de 100644 --- a/_maps/configs/independent_tranquility.json +++ b/_maps/configs/independent_tranquility.json @@ -14,7 +14,7 @@ "Service", "Generalist" ], - "map_path": "_maps/shuttles/shiptest/independent_tranquility.dmm", + "map_path": "_maps/shuttles/independent/independent_tranquility.dmm", "job_slots": { "Captain": { "outfit": "/datum/outfit/job/captain/western", diff --git a/_maps/configs/inteq_colossus.json b/_maps/configs/inteq_colossus.json index b88ae1b0a76b..06a1358c3e95 100644 --- a/_maps/configs/inteq_colossus.json +++ b/_maps/configs/inteq_colossus.json @@ -14,7 +14,7 @@ "INTEQ" ], "map_short_name": "Colossus-class", - "map_path": "_maps/shuttles/shiptest/inteq_colossus.dmm", + "map_path": "_maps/shuttles/inteq/inteq_colossus.dmm", "limit": 1, "job_slots": { "Vanguard": { diff --git a/_maps/configs/inteq_hound.json b/_maps/configs/inteq_hound.json index d31c8b3f2588..80e8349de9ec 100644 --- a/_maps/configs/inteq_hound.json +++ b/_maps/configs/inteq_hound.json @@ -12,7 +12,7 @@ "tags": [ "Combat" ], - "map_path": "_maps/shuttles/shiptest/inteq_hound.dmm", + "map_path": "_maps/shuttles/inteq/inteq_hound.dmm", "map_id": "inteq_hound", "limit": 2, "job_slots": { diff --git a/_maps/configs/inteq_talos.json b/_maps/configs/inteq_talos.json index 42b254885685..c298846d55b0 100644 --- a/_maps/configs/inteq_talos.json +++ b/_maps/configs/inteq_talos.json @@ -14,7 +14,7 @@ "INTEQ" ], "map_short_name": "Talos-class", - "map_path": "_maps/shuttles/shiptest/inteq_talos.dmm", + "map_path": "_maps/shuttles/inteq/inteq_talos.dmm", "limit": 1, "job_slots": { "Vanguard": { diff --git a/_maps/configs/inteq_vaquero.json b/_maps/configs/inteq_vaquero.json index 8cd4224faa16..72b2ae65d257 100644 --- a/_maps/configs/inteq_vaquero.json +++ b/_maps/configs/inteq_vaquero.json @@ -11,7 +11,7 @@ "INTEQ" ], "map_short_name": "Vaquero-class", - "map_path": "_maps/shuttles/shiptest/inteq_vaquero.dmm", + "map_path": "_maps/shuttles/inteq/inteq_vaquero.dmm", "limit": 1, "job_slots": { "Vanguard": { diff --git a/_maps/configs/minutemen_asclepius.json b/_maps/configs/minutemen_asclepius.json index e2f80e40dc11..6923097d0447 100644 --- a/_maps/configs/minutemen_asclepius.json +++ b/_maps/configs/minutemen_asclepius.json @@ -13,7 +13,7 @@ "MYTHOLOGICAL" ], "map_short_name": "Asclepius-class", - "map_path": "_maps/shuttles/shiptest/minutemen_asclepius.dmm", + "map_path": "_maps/shuttles/minutemen/minutemen_asclepius.dmm", "limit": 1, "job_slots": { "Captain": { diff --git a/_maps/configs/minutemen_cepheus.json b/_maps/configs/minutemen_cepheus.json index ee275e7e5d10..c82468a59349 100644 --- a/_maps/configs/minutemen_cepheus.json +++ b/_maps/configs/minutemen_cepheus.json @@ -11,7 +11,7 @@ "MYTHOLOGICAL" ], "map_short_name": "Cepheus-class", - "map_path": "_maps/shuttles/shiptest/minutemen_cepheus.dmm", + "map_path": "_maps/shuttles/minutemen/minutemen_cepheus.dmm", "limit": 1, "job_slots": { "Captain": { diff --git a/_maps/configs/minutemen_corvus.json b/_maps/configs/minutemen_corvus.json index 355669e158fd..1080c81f59a4 100644 --- a/_maps/configs/minutemen_corvus.json +++ b/_maps/configs/minutemen_corvus.json @@ -12,7 +12,7 @@ "MYTHOLOGICAL" ], "map_short_name": "Corvus-class", - "map_path": "_maps/shuttles/shiptest/minutemen_corvus.dmm", + "map_path": "_maps/shuttles/minutemen/minutemen_corvus.dmm", "limit": 2, "job_slots": { "Captain": { diff --git a/_maps/configs/minutemen_vela.json b/_maps/configs/minutemen_vela.json index 86b7818ba1f8..eed473a983ff 100644 --- a/_maps/configs/minutemen_vela.json +++ b/_maps/configs/minutemen_vela.json @@ -11,7 +11,7 @@ ], "map_short_name": "Vela-class", "starting_funds": 1000, - "map_path": "_maps/shuttles/shiptest/minutemen_vela.dmm", + "map_path": "_maps/shuttles/minutemen/minutemen_vela.dmm", "limit": 1, "job_slots": { "Captain": { diff --git a/_maps/configs/nanotrasen_delta.json b/_maps/configs/nanotrasen_delta.json index 6f81f5972a22..749e0240a6ba 100644 --- a/_maps/configs/nanotrasen_delta.json +++ b/_maps/configs/nanotrasen_delta.json @@ -15,7 +15,7 @@ "Science", "Robotics" ], - "map_path": "_maps/shuttles/shiptest/nanotrasen_delta.dmm", + "map_path": "_maps/shuttles/nanotrasen/nanotrasen_delta.dmm", "starting_funds": 4000, "job_slots": { "Captain": { diff --git a/_maps/configs/nanotrasen_gecko.json b/_maps/configs/nanotrasen_gecko.json index f7f0791f7cb1..1a8e59f73ece 100644 --- a/_maps/configs/nanotrasen_gecko.json +++ b/_maps/configs/nanotrasen_gecko.json @@ -8,7 +8,7 @@ "SPACE" ], "map_short_name": "Gecko-class", - "map_path": "_maps/shuttles/shiptest/nanotrasen_gecko.dmm", + "map_path": "_maps/shuttles/nanotrasen/nanotrasen_gecko.dmm", "description": "A bulky, robust, and exceedingly ugly salvage ship. The Gecko is nothing less than a flying brick full of redundant maintenance spaces and open-to-space salvage bays, powered by a temperamental TEG system, with a cramped crew space sandwiched in between. Due to its deeply obsolete design and the dangerous nature of salvage work, Geckos are often the final resting point for the careers of officers that have stepped on too many toes in the corporate world without doing anything outright criminal. Despite these shortcomings, Geckos offer a large amount of open space and a good supply of engineering equipment, which is all an enterprising engineer truly needs.", "tags": [ "Mining", diff --git a/_maps/configs/nanotrasen_heron.json b/_maps/configs/nanotrasen_heron.json new file mode 100644 index 000000000000..3cdc9821a859 --- /dev/null +++ b/_maps/configs/nanotrasen_heron.json @@ -0,0 +1,78 @@ +{ + "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", + "prefix": "NTSV", + "namelists": ["WEAPONS"], + "map_name": "Heron-Class Dreadnaught", + "map_short_name": "Heron-class", + "map_path": "_maps/shuttles/shiptest/nanotrasen_heron.dmm", + "map_id": "nanotrasen_heron", + "description": "The Heron-Class is the biggest ship available to NanoTrasen's frontier forces. These vessels served as the flagship of many fleets during the war, serving as a carrier for an operative team, or a command vessel for corporate units. Captains of this vessel were known to retrofit bluespace artillery onto the hangar, and directly fire it during combat. Since the end of the war, it has been repurposed for peacekeeping missions on backline sectors. Though the age of the design is starting to show, it stands as one of the remnants of NanoTrasen's once powerful hold over the cosmos.", + "limit": 1, + "job_slots": { + "Fleet Captain": { + "outfit": "/datum/outfit/job/captain/nt/heron", + "officer": true, + "slots": 1 + }, + "First Officer": { + "outfit": "/datum/outfit/job/head_of_personnel/nt", + "officer": true, + "slots": 1 + }, + "Head of Security": { + "outfit": "/datum/outfit/job/hos/nanotrasen", + "officer": true, + "slots": 1 + }, + "Pilot": { + "outfit": "/datum/outfit/job/head_of_personnel/pilot/heron", + "officer": true, + "slots": 1 + }, + "Security Officer": { + "outfit": "/datum/outfit/job/security/nanotrasen", + "slots": 1 + }, + "ERT Officer":{ + "outfit": "/datum/outfit/job/security/nanotrasen/ert", + "slots": 4 + }, + "ERT Medical Officer":{ + "outfit": "/datum/outfit/job/security/nanotrasen/ert/med", + "slots": 1 + }, + "ERT Engineering Officer":{ + "outfit": "/datum/outfit/job/security/nanotrasen/ert/engi", + "slots": 1 + }, + "Mech Pilot":{ + "outfit": "/datum/outfit/job/security/nanotrasen/mech_pilot", + "slots": 1 + }, + "Engine Technician": { + "outfit": "/datum/outfit/job/engineer/nt", + "slots": 1 + }, + "Chief Engineer":{ + "outfit": "/datum/outfit/job/ce/nt", + "officer": true, + "slots": 1 + }, + "Roboticist": { + "outfit":"/datum/outfit/job/roboticist/heron", + "slots": 1 + }, + "Medical Doctor":{ + "outfit": "/datum/outfit/job/doctor", + "slots": 1 + }, + + "Atmospheric Technician": 1, + "Quartermaster": 1, + "Cargo Technician": 1, + "Cook": 1, + "Janitor": 1, + "Assistant": 2 + }, + "enabled": false +} diff --git a/_maps/configs/nanotrasen_mimir.json b/_maps/configs/nanotrasen_mimir.json index a0ba21e4df19..273d17ad5705 100644 --- a/_maps/configs/nanotrasen_mimir.json +++ b/_maps/configs/nanotrasen_mimir.json @@ -15,7 +15,7 @@ "Generalist", "Specialist" ], - "map_path": "_maps/shuttles/shiptest/nanotrasen_mimir.dmm", + "map_path": "_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm", "limit": 1, "job_slots": { "Warden": { diff --git a/_maps/configs/nanotrasen_osprey.json b/_maps/configs/nanotrasen_osprey.json index feea5e777c69..d88127f1a177 100644 --- a/_maps/configs/nanotrasen_osprey.json +++ b/_maps/configs/nanotrasen_osprey.json @@ -9,7 +9,7 @@ "WEAPONS" ], "map_short_name": "Osprey-class", - "map_path": "_maps/shuttles/shiptest/nanotrasen_osprey.dmm", + "map_path": "_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm", "description": "Some of the most modern ships in Nanotrasen’s fleet and a prestigious assignment for their captains, the famed Osprey of the ICW’s most dramatic astronautical engagements lives on as a very well-appointed exploration ship. Extensively refurbished from their origins as Bluespace Artillery platforms, the contemporary Osprey repurposes military-grade sensor equipment and AI systems for exploration and scientific work. Features include respectably-equipped medical, culinary, and scientific facilities and an AI core, as well as a ship-wide disposals and delivery system and a very spacious cargo bay. However, the powerful (if temperamental) supermatter engines that powered the initial batch of Ospreys were stripped out during their rebuilds, and the replacement generator banks have left contemporary Ospreys somewhat power-starved.", "tags": ["Cargo", "Robotics", "Generalist"], "limit": 1, diff --git a/_maps/configs/nanotrasen_ranger.json b/_maps/configs/nanotrasen_ranger.json index e71839db2893..6c2d24f439f9 100644 --- a/_maps/configs/nanotrasen_ranger.json +++ b/_maps/configs/nanotrasen_ranger.json @@ -18,7 +18,7 @@ "Generalist" ], "starting_funds": 4000, - "map_path": "_maps/shuttles/shiptest/nanotrasen_ranger.dmm", + "map_path": "_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm", "limit": 1, "job_slots": { "LP Lieutenant": { diff --git a/_maps/configs/nanotrasen_skipper.json b/_maps/configs/nanotrasen_skipper.json index 501ddf7b1afa..0b3d24ec9918 100644 --- a/_maps/configs/nanotrasen_skipper.json +++ b/_maps/configs/nanotrasen_skipper.json @@ -10,13 +10,13 @@ "WEAPONS", "MERCANTILE" ], - "map_path": "_maps/shuttles/shiptest/nanotrasen_skipper.dmm", + "map_path": "_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm", "description": "An example of one of Nanotrasen’s “standard-pattern” cruisers. The Skipper-class is well-equipped by Frontier standards, with ample room for engineering equipment, well-appointed crew accommodations, and a decent supply of defensive weaponry. Notably, the Skipper comes with a larger command section than average, and the officers on Skippers tend to be better-equipped than their peers. Though not as prestigious as a position aboard an Osprey, few Nanotrasen captains would turn down a position commanding a Skipper.", "tags": [ "Engineering", "Mining" ], - "starting_funds": 4000, + "starting_funds": 4500, "roundstart": true, "job_slots": { "Captain": { @@ -36,13 +36,25 @@ "Medical Doctor": 1, "Engineer": { "outfit": "/datum/outfit/job/engineer/nt", - "slots": 3 + "slots": 1 + }, + "Atmospheric Technician": { + "outfit": "/datum/outfit/job/atmos", + "slots": 1 }, "Shaft Miner": 2, + "Cargo Technician": { + "outfit": "/datum/outfit/job/cargo_tech", + "slots": 1 + }, "Security Officer": { "outfit": "/datum/outfit/job/security/nanotrasen", "slots": 1 }, + "Cook": { + "outfit": "/datum/outfit/job/cook", + "slots": 1 + }, "Assistant": { "outfit": "/datum/outfit/job/assistant", "slots": 3 diff --git a/_maps/configs/pirate_ember.json b/_maps/configs/pirate_ember.json index 78c60f95e28b..52b511afefe1 100644 --- a/_maps/configs/pirate_ember.json +++ b/_maps/configs/pirate_ember.json @@ -7,7 +7,7 @@ "BRITISH_NAVY" ], "map_short_name": "Ember-class", - "map_path": "_maps/shuttles/shiptest/pirate_ember.dmm", + "map_path": "_maps/shuttles/pirate/pirate_ember.dmm", "description": "The Ember class is a red flag in any sector. A giant, slow moving, safety hazard of a ship, makeshift in almost every regard, finds itself favored amongst the most ruthless and cutthroat of pirates and scoundrels galaxy-wide. Simply to be willing to exist on one of these ships shows a hardiness not typically found in most spacers. The best way to deal with Ember vessels is to simply give them a wide berth.", "tags": [ "Combat", diff --git a/_maps/configs/pirate_libertatia.json b/_maps/configs/pirate_libertatia.json index 196f8652753f..1dd3654a93f7 100644 --- a/_maps/configs/pirate_libertatia.json +++ b/_maps/configs/pirate_libertatia.json @@ -2,7 +2,7 @@ "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "map_name": "Libertatia-class Hauler", "map_short_name": "Libertatia-class", - "map_path": "_maps/shuttles/shiptest/pirate_libertatia.dmm", + "map_path": "_maps/shuttles/pirate/pirate_libertatia.dmm", "description": "A widely-available and dirt-cheap courier ship by Miskilamo Spacefaring, Libertatias are shoddy overhauls of old civilian atmospheric ships or the burned-out wrecks of other Libertatias, made nominally space worthy and capable of carrying a modest cargo at blistering speeds. While marketed as courier ships and short-range cargo shuttles, the Libertatia found its true target market in the hands of smugglers, blockade runners, and pirates, who find its speed, low sensor signature, and rock-bottom price point extremely attractive. In recent years, it’s become far more common to see Libertatias captained by pirates than anyone else, especially in the loosely-patrolled Frontier sectors. Surprisingly enough, the more organized Frontiersmen pirate group shows little love for the humble Libertatia, instead preferring larger and more threatening ships.", "tags": [ "Combat" diff --git a/_maps/configs/pirate_noderider.json b/_maps/configs/pirate_noderider.json index aa005f85b7cf..c46b88bee91b 100644 --- a/_maps/configs/pirate_noderider.json +++ b/_maps/configs/pirate_noderider.json @@ -7,7 +7,7 @@ "INSTALLATION", "PIRATES" ], - "map_path": "_maps/shuttles/shiptest/pirate_noderider.dmm", + "map_path": "_maps/shuttles/pirate/pirate_noderider.dmm", "description": "The Jupiter-class Stormrider is a specialist design originating from the Silicon Elevation Council, typically used for sustained missions in the Frontier. While habitable to organic life (typically as a matter of convenience), the ship is designed with silicons in mind, and features an AI core built into its hull. Many captains have been quoted as being “frightened” (although “piss-pants scared” was the exact statement) by one suddenly appearing out of a storm, IFF loudly declaring who they were, or in worse conditions, not functioning at all. Some examples have been known to find their way into pirate hands, who leverage the ship to spring ambushes on unsuspecting traders.", "tags": [ "Robotics", diff --git a/_maps/configs/radio.json b/_maps/configs/radio.json index e1ae13e64abf..55bc4549dc5b 100644 --- a/_maps/configs/radio.json +++ b/_maps/configs/radio.json @@ -2,7 +2,7 @@ "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", "map_name": "Radio Broadcasting Ship", "map_short_name": "Radio-class", - "map_path": "_maps/shuttles/shiptest/radio_funny.dmm", + "map_path": "_maps/shuttles/independent/radio_funny.dmm", "description": "Whether through divine intervention or hellish creation by the hands of sapient-kind, reports of this “ship” plague some sectors more than others. The Radio Broadcasting Ship is an anomalous thing in its own right. It is a “ship” equipped with nothing but radios and reality warping engines. There exist many reports of this vessel being totally destroyed and showing back up in a sector just hours later. The only thing you can do about these vessels is pray the pilot doesn’t have bad taste.", "tags": ["Specialist"], "job_slots": { diff --git a/_maps/configs/solgov_chronicle.json b/_maps/configs/solgov_chronicle.json index 2f2043eaec73..0ef5e8005756 100644 --- a/_maps/configs/solgov_chronicle.json +++ b/_maps/configs/solgov_chronicle.json @@ -9,7 +9,7 @@ "NATURAL" ], "map_short_name": "Chronicle-class", - "map_path": "_maps/shuttles/shiptest/solgov_chronicle.dmm", + "map_path": "_maps/shuttles/solgov/solgov_chronicle.dmm", "description": "Equipped with a sophisticated sensors suite and powerful data utilities, the Chronicle is a clerical workhorse, able to collect and process vast amounts of information. Often employed for census duties and interstellar exploration, the Chronicle is also a favorite of Evidenzkompanien, employed often for intelligence operations. With this fact in mind, Chronicle-class vessels are often placed under increased scrutiny by patrols, somewhat mitigating their effectiveness as a spymaster's tool.", "tags": [ "Specialist" diff --git a/_maps/configs/solgov_paracelsus.json b/_maps/configs/solgov_paracelsus.json index b10439c6db02..cd3b056e282e 100644 --- a/_maps/configs/solgov_paracelsus.json +++ b/_maps/configs/solgov_paracelsus.json @@ -11,7 +11,7 @@ "map_short_name": "Paracelsus-class", "description": "Fulfilling its role as a medicinal powerhouse of the Solarian Navy, the Paracelsus-class is a specially designed corvette to assist solarian fleets in medical troubles, as well as supplying such vessels with medication. Scribes pursuing a medical degree often work in these ships to shadow trained medical doctors to complete their residency.", "tags": ["RP Focus", "Medical", "Chemistry"], - "map_path": "_maps/shuttles/shiptest/solgov_paracelsus.dmm", + "map_path": "_maps/shuttles/solgov/solgov_paracelsus.dmm", "limit": 1, "job_slots": { "Captain": { diff --git a/_maps/configs/srm_glaive.json b/_maps/configs/srm_glaive.json index 093e28107e2c..f71c8b2398fc 100644 --- a/_maps/configs/srm_glaive.json +++ b/_maps/configs/srm_glaive.json @@ -7,7 +7,7 @@ "BEASTS" ], "map_short_name": "Glaive-class", - "map_path": "_maps/shuttles/shiptest/srm_glaive.dmm", + "map_path": "_maps/shuttles/roumain/srm_glaive.dmm", "description": "A standard issue vessel to the highest ranks of the Saint-Roumain Militia. While “standard”, this class of vessel is unique to the Montagne that owns it. Each ship is designed around a central garden consisting of plants, soil, and a tree from the owning Montagnes’ home planet. As a highly religious ascetic order, the SRM supplies each Glaive with supplies to farm, raise animals, and perform medicine in more “natural” ways, using herbs and plants grown in house. Alongside this, the ship has a decent amount of mining equipment, and supplies required to begin the manufacturing of SRM-pattern firearms as is standard for Hunter’s Pride. The ship is captained by a Montagne, who oversees a team of Hunters, and Shadows apprenticing them.", "tags": [ "Mining", diff --git a/_maps/configs/syndicate_aegis.json b/_maps/configs/syndicate_aegis.json index 73b4e1d817ad..50d7dea915e7 100644 --- a/_maps/configs/syndicate_aegis.json +++ b/_maps/configs/syndicate_aegis.json @@ -2,7 +2,7 @@ "prefix": "SSV", "map_name": "Aegis-class Long Term Care Ship", "map_short_name": "Aegis-class", - "map_path": "_maps/shuttles/shiptest/syndicate_aegis.dmm", + "map_path": "_maps/shuttles/syndicate/syndicate_aegis.dmm", "description": "Approximately a third of the way through the ICW, it became apparent that the Syndicate could not muster the sheer throwaway manpower that Nanotrasen could with its swaths of mercenaries and disposable personnel. Instead, the Syndicate began to adopt a much more conservative approach to maintaining personnel, by establishing an initiative to create a host of medical vessels designed to rescue and rehabilitate the fallen. While the Li Tieguai filled the rescue role, the Aegis-Class was to fill the rehabilitation role. Featuring a host of ‘quality of life’ features for long-term patients (a full bar, a hydroponics setup, and so on), an expansive medical bay and an array of comfort fixtures like couches and gardens, the Aegis is perfect for aspiring doctors or wounded patients.", "tags": [ "Botany", diff --git a/_maps/configs/syndicate_cybersun_kansatsu.json b/_maps/configs/syndicate_cybersun_kansatsu.json index d032f8c8d30f..8696db8e0359 100644 --- a/_maps/configs/syndicate_cybersun_kansatsu.json +++ b/_maps/configs/syndicate_cybersun_kansatsu.json @@ -12,7 +12,7 @@ "Specialist" ], "map_short_name": "Kansatsu-class", - "map_path": "_maps/shuttles/shiptest/syndicate_cybersun_kansatsu.dmm", + "map_path": "_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm", "map_id": "cybersun_kansatsu", "job_slots": { "Captain": { diff --git a/_maps/configs/syndicate_gorlex_hyena.json b/_maps/configs/syndicate_gorlex_hyena.json index 2c0d12a29a45..6e1fa6ae92ce 100644 --- a/_maps/configs/syndicate_gorlex_hyena.json +++ b/_maps/configs/syndicate_gorlex_hyena.json @@ -15,7 +15,7 @@ "Combat" ], "map_short_name": "Hyena-class", - "map_path": "_maps/shuttles/shiptest/syndicate_gorlex_hyena.dmm", + "map_path": "_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm", "job_slots": { "Captain": { "outfit": "/datum/outfit/job/captain/syndicate/gorlex", diff --git a/_maps/configs/syndicate_gorlex_komodo.json b/_maps/configs/syndicate_gorlex_komodo.json index f65d05a44e60..da4b9e58a795 100644 --- a/_maps/configs/syndicate_gorlex_komodo.json +++ b/_maps/configs/syndicate_gorlex_komodo.json @@ -14,7 +14,7 @@ "Combat", "Engineering" ], - "map_path": "_maps/shuttles/shiptest/syndicate_gorlex_komodo.dmm", + "map_path": "_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm", "map_id": "syndicate_gorlex_komodo", "limit": 1, "job_slots": { diff --git a/_maps/configs/syndicate_lugol.json b/_maps/configs/syndicate_lugol.json index 891a19641252..268769618857 100644 --- a/_maps/configs/syndicate_lugol.json +++ b/_maps/configs/syndicate_lugol.json @@ -12,7 +12,7 @@ "GEC", "SPACE" ], - "map_path": "_maps/shuttles/shiptest/syndicate_gec_lugol.dmm", + "map_path": "_maps/shuttles/syndicate/syndicate_gec_lugol.dmm", "map_id": "gec_lugol", "limit": 2, "job_slots": { @@ -42,5 +42,5 @@ "slots": 2 } }, -"enabled": true +"enabled": false } diff --git a/_maps/configs/syndicate_luxembourg.json b/_maps/configs/syndicate_luxembourg.json index 40fe900ae3d6..d34f20183fae 100644 --- a/_maps/configs/syndicate_luxembourg.json +++ b/_maps/configs/syndicate_luxembourg.json @@ -13,7 +13,7 @@ "Cargo" ], "map_short_name": "Luxembourg-class", - "map_path": "_maps/shuttles/shiptest/syndicate_luxembourg.dmm", + "map_path": "_maps/shuttles/syndicate/syndicate_luxembourg.dmm", "limit": 1, "starting_funds": 6000, "job_slots": { diff --git a/_maps/configs/syndicate_twinkleshine.json b/_maps/configs/syndicate_twinkleshine.json index 24b55c7bd35c..2c7a57e1bd66 100644 --- a/_maps/configs/syndicate_twinkleshine.json +++ b/_maps/configs/syndicate_twinkleshine.json @@ -15,7 +15,7 @@ "Medical" ], "map_short_name": "Twinkleshine-class", - "map_path": "_maps/shuttles/shiptest/syndicate_twinkleshine.dmm", + "map_path": "_maps/shuttles/syndicate/syndicate_twinkleshine.dmm", "job_slots": { "Captain": { "outfit": "/datum/outfit/job/captain/syndicate/sbc", diff --git a/_maps/deprecated/Ruins/TheDerelict.dmm b/_maps/deprecated/Ruins/TheDerelict.dmm index aa545a1d7d9e..0a6b86996b66 100644 --- a/_maps/deprecated/Ruins/TheDerelict.dmm +++ b/_maps/deprecated/Ruins/TheDerelict.dmm @@ -1146,7 +1146,6 @@ /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/bridge/access) "fw" = ( -/obj/effect/mob_spawn/drone/derelict, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/bridge/access) "fx" = ( @@ -1839,7 +1838,6 @@ /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "in" = ( -/obj/effect/mob_spawn/drone/derelict, /turf/open/floor/plating/airless, /area/ruin/space/derelict/singularity_engine) "io" = ( @@ -4396,7 +4394,6 @@ /obj/machinery/power/terminal{ dir = 1 }, -/obj/effect/mob_spawn/drone/derelict, /obj/structure/cable{ icon_state = "0-2" }, diff --git a/_maps/deprecated/Ruins/forgottenship.dmm b/_maps/deprecated/Ruins/forgottenship.dmm index a692377b9a76..ccc0042f2280 100644 --- a/_maps/deprecated/Ruins/forgottenship.dmm +++ b/_maps/deprecated/Ruins/forgottenship.dmm @@ -420,7 +420,7 @@ /obj/structure/closet/crate/secure/gear{ req_one_access_txt = "150" }, -/obj/item/clothing/suit/space/hardsuit/cybersun, +, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/powered/syndicate_forgotten_vault) "bB" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/deprecated/Ruins/lavaland_biodome_beach.dmm similarity index 100% rename from _maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm rename to _maps/deprecated/Ruins/lavaland_biodome_beach.dmm diff --git a/_maps/deprecated/Ruins/lavaland_surface_syndicate_base1.dmm b/_maps/deprecated/Ruins/lavaland_surface_syndicate_base1.dmm new file mode 100644 index 000000000000..be604192e5bd --- /dev/null +++ b/_maps/deprecated/Ruins/lavaland_surface_syndicate_base1.dmm @@ -0,0 +1,9168 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"ac" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ae" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"af" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"ag" = ( +/obj/machinery/airalarm/syndicate{ + dir = 4; + pixel_x = -25 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"ah" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade{ + dir = 1 + }, +/obj/structure/sign/barsign{ + pixel_y = -32; + req_access = null + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"ai" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/fullupgrade{ + dir = 1 + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"aj" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/medical/syndicate_access, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"ak" = ( +/obj/machinery/vending/boozeomat/syndicate_access, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/bar) +"al" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/medical/syndicate_access, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"ap" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"aq" = ( +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"as" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"at" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/poddoor{ + id = "lavalandsyndi_chemistry" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"aF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"aL" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"aM" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/chem_dispenser/fullupgrade, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"aN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Bar Storage"; + req_access_txt = "150"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"aQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"aR" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"aW" = ( +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "lavalandsyndi_arrivals"; + name = "Arrivals Blast Door Control"; + pixel_y = -26; + req_access_txt = "150" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"bd" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"bf" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"bv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"by" = ( +/obj/structure/closet/l3closet, +/obj/machinery/power/apc/syndicate{ + dir = 8; + name = "Chemistry APC"; + pixel_x = -25 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"bM" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ca" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"cA" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/wiki/chemistry, +/obj/item/book/manual/wiki/chemistry, +/obj/item/clothing/glasses/science, +/obj/item/clothing/glasses/science, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"cG" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/chem_master, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"cI" = ( +/obj/machinery/power/apc/syndicate{ + name = "Experimentation Lab APC"; + pixel_y = -25 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"cJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/binary/pump{ + name = "CO2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"cK" = ( +/obj/machinery/power/compressor{ + comp_id = "syndie_lavaland_incineratorturbine"; + dir = 1; + luminosity = 2 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable, +/turf/open/floor/engine/vacuum, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"cN" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi_bar"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/bar) +"cP" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/engine/plasma, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"cU" = ( +/obj/structure/table/glass, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/storage/box/syringes, +/obj/machinery/power/apc/syndicate{ + dir = 1; + name = "Virology APC"; + pixel_y = 25 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"cV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"dc" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"di" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"dn" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"do" = ( +/obj/structure/closet/secure_closet/medical1{ + req_access = null; + req_access_txt = "150" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/beakers/bluespace, +/obj/item/storage/box/beakers/bluespace, +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"du" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/button/door{ + id = "lavalandsyndi_chemistry"; + name = "Chemistry Blast Door Control"; + pixel_y = 26; + req_access_txt = "150" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dv" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/chem_heater, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dw" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/turf_decal/industrial/warning, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dx" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 6 + }, +/obj/structure/closet/crate/bin, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dy" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"dB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dE" = ( +/obj/structure/table/glass, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5; + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5; + pixel_y = 2 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5; + pixel_x = 2; + pixel_y = -2 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/reagent_containers/glass/bottle/charcoal{ + pixel_x = 6 + }, +/obj/item/reagent_containers/glass/bottle/epinephrine, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dG" = ( +/obj/structure/catwalk, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"dI" = ( +/obj/structure/table/glass, +/obj/machinery/reagentgrinder{ + pixel_y = 5 + }, +/obj/item/reagent_containers/glass/beaker/large, +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dK" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/structure/closet/crate/secure/gear{ + req_access_txt = "150" + }, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/under/syndicate/combat, +/obj/item/clothing/under/syndicate/combat, +/obj/item/storage/belt/military, +/obj/item/storage/belt/military, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/glasses/night, +/obj/item/clothing/glasses/night, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"dL" = ( +/obj/machinery/airalarm/syndicate{ + pixel_y = 25 + }, +/obj/structure/closet/crate, +/obj/item/extinguisher{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/extinguisher{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/extinguisher{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/flashlight{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/flashlight{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/flashlight{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/radio/headset/syndicate/alt{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/radio/headset/syndicate/alt, +/obj/item/radio/headset/syndicate/alt{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"dM" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/item/storage/box/donkpockets{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/storage/box/donkpockets{ + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"dO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/yellow, +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering{ + name = "Engineering"; + req_access_txt = "150"; + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"dP" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"dQ" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"dR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/hatch{ + heat_proof = 1; + name = "Experimentation Room"; + req_access_txt = "150" + }, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi"; + name = "Syndicate Research Experimentation Shutters" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"dS" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi"; + name = "Syndicate Research Experimentation Shutters" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"dU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dV" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dX" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dY" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"dZ" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/table/glass, +/obj/item/folder/white, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -3 + }, +/obj/item/reagent_containers/glass/beaker/large{ + pixel_x = -3 + }, +/obj/item/reagent_containers/dropper, +/obj/machinery/airalarm/syndicate{ + dir = 8; + pixel_x = 25 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/screwdriver/nuke{ + pixel_y = 18 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"ea" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/structure/closet/crate/secure/weapon{ + req_access_txt = "150" + }, +/obj/item/ammo_box/c10mm{ + pixel_y = 6 + }, +/obj/item/ammo_box/c10mm, +/obj/item/ammo_box/magazine/m10mm{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/ammo_box/magazine/m10mm{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/ammo_box/magazine/m10mm{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/ammo_box/magazine/m10mm{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eb" = ( +/obj/structure/closet/crate, +/obj/item/storage/toolbox/electrical{ + pixel_y = 4 + }, +/obj/item/storage/toolbox/mechanical, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ec" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/structure/closet/crate/medical, +/obj/item/storage/firstaid/fire{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/brute, +/obj/item/storage/firstaid/regular{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ed" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/rad_collector, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ee" = ( +/obj/structure/rack, +/obj/item/flashlight{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/flashlight, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eg" = ( +/obj/structure/closet/firecloset/full{ + anchored = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eh" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/virology) +"ei" = ( +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/syndicate_lava_base/virology) +"ej" = ( +/obj/structure/bed/roller, +/obj/machinery/iv_drip, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/mob/living/carbon/monkey{ + faction = list("neutral","Syndicate") + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"ek" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"el" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"em" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/button/door{ + id = "lavalandsyndi"; + name = "Syndicate Experimentation Lockdown Control"; + pixel_y = 26; + req_access_txt = "150" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"en" = ( +/obj/machinery/igniter/incinerator_syndicatelava, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine/vacuum, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"eo" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/syndicate, +/obj/item/paper/crumpled{ + info = "Explosive testing on site is STRICTLY forbidden, as this outpost's walls are lined with explosives intended for intentional self-destruct purposes that may be set off prematurely through careless experiments."; + name = "Explosives Testing Warning"; + pixel_x = -6; + pixel_y = -3 + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"ep" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eq" = ( +/obj/structure/table/reinforced, +/obj/item/restraints/handcuffs, +/obj/item/taperecorder, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"es" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/bin, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"et" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"eu" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/chem_heater, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"ev" = ( +/obj/effect/turf_decal/corner/opaque/white, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"ew" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/syndichem, +/obj/effect/turf_decal/corner/opaque/white/three_quarters, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"eD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eE" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/table, +/obj/item/storage/box/lights/bulbs, +/obj/item/wrench, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eG" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"eH" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"eI" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/virology) +"eJ" = ( +/obj/structure/disposalpipe/segment, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/virology) +"eK" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/bed/roller, +/obj/machinery/iv_drip, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/mob/living/carbon/monkey{ + faction = list("neutral","Syndicate") + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eL" = ( +/obj/machinery/door/airlock/hatch{ + name = "Monkey Pen"; + req_access_txt = "150"; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eP" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eQ" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/table/reinforced, +/obj/item/storage/box/monkeycubes/syndicate, +/obj/item/storage/box/monkeycubes/syndicate, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"eS" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/chem_master, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"eT" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/chair/office/light, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"eU" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/chem_dispenser/fullupgrade, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"eV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white/three_quarters, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"eX" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/obj/structure/closet/crate/internals, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/oxygen/yellow, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eY" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/item/storage/box/donkpockets{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/storage/box/donkpockets{ + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 2 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"eZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/rad_collector, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fa" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/bin, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fe" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ff" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/corner/opaque/white/three_quarters, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fj" = ( +/obj/structure/table/glass, +/obj/structure/reagent_dispensers/virusfood{ + pixel_y = 28 + }, +/obj/item/clothing/gloves/color/latex, +/obj/item/healthanalyzer, +/obj/item/clothing/glasses/hud/health, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"fn" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"fo" = ( +/obj/machinery/door/firedoor, +/obj/structure/table/reinforced, +/obj/machinery/door/window/southleft{ + name = "Chemistry" + }, +/obj/machinery/door/window/southleft{ + dir = 1; + name = "Chemistry"; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"fp" = ( +/obj/machinery/smartfridge/chemistry/preloaded, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"fq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/assist, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fs" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/obj/structure/closet/crate, +/obj/item/storage/box/stockparts/deluxe, +/obj/item/storage/box/stockparts/deluxe, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/circuitboard/machine/processor, +/obj/item/circuitboard/machine/gibber, +/obj/item/circuitboard/machine/deep_fryer, +/obj/item/circuitboard/machine/cell_charger, +/obj/item/circuitboard/machine/smoke_machine, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ft" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/structure/closet/crate, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fu" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/airalarm/syndicate{ + dir = 4; + pixel_x = -25 + }, +/obj/structure/table, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/head/soft{ + pixel_x = -8 + }, +/obj/item/clothing/head/soft{ + pixel_x = -8 + }, +/obj/item/radio{ + pixel_x = 5 + }, +/obj/item/radio{ + pixel_x = 5 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fw" = ( +/obj/effect/turf_decal/industrial/warning/corner, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fx" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"fy" = ( +/obj/machinery/door/airlock/virology/glass{ + name = "Isolation B"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fz" = ( +/obj/machinery/door/airlock/virology/glass{ + name = "Isolation A"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fB" = ( +/obj/structure/chair/stool, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fC" = ( +/obj/machinery/smartfridge/chemistry/virology/preloaded, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fD" = ( +/obj/structure/sign/warning/biohazard, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/virology) +"fE" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/closet/l3closet, +/obj/machinery/light/small/directional/west, +/obj/machinery/airalarm/syndicate{ + pixel_y = 25 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"fF" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/shower{ + pixel_y = 14 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"fH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"fM" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"fO" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"gb" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gc" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gd" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150"; + dir = 8 + }, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gf" = ( +/obj/structure/sign/warning/vacuum{ + pixel_y = -32 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gg" = ( +/obj/structure/sign/warning/fire{ + pixel_y = 32 + }, +/obj/structure/sign/warning/xeno_mining{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gh" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + req_access_txt = "150"; + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gj" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"gp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gq" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gs" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gD" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + heat_capacity = 1e+006 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"gM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"gN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"gO" = ( +/obj/structure/sign/departments/cargo, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gP" = ( +/obj/machinery/photocopier, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gS" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/button/door{ + id = "lavalandsyndi_cargo"; + name = "Cargo Bay Blast Door Control"; + pixel_x = 26; + req_access_txt = "150" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"gT" = ( +/obj/machinery/door/airlock/virology/glass{ + name = "Monkey Pen"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gU" = ( +/obj/machinery/airalarm/syndicate{ + dir = 4; + pixel_x = -25 + }, +/obj/structure/sink{ + dir = 4; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gV" = ( +/obj/structure/chair/office/light, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"gY" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/doorButtons/access_button{ + idDoor = "lavaland_syndie_virology_interior"; + idSelf = "lavaland_syndie_virology_control"; + name = "Virology Access Button"; + pixel_x = -25; + pixel_y = 8; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"gZ" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"ha" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/main) +"hb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red/three_quarters{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"hd" = ( +/obj/effect/turf_decal/corner/opaque/red, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"he" = ( +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"hf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"hg" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"hh" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"hi" = ( +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"hj" = ( +/obj/effect/turf_decal/corner/opaque/brown, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"hk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Bay"; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hl" = ( +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hn" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"ho" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/computer/helm, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 4 + }, +/mob/living/carbon/monkey{ + faction = list("neutral","Syndicate") + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hr" = ( +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 8 + }, +/mob/living/carbon/monkey{ + faction = list("neutral","Syndicate") + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hs" = ( +/obj/machinery/computer/pandemic, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door{ + id = "lavalandsyndi_virology"; + name = "Virology Blast Door Control"; + pixel_x = -26; + req_access_txt = "150" + }, +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"ht" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/hand_labeler, +/obj/item/pen/red, +/obj/item/restraints/handcuffs, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/glasses/science, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hu" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/obj/item/stack/sheet/mineral/plasma{ + amount = 5 + }, +/obj/item/stack/sheet/mineral/uranium{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/gold{ + amount = 10 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hv" = ( +/obj/machinery/disposal/bin, +/obj/structure/sign/warning/deathsposal{ + pixel_x = 32 + }, +/obj/effect/turf_decal/industrial/fire/full, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hw" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"hy" = ( +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"hz" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hA" = ( +/obj/structure/closet/emcloset/anchored, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hB" = ( +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"hC" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Bay"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hD" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/storage/belt/utility, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hE" = ( +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 1 + }, +/mob/living/carbon/monkey{ + faction = list("neutral","Syndicate") + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hF" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white/three_quarters, +/mob/living/carbon/monkey{ + faction = list("neutral","Syndicate") + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hH" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi_virology" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/virology) +"hI" = ( +/obj/structure/sign/warning/vacuum{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"hJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"hK" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/sign/warning/fire{ + pixel_x = 32 + }, +/obj/structure/closet/emcloset/anchored, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/flashlight/seclite, +/obj/item/clothing/mask/gas, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"hM" = ( +/obj/structure/table/wood, +/obj/item/ammo_box/magazine/m10mm, +/obj/item/ammo_box/magazine/sniper_rounds, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hN" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hO" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hP" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hQ" = ( +/obj/structure/table/wood, +/obj/item/ammo_box/magazine/m10mm, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"hR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"hS" = ( +/obj/structure/table/reinforced, +/obj/item/folder, +/obj/item/suppressor, +/obj/item/clothing/ears/earmuffs, +/obj/item/clothing/ears/earmuffs, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/brown, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hT" = ( +/obj/machinery/vending/toyliberationstation{ + req_access_txt = "150" + }, +/obj/effect/turf_decal/corner/opaque/brown, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hU" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/brown, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/obj/structure/tank_dispenser/plasma, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hV" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/brown, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"hW" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 10 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/main) +"hX" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"hY" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"ia" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"ib" = ( +/obj/effect/mob_spawn/human/lavaland_syndicate{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"ic" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"id" = ( +/obj/structure/toilet{ + pixel_y = 18 + }, +/obj/structure/sink{ + dir = 8; + pixel_x = 11 + }, +/obj/machinery/light/small/directional/west, +/obj/structure/mirror{ + pixel_x = 28 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"ie" = ( +/obj/effect/mob_spawn/human/lavaland_syndicate/comms{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"if" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"ig" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 9 + }, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"ih" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"ii" = ( +/obj/structure/table, +/obj/item/storage/toolbox/emergency, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"ik" = ( +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"il" = ( +/obj/machinery/door/airlock{ + name = "Cabin 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"im" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"in" = ( +/obj/machinery/door/airlock{ + name = "Cabin 4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"ip" = ( +/obj/effect/turf_decal/industrial/fire/corner, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"iq" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/main) +"ir" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/fire{ + dir = 9 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/obj/machinery/turretid{ + ailock = 1; + control_area = "/area/ruin/unpowered/syndicate_lava_base/main"; + dir = 1; + icon_state = "control_kill"; + lethal = 1; + name = "Base turret controls"; + pixel_y = 30; + req_access = null; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/main) +"is" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/circuit/red, +/area/ruin/unpowered/syndicate_lava_base/main) +"it" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/fire{ + dir = 5 + }, +/obj/structure/filingcabinet, +/obj/item/folder/syndicate/mining, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/main) +"iu" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"iv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"iy" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Dormitories"; + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iz" = ( +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iB" = ( +/obj/machinery/airalarm/syndicate{ + pixel_y = 25 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iF" = ( +/obj/machinery/washing_machine, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"iH" = ( +/obj/effect/turf_decal/industrial/fire{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/caution/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"iI" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/vault{ + id_tag = "syndie_lavaland_vault"; + req_access_txt = "150" + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/main) +"iJ" = ( +/turf/open/floor/circuit/red, +/area/ruin/unpowered/syndicate_lava_base/main) +"iK" = ( +/obj/machinery/syndicatebomb/self_destruct{ + anchored = 1 + }, +/turf/open/floor/circuit/red, +/area/ruin/unpowered/syndicate_lava_base/main) +"iM" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"iN" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/main) +"iO" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"iW" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel{ + heat_capacity = 1e+006 + }, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"iY" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"ja" = ( +/obj/effect/turf_decal/industrial/fire/corner{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "syndie_lavaland_vault"; + name = "Vault Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + pixel_y = 8; + req_access_txt = "150"; + specialfunctions = 4; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"jb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/fire{ + dir = 10 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/main) +"jc" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/circuit/red, +/area/ruin/unpowered/syndicate_lava_base/main) +"jd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/fire{ + dir = 6 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/main) +"je" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"jf" = ( +/obj/machinery/door/airlock{ + name = "Cabin 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jh" = ( +/obj/machinery/door/airlock{ + name = "Cabin 3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jj" = ( +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"jk" = ( +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"jl" = ( +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"jm" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"jn" = ( +/obj/effect/mob_spawn/human/lavaland_syndicate{ + dir = 4 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jq" = ( +/obj/effect/mob_spawn/human/lavaland_syndicate{ + dir = 8 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jr" = ( +/obj/machinery/vending/snack/random{ + extended_inventory = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"ju" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jv" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/suit_storage_unit/syndicate, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jw" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/toolcloset{ + anchored = 1 + }, +/obj/item/crowbar, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jx" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi_bar" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jy" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jz" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Bar" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jA" = ( +/obj/structure/table/wood, +/obj/item/ammo_box/magazine/m10mm, +/obj/item/ammo_box/magazine/sniper_rounds, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jB" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jC" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"jD" = ( +/obj/machinery/vending/cola/random{ + extended_inventory = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"jK" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id = "lavalandsyndi_cargo"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"jL" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/lighter{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/item/storage/fancy/cigarettes/cigpack_syndicate{ + pixel_x = -3 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jM" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "lavalandsyndi_bar"; + name = "Bar Blast Door Control"; + pixel_y = 26; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jN" = ( +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jP" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jR" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"jT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/departments/engineering, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/main) +"jU" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/shower{ + desc = "The HS-452. Installed recently by the DonkCo Hygiene Division."; + dir = 4; + name = "emergency shower" + }, +/obj/structure/closet/radiation, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/radiation/rad_area{ + pixel_y = -32 + }, +/obj/effect/turf_decal/industrial/warning, +/obj/structure/closet/radiation, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"jY" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"jZ" = ( +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"ka" = ( +/obj/structure/closet/crate/bin, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kb" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/storage/box/lights/bulbs, +/obj/item/stack/rods{ + amount = 50 + }, +/obj/item/clothing/head/welding, +/obj/item/stock_parts/cell/high/plus, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"kj" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"kl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"ko" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kq" = ( +/obj/machinery/airalarm/syndicate{ + dir = 8; + pixel_x = 25 + }, +/obj/machinery/vending/coffee{ + extended_inventory = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"ks" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"kt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"ku" = ( +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"kv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"kw" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/gloves/combat{ + pixel_y = -6 + }, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/clothing/mask/breath{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"kC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kD" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + frequency = 1442; + id_tag = "syndie_lavaland_co2_out"; + internal_pressure_bound = 5066; + name = "CO2 out" + }, +/turf/open/floor/engine/co2, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kF" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/engine/n2, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kG" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/beer, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kH" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kJ" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kK" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kM" = ( +/obj/machinery/vending/cigarette{ + extended_inventory = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink/kitchen{ + pixel_y = 28 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"kP" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/decal/cleanable/dirt, +/obj/item/soap/syndie, +/obj/item/mop, +/obj/item/reagent_containers/glass/bucket, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"kQ" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"kR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"kS" = ( +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"kT" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"kU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kV" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/power/smes/engineering, +/obj/structure/sign/warning/electricshock{ + pixel_x = -32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kW" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/power/smes/engineering, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kY" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/visible{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"kZ" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"la" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 6; + name = "N2 to Mix" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lb" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 8; + frequency = 1442; + id_tag = "syndie_lavaland_n2_out"; + internal_pressure_bound = 5066; + name = "Nitrogen Out" + }, +/turf/open/floor/engine/n2, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ld" = ( +/turf/open/floor/engine/co2, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"le" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"lf" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lg" = ( +/obj/structure/chair/stool/bar, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lh" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"li" = ( +/obj/structure/table/wood, +/obj/item/toy/cards/deck/syndicate{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lj" = ( +/obj/machinery/door/window/southleft{ + base_state = "right"; + dir = 1; + icon_state = "right"; + name = "Bar" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lk" = ( +/obj/structure/table/wood, +/obj/machinery/light/small/directional/east, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 30 + }, +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 1 + }, +/obj/item/book/manual/chef_recipes{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/book/manual/wiki/barman_recipes, +/obj/item/reagent_containers/food/drinks/shaker, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lm" = ( +/obj/structure/closet/secure_closet/medical1{ + req_access = null; + req_access_txt = "150" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"ln" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lo" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/table, +/obj/item/storage/firstaid/fire, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lr" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ls" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/visible{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lt" = ( +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + name = "O2 to Mix" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lu" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supplymain/visible{ + dir = 9; + name = "N2 to Mix" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lv" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 10 + }, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"lw" = ( +/obj/effect/turf_decal/industrial/warning, +/turf/open/floor/plating{ + baseturfs = /turf/open/lava/smooth/lava_land_surface; + initial_gas_mix = "LAVALAND_ATMOS" + }, +/area/lavaland/surface/outdoors) +"lx" = ( +/obj/structure/bookcase/random, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"ly" = ( +/obj/structure/chair/stool/bar, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lz" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/rag{ + pixel_x = -4; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = 5; + pixel_y = -2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lA" = ( +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lC" = ( +/obj/structure/table/wood, +/obj/machinery/reagentgrinder, +/obj/item/kitchen/rollingpin, +/obj/item/kitchen/knife{ + pixel_x = 6 + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lG" = ( +/obj/structure/table, +/obj/item/storage/box/syringes, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/gun/syringe/syndicate, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lI" = ( +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lK" = ( +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"lL" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/table, +/obj/item/stack/sheet/metal/fifty{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/stack/sheet/mineral/plastitanium{ + amount = 30 + }, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/head/welding, +/obj/item/weldingtool/largetank, +/obj/item/analyzer, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lP" = ( +/obj/effect/turf_decal/corner/opaque/blue, +/obj/effect/turf_decal/corner/opaque/blue{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lQ" = ( +/obj/machinery/meter/turf, +/turf/open/floor/engine/o2, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lR" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/engine/o2, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"lS" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 9 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/main) +"lT" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"lU" = ( +/obj/structure/chair/stool, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lV" = ( +/obj/structure/chair/stool/bar, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"lZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"md" = ( +/obj/machinery/sleeper/syndie{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"me" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mf" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = 11 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mg" = ( +/obj/machinery/firealarm/directional/east, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/obj/effect/decal/cleanable/dirt, +/obj/item/pipe_dispenser{ + pixel_y = 12 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mi" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "O2 to Mix" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mk" = ( +/obj/machinery/atmospherics/pipe/manifold/supplymain/visible{ + name = "O2 to Mix" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ml" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/blue, +/obj/effect/turf_decal/corner/opaque/blue{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4; + name = "O2 Layer Manifold" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mm" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 8; + frequency = 1442; + id_tag = "syndie_lavaland_o2_out"; + internal_pressure_bound = 5066; + name = "Oxygen Out" + }, +/turf/open/floor/engine/o2, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mn" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mo" = ( +/turf/closed/wall/mineral/plastitanium/explosive, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mp" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi_telecomms" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mq" = ( +/obj/structure/sign/warning/vacuum{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"mr" = ( +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"ms" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/sign/warning/fire{ + pixel_x = 32 + }, +/obj/structure/closet/emcloset/anchored, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/flashlight/seclite, +/obj/item/clothing/mask/gas, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"mt" = ( +/obj/machinery/computer/arcade/orion_trail, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mu" = ( +/obj/item/kirbyplants{ + icon_state = "plant-22" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mv" = ( +/obj/structure/table/wood, +/obj/machinery/light/small/directional/south, +/obj/machinery/power/apc/syndicate{ + name = "Bar APC"; + pixel_y = -25 + }, +/obj/structure/cable, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mx" = ( +/obj/structure/table/wood, +/obj/machinery/microwave, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"my" = ( +/obj/structure/closet/secure_closet/freezer/fridge/open, +/obj/item/reagent_containers/food/condiment/enzyme, +/obj/item/reagent_containers/food/snacks/chocolatebar, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mA" = ( +/obj/machinery/light/small/directional/west, +/obj/structure/bed/roller, +/obj/machinery/iv_drip, +/obj/item/reagent_containers/blood/OMinus, +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mD" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mE" = ( +/obj/structure/table/reinforced, +/obj/item/scalpel, +/obj/item/circular_saw{ + pixel_y = 9 + }, +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"mF" = ( +/obj/machinery/atmospherics/components/unary/portables_connector, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mH" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mI" = ( +/obj/effect/turf_decal/industrial/warning/corner, +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/pipe/simple/supply/visible, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Plasma to Mix" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mJ" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10; + name = "Plasma to Mix" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"mM" = ( +/turf/open/floor/circuit/green, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mN" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mP" = ( +/obj/structure/filingcabinet/security, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mQ" = ( +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mR" = ( +/obj/structure/table, +/obj/item/storage/toolbox/syndicate, +/obj/item/multitool, +/obj/machinery/button/door{ + id = "lavalandsyndi_telecomms"; + name = "Telecomms Blast Door Control"; + pixel_x = 26; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"mS" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"mT" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"mU" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/bar) +"mX" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/storage/toolbox/mechanical, +/obj/item/stack/cable_coil{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/multitool, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"mZ" = ( +/obj/machinery/sleeper/syndie{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"na" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"nb" = ( +/obj/structure/table/optable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"nc" = ( +/obj/machinery/atmospherics/pipe/simple/yellow, +/obj/machinery/computer/turbine_computer{ + dir = 1; + id = "syndie_lavaland_incineratorturbine" + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ne" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_syndicatelava{ + pixel_x = -8; + pixel_y = -26 + }, +/obj/machinery/button/ignition/incinerator/syndicatelava{ + pixel_x = 6; + pixel_y = -25; + dir = 1 + }, +/obj/effect/turf_decal/industrial/warning, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door/incinerator_vent_syndicatelava_aux{ + pixel_x = 22; + pixel_y = -8; + dir = 8 + }, +/obj/machinery/button/door/incinerator_vent_syndicatelava_main{ + pixel_x = 22; + pixel_y = 3; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"nf" = ( +/obj/structure/sign/warning/fire, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ng" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5; + name = "Plasma to Mix" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"nh" = ( +/obj/machinery/telecomms/relay/preset/ruskie{ + use_power = 0 + }, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"ni" = ( +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nj" = ( +/obj/machinery/door/airlock/hatch{ + name = "Telecommunications Control"; + req_access_txt = "150"; + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nm" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/noticeboard{ + dir = 8; + pixel_x = 27 + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nn" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"no" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"np" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nq" = ( +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nv" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"nB" = ( +/obj/structure/table/reinforced, +/obj/item/surgicaldrill, +/obj/item/cautery, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"nC" = ( +/obj/structure/table/reinforced, +/obj/item/retractor, +/obj/item/hemostat, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"nE" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"nH" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nI" = ( +/obj/machinery/computer/camera_advanced, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nJ" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"nW" = ( +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"nZ" = ( +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oa" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"ob" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"oc" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/power/apc/syndicate{ + dir = 4; + name = "Medbay APC"; + pixel_x = 25 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"od" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"of" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/binary/pump/on{ + target_pressure = 4500 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 8 + }, +/obj/machinery/airlock_sensor/incinerator_syndicatelava{ + pixel_x = 22 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"og" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oh" = ( +/obj/machinery/firealarm/directional/west, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"oi" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"oj" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom/directional/north{ + freerange = 1; + name = "Syndicate Radio Intercom" + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"ok" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/power/apc/syndicate{ + name = "Telecommunications APC"; + pixel_y = -25 + }, +/obj/structure/cable, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"ol" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/rack{ + dir = 8 + }, +/obj/item/clothing/suit/space/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/head/helmet/space/syndicate, +/obj/item/mining_scanner, +/obj/item/pickaxe, +/turf/open/floor/mineral/plastitanium, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"om" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"on" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oo" = ( +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"op" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"or" = ( +/obj/structure/rack{ + dir = 8 + }, +/obj/item/storage/belt/medical, +/obj/effect/decal/cleanable/dirt, +/obj/item/crowbar, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/neck/stethoscope, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"ou" = ( +/obj/machinery/computer/message_monitor{ + dir = 1 + }, +/obj/item/paper/monitorkey, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"ov" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"ox" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor{ + id = "lavalandsyndi_arrivals" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1 + }, +/turf/open/floor/engine/vacuum, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oB" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos{ + dir = 1; + id = "syndie_lavaland_inc_in" + }, +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/turf/open/floor/engine/vacuum, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oC" = ( +/obj/machinery/door/poddoor/incinerator_syndicatelava_aux, +/turf/open/floor/engine/vacuum, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oD" = ( +/obj/structure/sign/warning/xeno_mining{ + pixel_x = -32 + }, +/obj/structure/sign/warning/fire{ + pixel_x = 32 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oF" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oG" = ( +/obj/machinery/power/turbine{ + luminosity = 2 + }, +/obj/structure/cable, +/turf/open/floor/engine/vacuum, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oH" = ( +/obj/machinery/door/poddoor/incinerator_syndicatelava_main, +/turf/open/floor/engine/vacuum, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"oI" = ( +/obj/structure/sign/warning/vacuum{ + pixel_x = -32 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"oL" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"oO" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/virology{ + frequency = 1449; + id_tag = "lavaland_syndie_virology_exterior"; + name = "Virology Lab Exterior Airlock"; + req_access_txt = "150"; + dir = 4 + }, +/obj/machinery/doorButtons/access_button{ + idDoor = "lavaland_syndie_virology_exterior"; + idSelf = "lavaland_syndie_virology_control"; + name = "Virology Access Button"; + pixel_y = -25; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"oP" = ( +/obj/structure/sign/departments/chemistry, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"pD" = ( +/obj/machinery/doorButtons/airlock_controller{ + idExterior = "lavaland_syndie_virology_exterior"; + idInterior = "lavaland_syndie_virology_interior"; + idSelf = "lavaland_syndie_virology_control"; + name = "Virology Access Console"; + pixel_x = 25; + pixel_y = -5; + req_access_txt = "150" + }, +/obj/effect/turf_decal/industrial/caution/red{ + dir = 1 + }, +/obj/machinery/light/small/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"pJ" = ( +/turf/open/floor/engine/n2, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"pQ" = ( +/obj/structure/sign/warning/explosives/alt{ + pixel_x = 32 + }, +/turf/open/floor/circuit/red, +/area/ruin/unpowered/syndicate_lava_base/main) +"pY" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"qC" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"qG" = ( +/obj/structure/sign/warning/explosives/alt{ + pixel_x = -32 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"qJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"qL" = ( +/obj/structure/closet/emcloset/anchored, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"rc" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"rg" = ( +/obj/machinery/meter/turf, +/turf/open/floor/engine/plasma, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"rF" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/atmospherics/pipe/simple/dark/visible, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"rL" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"rO" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"sk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay"; + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"so" = ( +/obj/machinery/power/apc/syndicate{ + dir = 1; + name = "Engineering APC"; + pixel_y = 25 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ta" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 8; + frequency = 1442; + id_tag = "syndie_lavaland_o2_out"; + internal_pressure_bound = 5066; + name = "Plasma Out" + }, +/turf/open/floor/engine/plasma, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"th" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"tq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"tu" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"tM" = ( +/obj/structure/closet/secure_closet/personal/patient, +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"tW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"uB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"uW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"vd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"vu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"vx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"vz" = ( +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"vD" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/hatch{ + name = "Experimentation Lab"; + req_access_txt = "150" + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"vE" = ( +/obj/machinery/airalarm/syndicate{ + dir = 4; + pixel_x = -25 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"vX" = ( +/obj/machinery/atmospherics/pipe/simple/orange{ + dir = 8 + }, +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"wi" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8; + volume_rate = 200 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"wA" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"xm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"xJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"xK" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"ye" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"yg" = ( +/turf/open/floor/engine/o2, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ys" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/corner/opaque/white, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"yH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"zq" = ( +/obj/item/storage/box/donkpockets{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/storage/box/donkpockets{ + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 2 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/freezer/kitchen/maintenance{ + req_access = null + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"zK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"zM" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"zX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light_switch{ + dir = 6; + pixel_x = 23; + pixel_y = -23 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"Av" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"AS" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"Bd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"Bk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"Bl" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/corner/opaque/white, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"Bp" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"Bz" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"BC" = ( +/obj/machinery/meter/turf, +/turf/open/floor/engine/co2, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"BF" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi"; + name = "Syndicate Research Experimentation Shutters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"BG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"BP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"Cg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"Cx" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"CC" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/public/glass{ + name = "Dormitories"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"CG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"Db" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"Dk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"DC" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/medical{ + name = "Chemistry Lab"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"DF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/main) +"DL" = ( +/obj/structure/sign/warning/explosives/alt{ + pixel_x = 32 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"Ec" = ( +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/components/unary/thermomachine/heater{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"Ed" = ( +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"Ep" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"ED" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/virology{ + frequency = 1449; + id_tag = "lavaland_syndie_virology_interior"; + name = "Virology Lab Interior Airlock"; + req_access_txt = "150"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/virology) +"EN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"EZ" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/structure/fans/tiny, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"Fk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"Fy" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/glass/incinerator/syndicatelava_interior, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"Fz" = ( +/obj/machinery/door/airlock/maintenance{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"FJ" = ( +/obj/structure/table/glass, +/obj/item/book/manual/wiki/infections{ + pixel_y = 7 + }, +/obj/item/reagent_containers/syringe/antiviral, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/spray/cleaner, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"Gq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"Hu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"HG" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/engineering{ + name = "Engineering"; + req_access_txt = "150" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"HX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + name = "CO2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"IH" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating/airless, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"II" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"IJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 1 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"IX" = ( +/obj/machinery/door/airlock/maintenance, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"Je" = ( +/obj/docking_port/stationary{ + dir = 4; + height = 15; + dwidth = 8; + width = 15 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"JB" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4; + name = "Plasma Layer Manifold" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"Kx" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"KZ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay"; + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white, +/area/ruin/unpowered/syndicate_lava_base/medbay) +"La" = ( +/obj/structure/table, +/obj/item/folder/yellow, +/obj/item/stack/wrapping_paper{ + pixel_y = 5 + }, +/obj/item/stack/packageWrap, +/obj/item/hand_labeler, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"Lg" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"Lp" = ( +/obj/machinery/atmospherics/pipe/simple/yellow, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"Ls" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"Lz" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/computer/monitor/secret{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"LG" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"LQ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"LR" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"Mf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"Mg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/opaque/white/three_quarters{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"Mo" = ( +/obj/machinery/power/apc/syndicate{ + dir = 8; + name = "Primary Hallway APC"; + pixel_x = -25 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"MG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"Ng" = ( +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"Nj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/visible, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/visible, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"Nm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/power/apc/syndicate{ + name = "Dormitories APC"; + pixel_y = -25 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"Nw" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"NB" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/glass/incinerator/syndicatelava_exterior, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"NL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"NU" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"Ov" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/reagent_dispensers/beerkeg, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"Pf" = ( +/obj/effect/turf_decal/industrial/warning/corner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"Pi" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/mining/glass{ + name = "Warehouse"; + req_access_txt = "150" + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"Pk" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/mining/glass{ + name = "Warehouse"; + req_access_txt = "150" + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"Qc" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"Qh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"Qr" = ( +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/bar) +"Qv" = ( +/obj/structure/closet/firecloset/full{ + anchored = 1 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"QN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"Ro" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/preopen{ + id = "lavalandsyndi_bar"; + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/bar) +"Rq" = ( +/turf/open/floor/engine/plasma, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"RE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"RK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"RM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"RV" = ( +/obj/structure/sign/warning/fire, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"Sb" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/dormitories) +"St" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"SA" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/closet/crate, +/obj/item/vending_refill/snack{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/vending_refill/snack{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/vending_refill/coffee, +/obj/item/vending_refill/cola, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/bar) +"SE" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/stand_clear{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"SX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"Td" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/corner/transparent/neutral/full, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"Tp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"TC" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ruin/unpowered/syndicate_lava_base/testlab) +"TG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"TV" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"Ub" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"Uc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/ruin/unpowered/syndicate_lava_base/bar) +"Us" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"UX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"Vb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"Ve" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 10 + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"VE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"Wt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ruin/unpowered/syndicate_lava_base/main) +"WD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/pump, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"WE" = ( +/obj/machinery/door/airlock/hatch{ + name = "Telecommunications"; + req_access_txt = "150"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/neutral, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ruin/unpowered/syndicate_lava_base/telecomms) +"Xd" = ( +/obj/structure/closet/radiation, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"Xg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/corner/opaque/white/three_quarters, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"XI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/virology) +"XR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"Ya" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"Yd" = ( +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/chemistry) +"Ym" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/power/apc/syndicate{ + dir = 1; + name = "Cargo Bay APC"; + pixel_y = 25 + }, +/obj/structure/closet/emcloset/anchored, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/cargo) +"Yz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/main) +"Zj" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"Zo" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/main) +"Zv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/syndicate{ + dir = 1; + name = "Arrival Hallway APC"; + pixel_y = 25 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/red{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel, +/area/ruin/unpowered/syndicate_lava_base/arrivals) +"ZN" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/engine/co2, +/area/ruin/unpowered/syndicate_lava_base/engineering) +"ZU" = ( +/obj/machinery/meter/turf, +/turf/open/floor/engine/n2, +/area/ruin/unpowered/syndicate_lava_base/engineering) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +ab +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(4,1,1) = {" +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +mn +mn +mn +mn +mn +ab +ab +ab +ab +ab +ab +ab +aa +aa +"} +(5,1,1) = {" +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +mn +mn +mM +nh +mM +mn +mn +ab +ab +ab +ab +ab +ab +ab +aa +"} +(6,1,1) = {" +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +mn +mM +mM +ni +mM +mM +mn +ab +ab +ab +ab +ab +ab +aa +aa +"} +(7,1,1) = {" +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +eh +eh +eh +eh +eh +eh +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +mn +mn +mN +nj +mn +mn +mn +ab +ab +ab +ab +ab +ab +ab +aa +"} +(8,1,1) = {" +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +eh +tM +ff +eI +aj +eh +eh +eh +eh +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +mp +mP +ni +nH +oh +mn +mn +ab +ab +ab +ab +ab +ab +aa +"} +(9,1,1) = {" +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +eh +eH +Xg +fy +gp +eI +hp +hE +eh +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +mp +mP +nk +nI +oi +ou +mn +ab +ab +ab +ab +ab +ab +ab +"} +(10,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +eh +eI +eI +eI +gq +gT +hq +hF +eh +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +mp +mQ +nl +nJ +oj +ov +mn +ab +ab +ab +ab +ab +ab +ab +"} +(11,1,1) = {" +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +eh +eG +fh +eI +gr +eI +hr +hG +eh +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +mp +mR +nm +yH +ok +mn +mn +ab +ab +ab +ab +ab +ab +ab +"} +(12,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +eh +eH +fg +fz +gs +eh +gj +eh +eh +ab +ab +ab +ab +ab +ab +dG +dG +dG +dG +dG +dG +lS +mn +mn +mo +WE +mn +mn +ab +ab +ab +ab +ab +ab +ab +ab +"} +(13,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +eh +eh +eI +eI +gt +gU +hs +hH +ab +ab +ab +ab +ab +ab +dG +dG +ig +iu +iu +iu +lv +lT +mq +mS +nn +Db +mT +mT +ab +ab +ab +ab +ab +ab +ab +ab +"} +(14,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ac +eh +cU +FJ +XI +gV +ht +hH +ab +ab +ab +ab +ab +dG +dG +ig +je +iv +jk +le +lw +lT +mr +mS +nn +EN +ol +mT +ab +ab +ab +ab +ab +ab +ab +ab +"} +(15,1,1) = {" +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ei +eJ +fj +fB +TV +gW +hu +hH +ab +ab +ab +ab +dG +dG +ig +je +jk +jx +cN +jy +jy +jy +ms +mT +no +EN +ol +mT +ab +ab +ab +ab +ab +ab +ab +ab +"} +(16,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ac +ab +ac +ac +ae +ae +ae +ae +fC +zX +pD +hv +hH +ab +ab +ab +dG +dG +ig +je +jk +jx +Ro +kG +lf +lx +jy +jy +jy +np +Pf +mT +mT +mT +oF +ab +ab +ab +ab +ab +ab +"} +(17,1,1) = {" +ab +ab +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ej +eK +ae +fD +ED +eh +eh +eh +hW +dG +dG +dG +ig +je +iv +jx +Ro +kn +kH +jN +jZ +lU +mt +mU +np +SE +EZ +oI +oD +St +ab +ab +ab +ab +ab +aa +"} +(18,1,1) = {" +ab +ab +ab +ab +ae +ae +aq +aq +qG +dc +aq +dQ +ek +eL +ae +fE +Bz +gY +hw +hI +hX +ig +iu +iu +je +jk +jx +cN +jN +jZ +jN +jZ +jN +jZ +kn +mU +nq +LR +mT +mT +mT +oF +ab +ab +ab +ab +ab +aa +"} +(19,1,1) = {" +ab +ab +ab +ab +ae +ap +aq +Lg +aq +Lg +aq +dR +el +rO +ae +fF +LG +gZ +hw +hJ +hY +ih +iv +iM +iv +iv +jx +jL +jY +jN +kI +lg +ly +lV +mu +mU +nr +Mf +om +mT +ab +ab +ab +ab +ab +ab +aa +aa +"} +(20,1,1) = {" +aa +ab +ab +ab +ae +aq +aq +aF +aq +aF +aq +ae +em +eN +ae +ae +oO +ha +ha +hK +ha +ha +ha +ha +ha +ha +jP +jM +jN +jZ +kJ +lh +lz +oL +mv +jy +jy +NU +on +mT +ab +ab +ab +ab +ab +ab +ab +aa +"} +(21,1,1) = {" +aa +ab +ab +ab +ae +aq +aq +Tp +aq +Cg +aq +dS +eo +eO +cI +ae +vd +hb +ha +iN +ha +ii +AS +iO +hB +jl +jz +jN +jZ +ko +kK +li +lA +Qc +mw +ah +jy +QN +oo +ox +ab +ab +ab +ab +ab +ab +ab +ab +"} +(22,1,1) = {" +aa +ab +ab +ab +ae +ap +aq +CG +vu +TC +LQ +BF +ep +eP +Td +vD +Zo +Av +vE +zM +Ub +lZ +tq +Us +hd +jm +jz +fM +jN +kp +kL +lj +lB +th +lA +ai +jP +Fk +op +ox +ab +ab +ab +ab +ab +ab +ab +ab +"} +(23,1,1) = {" +aa +ab +ab +ab +ae +ae +aq +aq +DL +di +aq +dS +eq +eQ +ae +dQ +tu +hd +hy +hy +ia +ik +if +ca +hz +hz +jy +jy +ka +kq +kM +lk +lC +Uc +mx +jy +jy +xK +oo +ox +ab +ab +ab +ab +ab +ab +ab +ab +"} +(24,1,1) = {" +aa +ab +ab +ab +ab +ae +ae +ae +ae +ae +aL +ae +ae +ae +oP +fH +Bk +he +hz +hz +hz +hz +iy +CC +hz +jn +jA +jy +jy +jy +jy +jy +ak +aN +jy +jy +qL +II +oo +ox +ab +ab +ab +ab +ab +ab +ab +ab +"} +(25,1,1) = {" +aa +ab +ab +ab +ab +ab +ac +ac +as +do +by +xm +Yd +Mg +DC +UX +zK +he +hz +hM +ib +hz +iz +Sb +jf +jo +jB +hz +kb +jy +kN +jZ +lE +xJ +my +jy +Zv +nW +aW +mT +ab +ab +ab +ab +ab +ab +ab +ab +"} +(26,1,1) = {" +ab +ab +ab +ab +ab +ab +ab +as +as +du +dB +dU +es +eS +fn +fO +Bk +hf +hz +hN +ic +il +iA +gD +hz +hz +hz +hz +Yz +Qr +Qh +Ov +SA +zq +jy +jy +QN +nX +oo +mT +ab +ab +ab +ab +ab +ab +ab +ab +"} +(27,1,1) = {" +ab +ab +ab +ab +ab +ab +ab +at +aM +dv +dC +dV +et +eT +fo +fO +Bk +hg +hz +hz +hz +hz +iB +rL +Cx +Bd +Bd +Vb +bf +jy +jy +jy +jy +jy +jy +mX +vz +aQ +mT +mT +ab +ab +ab +ab +ab +ab +ab +aa +"} +(28,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +at +cA +dw +dC +dX +eu +eU +fn +fH +Bk +he +hA +hz +id +im +iC +Nm +hz +hz +hz +hz +Bp +Vb +Vb +Vb +Bd +Bd +IX +uW +ys +nZ +mT +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(29,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +at +cG +dx +dE +dY +ev +eV +fp +fH +ca +he +hz +hz +hz +hz +rc +iW +jh +jo +jC +hz +MG +ks +kP +kQ +kQ +kQ +kQ +kT +KZ +sk +kQ +kQ +ab +ab +ab +ab +ab +ab +ab +ab +"} +(30,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +as +as +as +dI +dZ +ew +as +as +as +Ep +hh +hz +hP +ic +in +iE +iX +hz +jq +jA +hz +BG +kt +kQ +kQ +lG +md +mA +mZ +vx +oa +or +kQ +ab +ab +ab +ab +ab +ab +ab +ab +"} +(31,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ac +as +as +as +as +as +fq +dy +qC +he +hz +hQ +ie +hz +iF +iY +hz +hO +hz +hz +Fz +ha +kQ +lm +lH +me +mB +na +Gq +ob +al +kQ +ab +ab +ab +ab +ab +ab +ab +ab +"} +(32,1,1) = {" +aa +aa +ab +ab +ab +ab +ab +ab +ac +dy +dK +ea +Ls +NL +Hu +Pi +fm +he +hz +hz +hz +hz +hz +hz +hz +jr +jD +jR +ca +ku +kR +ln +lI +lI +mC +lI +Bl +oc +kQ +kQ +ac +ab +ab +ab +ab +ab +ab +ab +"} +(33,1,1) = {" +aa +aa +ab +ab +ab +ab +ab +ab +ab +dy +dL +eb +qJ +eX +fs +fa +gM +hi +hB +hB +hB +ag +iG +SX +Mo +BP +wA +Ya +RM +kv +kS +ln +lJ +mf +mD +lI +nB +kQ +kQ +ac +ab +ab +ab +ab +ab +ab +ab +ab +"} +(34,1,1) = {" +aa +aa +aa +ab +ab +ab +ab +ab +ab +dy +dM +ec +bv +eY +ft +dP +gN +hj +hj +hR +af +ip +iH +ja +jj +jj +ca +Qv +kj +kw +kT +lo +lK +kQ +mE +nb +nC +kQ +ac +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(35,1,1) = {" +aa +aa +ab +ab +ab +ab +ab +ab +ab +dy +dy +ed +Dk +eZ +dy +dy +gO +hk +hC +dy +ha +iq +iI +iq +ha +ha +dO +jT +ju +gn +IJ +IJ +IJ +kU +IJ +IJ +IJ +uB +ju +ju +ju +ab +ab +ab +ab +ab +ab +ab +"} +(36,1,1) = {" +aa +aa +ab +ab +ab +ab +ab +ab +ab +ac +dy +dy +Pk +fa +dy +La +gP +gQ +hl +hS +ha +ir +iJ +jb +ha +Xd +ye +jU +ju +Lz +kV +Ve +lL +mg +mF +nc +Lp +od +Lp +oz +ju +ju +nf +ab +ab +ab +ab +aa +"} +(37,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +dy +ee +cV +fb +fu +gb +gQ +hl +gQ +hT +ha +is +iK +jc +ha +jv +dn +jV +ju +Kx +kW +Zj +WD +bd +XR +Nw +Fy +bM +NB +en +cK +oG +oH +ab +ab +ab +ab +ab +"} +(38,1,1) = {" +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +dy +Ym +VE +fc +fv +fv +gR +gQ +hl +hU +ha +it +pQ +jd +ha +jw +pY +nv +HG +Nj +kX +lr +lN +mi +mH +ne +nE +of +nE +oB +ju +ju +nf +ab +ab +ab +ab +ab +"} +(39,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +dy +eg +eD +fd +fw +gc +gS +hn +gQ +hV +ha +Wt +DF +DF +DF +kl +kl +kl +kl +so +kY +ls +lO +mj +mI +RV +tW +RE +ju +oC +nf +ab +ab +ab +ab +ab +ab +ab +"} +(40,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +dy +dy +eE +fe +dy +gd +dy +ho +hD +dy +dy +wi +ac +ac +ju +ld +kE +rF +HX +cJ +kZ +Ng +lt +mk +mJ +ng +TG +Ec +ju +ab +ab +ab +ab +ab +ab +ab +ab +ab +"} +(41,1,1) = {" +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +dy +jK +jK +dy +gf +dy +jK +jK +dy +ab +ab +ab +ab +ju +ZN +BC +IH +Ed +kC +la +lu +lP +ml +mK +JB +RK +og +ju +ab +ab +ab +ab +ab +ab +ab +ab +ab +"} +(42,1,1) = {" +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +dy +gg +dy +ab +ab +ab +ab +ab +ab +ab +ju +ju +ju +ju +ju +kD +aR +ju +kD +lb +ju +vX +IH +ju +ju +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(43,1,1) = {" +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +fx +gh +fx +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ju +ZU +lc +ju +lQ +mm +ju +ta +rg +ju +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(44,1,1) = {" +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +Je +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ju +kF +pJ +ju +lR +yg +ju +cP +Rq +ju +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +"} +(45,1,1) = {" +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ju +ju +ju +ju +ju +ju +ju +ju +ju +ju +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +"} +(46,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +"} +(47,1,1) = {" +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +"} +(48,1,1) = {" +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +"} +(49,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +"} +(50,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +"} +(51,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(52,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(53,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(54,1,1) = {" +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(55,1,1) = {" +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(56,1,1) = {" +aa +aa +aa +aa +ab +ab +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(57,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(58,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(59,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(60,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(61,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ab +aa +aa +aa +aa +ab +ab +aa +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(62,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/_maps/deprecated/Ruins/oldAIsat.dmm b/_maps/deprecated/Ruins/oldAIsat.dmm index 622873e4f7ae..ea8e4ad1d1e0 100644 --- a/_maps/deprecated/Ruins/oldAIsat.dmm +++ b/_maps/deprecated/Ruins/oldAIsat.dmm @@ -564,7 +564,7 @@ "bU" = ( /obj/effect/decal/cleanable/blood, /obj/structure/chair, -/obj/item/clothing/under/rank/centcom/officer, +/obj/item/clothing/under/rank/centcom/official, /obj/item/restraints/handcuffs, /obj/effect/decal/remains/human, /turf/open/floor/plating/airless, diff --git a/_maps/deprecated/Ships/independent_high.dmm b/_maps/deprecated/Ships/independent_high.dmm index f0970571986c..6e0bde796115 100644 --- a/_maps/deprecated/Ships/independent_high.dmm +++ b/_maps/deprecated/Ships/independent_high.dmm @@ -1036,7 +1036,7 @@ /obj/effect/turf_decal/corner/opaque/red/diagonal, /obj/structure/toilet/secret{ dir = 4; - secret_type = /obj/item/stack/sheet/capitalisium + secret_type = /obj/item/spacecash/bundle/c10000 }, /turf/open/floor/plasteel/white, /area/ship/crew/dorm) diff --git a/_maps/deprecated/Ships/independent_sugarcube.dmm b/_maps/deprecated/Ships/independent_sugarcube.dmm index 91d92a7fce0b..53e73a592993 100644 --- a/_maps/deprecated/Ships/independent_sugarcube.dmm +++ b/_maps/deprecated/Ships/independent_sugarcube.dmm @@ -59,8 +59,8 @@ /turf/open/floor/plating, /area/ship/storage) "h" = ( -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/trash/cheesie, /obj/item/trash/cheesie, /obj/item/trash/candy, diff --git a/_maps/shuttles/misc/infiltrator_advanced.dmm b/_maps/deprecated/Ships/infiltrator_advanced.dmm similarity index 100% rename from _maps/shuttles/misc/infiltrator_advanced.dmm rename to _maps/deprecated/Ships/infiltrator_advanced.dmm diff --git a/_maps/deprecated/Ships/minutemen_carina.dmm b/_maps/deprecated/Ships/minutemen_carina.dmm index f3c74f713347..986dc5a907b2 100644 --- a/_maps/deprecated/Ships/minutemen_carina.dmm +++ b/_maps/deprecated/Ships/minutemen_carina.dmm @@ -2031,8 +2031,8 @@ /obj/item/reagent_containers/food/snacks/meat/slab, /obj/item/reagent_containers/food/snacks/meat/slab, /obj/item/reagent_containers/food/snacks/meat/slab, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/machinery/camera/autoname, /turf/open/floor/plasteel/mono, /area/ship/crew) @@ -2065,12 +2065,12 @@ pixel_x = -1; pixel_y = 14 }, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/corner/opaque/red{ dir = 1 @@ -3662,14 +3662,14 @@ pixel_x = 1; pixel_y = -3 }, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 diff --git a/_maps/deprecated/Ships/nanotrasen_pubby.dmm b/_maps/deprecated/Ships/nanotrasen_pubby.dmm index a1680beacbaf..179c7e811e65 100644 --- a/_maps/deprecated/Ships/nanotrasen_pubby.dmm +++ b/_maps/deprecated/Ships/nanotrasen_pubby.dmm @@ -236,8 +236,8 @@ /obj/machinery/microwave{ pixel_y = 2 }, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets{ +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration{ pixel_x = 3; pixel_y = 2 }, diff --git a/_maps/deprecated/Ships/syndicate_kugelblitz.dmm b/_maps/deprecated/Ships/syndicate_kugelblitz.dmm index 307df52d270e..27986b9fbc77 100644 --- a/_maps/deprecated/Ships/syndicate_kugelblitz.dmm +++ b/_maps/deprecated/Ships/syndicate_kugelblitz.dmm @@ -801,7 +801,7 @@ /obj/item/radio, /obj/item/radio, /obj/effect/decal/cleanable/dirt, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/mineral/plastitanium, /area/ship/crew) "mv" = ( diff --git a/_maps/deprecated/deprecated_datums.dm b/_maps/deprecated/deprecated_datums.dm index c9cd175d81a9..b1128719e113 100644 --- a/_maps/deprecated/deprecated_datums.dm +++ b/_maps/deprecated/deprecated_datums.dm @@ -98,3 +98,18 @@ id = "tumblr-sexyman" description = "After a logging incident gone wrong, the Syndicate invade this factory to stop the beast." suffix = "jungle_surface_tumblr_sexyman.dmm" + +/datum/map_template/ruin/lavaland/biodome/beach + name = "Biodome Beach" + id = "biodome-beach" + description = "Seemingly plucked from a tropical destination, this beach is calm and cool, with the salty waves roaring softly in the background. \ + Comes with a rustic wooden bar and suicidal bartender." + suffix = "lavaland_biodome_beach.dmm" + +/datum/map_template/ruin/lavaland/syndicate_base + name = "Syndicate Lava Base" + id = "lava-base" + description = "A secret base researching illegal bioweapons, it is closely guarded by an elite team of syndicate agents." + suffix = "lavaland_surface_syndicate_base1.dmm" + cost = 20 + allow_duplicates = FALSE diff --git a/_maps/map_catalogue.txt b/_maps/map_catalogue.txt index d766b2a849fd..defa6335817d 100644 --- a/_maps/map_catalogue.txt +++ b/_maps/map_catalogue.txt @@ -129,6 +129,10 @@ Find the key for using this catalogue in "map_catalogue_key.txt" Size = (x = 100)(y = 75)(z = 1) Tags = "Medium Combat Challenge", "Major Loot", "Hazardous", "Liveable" + File Name "_maps\RandomRuins\JungleRuins\jungle_cavecrew + Size = (x = 43)(y = 63)(z = 1) + Tags = "Medium Combat Challenge", "Hazardous", "Liveable", "Major Loot" + File Name "_maps\RandomRuins\JungleRuins\jungle_abandoned_library Size = (x = 36)(y = 35)(z = 1) Tags = "Medium Combat Challenge", "Medium Loot", "Antag Gear", "Necropolis Loot", "Liveable" @@ -286,6 +290,10 @@ Find the key for using this catalogue in "map_catalogue_key.txt" Size = (x = 9)(y = 9)(z = 1) Tags = "Boss Combat Challenge", "Major Loot", "Hazardous", "Inhospitable" + File Name = "_maps\RandomRuins\RockRuins\rockplanet_nomadcrash.dmm" + Size = (x = 58)(y = 48)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Hazardous", "Hospitable" + SandRuins: File Name = "_maps\RandomRuins\Ruins\whitesands_surface_assaultpodcrash.dmm" @@ -503,6 +511,10 @@ Find the key for using this catalogue in "map_catalogue_key.txt" Size = (x = 37)(y = 43)(z = 1) Tags = "Medium Combat Challenge", "Medium Loot", "Liveable" + File Name = "_maps\RandomRuins\BeachRuins\beach_float_resort.dmm" + Size = (x = 38)(y = 52)(z = 1) + Tags = "No Combat", "Minor Loot", "Liveable" + Deprecated: File Name = "_maps\RandomRuins\deprecated\jungle_surface_tumblr_sexyman.dmm" Size = (x = 30)(y = 20)(z = 1) @@ -561,7 +573,7 @@ Find the key for using this catalogue in "map_catalogue_key.txt" Tags = "No Combat", "Medium Loot", "Shelter" - Waste Ruins: + Waste Ruins: File name ="_maps\RandomRuins\wasteruins\wasteplanet_clowncrash.dmm" Size = (x = 11)(y = 12)(z = 1) Tags = "No Combat", "Minor Loot", "Shelter" "hospitable" @@ -584,7 +596,7 @@ Find the key for using this catalogue in "map_catalogue_key.txt" File name ="_maps\RandomRuins\wasteruins\wasteplanet_pandora.dmm" Size = (x = 18)(y = 21)(z = 1) - Tags = "Boss Combat Challenge", "Minor Loot" "Megafauna", "hospitable" + Tags = "Boss Combat Challenge", "Medium Loot" "Megafauna", "hospitable" File name ="_maps\RandomRuins\wasteruins\wasteplanet_pod.dmm" Size = (x = 8)(y = 8)(z = 1) @@ -599,8 +611,8 @@ Find the key for using this catalogue in "map_catalogue_key.txt" Tags "No combat", "Medium loot", "hospitable" File name ="_maps\RandomRuins\wasteruins\wasteplanet_unhonorable.dmm" - Size = (x = 11)(y = 17)(z = 1) - Tags = "No Combat", "Medium Loot", "Shelter", "Hazardous" + Size = (x = 34)(y = 34)(z = 1) + Tags = "Minor Combat Challenge", "Medium Loot", "Shelter", "Hazardous" File name = "_maps\RandomRuins\wasteruins\wasteplanet_abandoned_mechbay Size = (x = 45)(y = 47)(z = 1) diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 24f28ce738c6..e2b1ff97158c 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -680,7 +680,7 @@ "alS" = ( /obj/structure/fans/tiny/invisible, /turf/open/floor/holofloor/hyperspace, -/area/centcom/supplypod/flyMeToTheMoon) +/area/centcom/supplypod/supplypod_temp_holding) "alW" = ( /obj/structure/chair{ dir = 8 @@ -4244,7 +4244,7 @@ /area/centcom/ferry) "aNE" = ( /turf/open/floor/plasteel, -/area/centcom/supplypod/podStorage) +/area/centcom/supplypod/pod_storage) "aNF" = ( /obj/machinery/computer/communications{ dir = 1 @@ -8951,7 +8951,7 @@ "hra" = ( /obj/structure/table/reinforced, /obj/item/storage/lockbox/loyalty, -/obj/item/gun/ballistic/automatic/assualt/ar, +/obj/item/gun/ballistic/automatic/assault/ar, /obj/machinery/light/directional/north, /obj/effect/turf_decal/industrial/warning, /turf/open/floor/plasteel, @@ -9186,8 +9186,6 @@ /turf/open/floor/plasteel/dark, /area/ctf) "hYc" = ( -/obj/structure/destructible/cult/tome, -/obj/item/book/codex_gigas, /obj/machinery/airalarm/directional/east, /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 @@ -9199,6 +9197,7 @@ /obj/effect/turf_decal/corner/transparent/neutral{ dir = 8 }, +/obj/machinery/vending/wardrobe/cent_wardrobe, /turf/open/floor/plasteel/dark, /area/centcom/ferry) "hZs" = ( diff --git a/_maps/map_files/generic/blank.dmm b/_maps/map_files/generic/blank.dmm index b8744ca3eca5..b918e3fcaead 100644 --- a/_maps/map_files/generic/blank.dmm +++ b/_maps/map_files/generic/blank.dmm @@ -38,7 +38,7 @@ "N" = ( /obj/structure/fans/tiny/invisible, /turf/open/floor/holofloor/hyperspace, -/area/centcom/supplypod/flyMeToTheMoon) +/area/centcom/supplypod/supplypod_temp_holding) "P" = ( /obj/structure/signpost/salvation{ icon = 'icons/obj/structures.dmi'; diff --git a/_maps/outpost/hangar/indie_space_20x20.dmm b/_maps/outpost/hangar/indie_space_20x20.dmm new file mode 100644 index 000000000000..24c00395b2f6 --- /dev/null +++ b/_maps/outpost/hangar/indie_space_20x20.dmm @@ -0,0 +1,1109 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ac" = ( +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"ad" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"al" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 8 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"am" = ( +/turf/closed/indestructible/reinforced, +/area/hangar) +"ao" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ap" = ( +/obj/structure/marker_beacon{ + picked_color = "Teal" + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"aq" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"av" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ax" = ( +/obj/machinery/door/airlock, +/obj/effect/landmark/outpost/elevator_machine, +/obj/structure/lattice/catwalk, +/turf/open/floor/engine, +/area/hangar) +"ay" = ( +/obj/machinery/door/poddoor/multi_tile/four_tile_ver, +/turf/closed/indestructible/reinforced, +/area/hangar) +"az" = ( +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aA" = ( +/obj/machinery/elevator_call_button{ + pixel_y = 25 + }, +/obj/effect/landmark/outpost/elevator_machine, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aB" = ( +/obj/effect/landmark/outpost/hangar_dock, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"aC" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"aE" = ( +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aH" = ( +/turf/template_noop, +/area/template_noop) +"aJ" = ( +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"aL" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"aM" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aN" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aO" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aP" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aT" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aY" = ( +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aZ" = ( +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"jk" = ( +/obj/effect/landmark/outpost/elevator, +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) +"qz" = ( +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) +"rQ" = ( +/obj/machinery/atmospherics/pipe/simple/general, +/turf/closed/indestructible/reinforced, +/area/hangar) + +(1,1,1) = {" +aH +aH +aH +am +am +am +am +am +am +am +ay +am +am +am +ay +am +am +am +ay +am +am +am +ay +am +am +am +ay +am +am +am +am +"} +(2,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aL +aL +aL +aL +aL +aL +aL +aL +aL +aL +aL +aL +aL +aL +aL +aL +aL +aL +aL +aL +ao +aZ +aZ +am +"} +(3,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +ac +ac +aC +ac +ac +ac +ac +aC +ac +ac +ac +ac +aC +ac +ac +ac +ac +aC +ac +ac +ao +aZ +aZ +am +"} +(4,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ao +aZ +aZ +am +"} +(5,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aB +ao +aZ +aZ +am +"} +(6,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(7,1,1) = {" +aH +aH +aH +am +aZ +az +aM +ap +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ap +ao +az +aZ +am +"} +(8,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(9,1,1) = {" +aH +aH +aH +am +aZ +aZ +av +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aq +aZ +aZ +am +"} +(10,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(11,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(12,1,1) = {" +aH +aH +aH +am +aZ +az +aM +ap +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ap +ao +az +aZ +am +"} +(13,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(14,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(15,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(16,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(17,1,1) = {" +aH +aH +aH +am +aZ +az +aM +ap +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ap +ao +az +aZ +am +"} +(18,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(19,1,1) = {" +aH +aH +aH +am +aZ +aZ +av +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aq +aZ +aZ +am +"} +(20,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(21,1,1) = {" +aH +aH +aH +am +aZ +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(22,1,1) = {" +aH +aH +aH +am +aZ +az +aM +ap +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ap +ao +az +aZ +am +"} +(23,1,1) = {" +aH +aH +aH +rQ +aO +aZ +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(24,1,1) = {" +am +am +am +am +am +aA +aM +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +aJ +ao +aZ +aZ +am +"} +(25,1,1) = {" +am +qz +qz +jk +ax +aZ +al +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aP +aZ +aZ +am +"} +(26,1,1) = {" +am +qz +qz +qz +ax +aY +aZ +aZ +aZ +aT +aZ +aZ +aZ +aZ +aT +aZ +aZ +aZ +aZ +aT +aZ +aZ +aZ +aZ +aT +aZ +aZ +aZ +aZ +aZ +am +"} +(27,1,1) = {" +am +qz +qz +qz +ax +aZ +aZ +aZ +aE +aZ +aZ +aZ +aZ +aZ +aZ +aZ +aZ +aZ +aZ +aZ +aZ +aZ +aZ +aZ +aZ +aE +aZ +aZ +aZ +aZ +am +"} +(28,1,1) = {" +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +"} diff --git a/_maps/outpost/hangar/indie_space_40x20.dmm b/_maps/outpost/hangar/indie_space_40x20.dmm new file mode 100644 index 000000000000..b3d80e6103bc --- /dev/null +++ b/_maps/outpost/hangar/indie_space_40x20.dmm @@ -0,0 +1,1769 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ab" = ( +/turf/closed/indestructible/reinforced, +/area/hangar) +"ae" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"af" = ( +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ai" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aj" = ( +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"al" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"am" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"ap" = ( +/obj/effect/landmark/outpost/hangar_dock, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"as" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"av" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aw" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"aA" = ( +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aD" = ( +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"aF" = ( +/obj/machinery/door/airlock, +/obj/effect/landmark/outpost/elevator_machine, +/obj/structure/lattice/catwalk, +/turf/open/floor/engine, +/area/hangar) +"aG" = ( +/obj/structure/marker_beacon{ + picked_color = "Teal" + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"aH" = ( +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"aL" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aM" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 8 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aO" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"aP" = ( +/turf/template_noop, +/area/template_noop) +"aR" = ( +/obj/machinery/elevator_call_button{ + pixel_y = 25 + }, +/obj/effect/landmark/outpost/elevator_machine, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aT" = ( +/obj/machinery/door/poddoor/multi_tile/four_tile_ver, +/turf/closed/indestructible/reinforced, +/area/hangar) +"aU" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aX" = ( +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aY" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"JT" = ( +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) +"OP" = ( +/obj/effect/landmark/outpost/elevator, +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) +"TX" = ( +/obj/machinery/atmospherics/pipe/simple/general, +/turf/closed/indestructible/reinforced, +/area/hangar) + +(1,1,1) = {" +aP +aP +aP +ab +ab +ab +ab +ab +ab +ab +aT +ab +ab +ab +aT +ab +ab +ab +aT +ab +ab +ab +aT +ab +ab +ab +aT +ab +ab +ab +ab +"} +(2,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +al +aj +aj +ab +"} +(3,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aH +aH +aw +aH +aH +aH +aH +aw +aH +aH +aH +aH +aw +aH +aH +aH +aH +aw +aH +aH +al +aj +aj +ab +"} +(4,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +am +al +aj +aj +ab +"} +(5,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +ap +al +aj +aj +ab +"} +(6,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(7,1,1) = {" +aP +aP +aP +ab +aj +aX +aL +aG +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aG +al +aX +aj +ab +"} +(8,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(9,1,1) = {" +aP +aP +aP +ab +aj +aj +ai +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aY +aj +aj +ab +"} +(10,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(11,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(12,1,1) = {" +aP +aP +aP +ab +aj +aX +aL +aG +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aG +al +aX +aj +ab +"} +(13,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(14,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(15,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(16,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(17,1,1) = {" +aP +aP +aP +ab +aj +aX +aL +aG +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aG +al +aX +aj +ab +"} +(18,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(19,1,1) = {" +aP +aP +aP +ab +aj +aj +ai +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aY +aj +aj +ab +"} +(20,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(21,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(22,1,1) = {" +aP +aP +aP +ab +aj +aX +aL +aG +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aG +al +aX +aj +ab +"} +(23,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(24,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(25,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(26,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(27,1,1) = {" +aP +aP +aP +ab +aj +aX +aL +aG +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aG +al +aX +aj +ab +"} +(28,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(29,1,1) = {" +aP +aP +aP +ab +aj +aj +ai +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aY +aj +aj +ab +"} +(30,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(31,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(32,1,1) = {" +aP +aP +aP +ab +aj +aX +aL +aG +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aG +al +aX +aj +ab +"} +(33,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(34,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(35,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(36,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(37,1,1) = {" +aP +aP +aP +ab +aj +aX +aL +aG +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aG +al +aX +aj +ab +"} +(38,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(39,1,1) = {" +aP +aP +aP +ab +aj +aj +ai +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aY +aj +aj +ab +"} +(40,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(41,1,1) = {" +aP +aP +aP +ab +aj +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(42,1,1) = {" +aP +aP +aP +ab +aj +aX +aL +aG +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aG +al +aX +aj +ab +"} +(43,1,1) = {" +aP +aP +aP +TX +av +aj +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(44,1,1) = {" +ab +ab +ab +ab +ab +aR +aL +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +aD +al +aj +aj +ab +"} +(45,1,1) = {" +ab +JT +JT +OP +aF +aj +aM +aU +aU +aU +aU +aU +aU +aU +aU +aU +aU +aU +aU +aU +aU +aU +aU +aU +aU +aU +aU +ae +aj +aj +ab +"} +(46,1,1) = {" +ab +JT +JT +JT +aF +af +aj +aj +aj +as +aj +aj +aj +aj +as +aj +aj +aj +aj +as +aj +aj +aj +aj +as +aj +aj +aj +aj +aj +ab +"} +(47,1,1) = {" +ab +JT +JT +JT +aF +aj +aj +aj +aA +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aA +aj +aj +aj +aj +ab +"} +(48,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 +"} diff --git a/_maps/outpost/hangar/indie_space_40x40.dmm b/_maps/outpost/hangar/indie_space_40x40.dmm new file mode 100644 index 000000000000..9818aa943330 --- /dev/null +++ b/_maps/outpost/hangar/indie_space_40x40.dmm @@ -0,0 +1,2729 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/closed/indestructible/reinforced, +/area/hangar) +"ab" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ac" = ( +/obj/structure/marker_beacon{ + picked_color = "Teal" + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"ag" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ah" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ak" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"am" = ( +/obj/machinery/elevator_call_button{ + pixel_y = 25 + }, +/obj/effect/landmark/outpost/elevator_machine, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"an" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"ap" = ( +/obj/machinery/door/poddoor/multi_tile/four_tile_ver, +/turf/closed/indestructible/reinforced, +/area/hangar) +"as" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"at" = ( +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"au" = ( +/turf/template_noop, +/area/template_noop) +"aw" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ax" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ay" = ( +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aC" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 8 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aF" = ( +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"aH" = ( +/obj/effect/landmark/outpost/hangar_dock, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"aP" = ( +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aQ" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"aS" = ( +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aT" = ( +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aX" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aY" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aZ" = ( +/obj/machinery/door/airlock, +/obj/effect/landmark/outpost/elevator_machine, +/obj/structure/lattice/catwalk, +/turf/open/floor/engine, +/area/hangar) +"jY" = ( +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) +"BE" = ( +/obj/machinery/atmospherics/pipe/simple/general, +/turf/closed/indestructible/reinforced, +/area/hangar) +"JI" = ( +/obj/effect/landmark/outpost/elevator, +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) + +(1,1,1) = {" +au +au +au +aa +aa +aa +aa +aa +aa +aa +ap +aa +aa +aa +ap +aa +aa +aa +ap +aa +aa +aa +ap +aa +aa +aa +ap +aa +aa +aa +ap +aa +aa +aa +ap +aa +aa +aa +ap +aa +aa +aa +ap +aa +aa +aa +ap +aa +aa +aa +aa +"} +(2,1,1) = {" +au +au +au +aa +aT +aT +ah +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +ab +aT +aT +aa +"} +(3,1,1) = {" +au +au +au +aa +aT +aT +ah +at +at +as +at +at +at +at +as +at +at +at +at +as +at +at +at +at +as +at +at +at +at +as +at +at +at +at +as +at +at +at +at +as +at +at +at +at +as +at +at +ab +aT +aT +aa +"} +(4,1,1) = {" +au +au +au +aa +aT +aT +ah +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +aQ +ab +aT +aT +aa +"} +(5,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aH +ab +aT +aT +aa +"} +(6,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(7,1,1) = {" +au +au +au +aa +aT +ay +ah +ac +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ac +ab +ay +aT +aa +"} +(8,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(9,1,1) = {" +au +au +au +aa +aT +aT +ax +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ak +aT +aT +aa +"} +(10,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(11,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(12,1,1) = {" +au +au +au +aa +aT +ay +ah +ac +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ac +ab +ay +aT +aa +"} +(13,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(14,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(15,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(16,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(17,1,1) = {" +au +au +au +aa +aT +ay +ah +ac +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ac +ab +ay +aT +aa +"} +(18,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(19,1,1) = {" +au +au +au +aa +aT +aT +ax +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ak +aT +aT +aa +"} +(20,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(21,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(22,1,1) = {" +au +au +au +aa +aT +ay +ah +ac +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ac +ab +ay +aT +aa +"} +(23,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(24,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(25,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(26,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(27,1,1) = {" +au +au +au +aa +aT +ay +ah +ac +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ac +ab +ay +aT +aa +"} +(28,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(29,1,1) = {" +au +au +au +aa +aT +aT +ax +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ak +aT +aT +aa +"} +(30,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(31,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(32,1,1) = {" +au +au +au +aa +aT +ay +ah +ac +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ac +ab +ay +aT +aa +"} +(33,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(34,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(35,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(36,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(37,1,1) = {" +au +au +au +aa +aT +ay +ah +ac +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ac +ab +ay +aT +aa +"} +(38,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(39,1,1) = {" +au +au +au +aa +aT +aT +ax +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ak +aT +aT +aa +"} +(40,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(41,1,1) = {" +au +au +au +aa +aT +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(42,1,1) = {" +au +au +au +aa +aT +ay +ah +ac +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ac +ab +ay +aT +aa +"} +(43,1,1) = {" +au +au +au +BE +aY +aT +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(44,1,1) = {" +aa +aa +aa +aa +aa +am +ah +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +aF +ab +aT +aT +aa +"} +(45,1,1) = {" +aa +jY +jY +JI +aZ +aT +aC +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 +aX +aT +aT +aa +"} +(46,1,1) = {" +aa +jY +jY +jY +aZ +aP +aT +aT +aT +aw +aT +aT +aT +aT +aw +aT +aT +aT +aT +aw +aT +aT +aT +aT +aw +aT +aT +aT +aT +aw +aT +aT +aT +aT +aw +aT +aT +aT +aT +aw +aT +aT +aT +aT +aw +aT +aT +aT +aT +aT +aa +"} +(47,1,1) = {" +aa +jY +jY +jY +aZ +aT +aT +aS +aT +aT +aT +aT +aT +aT +aT +aT +aT +aS +aT +aT +aT +aT +aT +aT +aT +aT +aS +aS +aT +aT +aT +aT +aT +aT +aT +aT +aS +aT +aT +aT +aT +aT +aT +aT +aT +aT +aS +aT +aT +aT +aa +"} +(48,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/_maps/outpost/hangar/indie_space_56x20.dmm b/_maps/outpost/hangar/indie_space_56x20.dmm new file mode 100644 index 000000000000..93842d2587a5 --- /dev/null +++ b/_maps/outpost/hangar/indie_space_56x20.dmm @@ -0,0 +1,2297 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ad" = ( +/obj/machinery/door/poddoor/multi_tile/four_tile_ver, +/turf/closed/indestructible/reinforced, +/area/hangar) +"ae" = ( +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"af" = ( +/obj/effect/landmark/outpost/hangar_dock, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"ag" = ( +/turf/closed/indestructible/reinforced, +/area/hangar) +"ai" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"aj" = ( +/obj/machinery/door/airlock, +/obj/effect/landmark/outpost/elevator_machine, +/obj/structure/lattice/catwalk, +/turf/open/floor/engine, +/area/hangar) +"al" = ( +/obj/structure/marker_beacon{ + picked_color = "Teal" + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"am" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"an" = ( +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ap" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 8 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"as" = ( +/obj/machinery/elevator_call_button{ + pixel_y = 25 + }, +/obj/effect/landmark/outpost/elevator_machine, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ax" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"ay" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aB" = ( +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aC" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aD" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aE" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aG" = ( +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aI" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aJ" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aK" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aN" = ( +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"aP" = ( +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aX" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"aZ" = ( +/turf/template_noop, +/area/template_noop) +"jJ" = ( +/obj/effect/landmark/outpost/elevator, +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) +"mX" = ( +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) +"vM" = ( +/obj/machinery/atmospherics/pipe/simple/general, +/turf/closed/indestructible/reinforced, +/area/hangar) + +(1,1,1) = {" +aZ +aZ +aZ +ag +ag +ag +ag +ag +ag +ag +ad +ag +ag +ag +ad +ag +ag +ag +ad +ag +ag +ag +ad +ag +ag +ag +ad +ag +ag +ag +ag +"} +(2,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aX +aX +aX +aX +aX +aX +aX +aX +aX +aX +aX +aX +aX +aX +aX +aX +aX +aX +aX +aX +aC +an +an +ag +"} +(3,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +ae +ae +ai +ae +ae +ae +ae +ai +ae +ae +ae +ae +ai +ae +ae +ae +ae +ai +ae +ae +aC +an +an +ag +"} +(4,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +ax +aC +an +an +ag +"} +(5,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +af +aC +an +an +ag +"} +(6,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(7,1,1) = {" +aZ +aZ +aZ +ag +an +aG +aJ +al +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +al +aC +aG +an +ag +"} +(8,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(9,1,1) = {" +aZ +aZ +aZ +ag +an +an +aI +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aK +an +an +ag +"} +(10,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(11,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(12,1,1) = {" +aZ +aZ +aZ +ag +an +aG +aJ +al +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +al +aC +aG +an +ag +"} +(13,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(14,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(15,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(16,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(17,1,1) = {" +aZ +aZ +aZ +ag +an +aG +aJ +al +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +al +aC +aG +an +ag +"} +(18,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(19,1,1) = {" +aZ +aZ +aZ +ag +an +an +aI +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aK +an +an +ag +"} +(20,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(21,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(22,1,1) = {" +aZ +aZ +aZ +ag +an +aG +aJ +al +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +al +aC +aG +an +ag +"} +(23,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(24,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(25,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(26,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(27,1,1) = {" +aZ +aZ +aZ +ag +an +aG +aJ +al +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +al +aC +aG +an +ag +"} +(28,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(29,1,1) = {" +aZ +aZ +aZ +ag +an +an +aI +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aK +an +an +ag +"} +(30,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(31,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(32,1,1) = {" +aZ +aZ +aZ +ag +an +aG +aJ +al +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +al +aC +aG +an +ag +"} +(33,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(34,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(35,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(36,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(37,1,1) = {" +aZ +aZ +aZ +ag +an +aG +aJ +al +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +al +aC +aG +an +ag +"} +(38,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(39,1,1) = {" +aZ +aZ +aZ +ag +an +an +aI +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aK +an +an +ag +"} +(40,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(41,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(42,1,1) = {" +aZ +aZ +aZ +ag +an +aG +aJ +al +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +al +aC +aG +an +ag +"} +(43,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(44,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(45,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(46,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(47,1,1) = {" +aZ +aZ +aZ +ag +an +aG +aJ +al +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +al +aC +aG +an +ag +"} +(48,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(49,1,1) = {" +aZ +aZ +aZ +ag +an +an +aI +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aK +an +an +ag +"} +(50,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(51,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(52,1,1) = {" +aZ +aZ +aZ +ag +an +aG +aJ +al +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +al +aC +aG +an +ag +"} +(53,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(54,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(55,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(56,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(57,1,1) = {" +aZ +aZ +aZ +ag +an +aG +aJ +al +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +al +aC +aG +an +ag +"} +(58,1,1) = {" +aZ +aZ +aZ +ag +an +an +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(59,1,1) = {" +aZ +aZ +aZ +vM +ay +an +aI +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aK +an +an +ag +"} +(60,1,1) = {" +ag +ag +ag +ag +ag +as +aJ +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aC +an +an +ag +"} +(61,1,1) = {" +ag +mX +mX +jJ +aj +an +ap +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +aE +am +an +an +ag +"} +(62,1,1) = {" +ag +mX +mX +mX +aj +aB +an +an +an +aD +an +an +an +an +aD +an +an +an +an +aD +an +an +an +an +aD +an +an +an +an +an +ag +"} +(63,1,1) = {" +ag +mX +mX +mX +aj +an +an +an +aP +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +an +aP +an +an +an +an +ag +"} +(64,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 +"} diff --git a/_maps/outpost/hangar/indie_space_56x40.dmm b/_maps/outpost/hangar/indie_space_56x40.dmm new file mode 100644 index 000000000000..4adf317b8435 --- /dev/null +++ b/_maps/outpost/hangar/indie_space_56x40.dmm @@ -0,0 +1,3578 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ab" = ( +/obj/machinery/elevator_call_button{ + pixel_y = 25 + }, +/obj/effect/landmark/outpost/elevator_machine, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ad" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"ai" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"aj" = ( +/obj/effect/landmark/outpost/hangar_dock, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"am" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ao" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ar" = ( +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"at" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"au" = ( +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aw" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"aA" = ( +/obj/machinery/door/airlock, +/obj/effect/landmark/outpost/elevator_machine, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aD" = ( +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aE" = ( +/obj/structure/marker_beacon{ + picked_color = "Teal" + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"aG" = ( +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"aH" = ( +/turf/closed/indestructible/reinforced, +/area/hangar) +"aI" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aK" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 8 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aM" = ( +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"aN" = ( +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aO" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aP" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aT" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"aU" = ( +/obj/machinery/door/poddoor/multi_tile/four_tile_ver, +/turf/closed/indestructible/reinforced, +/area/hangar) +"aV" = ( +/turf/template_noop, +/area/template_noop) +"aZ" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plasteel{ + planetary_atmos = 1 + }, +/area/hangar) +"ck" = ( +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) +"MN" = ( +/obj/machinery/atmospherics/pipe/simple/general, +/turf/closed/indestructible/reinforced, +/area/hangar) +"Qi" = ( +/obj/effect/landmark/outpost/elevator, +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) + +(1,1,1) = {" +aV +aV +aV +aH +aH +aH +aH +aH +aH +aH +aU +aH +aH +aH +aU +aH +aH +aH +aU +aH +aH +aH +aU +aH +aH +aH +aU +aH +aH +aH +aU +aH +aH +aH +aU +aH +aH +aH +aU +aH +aH +aH +aU +aH +aH +aH +aU +aH +aH +aH +aH +"} +(2,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +aT +aN +aN +aH +"} +(3,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aG +aG +aw +aG +aG +aG +aG +aw +aG +aG +aG +aG +aw +aG +aG +aG +aG +aw +aG +aG +aG +aG +aw +aG +aG +aG +aG +aw +aG +aG +aG +aG +aw +aG +aG +aG +aG +aw +aG +aG +aT +aN +aN +aH +"} +(4,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +ai +aT +aN +aN +aH +"} +(5,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aj +aT +aN +aN +aH +"} +(6,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(7,1,1) = {" +aV +aV +aV +aH +aN +aD +aP +aE +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aE +aT +aD +aN +aH +"} +(8,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(9,1,1) = {" +aV +aV +aV +aH +aN +aN +am +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +ao +aN +aN +aH +"} +(10,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(11,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(12,1,1) = {" +aV +aV +aV +aH +aN +aD +aP +aE +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aE +aT +aD +aN +aH +"} +(13,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(14,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(15,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(16,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(17,1,1) = {" +aV +aV +aV +aH +aN +aD +aP +aE +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aE +aT +aD +aN +aH +"} +(18,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(19,1,1) = {" +aV +aV +aV +aH +aN +aN +am +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +ao +aN +aN +aH +"} +(20,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(21,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(22,1,1) = {" +aV +aV +aV +aH +aN +aD +aP +aE +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aE +aT +aD +aN +aH +"} +(23,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(24,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(25,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(26,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(27,1,1) = {" +aV +aV +aV +aH +aN +aD +aP +aE +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aE +aT +aD +aN +aH +"} +(28,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(29,1,1) = {" +aV +aV +aV +aH +aN +aN +am +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +ao +aN +aN +aH +"} +(30,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(31,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(32,1,1) = {" +aV +aV +aV +aH +aN +aD +aP +aE +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aE +aT +aD +aN +aH +"} +(33,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(34,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(35,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(36,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(37,1,1) = {" +aV +aV +aV +aH +aN +aD +aP +aE +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aE +aT +aD +aN +aH +"} +(38,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(39,1,1) = {" +aV +aV +aV +aH +aN +aN +am +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +ao +aN +aN +aH +"} +(40,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(41,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(42,1,1) = {" +aV +aV +aV +aH +aN +aD +aP +aE +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aE +aT +aD +aN +aH +"} +(43,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(44,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(45,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(46,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(47,1,1) = {" +aV +aV +aV +aH +aN +aD +aP +aE +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aE +aT +aD +aN +aH +"} +(48,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(49,1,1) = {" +aV +aV +aV +aH +aN +aN +am +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +ao +aN +aN +aH +"} +(50,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(51,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(52,1,1) = {" +aV +aV +aV +aH +aN +aD +aP +aE +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aE +aT +aD +aN +aH +"} +(53,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(54,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(55,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(56,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(57,1,1) = {" +aV +aV +aV +aH +aN +aD +aP +aE +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aE +aT +aD +aN +aH +"} +(58,1,1) = {" +aV +aV +aV +aH +aN +aN +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(59,1,1) = {" +aV +aV +aV +MN +at +aN +am +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +ao +aN +aN +aH +"} +(60,1,1) = {" +aH +aH +aH +aH +aH +ab +aP +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aM +aT +aN +aN +aH +"} +(61,1,1) = {" +aH +ck +ck +Qi +aA +aN +aK +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aO +aI +aN +aN +aH +"} +(62,1,1) = {" +aH +ck +ck +ck +aA +ar +aN +aN +aN +aZ +aN +aN +aN +aN +aZ +aN +aN +aN +aN +aZ +aN +aN +aN +aN +aZ +aN +aN +aN +aN +aZ +aN +aN +aN +aN +aZ +aN +aN +aN +aN +aZ +aN +aN +aN +aN +aZ +aN +aN +aN +aN +aN +aH +"} +(63,1,1) = {" +aH +ck +ck +ck +aA +aN +aN +au +aN +aN +aN +aN +aN +aN +aN +aN +aN +au +aN +aN +aN +aN +aN +aN +aN +aN +au +au +aN +aN +aN +aN +aN +aN +aN +aN +au +aN +aN +aN +aN +aN +aN +aN +aN +aN +au +aN +aN +aN +aH +"} +(64,1,1) = {" +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +aH +"} diff --git a/_maps/outpost/hangar/test_2_20x20.dmm b/_maps/outpost/hangar/nt_asteroid_20x20.dmm similarity index 64% rename from _maps/outpost/hangar/test_2_20x20.dmm rename to _maps/outpost/hangar/nt_asteroid_20x20.dmm index e9b8744419eb..bbeb98d817ad 100644 --- a/_maps/outpost/hangar/test_2_20x20.dmm +++ b/_maps/outpost/hangar/nt_asteroid_20x20.dmm @@ -1,114 +1,186 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ar" = ( -/obj/machinery/door/airlock/highsecurity, -/turf/open/floor/plasteel/dark, -/area/hangar) -"aE" = ( +"ah" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + req_access_txt = "109" + }, /obj/structure/catwalk/over/plated_catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/industrial/warning/corner, -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 8 +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/obj/item/pipe/binary{ - dir = 10 +/area/hangar) +"an" = ( +/obj/structure/chair/comfy/black{ + dir = 1 }, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"aD" = ( +/obj/effect/decal/fakelattice{ + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt{ + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt{ + color = "#808080" + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080"; + planetary_atmos = 1 + }, +/area/hangar) +"aN" = ( +/obj/effect/turf_decal/steeldecal/steel_decals_central2{ + pixel_y = 2 + }, +/obj/effect/turf_decal/steeldecal/steel_decals6, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"bi" = ( +/obj/effect/turf_decal/box/corners, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, /area/hangar) -"bg" = ( +"bv" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/garbage{ - pixel_x = -12; - pixel_y = -6 + pixel_y = -5; + pixel_x = -7 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/patterned/cargo_one, /area/hangar) -"bF" = ( +"cn" = ( +/obj/structure/catwalk/over/plated_catwalk, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/catwalk/over/plated_catwalk, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"bK" = ( -/obj/structure/frame/machine, -/obj/machinery/light/directional/south, -/turf/open/floor/plating, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/general, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 + }, /area/hangar) -"cx" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, +"cB" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/table, +/obj/item/paper/pamphlet/gateway{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/item/paper/pamphlet/centcom{ + pixel_x = 8; + pixel_y = 1 + }, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = -9; + pixel_y = 3 + }, +/obj/structure/sign/poster/official/do_not_question{ + pixel_x = 32 + }, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, /area/hangar) -"cF" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, -/turf/open/floor/plasteel/dark, +"cE" = ( +/obj/effect/landmark/outpost/hangar_dock, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) -"cQ" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 1 +"cY" = ( +/obj/structure/floodlight_frame{ + pixel_x = -9; + pixel_y = -1 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, /area/hangar) -"cS" = ( +"dg" = ( /obj/effect/turf_decal/arrows{ dir = 1 }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"de" = ( -/obj/effect/turf_decal/steeldecal/steel_decals_central2{ - pixel_y = 2 - }, -/obj/item/pipe/binary{ - dir = 9 +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"dU" = ( -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating, +"dz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil/streak, +/obj/machinery/light/directional/west, +/turf/open/floor/plating{ + icon_state = "foam_plating"; + planetary_atmos = 1 + }, /area/hangar) -"ej" = ( +"dC" = ( /obj/effect/decal/fakelattice{ color = "#808080" }, /obj/effect/decal/cleanable/dirt{ color = "#808080" }, -/obj/effect/decal/cleanable/dirt{ - color = "#808080" - }, -/obj/effect/decal/cleanable/confetti{ - color = "#808080" - }, /turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" + color = "#808080"; + planetary_atmos = 1 }, /area/hangar) -"ep" = ( -/obj/structure/chair/comfy/black{ - dir = 1 +"dQ" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, /area/hangar) -"ew" = ( +"ea" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"eE" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/effect/turf_decal/industrial/traffic{ - dir = 8 +"ei" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 + }, +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/patterned/cargo_one, /area/hangar) -"eN" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/tiles, +"ek" = ( +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 + }, /area/hangar) "eQ" = ( /obj/item/organ/tail/lizard{ @@ -122,73 +194,114 @@ }, /turf/open/floor/plating/asteroid/icerock/cracked, /area/hangar) -"eZ" = ( -/obj/effect/turf_decal/techfloor/corner{ - dir = 1 +"eV" = ( +/obj/effect/turf_decal/steeldecal/steel_decals9, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/turf_decal/steeldecal/steel_decals1, -/turf/open/floor/plasteel/dark, /area/hangar) -"fi" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 1 +"fm" = ( +/obj/effect/decal/fakelattice{ + color = "#808080" + }, +/obj/item/trash/cheesie{ + color = "#808080"; + pixel_x = 21; + pixel_y = 1; + layer = 2.9 + }, +/obj/effect/decal/cleanable/glass{ + dir = 8; + pixel_y = 1; + color = "#808080" + }, +/obj/effect/decal/cleanable/oil{ + icon_state = "streak4"; + pixel_x = -13; + pixel_y = -11 + }, +/obj/effect/decal/cleanable/dirt{ + color = "#808080" + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080"; + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, /area/hangar) "fp" = ( /obj/machinery/light/directional/south, /turf/open/floor/plating/asteroid/icerock/smooth, /area/hangar) -"ft" = ( -/obj/structure/railing{ - dir = 4; - layer = 4.1 +"fO" = ( +/obj/effect/turf_decal/techfloor{ + dir = 9 }, -/turf/open/floor/plasteel/stairs/right, -/area/hangar) -"fu" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil/streak, -/obj/machinery/light/directional/west, -/turf/open/floor/plating{ - icon_state = "foam_plating" +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, /area/hangar) -"fF" = ( -/obj/effect/turf_decal/industrial/traffic{ +"gQ" = ( +/obj/structure/railing/wood{ + layer = 3.1; dir = 4 }, -/obj/structure/frame/computer{ - dir = 8 +/obj/structure/flora/ausbushes/sparsegrass{ + pixel_y = -1; + pixel_x = -1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/hangar) -"fQ" = ( -/obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood{ - dir = 1 + dir = 4 + }, +/turf/open/floor/grass{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, /area/hangar) -"fZ" = ( -/obj/effect/turf_decal/industrial/warning{ +"hb" = ( +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plating/asteroid/icerock, +/area/hangar) +"hf" = ( +/obj/structure/marker_beacon{ + picked_color = "Teal" + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"hq" = ( +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"hz" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"hE" = ( /obj/structure/catwalk/over/plated_catwalk, /obj/effect/decal/cleanable/dirt, -/obj/item/pipe/binary, +/obj/effect/turf_decal/industrial/warning{ + dir = 6 + }, +/obj/effect/decal/cleanable/glass, +/obj/machinery/light/directional/east, /turf/open/floor/plating{ - icon_state = "panelscorched" + icon_state = "panelscorched"; + planetary_atmos = 1 }, /area/hangar) -"gf" = ( -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"gh" = ( +"hJ" = ( /obj/effect/decal/fakelattice{ color = "#808080" }, @@ -211,39 +324,34 @@ layer = 4.1 }, /turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" + color = "#808080"; + planetary_atmos = 1 }, /area/hangar) -"gV" = ( -/obj/effect/turf_decal/techfloor{ - dir = 10 +"hL" = ( +/obj/machinery/door/airlock/highsecurity, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"gX" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/item/pipe/binary{ - dir = 5 +"hP" = ( +/obj/structure/flora/rock{ + pixel_x = 9 }, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, /area/hangar) -"ha" = ( -/obj/effect/turf_decal/industrial/loading, -/turf/open/floor/plasteel/dark, -/area/hangar) -"hT" = ( -/obj/structure/railing/wood{ - layer = 3.1; - dir = 4 +"ia" = ( +/obj/structure/chair/greyscale{ + dir = 8 }, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/fernybush, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 }, -/turf/open/floor/grass, /area/hangar) "iK" = ( /obj/structure/fence{ @@ -255,39 +363,76 @@ "iZ" = ( /turf/closed/indestructible/reinforced, /area/hangar) -"ja" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "109" +"js" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 1 + }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/item/pipe/binary, -/turf/open/floor/plating, -/area/hangar) -"jc" = ( -/obj/structure/flora/ausbushes/ywflowers, -/turf/open/floor/grass, /area/hangar) -"ji" = ( -/obj/effect/decal/fakelattice{ - color = "#808080" +"jw" = ( +/obj/machinery/computer/cargo/express, +/obj/structure/railing{ + dir = 8; + layer = 4.1 }, -/obj/effect/decal/cleanable/dirt{ - color = "#808080" +/obj/structure/sign/poster/official/moth/smokey{ + pixel_y = 32 }, -/obj/effect/decal/cleanable/dirt{ - color = "#808080" +/turf/open/floor/plating/catwalk_floor{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt{ - color = "#808080" +/area/hangar) +"jQ" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 }, -/obj/structure/railing{ - dir = 8; - layer = 4.1 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" +/area/hangar) +"ka" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"kX" = ( +/obj/machinery/computer/crew/syndie{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"lt" = ( +/obj/effect/turf_decal/industrial/loading, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"lZ" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 }, /area/hangar) -"jq" = ( +"mn" = ( /obj/effect/decal/fakelattice{ color = "#808080" }, @@ -302,113 +447,163 @@ color = "#808080" }, /turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" + color = "#808080"; + planetary_atmos = 1 }, /area/hangar) -"jF" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 4 - }, -/obj/structure/frame/machine, -/obj/structure/grille/broken, +"mw" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, -/area/hangar) -"jP" = ( -/obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, /area/hangar) -"ki" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +"mz" = ( +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, +/area/hangar) +"mV" = ( /obj/structure/catwalk/over/plated_catwalk, -/obj/effect/decal/cleanable/blood/old, -/obj/item/pipe/binary, -/turf/open/floor/plating, +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 5 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 + }, /area/hangar) -"kA" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 +"mW" = ( +/obj/effect/decal/fakelattice{ + color = "#808080" + }, +/obj/effect/decal/cleanable/sprayweb{ + color = "#808080" + }, +/obj/effect/decal/cleanable/sprayweb{ + color = "#808080" + }, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080"; + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel/patterned/cargo_one, /area/hangar) -"kG" = ( -/obj/effect/turf_decal/techfloor{ - dir = 8 +"mY" = ( +/turf/template_noop, +/area/template_noop) +"nt" = ( +/obj/effect/decal/fakelattice{ + color = "#808080" }, -/obj/machinery/computer/card/minor/cmo{ - dir = 4 +/obj/effect/decal/cleanable/dirt{ + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt{ + color = "#808080" + }, +/obj/effect/decal/cleanable/confetti{ + color = "#808080" + }, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080"; + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, /area/hangar) -"lg" = ( -/obj/effect/landmark/outpost/elevator, -/turf/open/floor/plasteel/elevatorshaft, +"nw" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "asclepius_reception_lockdown"; + name = "Lockdown Shutters" + }, +/obj/item/kirbyplants{ + icon_state = "plant-03" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, /area/hangar) -"lF" = ( -/obj/effect/turf_decal/techfloor{ - dir = 8 +"nP" = ( +/obj/structure/girder/displaced, +/obj/structure/grille/broken, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, /area/hangar) -"md" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, +"nY" = ( +/obj/structure/fence/door, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plating/asteroid/icerock, /area/hangar) -"mu" = ( -/obj/structure/flora/ausbushes/sparsegrass{ - pixel_y = -12; - pixel_x = 9 +"oj" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 }, -/turf/open/floor/grass, /area/hangar) -"mP" = ( -/obj/effect/turf_decal/steeldecal/steel_decals10, -/obj/effect/turf_decal/steeldecal/steel_decals10{ +"ok" = ( +/obj/effect/turf_decal/industrial/traffic{ dir = 4 }, -/turf/open/floor/plasteel/tech, +/obj/structure/frame/machine, +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust{ + planetary_atmos = 1 + }, /area/hangar) -"mR" = ( -/turf/open/floor/plating{ - icon_state = "panelscorched" +"oq" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/open/floor/grass{ + planetary_atmos = 1 }, /area/hangar) -"mY" = ( -/turf/template_noop, -/area/template_noop) -"nQ" = ( -/obj/structure/frame/machine, -/obj/effect/turf_decal/techfloor/corner{ - dir = 4 +"oC" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 + }, +/obj/effect/turf_decal/steeldecal/steel_decals6, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"nY" = ( -/obj/structure/fence/door, -/obj/structure/fans/tiny/invisible, -/turf/open/floor/plating/asteroid/icerock, +"oL" = ( +/obj/structure/table/wood/reinforced, +/obj/item/table_bell{ + pixel_x = 9; + pixel_y = -1 + }, +/obj/item/cigbutt/cigarbutt{ + pixel_x = -5; + pixel_y = 10 + }, +/obj/item/dice/d2, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, /area/hangar) -"oe" = ( -/obj/structure/catwalk/over/plated_catwalk, +"oP" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/industrial/warning{ - dir = 6 +/obj/effect/decal/cleanable/wrapping{ + color = "#808080" }, -/obj/effect/decal/cleanable/glass, -/obj/machinery/light/directional/east, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/obj/structure/closet/crate, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, /area/hangar) -"os" = ( +"pg" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, +/area/hangar) +"pV" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 }, @@ -422,207 +617,275 @@ pixel_y = 18 }, /obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/concrete/tiles, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, /area/hangar) -"oV" = ( -/obj/structure/table/reinforced, -/obj/item/stack/packageWrap{ - pixel_y = 7 +"pW" = ( +/turf/open/floor/plasteel/stairs/medium{ + planetary_atmos = 1 }, -/obj/item/clipboard{ - pixel_x = -5; - pixel_y = 1 +/area/hangar) +"qa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, -/obj/item/export_scanner{ - pixel_x = 4 +/area/hangar) +"qk" = ( +/obj/structure/table/wood/reinforced, +/obj/item/modular_computer/laptop/preset/civilian{ + pixel_x = -1; + pixel_y = 3 }, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/obj/item/newspaper{ + pixel_x = 6; + pixel_y = 10 }, -/area/hangar) -"pB" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/steeldecal/steel_decals_central2{ - pixel_y = 2 - }, -/obj/item/pipe/binary{ - dir = 4 +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"pX" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "panelscorched" +"ql" = ( +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, /area/hangar) -"qq" = ( +"qt" = ( +/obj/machinery/door/airlock, +/obj/effect/landmark/outpost/elevator_machine, +/obj/structure/lattice/catwalk, +/turf/open/floor/engine, +/area/hangar) +"qJ" = ( /obj/effect/decal/fakelattice{ color = "#808080" }, -/obj/effect/decal/cleanable/greenglow{ +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/obj/effect/decal/cleanable/glass{ + dir = 8; + pixel_y = -4; color = "#808080"; - pixel_x = -11; - pixel_y = 3 + pixel_x = 8 }, /obj/effect/decal/cleanable/dirt{ color = "#808080" }, -/turf/open/floor/plasteel/elevatorshaft{ +/obj/effect/decal/cleanable/dirt{ color = "#808080" }, -/area/hangar) -"qR" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 8 +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080"; + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, /area/hangar) -"ri" = ( -/obj/structure/table/wood/reinforced, -/obj/item/flashlight/lamp/green{ - pixel_y = 13; - pixel_x = 8 +"qM" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 }, -/obj/item/paper_bin{ - pixel_x = -4; - pixel_y = 4 +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 }, -/obj/item/pen{ - pixel_y = 4; - pixel_x = -4 +/area/hangar) +"qY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/item/clipboard{ - pixel_x = -2; - pixel_y = 8 +/area/hangar) +"re" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/warning{ + dir = 10 }, -/obj/item/phone{ - pixel_x = 8; - pixel_y = -4 +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/warning{ + dir = 10 }, -/obj/item/storage/fancy/cigarettes/cigars/havana{ - pixel_y = -8; - pixel_x = 4 +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 }, -/obj/item/lighter{ - pixel_y = -16; - pixel_x = 13 +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"rM" = ( -/turf/open/floor/plasteel/dark, /area/hangar) -"rN" = ( -/obj/structure/chair/greyscale{ +"rg" = ( +/obj/item/binoculars{ + pixel_y = 6; + pixel_x = -3 + }, +/obj/structure/rack, +/obj/item/radio{ + pixel_y = 6; + pixel_x = 9 + }, +/obj/effect/turf_decal/techfloor/corner{ dir = 8 }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"rw" = ( +/obj/structure/frame/machine, +/obj/machinery/light/directional/south, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"rP" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg2"; + planetary_atmos = 1 + }, +/area/hangar) +"ss" = ( +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"tk" = ( /obj/effect/decal/cleanable/dirt, +/obj/structure/fans/tiny/invisible, /turf/open/floor/plating{ - icon_state = "panelscorched" + planetary_atmos = 1 }, /area/hangar) -"sc" = ( +"tm" = ( /obj/effect/decal/fakelattice{ color = "#808080" }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, /obj/effect/decal/cleanable/dirt{ color = "#808080" }, -/obj/effect/decal/cleanable/dirt{ +/obj/effect/decal/cleanable/leaper_sludge{ color = "#808080" }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/elevatorshaft{ +/obj/effect/decal/cleanable/sprayweb{ color = "#808080" }, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080"; + planetary_atmos = 1 + }, /area/hangar) -"sv" = ( -/obj/effect/decal/fakelattice{ - color = "#808080" +"ty" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "asclepius_reception_lockdown"; + name = "Lockdown Shutters" }, -/obj/effect/decal/cleanable/dirt{ - color = "#808080" +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, /area/hangar) -"sI" = ( -/obj/structure/railing{ - dir = 4; - layer = 4.1 +"tz" = ( +/obj/effect/turf_decal/techfloor/corner{ + dir = 1 }, -/obj/structure/sign/warning/securearea{ - pixel_y = 32 +/obj/effect/turf_decal/steeldecal/steel_decals1, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plating/catwalk_floor, /area/hangar) -"sN" = ( -/obj/structure/table, -/obj/item/toy/cards/deck{ - pixel_x = 3; - pixel_y = 3 +"tF" = ( +/obj/effect/turf_decal/arrows, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/icerock, /area/hangar) -"sO" = ( +"tT" = ( /obj/effect/decal/fakelattice{ color = "#808080" }, -/obj/effect/decal/cleanable/sprayweb{ +/obj/effect/decal/cleanable/dirt{ color = "#808080" }, -/obj/effect/decal/cleanable/sprayweb{ +/obj/effect/decal/cleanable/dirt{ color = "#808080" }, -/turf/open/floor/plasteel/elevatorshaft{ +/obj/effect/decal/cleanable/dirt{ color = "#808080" }, +/obj/effect/decal/cleanable/wrapping{ + color = "#808080"; + pixel_y = 8 + }, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080"; + planetary_atmos = 1 + }, /area/hangar) -"te" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 +"uL" = ( +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/turf/open/floor/plasteel/stairs/right{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/girder/displaced, -/turf/open/floor/plasteel/patterned/cargo_one, /area/hangar) -"ti" = ( -/obj/machinery/computer/crew/syndie{ +"uY" = ( +/obj/machinery/computer/communications{ dir = 4 }, /obj/effect/turf_decal/techfloor{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/hangar) -"tN" = ( -/turf/open/floor/plasteel/stairs/medium, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"tR" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +"vs" = ( +/obj/effect/turf_decal/steeldecal/steel_decals6, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/tiles, /area/hangar) -"up" = ( +"vE" = ( +/obj/machinery/door/poddoor/multi_tile/four_tile_ver, +/turf/closed/indestructible/reinforced, +/area/hangar) +"vW" = ( /obj/effect/decal/fakelattice{ color = "#808080" }, -/obj/item/trash/sosjerky{ - anchored = 1; - color = "#808080"; - pixel_x = 8; - pixel_y = 8 +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 }, /obj/effect/decal/cleanable/dirt{ color = "#808080" @@ -630,89 +893,159 @@ /obj/effect/decal/cleanable/vomit/old{ color = "#808080" }, -/obj/structure/railing{ - dir = 8; - layer = 4.1 +/obj/effect/decal/cleanable/sprayweb{ + color = "#808080" }, /turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" + color = "#808080"; + planetary_atmos = 1 }, /area/hangar) -"uq" = ( -/turf/open/floor/plating, +"wd" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"uU" = ( -/obj/structure/marker_beacon{ - picked_color = "Teal" +"wu" = ( +/obj/structure/flora/ausbushes/sparsegrass{ + pixel_y = -12; + pixel_x = 9 + }, +/turf/open/floor/grass{ + planetary_atmos = 1 }, -/turf/open/floor/plating, /area/hangar) -"vl" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ +"wI" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 6 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3"; + planetary_atmos = 1 + }, +/area/hangar) +"wN" = ( +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, /area/hangar) -"vE" = ( -/obj/machinery/door/poddoor/multi_tile/four_tile_ver, -/turf/closed/indestructible/reinforced, +"yM" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Al" = ( +/obj/structure/rack, +/obj/item/poster/random_official{ + pixel_x = 2; + pixel_y = 9 + }, +/obj/item/poster/random_official{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/poster/random_contraband{ + pixel_y = 8; + pixel_x = -1 + }, +/obj/item/destTagger{ + pixel_x = -5 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 + }, +/area/hangar) +"Av" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"AK" = ( +/turf/open/floor/plating/asteroid/icerock/smooth, /area/hangar) -"vR" = ( +"Bh" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/warning/docking{ - pixel_x = -32 - }, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"vS" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +"BM" = ( +/obj/effect/turf_decal/techfloor{ + dir = 5 }, -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/computer/camera_advanced{ dir = 8 }, -/obj/item/pipe/binary, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, /area/hangar) -"we" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ +"Cb" = ( +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, /area/hangar) -"wY" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/chair{ - dir = 1 +"Ci" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/fermenting_barrel{ + pixel_y = 9 + }, +/obj/structure/fermenting_barrel{ + pixel_y = 1; + pixel_x = 8 + }, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, -/turf/open/floor/concrete/tiles, /area/hangar) -"xj" = ( -/obj/item/binoculars{ - pixel_y = 6; - pixel_x = -3 +"Cw" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, -/obj/structure/rack, -/obj/item/radio{ - pixel_y = 6; - pixel_x = 9 +/area/hangar) +"Cx" = ( +/obj/effect/turf_decal/industrial/caution{ + pixel_y = 4 }, -/obj/effect/turf_decal/techfloor/corner{ - dir = 8 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"CA" = ( +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/machinery/fax, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, /area/hangar) -"xk" = ( +"CR" = ( /obj/effect/decal/fakelattice{ color = "#808080" }, @@ -730,170 +1063,151 @@ layer = 4.1 }, /turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" + color = "#808080"; + planetary_atmos = 1 }, /area/hangar) -"xu" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/table, -/obj/item/paper/pamphlet/gateway{ - pixel_x = 3; - pixel_y = 4 +"CU" = ( +/obj/effect/turf_decal/steeldecal/steel_decals10, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 4 }, -/obj/item/paper/pamphlet/centcom{ - pixel_x = 8; - pixel_y = 1 +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/obj/item/reagent_containers/food/drinks/coffee{ - pixel_x = -9; - pixel_y = 3 - }, -/obj/structure/sign/poster/official/do_not_question{ - pixel_x = 32 - }, -/turf/open/floor/concrete/tiles, -/area/hangar) -"xA" = ( -/obj/machinery/door/airlock, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, /area/hangar) -"xN" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +"Dj" = ( +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 }, -/turf/open/floor/concrete/slab_1, -/area/hangar) -"xP" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/plasteel/tech, /area/hangar) -"yb" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/concrete/tiles, -/area/hangar) -"zf" = ( +"Do" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/official/ian{ - pixel_y = -32 +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"zu" = ( -/obj/effect/turf_decal/steeldecal/steel_decals6, -/turf/open/floor/plasteel/dark, +"DD" = ( +/turf/closed/mineral/random/snow, /area/hangar) -"zO" = ( -/obj/structure/railing/wood{ - layer = 3.1; - dir = 4 - }, -/obj/structure/flora/ausbushes/sparsegrass{ - pixel_y = -1; - pixel_x = -1 - }, -/obj/structure/flora/ausbushes/stalkybush, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +"DG" = ( +/obj/structure/railing{ + dir = 8; + layer = 4.1 }, -/turf/open/floor/grass, -/area/hangar) -"Ap" = ( -/obj/effect/turf_decal/steeldecal/steel_decals_central2{ - pixel_y = 2 +/turf/open/floor/plasteel/stairs/left{ + planetary_atmos = 1 }, -/obj/effect/turf_decal/steeldecal/steel_decals6, -/turf/open/floor/plasteel/dark, -/area/hangar) -"AK" = ( -/turf/open/floor/plating/asteroid/icerock/smooth, /area/hangar) -"BQ" = ( -/obj/effect/decal/fakelattice{ - color = "#808080" +"DK" = ( +/obj/effect/turf_decal/techfloor{ + dir = 10 }, -/obj/item/trash/energybar{ - color = "#808080"; - layer = 2; - pixel_x = -4; - pixel_y = 4 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/xenoblood{ - color = "#808080" +/area/hangar) +"Es" = ( +/obj/structure/grille, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" +/area/hangar) +"Ew" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 }, /area/hangar) -"BV" = ( +"ER" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 + }, /obj/structure/catwalk/over/plated_catwalk, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/industrial/warning{ - dir = 10 +/obj/effect/decal/cleanable/glass, +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 }, -/obj/item/pipe/binary{ - dir = 4 +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 9 }, /turf/open/floor/plating{ - icon_state = "panelscorched" + icon_state = "panelscorched"; + planetary_atmos = 1 }, /area/hangar) -"BZ" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/concrete/reinforced, -/area/hangar) -"Ce" = ( -/obj/structure/grille, -/turf/open/floor/plasteel/dark, +"Fd" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 1 + }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"CD" = ( -/obj/effect/decal/cleanable/dirt, +"Fg" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/newscaster/directional/south, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/obj/effect/decal/cleanable/glass, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, +/area/hangar) +"Fy" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"CS" = ( +"GE" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/concrete/slab_1, -/area/hangar) -"CT" = ( -/obj/effect/decal/fakelattice{ - color = "#808080" +/obj/machinery/light/directional/east, +/obj/structure/chair{ + dir = 8 }, -/obj/structure/railing{ - dir = 8; - layer = 4.1 +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 8 +/area/hangar) +"Hi" = ( +/obj/effect/turf_decal/steeldecal/steel_decals3, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 6 }, -/obj/effect/decal/cleanable/dirt{ - color = "#808080" +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/vomit/old{ - color = "#808080" +/area/hangar) +"Hv" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, -/obj/effect/decal/cleanable/sprayweb{ - color = "#808080" +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, -/turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 }, /area/hangar) -"DD" = ( -/turf/closed/mineral/random/snow, -/area/hangar) -"DT" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, -/area/hangar) -"Eg" = ( +"Hw" = ( /obj/structure/railing/wood{ layer = 3.1; dir = 4 @@ -902,438 +1216,484 @@ pixel_y = -1; pixel_x = -1 }, +/obj/structure/flora/ausbushes/stalkybush, /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/grass, +/turf/open/floor/grass{ + planetary_atmos = 1 + }, +/area/hangar) +"Ij" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"Ej" = ( +"It" = ( /obj/effect/decal/fakelattice{ color = "#808080" }, -/obj/item/trash/cheesie{ +/obj/effect/decal/cleanable/greenglow{ color = "#808080"; - pixel_x = 21; - pixel_y = 1; - layer = 2.9 - }, -/obj/effect/decal/cleanable/glass{ - dir = 8; - pixel_y = 1; - color = "#808080" - }, -/obj/effect/decal/cleanable/oil{ - icon_state = "streak4"; - pixel_x = -13; - pixel_y = -11 + pixel_x = -11; + pixel_y = 3 }, /obj/effect/decal/cleanable/dirt{ color = "#808080" }, -/obj/structure/railing{ - dir = 8; - layer = 4.1 - }, /turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" + color = "#808080"; + planetary_atmos = 1 }, /area/hangar) -"En" = ( +"IR" = ( +/obj/structure/railing/wood{ + layer = 3.1; + dir = 4 + }, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/fernybush, /obj/effect/turf_decal/siding/wood{ - dir = 1 + dir = 4 + }, +/turf/open/floor/grass{ + planetary_atmos = 1 }, -/turf/open/floor/concrete/tiles, -/area/hangar) -"Ev" = ( -/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, -/turf/open/floor/plating, /area/hangar) -"Fa" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 1 +"Je" = ( +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"Gk" = ( -/turf/open/floor/plasteel/elevatorshaft, +"Jf" = ( +/turf/open/floor/plating/catwalk_floor{ + planetary_atmos = 1 + }, /area/hangar) -"Gq" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 +"Jt" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 }, -/obj/structure/closet/crate/trashcart, -/turf/open/floor/plasteel/patterned/cargo_one, /area/hangar) -"GC" = ( -/obj/structure/table/wood/reinforced, -/obj/item/table_bell{ - pixel_x = 9; - pixel_y = -1 +"Ju" = ( +/obj/effect/decal/cleanable/garbage{ + pixel_x = -12; + pixel_y = -6 }, -/obj/item/cigbutt/cigarbutt{ - pixel_x = -5; - pixel_y = 10 +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, -/obj/item/dice/d2, -/turf/open/floor/plasteel/tech, /area/hangar) -"GD" = ( -/obj/structure/table/reinforced{ - color = "#c1b6a5" - }, -/obj/item/desk_flag{ - pixel_x = -6; - pixel_y = 17 +"Jz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/item/megaphone/sec{ - name = "syndicate megaphone"; - pixel_x = 1; - pixel_y = 4 +/area/hangar) +"JN" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 }, -/obj/item/camera_bug{ - pixel_x = -5; - pixel_y = -3 +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, +/area/hangar) +"Kd" = ( /obj/effect/turf_decal/techfloor{ dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/hangar) -"GK" = ( -/obj/structure/rack, -/obj/item/poster/random_official{ - pixel_x = 2; - pixel_y = 9 +/turf/open/floor/plasteel/tech/grid{ + planetary_atmos = 1 }, -/obj/item/poster/random_official{ - pixel_x = -2; +/area/hangar) +"Kf" = ( +/obj/effect/turf_decal/industrial/caution{ pixel_y = 4 }, -/obj/item/poster/random_contraband{ - pixel_y = 8; - pixel_x = -1 - }, -/obj/item/destTagger{ - pixel_x = -5 - }, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, /area/hangar) -"GL" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ +"Ki" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/turf_decal/industrial/traffic{ dir = 8 }, -/turf/open/floor/plasteel/tech, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, /area/hangar) -"GX" = ( -/obj/machinery/computer/cargo/express, +"Kl" = ( +/obj/effect/decal/fakelattice{ + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt{ + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt{ + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt{ + color = "#808080" + }, /obj/structure/railing{ dir = 8; layer = 4.1 }, -/obj/structure/sign/poster/official/moth/smokey{ - pixel_y = 32 +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080"; + planetary_atmos = 1 }, -/turf/open/floor/plating/catwalk_floor, /area/hangar) -"Hp" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/hangar) -"HT" = ( -/turf/open/floor/plating/catwalk_floor, +"KA" = ( +/obj/structure/flora/rock/pile/icy, +/turf/open/floor/plating/asteroid/icerock/cracked, /area/hangar) -"HV" = ( -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/tech, +"KU" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + req_access_txt = "109" + }, +/obj/machinery/door/airlock/maintenance_hatch{ + req_access_txt = "109" + }, +/obj/machinery/atmospherics/pipe/simple/general, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) -"Iz" = ( -/obj/structure/table/wood/reinforced, -/obj/item/modular_computer/laptop/preset/civilian{ - pixel_x = -1; - pixel_y = 3 +"LB" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + volume = 10000000 }, -/obj/item/newspaper{ - pixel_x = 6; - pixel_y = 10 +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 + }, +/area/hangar) +"LN" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) -"IZ" = ( -/obj/structure/chair/sofa/right, -/obj/item/reagent_containers/food/drinks/mug{ - pixel_x = -5; - pixel_y = -3 +"Mb" = ( +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/obj/item/toy/plush/hornet{ - pixel_x = 6; - pixel_y = 3 +/area/hangar) +"Mm" = ( +/obj/item/flashlight/lantern{ + pixel_x = 7 }, -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_y = 32 +/obj/machinery/light/directional/east, +/turf/open/floor/plating/asteroid/icerock, +/area/hangar) +"Mv" = ( +/obj/effect/turf_decal/steeldecal/steel_decals2, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, +/area/hangar) +"MZ" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/reinforced, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"Jp" = ( -/obj/effect/decal/fakelattice{ - color = "#808080" +"Nc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt{ - color = "#808080" +/area/hangar) +"Nd" = ( +/obj/effect/turf_decal/steeldecal/steel_decals_central2{ + pixel_y = 2 }, -/obj/effect/decal/cleanable/dirt{ - color = "#808080" +/obj/effect/turf_decal/steeldecal/steel_decals_central2{ + pixel_y = 2 }, -/obj/effect/decal/cleanable/dirt{ - color = "#808080" +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1 }, -/obj/effect/decal/cleanable/wrapping{ - color = "#808080"; - pixel_y = 8 - }, -/turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, /area/hangar) -"JW" = ( -/obj/effect/turf_decal/steeldecal/steel_decals3, -/obj/effect/turf_decal/steeldecal/steel_decals3{ - dir = 6 +"Ni" = ( +/obj/structure/closet/crate/bin, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/north, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"Kv" = ( +"Nv" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 8 + dir = 1 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/turf_decal/steeldecal/steel_decals6, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, /area/hangar) -"KA" = ( -/obj/structure/flora/rock/pile/icy, -/turf/open/floor/plating/asteroid/icerock/cracked, +"NB" = ( +/turf/open/floor/plating/asteroid/icerock, /area/hangar) -"KO" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 8 +"OH" = ( +/obj/structure/frame/machine, +/obj/effect/turf_decal/techfloor/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"Lb" = ( -/obj/structure/railing{ - dir = 8; - layer = 4.1 +"OW" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 + }, +/obj/structure/frame/computer{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/catwalk_floor, -/area/hangar) -"LF" = ( -/obj/structure/catwalk/over/plated_catwalk, /turf/open/floor/plating{ - icon_state = "foam_plating" + planetary_atmos = 1 }, /area/hangar) -"LM" = ( -/obj/effect/turf_decal/techfloor{ - dir = 9 +"Ph" = ( +/obj/effect/landmark/outpost/elevator, +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 }, +/area/hangar) +"Pn" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/steeldecal/steel_decals_central2{ + pixel_y = 2 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"LO" = ( -/obj/effect/turf_decal/industrial/caution{ +"Py" = ( +/obj/structure/table/wood/reinforced, +/obj/item/flashlight/lamp/green{ + pixel_y = 13; + pixel_x = 8 + }, +/obj/item/paper_bin{ + pixel_x = -4; pixel_y = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/hangar) -"Mf" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 8 +/obj/item/pen{ + pixel_y = 4; + pixel_x = -4 }, -/turf/open/floor/plasteel/tech/grid, -/area/hangar) -"Mm" = ( -/obj/item/flashlight/lantern{ - pixel_x = 7 +/obj/item/clipboard{ + pixel_x = -2; + pixel_y = 8 }, -/obj/machinery/light/directional/east, -/turf/open/floor/plating/asteroid/icerock, -/area/hangar) -"MJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/garbage{ - pixel_y = -5; - pixel_x = -7 +/obj/item/phone{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_y = -8; + pixel_x = 4 + }, +/obj/item/lighter{ + pixel_y = -16; + pixel_x = 13 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"MR" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 8 +"PG" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, +/obj/structure/girder/displaced, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, /area/hangar) -"Np" = ( +"PN" = ( +/obj/structure/chair/sofa/left, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, /area/hangar) -"NB" = ( +"QM" = ( +/obj/structure/flora/rock/icy{ + pixel_x = 5; + pixel_y = 5 + }, /turf/open/floor/plating/asteroid/icerock, /area/hangar) -"NN" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "109" +"Ra" = ( +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/turf/open/floor/plating/catwalk_floor{ + planetary_atmos = 1 }, -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating, /area/hangar) -"NR" = ( +"RX" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/obj/structure/closet/crate/freezer, +/obj/machinery/light/directional/north, +/turf/open/floor/plating/rust{ + planetary_atmos = 1 + }, /area/hangar) -"NV" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating{ - icon_state = "panelscorched" +"SH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 }, /area/hangar) -"Od" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +"Tj" = ( +/obj/effect/decal/fakelattice{ + color = "#808080" + }, +/obj/item/trash/energybar{ + color = "#808080"; + layer = 2; + pixel_x = -4; + pixel_y = 4 + }, +/obj/effect/decal/cleanable/xenoblood{ + color = "#808080" + }, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080"; + planetary_atmos = 1 + }, /area/hangar) -"Os" = ( -/obj/structure/catwalk/over/plated_catwalk, +"To" = ( +/obj/structure/table/reinforced, +/obj/item/stack/packageWrap{ + pixel_y = 7 + }, +/obj/item/clipboard{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/item/export_scanner{ + pixel_x = 4 + }, /turf/open/floor/plating{ - icon_state = "platingdmg3" + icon_state = "panelscorched"; + planetary_atmos = 1 }, /area/hangar) -"Ot" = ( -/obj/effect/turf_decal/techfloor{ - dir = 6 +"Tp" = ( +/obj/structure/mopbucket, +/obj/item/mop{ + pixel_y = 4; + pixel_x = -9 }, -/obj/structure/table/reinforced{ - color = "#c1b6a5" +/obj/item/toy/plush/knight{ + pixel_y = 17; + pixel_x = 4 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/machinery/fax, -/turf/open/floor/plasteel/dark, -/area/hangar) -"OF" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel/dark, -/area/hangar) -"Pc" = ( -/obj/effect/turf_decal/steeldecal/steel_decals2, -/turf/open/floor/plasteel/dark, /area/hangar) -"Pt" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - volume = 10000000 +"Tr" = ( +/obj/effect/decal/fakelattice{ + color = "#808080" }, -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/obj/item/trash/sosjerky{ + anchored = 1; + color = "#808080"; + pixel_x = 8; + pixel_y = 8 }, -/area/hangar) -"PE" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/structure/fermenting_barrel{ - pixel_y = 9 +/obj/effect/decal/cleanable/dirt{ + color = "#808080" }, -/obj/structure/fermenting_barrel{ - pixel_y = 1; - pixel_x = 8 +/obj/effect/decal/cleanable/vomit/old{ + color = "#808080" + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080"; + planetary_atmos = 1 }, -/turf/open/floor/plasteel/patterned/cargo_one, /area/hangar) -"PF" = ( -/obj/effect/turf_decal/industrial/caution{ - pixel_y = 4 +"Tw" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"PL" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 1 +"TV" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" }, -/obj/structure/catwalk/over/plated_catwalk, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/obj/item/pipe/binary, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/obj/item/desk_flag{ + pixel_x = -6; + pixel_y = 17 }, -/area/hangar) -"Qk" = ( -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating{ - icon_state = "platingdmg2" +/obj/item/megaphone/sec{ + name = "syndicate megaphone"; + pixel_x = 1; + pixel_y = 4 }, -/area/hangar) -"Qn" = ( -/obj/structure/mopbucket, -/obj/item/mop{ - pixel_y = 4; - pixel_x = -9 +/obj/item/camera_bug{ + pixel_x = -5; + pixel_y = -3 }, -/obj/item/toy/plush/knight{ - pixel_y = 17; - pixel_x = 4 +/obj/effect/turf_decal/techfloor{ + dir = 4 }, -/obj/machinery/light/directional/south, -/turf/open/floor/plasteel/dark, -/area/hangar) -"QM" = ( -/obj/structure/flora/rock/icy{ - pixel_x = 5; - pixel_y = 5 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plating/asteroid/icerock, /area/hangar) -"QS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/wrapping{ - color = "#808080" +"UG" = ( +/obj/effect/turf_decal/steeldecal/steel_decals_central2{ + pixel_y = 2 }, -/obj/structure/closet/crate, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"QX" = ( -/obj/item/chair{ - pixel_x = 6; - pixel_y = -4 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plating/asteroid/icerock, -/area/hangar) -"Rm" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"RY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/freezer, -/obj/machinery/light/directional/north, -/turf/open/floor/plating/rust, -/area/hangar) -"ST" = ( -/obj/effect/turf_decal/arrows, -/turf/open/floor/plasteel/tech, /area/hangar) -"SW" = ( -/obj/structure/girder/displaced, -/obj/structure/grille/broken, -/turf/open/floor/plasteel/dark, -/area/hangar) -"Tb" = ( +"UH" = ( /obj/structure/table/reinforced, /obj/item/stamp{ pixel_x = -8; @@ -1353,147 +1713,124 @@ }, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/machinery/light/directional/north, -/turf/open/floor/plating/catwalk_floor, -/area/hangar) -"TK" = ( -/obj/structure/flora/rock{ - pixel_x = 9 +/turf/open/floor/plating/catwalk_floor{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"TP" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/newscaster/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/obj/structure/chair{ - dir = 1 +"UJ" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/concrete/tiles, /area/hangar) -"Ug" = ( -/obj/structure/railing{ - dir = 8; - layer = 4.1 +"UO" = ( +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 }, -/turf/open/floor/plasteel/stairs/left, /area/hangar) -"Uh" = ( -/obj/effect/decal/fakelattice{ - color = "#808080" - }, -/obj/structure/railing{ - dir = 8; - layer = 4.1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ +"UX" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/effect/decal/cleanable/dirt{ - color = "#808080" +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, -/obj/effect/decal/cleanable/leaper_sludge{ - color = "#808080" +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/atmospherics/pipe/simple/general, +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/sprayweb{ - color = "#808080" +/area/hangar) +"VA" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 8 }, -/turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, /area/hangar) -"UC" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "asclepius_reception_lockdown"; - name = "Lockdown Shutters" - }, -/obj/item/kirbyplants{ - icon_state = "plant-03" +"VO" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/structure/grille, +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, /area/hangar) -"UM" = ( -/obj/structure/closet/crate/bin, +"VS" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/computer/card/minor/cmo{ + dir = 4 + }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/north, -/turf/open/floor/concrete/reinforced, -/area/hangar) -"Vk" = ( -/obj/effect/turf_decal/box/corners, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"VD" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "asclepius_reception_lockdown"; - name = "Lockdown Shutters" +"WE" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, /area/hangar) -"Wz" = ( -/obj/machinery/computer/communications{ - dir = 4 +"WJ" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 1 }, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/docking{ + pixel_x = -32 + }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, -/area/hangar) -"WI" = ( -/obj/effect/turf_decal/steeldecal/steel_decals9, -/turf/open/floor/plasteel/dark, /area/hangar) -"WN" = ( -/obj/structure/floodlight_frame{ - pixel_x = -9; - pixel_y = -1 +"WL" = ( +/obj/structure/table, +/obj/item/toy/cards/deck{ + pixel_x = 3; + pixel_y = 3 }, -/obj/machinery/light/directional/south, -/turf/open/floor/plasteel/dark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plating/asteroid/icerock, /area/hangar) -"WX" = ( +"Xs" = ( +/obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/chair{ - dir = 8 +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 }, -/turf/open/floor/concrete/tiles, /area/hangar) -"Xg" = ( -/turf/open/floor/plasteel/tech, -/area/hangar) -"XA" = ( -/obj/effect/decal/fakelattice{ - color = "#808080" +"Xv" = ( +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating{ + icon_state = "foam_plating"; + planetary_atmos = 1 }, +/area/hangar) +"XB" = ( /obj/structure/railing{ dir = 8; layer = 4.1 }, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 8 - }, -/obj/effect/decal/cleanable/glass{ - dir = 8; - pixel_y = -4; - color = "#808080"; - pixel_x = 8 - }, -/obj/effect/decal/cleanable/dirt{ - color = "#808080" - }, -/obj/effect/decal/cleanable/dirt{ - color = "#808080" - }, -/turf/open/floor/plasteel/elevatorshaft{ - color = "#808080" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/catwalk_floor{ + planetary_atmos = 1 }, /area/hangar) "XL" = ( @@ -1515,75 +1852,101 @@ }, /turf/open/floor/plating/asteroid/icerock, /area/hangar) -"XX" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 4 +"XN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/ian{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/structure/grille, -/turf/open/floor/plating, /area/hangar) -"Ya" = ( -/obj/effect/turf_decal/steeldecal/steel_decals_central2{ - pixel_y = 2 +"XQ" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 }, -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 4 +/obj/structure/closet/crate/trashcart, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"Yr" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ +"XT" = ( +/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"XW" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/warning/corner, +/obj/effect/turf_decal/industrial/warning/corner{ dir = 8 }, +/obj/structure/catwalk/over/plated_catwalk, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, -/area/hangar) -"Yv" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ +/obj/effect/turf_decal/industrial/warning/corner, +/obj/effect/turf_decal/industrial/warning/corner{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 10 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 + }, /area/hangar) -"YU" = ( -/obj/structure/chair/sofa/left, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/reinforced, +"YH" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid{ + planetary_atmos = 1 + }, /area/hangar) -"Za" = ( -/obj/effect/turf_decal/techfloor{ - dir = 4 +"Zb" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech/grid, /area/hangar) -"Zp" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +"Zq" = ( +/obj/structure/chair/sofa/right, +/obj/item/reagent_containers/food/drinks/mug{ + pixel_x = -5; + pixel_y = -3 }, -/obj/machinery/light/directional/east, -/obj/structure/chair{ - dir = 8 +/obj/item/toy/plush/hornet{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 }, -/turf/open/floor/concrete/slab_1, /area/hangar) -"Zy" = ( -/obj/effect/turf_decal/techfloor{ - dir = 5 +"Zu" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair{ + dir = 1 }, -/obj/machinery/computer/camera_advanced{ - dir = 8 +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/dark, /area/hangar) -"ZV" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/effect/turf_decal/industrial/traffic{ - dir = 8 +"ZL" = ( +/obj/item/chair{ + pixel_x = 6; + pixel_y = -4 }, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plasteel/patterned/cargo_one, +/obj/structure/fans/tiny/invisible, +/turf/open/floor/plating/asteroid/icerock, /area/hangar) (1,1,1) = {" @@ -1639,26 +2002,26 @@ iZ DD DD DD -Mf -GL -GL -GL -GL -GL -GL -GL -GL -GL -GL -GL -GL -GL -GL -GL -GL -GL -GL -Mf +YH +Zb +Zb +Zb +Zb +Zb +Zb +Zb +Zb +Zb +Zb +Zb +Zb +Zb +Zb +Zb +Zb +Zb +Zb +YH iZ iZ iZ @@ -1679,29 +2042,29 @@ iZ iZ DD DD -DT -Za -Xg -cS -HV -Xg -Xg -Xg -cS -HV -Xg -Xg -HV -ST -Xg -Xg -Xg -HV -ST -Xg -Za -vR -MJ +Av +Kd +Mb +dg +ql +Mb +Mb +Mb +dg +ql +Mb +Mb +ql +tF +Mb +Mb +Mb +ql +tF +Mb +Kd +WJ +bv DD iZ iZ @@ -1720,29 +2083,29 @@ iZ DD DD DD -cF -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -jP -Fa -NR +wd +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +cE +Nv +MZ DD DD DD @@ -1760,30 +2123,30 @@ iZ iZ iZ DD -nQ -cF -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -Fa -Qn +OH +wd +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +Nv +Tp iZ DD DD @@ -1798,33 +2161,33 @@ mY mY mY iZ -GK -fu -LF -Ap -Od -uU -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uU -Fa -zf +Al +dz +Xv +aN +Ij +hf +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hf +Nv +XN iZ iZ DD @@ -1839,33 +2202,33 @@ iZ iZ iZ iZ -oV -mR -Os -Ya -Od -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -vl -NR +To +UO +wI +Nd +Ij +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +ka +MZ iK KA AK @@ -1876,37 +2239,37 @@ iZ (8,1,1) = {" mY iZ -Pt -gX -iZ -GX -Lb -Ug -dU -pB -cF -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -vl -zu +LB +mV +iZ +jw +XB +DG +ei +Pn +wd +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +ka +vs iK AK AK @@ -1918,36 +2281,36 @@ iZ iZ iZ iZ -pX -iZ -Tb -HT -tN -Qk -pB -DT -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -we -rM +ek +iZ +UH +Jf +pW +rP +Pn +Av +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +js +mz iK NB fp @@ -1957,38 +2320,38 @@ iZ "} (10,1,1) = {" iZ -Gk -Gk -BV -iZ -iZ -sI -ft -NV -pB -Od -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -vl -rM +Dj +Dj +re +iZ +iZ +Ra +uL +qM +Pn +Ij +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +ka +mz nY NB NB @@ -1998,38 +2361,38 @@ iZ "} (11,1,1) = {" iZ -Gk -Gk -aE -vS -ja -ki -fZ -PL -de -Od -uU -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uU -Fa -NR +Dj +Dj +XW +cn +KU +UX +Hv +ER +UG +Ij +hf +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hf +Nv +MZ iK NB NB @@ -2039,38 +2402,38 @@ iZ "} (12,1,1) = {" iZ -Gk -Gk -oe -DD -DD -XX -fF -jF -eZ -Od -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -vl -NR +Dj +Dj +hE +DD +DD +VO +OW +ok +tz +Ij +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +ka +MZ iK NB NB @@ -2085,33 +2448,33 @@ iZ iZ DD DD -te -gf -Gq -PF -Od -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -vl -rM +PG +Je +XQ +Cx +Ij +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +ka +mz iK NB NB @@ -2126,33 +2489,33 @@ mY iZ DD iZ -RY -Np -bg -ha -DT -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -Fa -rM +RX +mw +Ju +lt +Av +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +Nv +mz DD QM Mm @@ -2167,33 +2530,33 @@ mY iZ DD DD -gf -Np -Np -ha -cF -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -we -Ce +Je +mw +mw +lt +wd +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +js +Es DD DD iZ @@ -2208,33 +2571,33 @@ mY iZ DD DD -Rm -bF -cx -ha -cF -uU -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uU -Fa -Ce +Cw +qa +Nc +lt +wd +hf +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hf +Nv +Es DD DD DD @@ -2249,35 +2612,35 @@ mY iZ DD DD -kA -QS -Vk -LO -Od -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -Fa -NR -NB -QX +dQ +oP +bi +Kf +Ij +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +Nv +Jz +hb +ZL DD DD DD @@ -2291,34 +2654,34 @@ iZ DD DD DD -ZV -eE -NR -cF -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -vl -CD -Hp -sN +Ki +pg +MZ +wd +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +ka +qY +tk +WL DD DD DD @@ -2333,33 +2696,33 @@ DD DD DD DD -PE -NR -cF -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -Fa -SW -Hp -rN +Ci +MZ +wd +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +Nv +nP +Do +ia DD DD DD @@ -2375,31 +2738,31 @@ DD DD DD DD -NR -OF -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -vl -Ce -bK +MZ +UJ +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +ka +Es +rw iZ DD DD @@ -2413,33 +2776,33 @@ iZ DD DD DD -mu -jc +wu +oq DD -rM -md -uU -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uU -fi -Ce +mz +Fy +hf +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hf +Bh +Es DD DD DD @@ -2453,34 +2816,34 @@ iZ iZ DD DD -hT -zO -Eg +IR +Hw +gQ DD -Pc -OF -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -vl -WN +Mv +UJ +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +ka +cY iZ DD DD @@ -2493,35 +2856,35 @@ mY iZ DD DD -BZ -tR -xN -yb -VD -rM -OF -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -uq -vl -TK +oj +Cb +Xs +Ew +ty +mz +UJ +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +hq +ka +hP DD DD DD @@ -2534,34 +2897,34 @@ mY iZ DD iZ -UM -En -xN -eN -VD -Xg -MR -Yv -Yv -Yv -Yr -ew -ew -ew -qR -ew -KO -KO -ew -qR -KO -KO -KO -Kv -KO -KO -ew -cQ +Ni +wN +Xs +Jt +ty +Mb +VA +yM +yM +yM +hz +ea +ea +ea +jQ +ea +WE +WE +ea +jQ +WE +WE +WE +oC +WE +WE +ea +Fd DD DD DD @@ -2575,33 +2938,33 @@ mY iZ DD iZ -IZ -En -fQ -eN -VD -Xg -Xg -rM -WI -rM -rM -rM -rM -rM -rM -rM -CD -NR -JW -rM -zu -rM -NR -rM -NR -NR -rM +Zq +wN +LN +Jt +ty +Mb +Mb +mz +eV +mz +mz +mz +mz +mz +mz +mz +qY +MZ +Hi +mz +vs +mz +MZ +mz +MZ +MZ +mz iZ DD DD @@ -2616,33 +2979,33 @@ mY iZ DD iZ -YU -En -xN -yb -VD -mP +PN +wN +Xs +Ew +ty +CU DD iZ DD DD iZ -CT -Uh -XA -jq -ji -Ej -gh -up -xk +vW +tm +qJ +mn +Kl +fm +hJ +Tr +CR DD DD DD DD DD DD -NN +ah DD DD DD @@ -2658,10 +3021,10 @@ iZ iZ iZ iZ -os -xN -yb -UC +pV +Xs +Ew +nw DD DD DD @@ -2669,13 +3032,13 @@ DD DD iZ iZ -sO -BQ -Jp -sv -ej -sc -qq +mW +Tj +tT +dC +nt +aD +It DD DD DD @@ -2683,7 +3046,7 @@ DD DD DD DD -dU +ss DD DD DD @@ -2695,13 +3058,13 @@ mY "} (28,1,1) = {" iZ -Gk -Gk -lg -xA -tR -fQ -yb +Dj +Dj +Ph +qt +Cb +LN +Ew DD DD DD @@ -2711,10 +3074,10 @@ DD DD iZ iZ -Ev -Ev -Ev -Ev +XT +XT +XT +XT iZ iZ DD @@ -2723,9 +3086,9 @@ NB eQ DD DD -Gk -Gk -Gk +Dj +Dj +Dj DD DD iZ @@ -2736,13 +3099,13 @@ mY "} (29,1,1) = {" iZ -Gk -Gk -Gk -xA -tR -CS -wY +Dj +Dj +Dj +qt +Cb +lZ +Zu iZ DD DD @@ -2751,22 +3114,22 @@ DD DD DD iZ -xP -xj -kG -ti -Wz +Tw +rg +VS +kX +uY iZ -Gk -Gk +Dj +Dj DD NB XL DD iZ -Gk -Gk -Gk +Dj +Dj +Dj iZ DD iZ @@ -2777,13 +3140,13 @@ mY "} (30,1,1) = {" iZ -Gk -Gk -Gk -xA -En -fQ -TP +Dj +Dj +Dj +qt +wN +LN +Fg iZ DD DD @@ -2792,14 +3155,14 @@ DD DD DD iZ -Iz -ep -LM -lF -gV -ar -Gk -Gk +qk +an +fO +JN +DK +hL +Dj +Dj DD NB NB @@ -2822,9 +3185,9 @@ iZ iZ iZ iZ -WX -Zp -xu +SH +GE +cB iZ DD DD @@ -2833,14 +3196,14 @@ DD DD DD iZ -ri -GC -Zy -GD -Ot +Py +oL +BM +TV +CA iZ -Gk -Gk +Dj +Dj iZ iZ iZ diff --git a/_maps/outpost/hangar/test_2_40x20.dmm b/_maps/outpost/hangar/nt_asteroid_40x20.dmm similarity index 59% rename from _maps/outpost/hangar/test_2_40x20.dmm rename to _maps/outpost/hangar/nt_asteroid_40x20.dmm index 6a724f987ee6..21867371f279 100644 --- a/_maps/outpost/hangar/test_2_40x20.dmm +++ b/_maps/outpost/hangar/nt_asteroid_40x20.dmm @@ -1,295 +1,240 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ai" = ( +/obj/item/wallframe/airalarm{ + pixel_y = -7 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 + }, +/area/hangar) "au" = ( /turf/closed/mineral/random/snow, /area/hangar) -"aB" = ( -/obj/effect/turf_decal/industrial/warning, +"ba" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"bX" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"ck" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"cn" = ( +/obj/machinery/light/directional/north, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, /area/hangar) -"aO" = ( +"cq" = ( /obj/structure/closet/crate, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/glass, /obj/effect/decal/cleanable/wrapping, /turf/open/floor/plating{ - icon_state = "platingdmg1" + icon_state = "platingdmg1"; + planetary_atmos = 1 }, /area/hangar) -"bb" = ( -/turf/open/floor/plasteel/elevatorshaft, -/area/hangar) -"bA" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 +"cO" = ( +/obj/effect/turf_decal/techfloor{ + dir = 9 }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"bQ" = ( -/obj/item/banner, -/turf/open/floor/plasteel/dark, -/area/hangar) -"bZ" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/structure/fluff/hedge{ - icon_state = "hedge-8" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel/tech/grid, /area/hangar) -"cb" = ( -/obj/effect/turf_decal/industrial/traffic{ +"cY" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ dir = 8 }, -/obj/effect/turf_decal/box/corners{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/patterned/cargo_one, /area/hangar) -"cJ" = ( -/obj/item/pipe/binary{ - dir = 9 - }, -/obj/structure/catwalk/over/plated_catwalk, -/obj/effect/turf_decal/industrial/warning{ +"dn" = ( +/obj/effect/turf_decal/industrial/traffic{ dir = 4 }, -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 1 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, /area/hangar) -"cR" = ( -/obj/structure/table/reinforced{ - color = "#c1b6a5" +"dw" = ( +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 }, -/obj/effect/turf_decal/techfloor{ +/turf/open/floor/plasteel/stairs{ dir = 4 }, -/obj/item/storage/fancy/donut_box{ - pixel_y = 6 +/area/hangar) +"dK" = ( +/obj/machinery/door/poddoor/shutters/indestructible/preopen, +/obj/effect/turf_decal/techfloor/corner{ + dir = 4 }, -/obj/item/storage/fancy/cigarettes{ - pixel_x = 10 +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"dg" = ( +"dN" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, /obj/structure/catwalk/over/plated_catwalk, -/obj/item/pipe/binary, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general, /turf/open/floor/plating{ - icon_state = "panelscorched" + planetary_atmos = 1 }, /area/hangar) -"dk" = ( -/obj/machinery/computer/communications{ +"ed" = ( +/obj/effect/turf_decal/industrial/warning/corner{ dir = 4 }, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/obj/structure/girder/reinforced, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"dr" = ( -/obj/structure/table/wood/reinforced, -/obj/item/flashlight/lamp/green{ - pixel_y = 13; - pixel_x = 8 - }, -/obj/item/paper_bin{ - pixel_x = -4; - pixel_y = 4 +"eg" = ( +/obj/structure/chair, +/obj/structure/sign/poster/official/enlist{ + pixel_x = 32 }, -/obj/item/pen{ - pixel_y = 4; - pixel_x = -4 +/turf/open/floor/wood/walnut{ + icon_state = "wood-broken4"; + planetary_atmos = 1 }, -/obj/item/clipboard{ - pixel_x = -2; - pixel_y = 8 +/area/hangar) +"ep" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 9 }, -/obj/item/phone{ - pixel_x = 8; - pixel_y = -4 +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/obj/item/storage/fancy/cigarettes/cigars/havana{ - pixel_y = -8; - pixel_x = 4 +/area/hangar) +"eH" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/sign/poster/contraband/energy_swords{ + pixel_y = -32 }, -/obj/item/lighter{ - pixel_y = -16; - pixel_x = 13 +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/sign/poster/contraband/energy_swords{ + pixel_y = -32 }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"dD" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/plating/catwalk_floor, -/area/hangar) -"dM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ +/obj/machinery/atmospherics/pipe/simple/general{ dir = 4 }, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner, -/turf/open/floor/plasteel/tech, -/area/hangar) -"dQ" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plasteel/tech, -/area/hangar) -"dY" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/turf/open/floor/plating/rust{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, /area/hangar) -"dZ" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel/dark, -/area/hangar) -"es" = ( -/obj/machinery/computer/camera_advanced{ +"eP" = ( +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/effect/turf_decal/techfloor{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/hangar) -"ex" = ( -/obj/structure/flora/grass/both{ - pixel_x = 23; - pixel_y = 6 +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 }, -/turf/open/floor/grass/snow/safe, -/area/hangar) -"eA" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/techfloor/corner, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, /area/hangar) -"eJ" = ( -/obj/effect/turf_decal/techfloor{ +"fy" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/hangar) -"eX" = ( -/obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating, -/area/hangar) -"eZ" = ( -/obj/structure/railing{ - layer = 3.1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black, -/obj/machinery/power/floodlight, -/turf/open/floor/plasteel/tech, -/area/hangar) -"fj" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/warning{ dir = 1 }, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, -/area/hangar) -"fm" = ( -/obj/item/pipe/binary{ - dir = 8 - }, -/turf/open/floor/plasteel/stairs{ +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general{ dir = 4 }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"fs" = ( -/obj/effect/turf_decal/techfloor, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/hangar) -"fv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 8 +"fB" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 8 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, /area/hangar) -"fM" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 4 +"fI" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"fW" = ( -/obj/structure/chair, -/obj/structure/sign/poster/official/enlist{ - pixel_x = 32 +"gr" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 1 }, -/turf/open/floor/wood/walnut{ - icon_state = "wood-broken4" +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, /area/hangar) -"ga" = ( -/obj/structure/railing/corner/wood, +"gu" = ( +/turf/template_noop, +/area/template_noop) +"gE" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) -"gg" = ( +"gL" = ( +/obj/machinery/door/airlock/highsecurity, /obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/structure/railing{ - dir = 1 + dir = 4 }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"gu" = ( -/turf/template_noop, -/area/template_noop) -"gv" = ( /obj/effect/turf_decal/techfloor{ dir = 8 }, -/obj/effect/turf_decal/techfloor{ - dir = 4 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, -/area/hangar) -"gx" = ( -/turf/open/floor/plasteel/tech, -/area/hangar) -"gD" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/mopbucket, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, /area/hangar) -"gW" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +"gO" = ( +/obj/structure/railing{ + dir = 8; + layer = 4.1 }, -/obj/item/pipe/binary{ - dir = 5 +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"gY" = ( -/obj/effect/turf_decal/techfloor{ - dir = 6 +"gV" = ( +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/dark, /area/hangar) "he" = ( /obj/structure/railing{ @@ -303,12 +248,33 @@ /obj/structure/grille/indestructable, /turf/open/floor/plasteel/tech/techmaint, /area/hangar) -"hr" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 1 +"hh" = ( +/obj/effect/landmark/outpost/elevator, +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) +"hp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 4 }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"hs" = ( +/obj/structure/catwalk/over/plated_catwalk, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 6 + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "hJ" = ( /obj/structure/railing/wood{ @@ -319,286 +285,196 @@ "ie" = ( /turf/closed/indestructible/reinforced, /area/hangar) -"iK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +"iw" = ( +/obj/item/banner, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, /area/hangar) -"iO" = ( -/obj/structure/chair/comfy/black{ - dir = 1 +"iM" = ( +/obj/structure/railing{ + layer = 3.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/turf/open/floor/plasteel/stairs{ + dir = 8; + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech, /area/hangar) -"iW" = ( -/obj/structure/table/reinforced{ - color = "#c1b6a5" +"iV" = ( +/obj/structure/grille, +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/obj/item/desk_flag{ - pixel_x = -6; - pixel_y = 17 - }, -/obj/item/megaphone/sec{ - name = "syndicate megaphone"; - pixel_x = 1; - pixel_y = 4 - }, -/obj/item/camera_bug{ - pixel_x = -5; - pixel_y = -3 - }, -/obj/effect/turf_decal/techfloor{ - dir = 5 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/dark, -/area/hangar) -"jk" = ( -/obj/effect/turf_decal/techfloor{ - dir = 9 +/area/hangar) +"jy" = ( +/obj/structure/chair{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/wood/walnut{ + planetary_atmos = 1 + }, /area/hangar) -"jn" = ( -/obj/machinery/light/directional/north, +"jF" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/reinforced, -/area/hangar) -"jq" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 8 +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"jx" = ( -/obj/item/pipe/binary{ - dir = 8 +"jR" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + volume = 10000000 }, /obj/structure/catwalk/over/plated_catwalk, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, /obj/machinery/light/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "jS" = ( /obj/structure/flora/rock/icy, /turf/open/water/beach/deep, /area/hangar) -"jW" = ( -/obj/machinery/light/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"kd" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 +"jX" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"kr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, -/area/hangar) -"kA" = ( -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 }, -/turf/open/floor/plating, /area/hangar) -"kO" = ( -/obj/effect/turf_decal/box, -/obj/structure/railing{ - layer = 3.1 +"ka" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 }, -/obj/machinery/power/floodlight, /turf/open/floor/plating{ - icon_state = "panelscorched" + planetary_atmos = 1 }, /area/hangar) -"lf" = ( -/obj/effect/turf_decal/arrows, -/turf/open/floor/plasteel/tech, -/area/hangar) -"ly" = ( -/obj/machinery/door/poddoor/shutters/indestructible/preopen, -/obj/effect/turf_decal/techfloor{ +"kk" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ dir = 1 }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"lJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, -/area/hangar) -"lP" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 1 - }, /obj/effect/decal/cleanable/dirt, -/obj/item/pipe/binary{ - dir = 8 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"mh" = ( -/obj/item/pipe/binary, -/obj/structure/catwalk/over/plated_catwalk, +"kD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/hangar) -"mu" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) -"mx" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 9 +"kG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/obj/structure/closet/toolcloset/empty, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) -"mZ" = ( -/obj/item/pipe/binary{ - dir = 9 +"kU" = ( +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/stack/sheet/mineral/wood{ + pixel_x = -6 }, -/obj/item/kirbyplants{ - icon_state = "plant-25"; - pixel_x = 5 +/obj/item/stack/sheet/mineral/wood{ + pixel_x = 10; + pixel_y = 7 }, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/robot_debris{ - pixel_x = 8 +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/stack/sheet/mineral/wood{ + pixel_x = -6 + }, +/obj/item/stack/sheet/mineral/wood{ + pixel_x = 10; + pixel_y = 7 }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general, /turf/open/floor/plasteel/tech/techmaint, /area/hangar) -"nq" = ( +"ll" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/light/directional/north, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/hangar) -"nA" = ( -/obj/machinery/door/poddoor/shutters/indestructible/preopen, -/obj/effect/turf_decal/techfloor/corner{ +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/light/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general{ dir = 4 }, -/obj/effect/turf_decal/techfloor{ - dir = 1 +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, /area/hangar) -"ov" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 4 +"lN" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 + }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, /area/hangar) -"oE" = ( +"mb" = ( +/mob/living/simple_animal/hostile/cockroach, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"pb" = ( -/turf/open/floor/grass/snow/safe, -/area/hangar) -"pf" = ( -/obj/structure/girder/reinforced, -/obj/structure/grille/broken, -/obj/machinery/light/directional/north, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, /area/hangar) -"ph" = ( -/obj/structure/grille/indestructable, -/obj/structure/window/plasma/reinforced/plastitanium, -/turf/open/floor/plating, -/area/hangar) -"po" = ( -/obj/structure/flora/grass/both, -/turf/open/floor/grass/snow/safe, -/area/hangar) -"pU" = ( -/obj/structure/railing/wood{ - layer = 3.1 - }, -/obj/structure/fluff/hedge{ - icon_state = "hedge-4" +"mo" = ( +/obj/structure/table/wood/reinforced, +/obj/item/table_bell{ + pixel_x = 9; + pixel_y = -1 }, -/turf/open/floor/wood/walnut, -/area/hangar) -"qe" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 +/obj/item/cigbutt/cigarbutt{ + pixel_x = -5; + pixel_y = 10 }, -/obj/structure/closet/crate, +/obj/item/dice/d2, /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/vomit, -/turf/open/floor/plating/rust, -/area/hangar) -"qF" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/beer{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/toy/cards/deck{ - pixel_y = 2; - pixel_x = -5 +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/turf/open/floor/wood/walnut, /area/hangar) -"qN" = ( -/obj/structure/railing{ - layer = 3.1 +"mq" = ( +/turf/open/floor/plasteel/stairs{ + dir = 8; + planetary_atmos = 1 }, +/area/hangar) +"mN" = ( /obj/structure/catwalk/over/plated_catwalk, -/obj/effect/turf_decal/spline/fancy/opaque/black, -/obj/item/pipe/binary, +/obj/structure/mopbucket, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/hangar) -"qO" = ( -/obj/structure/girder/displaced, -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"qQ" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/item/chair{ - pixel_x = -1; - pixel_y = -4 - }, -/obj/item/chair{ - pixel_x = -1 - }, -/obj/item/chair{ - pixel_x = -1; - pixel_y = 3 + planetary_atmos = 1 }, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/tech, /area/hangar) -"rd" = ( +"ns" = ( /obj/structure/railing/corner{ dir = 8 }, @@ -606,346 +482,993 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/hangar) -"rj" = ( -/obj/structure/railing{ - layer = 3.1 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/turf_decal/spline/fancy/opaque/black, -/turf/open/floor/plasteel/tech, /area/hangar) -"ry" = ( -/obj/item/pipe/binary, +"nW" = ( /obj/structure/catwalk/over/plated_catwalk, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/hangar) -"rK" = ( /obj/structure/catwalk/over/plated_catwalk, -/obj/structure/easel, -/turf/open/floor/plating, -/area/hangar) -"rL" = ( -/obj/structure/table_frame/wood, -/obj/item/trash/boritos, -/turf/open/floor/plating{ - icon_state = "platingdmg1" +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/area/hangar) -"rP" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 + }, +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech/grid, /area/hangar) -"sJ" = ( +"os" = ( /obj/effect/turf_decal/techfloor{ dir = 8 }, -/obj/machinery/computer/card/minor/cmo{ +/obj/effect/turf_decal/techfloor{ dir = 4 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"tc" = ( -/obj/structure/railing/wood{ - layer = 3.1 +"oJ" = ( +/obj/item/kirbyplants{ + icon_state = "plant-09" }, -/obj/structure/chair{ - dir = 1 +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/obj/machinery/light/directional/east, -/turf/open/floor/wood/walnut, -/area/hangar) -"td" = ( -/obj/effect/turf_decal/industrial/traffic/corner, -/obj/effect/decal/cleanable/plastic, -/turf/open/floor/plasteel/dark, /area/hangar) -"tR" = ( -/obj/effect/turf_decal/techfloor{ - dir = 8 +"oK" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 }, +/obj/structure/closet/crate, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/obj/effect/decal/cleanable/vomit, +/turf/open/floor/plating/rust{ + planetary_atmos = 1 + }, /area/hangar) -"tU" = ( -/obj/structure/table/wood/reinforced, -/obj/item/modular_computer/laptop/preset/civilian{ - pixel_x = -1; - pixel_y = 3 +"oU" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 }, -/obj/item/newspaper{ - pixel_x = 6; - pixel_y = 10 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech, /area/hangar) -"ue" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +"pt" = ( +/obj/structure/table/reinforced, +/obj/item/stamp{ + pixel_x = -8; + pixel_y = 8 }, -/turf/open/floor/plasteel/dark, -/area/hangar) -"uk" = ( -/obj/structure/table/wood/reinforced, -/obj/item/table_bell{ - pixel_x = 9; - pixel_y = -1 +/obj/item/stamp/denied{ + pixel_x = -8; + pixel_y = 3 }, -/obj/item/cigbutt/cigarbutt{ +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_y = 4; + pixel_x = 5 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/plating/catwalk_floor{ + planetary_atmos = 1 + }, +/area/hangar) +"pu" = ( +/obj/structure/table/wood/reinforced, +/obj/item/flashlight/lamp/green{ + pixel_y = 13; + pixel_x = 8 + }, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_y = 4; + pixel_x = -4 + }, +/obj/item/clipboard{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/item/phone{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_y = -8; + pixel_x = 4 + }, +/obj/item/lighter{ + pixel_y = -16; + pixel_x = 13 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"px" = ( +/obj/effect/turf_decal/industrial/loading, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"py" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 5 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"pF" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"pG" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/desk_flag{ + pixel_x = -6; + pixel_y = 17 + }, +/obj/item/megaphone/sec{ + name = "syndicate megaphone"; + pixel_x = 1; + pixel_y = 4 + }, +/obj/item/camera_bug{ pixel_x = -5; + pixel_y = -3 + }, +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"pJ" = ( +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"pQ" = ( +/obj/machinery/computer/communications{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"pT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"qc" = ( +/obj/effect/turf_decal/industrial/warning/corner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"qg" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 9 + }, +/obj/structure/closet/toolcloset/empty, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"qh" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"qH" = ( +/obj/structure/flora/grass/both{ + pixel_x = 23; + pixel_y = 6 + }, +/turf/open/floor/grass/snow/safe{ + planetary_atmos = 1 + }, +/area/hangar) +"rt" = ( +/obj/structure/table/wood/reinforced, +/obj/item/modular_computer/laptop/preset/civilian{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/item/newspaper{ + pixel_x = 6; pixel_y = 10 }, -/obj/item/dice/d2, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"rJ" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"rX" = ( +/obj/machinery/vending/coffee, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = 32 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/wood/walnut{ + planetary_atmos = 1 + }, +/area/hangar) +"sA" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/computer/card/minor/cmo{ + dir = 4 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"sG" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"sP" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/sign/poster/official/moth/meth{ + pixel_x = 32 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"sY" = ( +/obj/effect/turf_decal/industrial/warning, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"sZ" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + req_access_txt = "109" + }, +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/barricade/wooden/crude, +/obj/machinery/atmospherics/pipe/simple/general, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) -"ur" = ( +"te" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, /area/hangar) -"ut" = ( +"to" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, /obj/structure/railing{ - dir = 8; - layer = 4.1 + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"tq" = ( +/obj/machinery/elevator_call_button{ + pixel_y = 31; + pixel_x = 10 + }, +/obj/effect/landmark/outpost/elevator_machine, +/turf/open/floor/wood/walnut{ + planetary_atmos = 1 + }, +/area/hangar) +"tx" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"tF" = ( +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"tH" = ( +/obj/machinery/computer/cargo/express, +/obj/item/toy/plush/knight{ + pixel_y = 25; + pixel_x = 9 + }, +/turf/open/floor/plating/catwalk_floor{ + planetary_atmos = 1 + }, +/area/hangar) +"ug" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg3"; + planetary_atmos = 1 + }, +/area/hangar) +"vh" = ( +/obj/effect/spawner/lootdrop/grille_or_trash, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"vk" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"vn" = ( +/obj/machinery/door/poddoor/shutters/indestructible/preopen, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"vq" = ( +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"vt" = ( +/obj/structure/railing/corner/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"vz" = ( +/obj/effect/turf_decal/industrial/caution{ + pixel_y = 4 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"vG" = ( +/obj/machinery/light/floor/hangar, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"vJ" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/item/mop{ + pixel_y = -8; + pixel_x = -13 + }, +/obj/item/clothing/head/soft/purple, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"vO" = ( +/obj/machinery/door/poddoor/multi_tile/four_tile_ver, +/turf/closed/indestructible/reinforced, +/area/hangar) +"wi" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"wk" = ( +/obj/structure/flora/rock/pile/icy, +/turf/open/water/beach/deep, +/area/hangar) +"wm" = ( +/obj/structure/grille/indestructable, +/obj/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"wo" = ( +/obj/structure/rack, +/obj/item/poster/random_official{ + pixel_x = 2; + pixel_y = 9 + }, +/obj/item/poster/random_official{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/poster/random_contraband{ + pixel_y = 8; + pixel_x = -1 + }, +/obj/item/destTagger{ + pixel_x = -2 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/industrial/warning, +/turf/open/floor/plasteel/tech/grid{ + planetary_atmos = 1 + }, +/area/hangar) +"xi" = ( +/obj/structure/closet/crate/trashcart/laundry, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, +/area/hangar) +"xu" = ( +/turf/open/floor/plasteel/stairs{ + dir = 4 + }, +/area/hangar) +"xF" = ( +/obj/structure/girder/displaced, +/obj/structure/grille, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"xN" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/turf/open/floor/grass/snow/safe{ + planetary_atmos = 1 + }, +/area/hangar) +"yd" = ( +/obj/structure/railing/wood{ + layer = 3.1 + }, +/obj/structure/fluff/hedge{ + icon_state = "hedge-8" + }, +/turf/open/floor/wood/walnut{ + planetary_atmos = 1 + }, +/area/hangar) +"yO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"yQ" = ( +/obj/structure/barricade/wooden, +/turf/open/floor/plating/catwalk_floor{ + planetary_atmos = 1 + }, +/area/hangar) +"zc" = ( +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, +/area/hangar) +"zr" = ( +/obj/item/trash/waffles{ + pixel_y = -3 + }, +/obj/item/trash/sosjerky{ + pixel_x = -4 + }, +/obj/item/trash/raisins, +/obj/item/trash/pistachios{ + pixel_x = 6 + }, +/obj/structure/closet/crate/trashcart, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"zs" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 + }, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, +/area/hangar) +"zy" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"zA" = ( +/turf/open/floor/plating/ice/smooth, +/area/hangar) +"zK" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/stand_clear, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"zM" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"zN" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/item/trash/can{ + pixel_x = -8; + pixel_y = -6 + }, +/obj/item/trash/candy, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"Ao" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/item/wallframe/light_fixture{ + pixel_y = -5; + pixel_x = 5 + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"Ap" = ( +/obj/item/storage/cans/sixbeer{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/greenglow, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"Av" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"AD" = ( +/obj/structure/statue/snow/snowman{ + pixel_y = 5 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/turf/open/floor/grass/snow/safe{ + planetary_atmos = 1 + }, +/area/hangar) +"AG" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 4 + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"Bx" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"BB" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/item/storage/fancy/donut_box{ + pixel_y = 6 + }, +/obj/item/storage/fancy/cigarettes{ + pixel_x = 10 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"BL" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 + }, +/obj/machinery/light/floor/hangar{ + pixel_y = 17 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"BU" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 8 + }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Cd" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 + }, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/structure/reagent_dispensers/watertank, +/obj/item/radio/intercom/directional/north{ + pixel_y = 20 + }, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, +/area/hangar) +"Cf" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/structure/fluff/hedge{ + icon_state = "hedge-4" }, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/turf/open/floor/plasteel/tech/grid{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, /area/hangar) -"uw" = ( -/obj/item/storage/cans/sixbeer{ - pixel_x = 3; - pixel_y = 2 +"Cn" = ( +/obj/effect/turf_decal/techfloor{ + dir = 10 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/greenglow, -/turf/open/floor/plasteel/tech, /area/hangar) -"uy" = ( -/obj/structure/chair{ +"CI" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/machinery/fax, +/obj/effect/turf_decal/techfloor{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/walnut, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"uM" = ( -/obj/item/binoculars{ - pixel_y = 6; - pixel_x = -3 +"CS" = ( +/turf/open/floor/grass/snow/safe{ + planetary_atmos = 1 }, -/obj/structure/rack, -/obj/item/radio{ - pixel_y = 6; - pixel_x = 9 +/area/hangar) +"De" = ( +/obj/effect/turf_decal/industrial/traffic/corner, +/obj/effect/decal/cleanable/plastic, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/effect/turf_decal/techfloor/corner{ - dir = 8 +/area/hangar) +"Dx" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, /area/hangar) -"uN" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/item/trash/can{ - pixel_x = -8; - pixel_y = -6 +"ET" = ( +/turf/open/floor/plasteel/stairs/wood, +/area/hangar) +"Fm" = ( +/obj/structure/girder/reinforced, +/obj/structure/grille/broken, +/obj/machinery/light/directional/north, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 }, -/obj/item/trash/candy, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, /area/hangar) -"uQ" = ( +"Fv" = ( +/obj/effect/turf_decal/techfloor, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"uS" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +"Fw" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 1 + }, +/obj/machinery/light/floor/hangar, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/grass/snow/safe, /area/hangar) -"uT" = ( -/obj/machinery/computer/crew/syndie{ - dir = 4 +"FC" = ( +/obj/machinery/door/airlock, +/obj/effect/landmark/outpost/elevator_machine, +/obj/structure/lattice/catwalk, +/turf/open/floor/engine, +/area/hangar) +"GA" = ( +/obj/structure/railing/corner/wood{ + dir = 8 }, -/obj/effect/turf_decal/techfloor{ +/obj/effect/turf_decal/siding/wood{ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/hangar) -"vC" = ( -/obj/machinery/vending/coffee, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_y = 32 +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 }, -/obj/machinery/light/directional/west, -/turf/open/floor/wood/walnut, /area/hangar) -"vL" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "109" +"He" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/toy/cards/deck{ + pixel_y = 2; + pixel_x = -5 + }, +/turf/open/floor/wood/walnut{ + planetary_atmos = 1 }, -/obj/item/pipe/binary, -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plating, /area/hangar) -"vO" = ( -/obj/machinery/door/poddoor/multi_tile/four_tile_ver, -/turf/closed/indestructible/reinforced, +"Hg" = ( +/obj/effect/turf_decal/box, +/obj/structure/railing{ + layer = 3.1 + }, +/obj/machinery/power/floodlight, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 + }, /area/hangar) -"vQ" = ( +"Hk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, /obj/machinery/light/floor/hangar, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"wc" = ( -/turf/open/floor/concrete/reinforced, +"Ho" = ( +/obj/structure/chair/plastic{ + dir = 4 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) -"wh" = ( -/obj/machinery/computer/cargo/express, -/obj/item/toy/plush/knight{ - pixel_y = 25; - pixel_x = 9 +"HH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plating/catwalk_floor, /area/hangar) -"wk" = ( -/obj/structure/flora/rock/pile/icy, -/turf/open/water/beach/deep, +"HP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"wl" = ( -/obj/effect/turf_decal/techfloor{ +"HR" = ( +/obj/structure/railing/wood{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid, +/turf/open/floor/plasteel/stairs/wood, /area/hangar) -"wv" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/structure/fluff/hedge{ - icon_state = "hedge-4" +"HX" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech/grid, /area/hangar) -"wA" = ( -/obj/effect/decal/cleanable/garbage{ - pixel_y = -7; - pixel_x = 6 +"Ia" = ( +/obj/structure/chair{ + dir = 4 }, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/turf/open/floor/wood/walnut{ + icon_state = "wood-broken7"; + planetary_atmos = 1 }, /area/hangar) -"wH" = ( +"Iv" = ( /obj/structure/girder, -/turf/open/floor/plating, -/area/hangar) -"xd" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/hangar) -"xu" = ( -/turf/open/floor/plasteel/stairs{ - dir = 4 +/turf/open/floor/plating{ + planetary_atmos = 1 }, /area/hangar) -"xC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plasteel/dark, -/area/hangar) -"xU" = ( -/obj/effect/turf_decal/box/corners{ +"Iy" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ dir = 1 }, -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"xZ" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 5 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, /area/hangar) -"ye" = ( -/turf/open/floor/plating, +"IE" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, /area/hangar) -"yo" = ( -/obj/effect/turf_decal/industrial/warning/corner, +"Jk" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/hangar) -"yq" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 }, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, -/area/hangar) -"yF" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, -/turf/open/floor/plasteel/dark, /area/hangar) -"yV" = ( -/turf/open/floor/plasteel/stairs{ - dir = 8 +"Jp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, /area/hangar) -"zp" = ( -/obj/structure/railing{ - layer = 3.1 +"JF" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 6 }, -/obj/effect/turf_decal/spline/fancy/opaque/black, -/turf/open/floor/plasteel/stairs{ - dir = 8 +/turf/open/floor/plating{ + icon_state = "platingdmg3"; + planetary_atmos = 1 }, /area/hangar) -"zq" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/item/wallframe/light_fixture{ - pixel_y = -5; - pixel_x = 5 +"JI" = ( +/obj/machinery/vending/cigarette, +/obj/item/radio/intercom/directional/north{ + pixel_y = 20 }, -/turf/open/floor/plating, -/area/hangar) -"zA" = ( -/turf/open/floor/plating/ice/smooth, -/area/hangar) -"zR" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw, -/turf/open/floor/plasteel/dark, -/area/hangar) -"AB" = ( -/obj/structure/rack, -/obj/item/poster/random_official{ - pixel_x = 2; - pixel_y = 9 - }, -/obj/item/poster/random_official{ - pixel_x = -2; - pixel_y = 4 +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/item/toy/plush/hornet/gay{ + pixel_y = 23; + pixel_x = 7 }, -/obj/item/poster/random_contraband{ - pixel_y = 8; - pixel_x = -1 +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = 1; + pixel_y = 19; + layer = 3.1 }, -/obj/item/destTagger{ - pixel_x = -2 +/turf/open/floor/wood/walnut{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/tech/grid, /area/hangar) -"AN" = ( +"KG" = ( /obj/structure/table/reinforced, /obj/item/stack/packageWrap{ pixel_y = 7 @@ -959,677 +1482,597 @@ }, /obj/effect/turf_decal/industrial/warning, /obj/structure/sign/poster/contraband/eoehoma{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/tech/grid, -/area/hangar) -"Bf" = ( -/obj/machinery/elevator_call_button{ - pixel_y = 31; - pixel_x = 10 - }, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/wood/walnut, -/area/hangar) -"Bt" = ( -/obj/structure/railing/corner/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, -/area/hangar) -"Cb" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 8 - }, -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/structure/reagent_dispensers/watertank, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"Cm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, -/turf/open/floor/plasteel/dark, -/area/hangar) -"Df" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/concrete/slab_1, -/area/hangar) -"Dh" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood/walnut, -/area/hangar) -"Ef" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw, -/turf/open/floor/plasteel/dark, + pixel_y = 32 + }, +/turf/open/floor/plasteel/tech/grid{ + planetary_atmos = 1 + }, /area/hangar) -"ET" = ( -/turf/open/floor/plasteel/stairs/wood, +"KY" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid{ + planetary_atmos = 1 + }, /area/hangar) -"Fb" = ( +"Lc" = ( /obj/structure/railing/wood{ layer = 3.1 }, /obj/structure/fluff/hedge{ - icon_state = "hedge-8" + icon_state = "hedge-4" }, -/turf/open/floor/wood/walnut, -/area/hangar) -"Fo" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/turf/open/floor/wood/walnut{ + planetary_atmos = 1 }, -/turf/open/floor/concrete/slab_1, -/area/hangar) -"Fs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech, -/area/hangar) -"FD" = ( -/obj/effect/landmark/outpost/elevator, -/turf/open/floor/plasteel/elevatorshaft, /area/hangar) -"GB" = ( -/obj/structure/girder/reinforced, -/turf/open/floor/plasteel/dark, -/area/hangar) -"GG" = ( -/obj/effect/turf_decal/industrial/traffic{ +"Lm" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/obj/effect/turf_decal/box/corners, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"GU" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/techfloor/corner{ - dir = 1 +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech, -/area/hangar) -"Hj" = ( -/obj/structure/chair/plastic{ - dir = 4 - }, -/obj/structure/sign/poster/official/random{ - pixel_y = -32 +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/obj/machinery/light/directional/south, -/turf/open/floor/plating, /area/hangar) -"Hl" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +"Ly" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/general, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, /area/hangar) -"Hm" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +"LI" = ( +/obj/structure/railing/wood{ + layer = 3.1 }, -/obj/effect/turf_decal/industrial/stand_clear, -/turf/open/floor/plasteel/dark, -/area/hangar) -"Hp" = ( /obj/structure/chair{ - dir = 4 + dir = 1 }, +/obj/machinery/light/directional/east, /turf/open/floor/wood/walnut{ - icon_state = "wood-broken7" + planetary_atmos = 1 }, /area/hangar) -"HC" = ( -/obj/item/kirbyplants{ - icon_state = "plant-09" +"LR" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, /area/hangar) -"HJ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 +"Mt" = ( +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 }, -/obj/structure/sign/poster/official/moth/meth{ - pixel_x = 32 +/area/hangar) +"MV" = ( +/obj/effect/turf_decal/techfloor{ + dir = 6 }, +/obj/effect/decal/cleanable/dirt, /obj/machinery/light/directional/east, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"HR" = ( -/obj/structure/railing/wood{ +"Nw" = ( +/obj/machinery/computer/camera_advanced{ dir = 4 }, -/turf/open/floor/plasteel/stairs/wood, -/area/hangar) -"Ij" = ( -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating, -/area/hangar) -"IW" = ( /obj/effect/turf_decal/techfloor{ dir = 8 }, -/obj/effect/turf_decal/techfloor{ - dir = 4 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/dark, /area/hangar) -"Jl" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 1 +"NC" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/mug{ + pixel_x = 9; + pixel_y = -2 }, -/turf/open/floor/plasteel/dark, -/area/hangar) -"JC" = ( -/obj/structure/window/reinforced/spawner, -/obj/effect/spawner/structure/window/hollow/reinforced/middle{ - dir = 4 +/obj/item/newspaper{ + pixel_x = -5; + pixel_y = -1 }, -/turf/open/floor/plating, -/area/hangar) -"JM" = ( -/obj/item/trash/waffles{ - pixel_y = -3 +/obj/item/newspaper{ + pixel_x = -5; + pixel_y = 2 }, -/obj/item/trash/sosjerky{ - pixel_x = -4 +/obj/machinery/jukebox/boombox{ + pixel_y = 5 }, -/obj/item/trash/raisins, -/obj/item/trash/pistachios{ - pixel_x = 6 +/turf/open/floor/wood/walnut{ + planetary_atmos = 1 }, -/obj/structure/closet/crate/trashcart, -/turf/open/floor/plating, /area/hangar) -"Kg" = ( -/obj/structure/girder/displaced, -/obj/structure/grille/broken, +"NK" = ( /obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating, -/area/hangar) -"Kn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, /obj/structure/catwalk/over/plated_catwalk, -/obj/item/pipe/binary, -/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general, /turf/open/floor/plating{ - icon_state = "panelscorched" + planetary_atmos = 1 }, /area/hangar) -"KM" = ( -/obj/item/pipe/binary{ - dir = 6 +"NW" = ( +/obj/item/binoculars{ + pixel_y = 6; + pixel_x = -3 }, -/obj/structure/catwalk/over/plated_catwalk, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/hangar) -"KV" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "109" +/obj/structure/rack, +/obj/item/radio{ + pixel_y = 6; + pixel_x = 9 + }, +/obj/effect/turf_decal/techfloor/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/turf/open/floor/concrete/reinforced, /area/hangar) -"Lv" = ( -/obj/structure/girder/displaced, -/obj/structure/grille, -/turf/open/floor/plating, +"NX" = ( +/obj/structure/railing{ + layer = 3.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, /area/hangar) -"LG" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/item/mop{ - pixel_y = -8; - pixel_x = -13 +"Oh" = ( +/obj/effect/landmark/outpost/hangar_dock, +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/obj/item/clothing/head/soft/purple, +/area/hangar) +"ON" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"LH" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 8 +"OS" = ( +/obj/item/kirbyplants{ + icon_state = "plant-25"; + pixel_x = 5 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/hangar) -"LW" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 1 +/obj/effect/decal/cleanable/robot_debris{ + pixel_x = 8 + }, +/obj/item/kirbyplants{ + icon_state = "plant-25"; + pixel_x = 5 }, -/obj/machinery/light/floor/hangar, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/obj/effect/decal/cleanable/robot_debris{ + pixel_x = 8 + }, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 9 + }, +/turf/open/floor/plasteel/tech/techmaint, /area/hangar) -"Ma" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +"Pv" = ( +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/item/pipe/binary{ +/area/hangar) +"PF" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/hangar) -"Nd" = ( -/obj/effect/turf_decal/industrial/traffic{ - dir = 4 +/obj/item/chair{ + pixel_x = -1; + pixel_y = -4 }, -/obj/effect/turf_decal/box/corners{ - dir = 4 +/obj/item/chair{ + pixel_x = -1 }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"Ni" = ( -/obj/item/pipe/binary, -/obj/effect/spawner/lootdrop/maintenance, -/obj/item/stack/sheet/mineral/wood{ - pixel_x = -6 +/obj/item/chair{ + pixel_x = -1; + pixel_y = 3 }, -/obj/item/stack/sheet/mineral/wood{ - pixel_x = 10; - pixel_y = 7 +/obj/effect/turf_decal/box, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech/techmaint, -/area/hangar) -"NF" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plasteel/tech, /area/hangar) -"Oq" = ( -/turf/open/floor/plasteel/dark, -/area/hangar) -"Ov" = ( -/obj/item/wallframe/airalarm{ - pixel_y = -7 - }, -/obj/effect/decal/cleanable/dirt, +"QA" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/light/directional/east, +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/light/directional/east, +/obj/machinery/atmospherics/pipe/simple/general, /turf/open/floor/plating{ - icon_state = "panelscorched" + icon_state = "panelscorched"; + planetary_atmos = 1 }, /area/hangar) -"OM" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 8 +"QB" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/structure/fluff/hedge{ + icon_state = "hedge-8" + }, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/tech/grid{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, /area/hangar) -"Pp" = ( -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/dark, +"QC" = ( +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"Pr" = ( -/obj/structure/statue/snow/snowman{ - pixel_y = 5 +"QL" = ( +/obj/structure/table_frame/wood, +/obj/item/trash/boritos, +/turf/open/floor/plating{ + icon_state = "platingdmg1"; + planetary_atmos = 1 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/area/hangar) +"QP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 }, -/turf/open/floor/grass/snow/safe, /area/hangar) -"Pz" = ( -/mob/living/simple_animal/hostile/cockroach, +"QR" = ( +/obj/machinery/light/directional/north, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, /area/hangar) -"PZ" = ( -/turf/open/floor/concrete/slab_1, +"QX" = ( +/obj/effect/turf_decal/arrows, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, /area/hangar) -"Qx" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 4 +"RB" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/easel, +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/obj/structure/girder/reinforced, -/turf/open/floor/plasteel/dark, /area/hangar) -"QM" = ( -/obj/effect/turf_decal/industrial/caution{ - pixel_y = 4 +"RH" = ( +/obj/structure/girder/displaced, +/obj/structure/grille/broken, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"Rh" = ( -/obj/effect/turf_decal/techfloor{ - dir = 10 +"RI" = ( +/obj/structure/railing{ + layer = 3.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/obj/machinery/power/floodlight, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"RN" = ( +/obj/structure/flora/grass/both, +/turf/open/floor/grass/snow/safe{ + planetary_atmos = 1 }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel/dark, /area/hangar) -"Rv" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/mug{ - pixel_x = 9; - pixel_y = -2 +"Se" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 8 }, -/obj/item/newspaper{ - pixel_x = -5; - pixel_y = -1 +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/obj/item/newspaper{ - pixel_x = -5; - pixel_y = 2 +/area/hangar) +"Sj" = ( +/obj/structure/girder/displaced, +/obj/effect/turf_decal/techfloor{ + dir = 1 }, -/obj/machinery/jukebox/boombox{ - pixel_y = 5 +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/turf/open/floor/wood/walnut, /area/hangar) -"RQ" = ( +"Sl" = ( /obj/effect/turf_decal/industrial/traffic/corner{ dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/hangar) -"Sa" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 1 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/machinery/light/floor/hangar, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, /area/hangar) -"Sg" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 9 +"Tu" = ( +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/tech, /area/hangar) -"Sk" = ( -/obj/effect/turf_decal/industrial/warning{ +"Tw" = ( +/obj/machinery/computer/crew/syndie{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ dir = 8 }, -/obj/effect/decal/cleanable/oil/streak, -/turf/open/floor/plasteel/dark, -/area/hangar) -"SA" = ( -/obj/structure/table/reinforced, -/obj/item/stamp{ - pixel_x = -8; - pixel_y = 8 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/item/stamp/denied{ - pixel_x = -8; - pixel_y = 3 +/area/hangar) +"TT" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/techfloor/corner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/item/paper_bin{ - pixel_x = 5; - pixel_y = 4 +/area/hangar) +"TV" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 }, -/obj/item/pen{ - pixel_y = 4; - pixel_x = 5 +/obj/effect/turf_decal/box/corners, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, -/obj/machinery/light/directional/north, -/turf/open/floor/plating/catwalk_floor, /area/hangar) -"SZ" = ( +"Uc" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/passive_vent{ +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/hangar) -"Tb" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/item/pipe/binary{ +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ dir = 8 }, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, +/area/hangar) +"Ue" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, /area/hangar) -"Tc" = ( -/obj/machinery/door/airlock/highsecurity, -/obj/effect/turf_decal/techfloor{ - dir = 4 +"Uj" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + req_access_txt = "109" }, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, +/area/hangar) +"UA" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, +/area/hangar) +"UL" = ( +/obj/effect/decal/cleanable/garbage{ + pixel_y = -7; + pixel_x = 6 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"Tv" = ( +"UN" = ( /obj/structure/chair{ dir = 4 }, /obj/effect/decal/cleanable/glass, -/turf/open/floor/wood/walnut, +/turf/open/floor/wood/walnut{ + planetary_atmos = 1 + }, /area/hangar) -"TA" = ( -/obj/structure/barricade/wooden, -/turf/open/floor/plating, +"UV" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"TM" = ( -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/tech, +"We" = ( +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, /area/hangar) -"TN" = ( +"Wi" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, /obj/effect/turf_decal/industrial/warning/corner{ - dir = 8 + dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/hangar) -"TR" = ( -/obj/effect/spawner/lootdrop/grille_or_trash, /obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/general{ + dir = 9 + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) -"Ud" = ( +"Wo" = ( /obj/effect/turf_decal/techfloor, /obj/structure/railing{ dir = 2; layer = 4.1 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) -"Uz" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/item/pipe/binary{ - dir = 6 +"Xg" = ( +/obj/structure/chair{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/wood/walnut{ + planetary_atmos = 1 }, /area/hangar) -"UG" = ( -/obj/machinery/door/airlock, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, +"Xq" = ( +/turf/open/water/beach/deep, /area/hangar) -"UI" = ( -/obj/item/pipe/binary{ - dir = 8 +"Xs" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 }, -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating, -/area/hangar) -"UJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 +/obj/effect/turf_decal/box/corners{ + dir = 4 }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"UU" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 8 +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, /area/hangar) -"Vg" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ +"XH" = ( +/obj/structure/frame/computer{ dir = 8 }, -/obj/machinery/light/floor/hangar{ - pixel_y = 17 +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 }, +/area/hangar) +"XN" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/wood/walnut{ + planetary_atmos = 1 + }, /area/hangar) -"Vi" = ( -/obj/structure/chair{ +"XP" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor/corner{ dir = 1 }, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/wood/walnut, -/area/hangar) -"Wb" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/concrete/slab_1, -/area/hangar) -"Wk" = ( -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, /area/hangar) -"Wq" = ( -/obj/item/pipe/binary{ +"XX" = ( +/obj/effect/turf_decal/techfloor{ dir = 8 }, -/obj/structure/catwalk/over/plated_catwalk, -/obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/hangar) -"WI" = ( -/obj/structure/table/reinforced{ - color = "#c1b6a5" +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/obj/machinery/fax, -/obj/effect/turf_decal/techfloor{ - dir = 4 +/area/hangar) +"Yi" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"WJ" = ( -/obj/item/pipe/binary{ - dir = 8 +"Yw" = ( +/obj/structure/railing{ + layer = 3.1 }, /obj/structure/catwalk/over/plated_catwalk, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/effect/turf_decal/spline/fancy/opaque/black, +/obj/structure/railing{ + layer = 3.1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/hangar) -"WP" = ( -/obj/machinery/atmospherics/components/binary/pump/on, /obj/structure/catwalk/over/plated_catwalk, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +/obj/effect/turf_decal/spline/fancy/opaque/black, +/obj/machinery/atmospherics/pipe/simple/general, +/turf/open/floor/plating{ + icon_state = "platingdmg3"; + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, /area/hangar) -"WW" = ( -/obj/machinery/vending/cigarette, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/item/toy/plush/hornet/gay{ - pixel_y = 23; - pixel_x = 7 +"YK" = ( +/obj/structure/window/reinforced/spawner, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 }, -/obj/item/reagent_containers/food/drinks/coffee{ - pixel_x = 1; - pixel_y = 19; - layer = 3.1 +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/turf/open/floor/wood/walnut, /area/hangar) -"WZ" = ( -/obj/structure/marker_beacon{ - picked_color = "Teal" +"Zm" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plating, -/area/hangar) -"Xq" = ( -/turf/open/water/beach/deep, -/area/hangar) -"Xw" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plasteel/dark, -/area/hangar) -"XU" = ( -/obj/structure/closet/crate/trashcart/laundry, -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plasteel/patterned/cargo_one, /area/hangar) -"Yb" = ( -/obj/effect/turf_decal/industrial/warning/corner{ +"Zz" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ dir = 4 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"Yd" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - volume = 10000000 +"ZQ" = ( +/obj/structure/chair/comfy/black{ + dir = 1 }, -/obj/structure/catwalk/over/plated_catwalk, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, -/obj/machinery/light/directional/north, -/turf/open/floor/plating, /area/hangar) -"Ym" = ( -/obj/effect/turf_decal/industrial/loading, -/turf/open/floor/plasteel/dark, -/area/hangar) -"YT" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/item/pipe/binary{ - dir = 8 +"ZR" = ( +/obj/structure/marker_beacon{ + picked_color = "Teal" }, -/obj/structure/sign/poster/contraband/energy_swords{ - pixel_y = -32 +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/turf/open/floor/plating/rust, -/area/hangar) -"Zc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, /area/hangar) -"Zq" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, -/area/hangar) -"Zx" = ( -/obj/structure/frame/computer{ - dir = 8 +"ZU" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 5 }, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 }, /area/hangar) @@ -1693,26 +2136,26 @@ ie ie ie ie -rP -OM -OM -OM -OM -OM -OM -OM -OM -OM -OM -OM -OM -OM -OM -OM -OM -OM -OM -rP +KY +Se +Se +Se +Se +Se +Se +Se +Se +Se +Se +Se +Se +Se +Se +Se +Se +Se +Se +KY ie ie gu @@ -1736,28 +2179,28 @@ au au au ie -dZ -wl -gx -bA -TM -gx -gx -gx -bA -TM -gx -gx -TM -lf -gx -gx -gx -TM -lf -gx -wl -vQ +fI +HX +gV +Av +Pv +gV +gV +gV +Av +Pv +gV +gV +Pv +QX +gV +gV +gV +Pv +QX +gV +HX +vG ie ie ie @@ -1780,28 +2223,28 @@ au au au au -yF -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -eX -Jl +Zm +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Oh +Iy au au ie @@ -1823,29 +2266,29 @@ au au au au -Oq -Zq -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl +QC +ck +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy au au au @@ -1867,30 +2310,30 @@ au au au au -Oq -Cm -WZ -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -WZ -Jl -ur +QC +yO +ZR +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +ZR +Iy +ON au au ie @@ -1911,30 +2354,30 @@ au au au au -Oq -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -hr -nq +QC +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +rJ +pT au au ie @@ -1953,32 +2396,32 @@ au au au wk -qO -au -Qx -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -hr -Oq +Sj +au +ed +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +rJ +QC au au ie @@ -1997,32 +2440,32 @@ au au jS Xq -gg -eZ -ue -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -fj -ur +to +RI +fB +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +gr +ON ie au ie @@ -2041,32 +2484,32 @@ au Xq Xq Xq -gg -rj -ue -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -ur +to +NX +fB +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +ON au au ie @@ -2081,36 +2524,36 @@ gu ie au au -AB -ut -ut -ut -GU -rj -ue -lJ -WZ -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -WZ -Jl -ur +wo +gO +gO +gO +XP +NX +fB +Hk +ZR +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +ZR +Iy +ON au au ie @@ -2125,36 +2568,36 @@ gu ie au au -wv -dQ -Uz -Kn -dg -qN -gW -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -Oq +Cf +LR +JF +QA +Ly +Yw +py +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +QC au au ie @@ -2169,36 +2612,36 @@ ie ie ie ie -bZ -uw -Tb +QB +Ap +ug ie -yV -zp -Ma -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -Oq +mq +iM +fy +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +QC au au ie @@ -2209,40 +2652,40 @@ gu gu gu ie -bb -bb -bb +Mt +Mt +Mt ie -AN -Pz -YT +KG +mb +eH ie -Yb -Sk -lP -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -fj -Oq +pF +tx +qh +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +gr +QC au au ie @@ -2253,40 +2696,40 @@ gu gu gu ie -bb -bb -bb +Mt +Mt +Mt ie ie xu -fm +dw he -Hm -Oq -SZ -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -Oq +zK +QC +ON +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +QC ie au ie @@ -2297,40 +2740,40 @@ gu gu gu ie -KM -mh -ry -ry -vL -Ni -mZ +hs +NK +dN +dN +sZ +kU +OS he -Hm -Oq -xC -Cm -WZ -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -WZ -Jl -ur +zK +QC +HH +yO +ZR +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +ZR +Iy +ON au au au @@ -2341,40 +2784,40 @@ ie gu gu ie -jx -mx -qQ +ll +qg +PF ie ie -pf -Zx +Fm +XH au au au -ur -lJ -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -ur +ON +Hk +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +ON au au au @@ -2385,7 +2828,7 @@ ie gu gu ie -Wq +AG ie ie ie @@ -2395,31 +2838,31 @@ au au au au -nq -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -ur -wH +pT +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +ON +Iv au au au @@ -2429,7 +2872,7 @@ ie gu ie ie -UI +ka ie au au @@ -2439,31 +2882,31 @@ au au au ie -ur -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -Oq -xd +ON +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +QC +iV au au au @@ -2473,7 +2916,7 @@ ie ie ie au -WJ +nW ie au zA @@ -2483,76 +2926,76 @@ au au au ie -Oq -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -fj -ur -Ij -JM +QC +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +gr +ON +vq +zr au au ie "} (21,1,1) = {" ie -Yd -WP -cJ -KV -wc -pb +jR +Lm +Wi +Uj +zc +CS zA au au au au ie -Oq -Cm -WZ -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -WZ -Jl -ur -gD -Ov +QC +yO +ZR +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +ZR +Iy +ON +mN +ai au au ie @@ -2563,40 +3006,40 @@ au au au ie -jn -pb -po -ex +cn +CS +RN +qH au au au au -Oq -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -ur -LG -wA +QC +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +ON +vJ +UL au au ie @@ -2608,39 +3051,39 @@ ie ie ie au -Pr -uS -uS -uS +AD +xN +xN +xN au au au -Oq -lJ -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -nq -uN -Hj +QC +Hk +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +pT +zN +Ho ie au ie @@ -2652,39 +3095,39 @@ gu gu ie ie -kA -kA -kA -kA -JC +tF +tF +tF +tF +YK au au -Oq -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -hr -ur -zq -rL +QC +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +rJ +ON +Ao +QL au au ie @@ -2695,40 +3138,40 @@ gu gu gu ie -vC -Tv -uy -Hp -Rv -pU +rX +UN +jy +Ia +NC +Lc au au -bQ -Cm -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -hr -ur -Ij -TA +iw +yO +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +rJ +ON +vq +wi au au ie @@ -2739,171 +3182,171 @@ ie ie ie ie -Bf -Dh -Dh -Dh -Vi -Fb -HC -nA -Sg -fv -WZ -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -WZ -fj -ur -Ij -rK +tq +XN +XN +XN +Xg +yd +oJ +dK +ep +Uc +ZR +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +ZR +gr +ON +vq +RB au au ie "} (27,1,1) = {" ie -bb -bb -FD -UG -dY -dY -Fo -dY -iK -Bt +Mt +Mt +hh +FC +kG +kG +jX +kG +kD +GA hJ -ly -UJ -Fs -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -ur -Kg -Lv +vn +jF +te +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +ON +RH +xF au au ie "} (28,1,1) = {" ie -bb -bb -bb -UG -PZ -Wb -Zc -PZ -PZ -uQ +Mt +Mt +Mt +FC +Tu +QP +Jk +Tu +Tu +bX ET -ly -kd -Fs -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -hr -Oq -Ij -kO +vn +zM +te +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +rJ +QC +vq +Hg ie au ie "} (29,1,1) = {" ie -bb -bb -bb -UG -HJ -Df -Df -Df -Hl -ga +Mt +Mt +Mt +FC +sP +eP +eP +eP +gE +vt HR -ly -xZ -dM -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -hr -Oq -TR +vn +ZU +hp +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +rJ +QC +vh au au au @@ -2917,36 +3360,36 @@ ie ie ie ie -WW -fW -qF -tc +JI +eg +He +LI au au -bQ -zR -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -hr -ur +iw +Ue +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +rJ +ON au au au @@ -2967,30 +3410,30 @@ ie ie au au -Oq -zR -WZ -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -WZ -hr -nq +QC +Ue +ZR +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +ZR +rJ +pT au au au @@ -3011,30 +3454,30 @@ ie ie au au -Oq -kr -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -LW -nq +QC +HP +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +kk +pT au au au @@ -3055,30 +3498,30 @@ ie au au au -Oq -zR -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -hr -Oq +QC +Ue +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +rJ +QC au au au @@ -3098,31 +3541,31 @@ au au au au -dD -ur -Ef -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -hr -eA +yQ +ON +Dx +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +rJ +TT au au au @@ -3142,31 +3585,31 @@ au au au ie -wh -ur -Ef -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -hr -Ud +tH +ON +Dx +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +rJ +Wo Xq au au @@ -3186,31 +3629,31 @@ au au ie ie -SA -Oq -Ef -WZ -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -WZ -hr -Ud +pt +QC +Dx +ZR +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +ZR +rJ +Wo Xq au au @@ -3229,32 +3672,32 @@ ie au au ie -Cb -cb -QM -Ef -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -hr -rd +Cd +zs +vz +Dx +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +rJ +ns au au au @@ -3272,33 +3715,33 @@ gu ie au au -xU -oE -aO -Ym -mu -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -fj -yo +UA +Jp +cq +px +ba +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +gr +qc ie au au @@ -3316,33 +3759,33 @@ gu ie au ie -jW -oE -Wk -Ym -Ef -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -Pp +QR +Jp +We +px +Dx +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +sY au au au @@ -3360,33 +3803,33 @@ gu ie au au -qe -Wk -Wk -Ym -Ef -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -hr -aB +oK +We +We +px +Dx +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +rJ +vk au au au @@ -3405,32 +3848,32 @@ ie au au au -Nd -GG -QM -Ef -WZ -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -WZ -Jl -Pp +Xs +TV +vz +Dx +ZR +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +ZR +Iy +sY au au au @@ -3450,31 +3893,31 @@ ie au au au -XU -Oq -Ef -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -TN +xi +QC +Dx +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +zy au au au @@ -3495,30 +3938,30 @@ au au au au -Oq -Ef -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -ye -Jl -ur +QC +Dx +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +pJ +Iy +ON au au au @@ -3539,30 +3982,30 @@ ie au au au -Oq -yq -LH -LH -jq -jq -jq -UU -jq -jq -jq -jq -Vg -LH -jq -jq -UU -LH -LH -jq -jq -jq -Sa -Oq +QC +BU +cY +cY +oU +oU +oU +lN +oU +oU +oU +oU +BL +cY +oU +oU +lN +cY +cY +oU +oU +oU +Fw +QC au au ie @@ -3585,27 +4028,27 @@ au au ie au -Xw -ur -ur -ur -Oq -Oq -td -ov -ov -ov -ov -fM -RQ -ur -ur -Oq -ur -ur -ur -ur -Oq +Yi +ON +ON +ON +QC +QC +De +Bx +Bx +Bx +Bx +dn +Sl +ON +ON +QC +ON +ON +ON +ON +QC au au au @@ -3637,12 +4080,12 @@ au au ie ie -ph -ph -ph +wm +wm +wm ie ie -GB +UV au au au @@ -3680,11 +4123,11 @@ au au ie ie -es -sJ -uT -dk -uM +Nw +sA +Tw +pQ +NW ie ie ie @@ -3723,16 +4166,16 @@ au au au ie -tU -iO -jk -tR -tR -Rh +rt +ZQ +cO +XX +XX +Cn ie -bb -bb -bb +Mt +Mt +Mt ie ie ie @@ -3767,16 +4210,16 @@ ie ie ie ie -dr -uk -eJ -ur -ur -fs +pu +mo +sG +ON +ON +Fv ie -bb -bb -bb +Mt +Mt +Mt ie gu gu @@ -3812,15 +4255,15 @@ gu gu ie ie -NF -iW -WI -cR -gY -Tc -gv -IW -gv +IE +pG +CI +BB +MV +gL +os +Zz +os ie gu gu diff --git a/_maps/outpost/hangar/test_2_40x40.dmm b/_maps/outpost/hangar/nt_asteroid_40x40.dmm similarity index 71% rename from _maps/outpost/hangar/test_2_40x40.dmm rename to _maps/outpost/hangar/nt_asteroid_40x40.dmm index ada742d9f557..a2c2f915da96 100644 --- a/_maps/outpost/hangar/test_2_40x40.dmm +++ b/_maps/outpost/hangar/nt_asteroid_40x40.dmm @@ -1,44 +1,4 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ae" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "109" - }, -/obj/item/pipe/binary, -/turf/open/floor/concrete/slab_3, -/area/hangar) -"ah" = ( -/obj/effect/decal/cleanable/robot_debris{ - pixel_x = 12 - }, -/turf/open/floor/plasteel{ - color = "#808080" - }, -/area/hangar) -"ar" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/effect/spawner/lootdrop/glowstick{ - pixel_x = 5; - pixel_y = 9 - }, -/turf/open/floor/plating, -/area/hangar) -"az" = ( -/obj/machinery/vending/coffee{ - pixel_x = 5 - }, -/obj/item/kirbyplants{ - icon_state = "plant-22"; - pixel_x = -11 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/toy/plush/moth{ - pixel_y = 21; - pixel_x = 6 - }, -/turf/open/floor/concrete/slab_3, -/area/hangar) "aF" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ dir = 8 @@ -46,37 +6,26 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/hangar) -"aH" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/girder, -/obj/structure/grille/broken, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/hangar) -"aL" = ( -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/machinery/computer/cargo/express{ - dir = 8 +"bg" = ( +/obj/effect/turf_decal/industrial/warning/corner, +/obj/structure/railing/corner, +/obj/effect/turf_decal/industrial/warning{ + dir = 10 }, -/obj/machinery/light/directional/east, /turf/open/floor/plasteel{ - color = "#808080" + color = "#808080"; + planetary_atmos = 1 }, /area/hangar) -"bt" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/box/corners{ - dir = 8 +"ce" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/caution{ + dir = 1 }, -/turf/open/floor/plating/rust, -/area/hangar) -"cg" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel{ - color = "#808080" + color = "#808080"; + planetary_atmos = 1 }, /area/hangar) "cm" = ( @@ -85,11 +34,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/hangar) -"db" = ( -/obj/structure/marker_beacon{ - picked_color = "Teal" +"cT" = ( +/obj/structure/chair/sofa/left{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 }, -/turf/open/floor/plating, /area/hangar) "dd" = ( /obj/effect/turf_decal/industrial/warning{ @@ -97,13 +52,23 @@ }, /turf/open/floor/plasteel/dark, /area/hangar) -"eM" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/caution{ - dir = 1 +"dZ" = ( +/obj/machinery/door/poddoor/shutters/indestructible/preopen{ + dir = 4 }, +/turf/open/floor/plasteel/tech, +/area/hangar) +"ec" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/computer/cargo/express{ + dir = 8 + }, +/obj/machinery/light/directional/east, /turf/open/floor/plasteel{ - color = "#808080" + color = "#808080"; + planetary_atmos = 1 }, /area/hangar) "fn" = ( @@ -113,7 +78,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/hangar) -"fE" = ( +"fR" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark, +/area/hangar) +"gN" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/hangar) +"hb" = ( /obj/structure/catwalk/over, /obj/structure/table/wood, /obj/item/reagent_containers/syringe/contraband/space_drugs{ @@ -126,21 +104,16 @@ pixel_y = 1 }, /turf/open/floor/plating{ - icon_state = "foam_plating" + icon_state = "foam_plating"; + planetary_atmos = 1 }, /area/hangar) -"fR" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 8 - }, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, -/area/hangar) -"gN" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 8 +"hj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) "ht" = ( /obj/structure/railing/corner{ @@ -162,43 +135,99 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/hangar) +"hA" = ( +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 + }, +/area/hangar) +"hB" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 + }, +/area/hangar) "hG" = ( /obj/structure/flora/rock/pile/icy, /turf/open/floor/plating/asteroid/icerock, /area/hangar) +"hO" = ( +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, +/area/hangar) "hP" = ( /obj/machinery/door/poddoor/multi_tile/four_tile_ver, /turf/closed/indestructible/reinforced, /area/hangar) +"iA" = ( +/obj/structure/fluff/hedge, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, +/area/hangar) "iG" = ( /obj/structure/railing{ dir = 1 }, /turf/open/floor/plasteel/dark, /area/hangar) -"iY" = ( -/obj/effect/turf_decal/techfloor{ - dir = 4 +"iL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 }, -/obj/structure/rack, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 }, -/obj/structure/railing{ - dir = 1 +/area/hangar) +"iS" = ( +/obj/machinery/vending/coffee{ + pixel_x = 5 }, -/turf/open/floor/plasteel{ - color = "#808080" +/obj/item/kirbyplants{ + icon_state = "plant-22"; + pixel_x = -11 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/toy/plush/moth{ + pixel_y = 21; + pixel_x = 6 + }, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 }, /area/hangar) "jk" = ( /obj/structure/flora/rock/pile/icy, /turf/open/water/beach/deep, /area/hangar) +"jp" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) "jw" = ( /obj/machinery/light/directional/east, /turf/open/floor/plasteel/dark, /area/hangar) +"kf" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 + }, +/area/hangar) "kF" = ( /obj/effect/decal/cleanable/garbage{ pixel_x = 11; @@ -210,14 +239,6 @@ }, /turf/open/floor/plasteel/dark, /area/hangar) -"kJ" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/concrete/slab_3, -/area/hangar) -"kV" = ( -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) "la" = ( /obj/structure/railing{ layer = 3.1 @@ -226,23 +247,47 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/hangar) -"ln" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/concrete/slab_3, +"lf" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = 32 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, +/area/hangar) +"lr" = ( +/obj/effect/turf_decal/box/corners, +/obj/structure/closet/crate, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating{ + icon_state = "platingdmg1"; + planetary_atmos = 1 + }, +/area/hangar) +"ls" = ( +/obj/structure/chair/sofa/right{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, /area/hangar) "lJ" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, /obj/machinery/light/floor/hangar, /turf/open/floor/plasteel/dark, /area/hangar) -"lO" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) "lP" = ( /obj/structure/railing{ dir = 4; @@ -253,6 +298,18 @@ }, /turf/open/water/beach/deep, /area/hangar) +"mg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 + }, +/area/hangar) "ml" = ( /obj/structure/railing/corner{ dir = 4 @@ -273,38 +330,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/hangar) -"nN" = ( -/obj/structure/closet/crate, -/turf/open/floor/plating, -/area/hangar) -"of" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/coffee{ - pixel_x = -9; - pixel_y = 3 - }, -/obj/item/reagent_containers/food/drinks/mug/tea{ - pixel_y = 9; - pixel_x = 5 - }, -/obj/machinery/light/floor/hangar, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/concrete/slab_3, -/area/hangar) -"oi" = ( -/obj/item/stack/ore/salvage/scrapsilver{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/structure/railing{ - dir = 2; - layer = 4.1 - }, -/turf/open/floor/plasteel/tech/techmaint, -/area/hangar) "oj" = ( /turf/open/floor/plasteel/tech, /area/hangar) @@ -315,11 +340,44 @@ /obj/structure/fans/tiny/invisible, /turf/open/floor/plating/asteroid/icerock, /area/hangar) +"oC" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/item/stack/rods{ + pixel_x = -7; + pixel_y = -2 + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"oU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 + }, +/area/hangar) "oX" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/hangar) +"pa" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 + }, +/area/hangar) +"ph" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 + }, +/area/hangar) "pt" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ dir = 1 @@ -329,33 +387,12 @@ "pz" = ( /turf/open/floor/plasteel/dark, /area/hangar) -"pE" = ( +"pF" = ( /obj/structure/catwalk/over/plated_catwalk, -/obj/item/stack/ore/salvage/scraptitanium/five, -/obj/machinery/light/directional/north, -/turf/open/floor/plating, -/area/hangar) -"pO" = ( -/obj/structure/grille, -/obj/structure/railing{ - dir = 1; - layer = 4.1 - }, -/obj/structure/railing{ - dir = 2; - layer = 4.1 - }, -/turf/open/floor/plating, -/area/hangar) -"qn" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/machinery/atmospherics/components/binary/pump/on, +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/concrete/reinforced, /area/hangar) "qq" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ @@ -365,6 +402,33 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/hangar) +"qx" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/sign/warning/nosmoking{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, +/area/hangar) +"qy" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/light/directional/east, +/turf/open/floor/plating/rust{ + planetary_atmos = 1 + }, +/area/hangar) +"qG" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/caution, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 + }, +/area/hangar) "qT" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -379,12 +443,13 @@ }, /turf/open/floor/plasteel/dark, /area/hangar) -"rc" = ( -/obj/effect/turf_decal/industrial/warning{ +"ri" = ( +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/plasteel{ - color = "#808080" +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 }, /area/hangar) "rp" = ( @@ -397,29 +462,24 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/concrete/slab_2, /area/hangar) -"rF" = ( -/obj/structure/easel, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"sc" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/structure/railing{ - dir = 2; - layer = 4.1 +"rH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel{ - color = "#808080" +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 }, /area/hangar) -"sn" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating/rust, -/area/hangar) -"sp" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/frame/machine, -/turf/open/floor/plating, +"se" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/structure/closet/crate/bin, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, /area/hangar) "sW" = ( /obj/structure/sign/departments/cargo{ @@ -432,87 +492,125 @@ /obj/machinery/light/floor/hangar, /turf/open/floor/plasteel/dark, /area/hangar) -"ue" = ( -/obj/machinery/door/airlock, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel{ - color = "#808080" +"uf" = ( +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, /area/hangar) -"ui" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 +"vu" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_3, /area/hangar) -"vW" = ( +"vy" = ( +/obj/effect/turf_decal/industrial/warning, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"wj" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_3, /area/hangar) -"wH" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw{ - dir = 8 +"vF" = ( +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/structure/closet/crate, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) -"wZ" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +"vG" = ( +/obj/item/stack/ore/salvage/scrapsilver{ + pixel_x = 4; + pixel_y = 4 }, -/obj/effect/turf_decal/industrial/caution, -/turf/open/floor/plasteel{ - color = "#808080" +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/turf/open/floor/plasteel/tech/techmaint{ + planetary_atmos = 1 }, /area/hangar) -"xj" = ( -/turf/open/floor/plasteel/elevatorshaft, +"wc" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating/rust{ + planetary_atmos = 1 + }, /area/hangar) -"xk" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ - dir = 8 +"wm" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/rack, +/obj/effect/turf_decal/industrial/warning, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, /area/hangar) -"xG" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_y = 32 +"ws" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/rack, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, /area/hangar) -"xN" = ( +"wu" = ( /obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/caution{ - dir = 1 +/obj/structure/railing{ + dir = 2; + layer = 4.1 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel{ - color = "#808080" + color = "#808080"; + planetary_atmos = 1 }, /area/hangar) -"xR" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/item/kirbyplants{ - icon_state = "plant-25"; - pixel_x = 11 +"wH" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw{ + dir = 8 }, +/turf/open/floor/plasteel/dark, +/area/hangar) +"wJ" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/item/stack/ore/salvage/scraptitanium/five, +/obj/machinery/light/directional/north, /turf/open/floor/plating{ - icon_state = "panelscorched" + planetary_atmos = 1 }, /area/hangar) -"xU" = ( -/obj/effect/decal/cleanable/garbage, -/turf/open/floor/plating, +"xk" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, /area/hangar) "xX" = ( /obj/effect/turf_decal/industrial/warning{ @@ -533,10 +631,15 @@ /obj/structure/girder/displaced, /turf/open/floor/plasteel/dark, /area/hangar) -"yV" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/machinery/light/directional/east, -/turf/open/floor/plating/rust, +"yU" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 + }, /area/hangar) "zd" = ( /obj/machinery/light/floor/hangar, @@ -545,137 +648,109 @@ }, /turf/open/floor/plasteel/dark, /area/hangar) +"zL" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 + }, +/area/hangar) "zY" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/hangar) -"Ab" = ( -/obj/item/stack/cable_coil/cut/yellow, +"Aa" = ( +/obj/structure/grille, +/obj/structure/railing{ + dir = 1; + layer = 4.1 + }, /obj/structure/railing{ dir = 2; layer = 4.1 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/hangar) -"Ak" = ( -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel{ - color = "#808080" +/turf/open/floor/plating{ + planetary_atmos = 1 }, /area/hangar) -"Ar" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +"AI" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/frame/machine, +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/turf/open/floor/concrete/slab_3, /area/hangar) "AO" = ( /obj/machinery/light/directional/south, /turf/open/floor/plating/asteroid/icerock/cracked, /area/hangar) -"Be" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_3, -/area/hangar) -"BE" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"BL" = ( -/obj/effect/turf_decal/box/corners{ - dir = 4 +"AT" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/railing{ + dir = 2; + layer = 4.1 }, -/obj/structure/closet/crate, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"BZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/item/stack/rods{ + pixel_x = -7; + pixel_y = -2 }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/closet/crate/bin, -/turf/open/floor/concrete/tiles, -/area/hangar) -"Cl" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/structure/sign/warning/nosmoking{ - pixel_y = 32 +/obj/structure/grille/broken, +/obj/structure/girder/reinforced, +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/patterned/cargo_one, /area/hangar) -"Cy" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +"Bb" = ( +/obj/effect/decal/cleanable/robot_debris{ + pixel_x = 12 }, -/obj/structure/table, -/obj/item/paper/pamphlet/gateway{ - pixel_x = 6; - pixel_y = 4 +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 }, -/obj/item/paper/pamphlet/centcom{ - pixel_x = 8; - pixel_y = 1 +/area/hangar) +"Br" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 }, -/obj/item/paper_bin{ - pixel_x = -6; - pixel_y = 4 +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 }, -/obj/item/pen{ - pixel_y = 4; - pixel_x = -7 +/area/hangar) +"BE" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 8 }, -/turf/open/floor/concrete/reinforced, +/turf/open/floor/plasteel/tech, /area/hangar) -"CV" = ( -/obj/structure/bed{ - icon_state = "dirty_mattress" +"BI" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/components/unary/tank/air{ + volume = 10000000 }, -/obj/structure/catwalk/over, /turf/open/floor/plating{ - icon_state = "panelscorched" + planetary_atmos = 1 }, /area/hangar) -"De" = ( -/obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating, -/area/hangar) -"Dm" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/item/trash/boritos, -/turf/open/floor/plating, -/area/hangar) -"DA" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil/streak, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"DK" = ( -/turf/closed/mineral/random/snow, -/area/hangar) -"DP" = ( -/obj/effect/turf_decal/box/corners, +"Cw" = ( /obj/structure/closet/crate, -/obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating{ - icon_state = "platingdmg1" + planetary_atmos = 1 }, /area/hangar) +"DK" = ( +/turf/closed/mineral/random/snow, +/area/hangar) "DS" = ( /obj/structure/fence/door, /obj/structure/fans/tiny/invisible, /turf/open/floor/plating/asteroid/icerock, /area/hangar) -"DY" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/caution, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel{ - color = "#808080" +"Er" = ( +/turf/open/floor/plating{ + planetary_atmos = 1 }, /area/hangar) "Et" = ( @@ -695,6 +770,18 @@ }, /turf/open/floor/plasteel/dark, /area/hangar) +"EC" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 1 + }, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 + }, +/area/hangar) "EJ" = ( /obj/structure/railing{ dir = 1; @@ -705,21 +792,6 @@ }, /turf/open/water/beach/deep, /area/hangar) -"Fj" = ( -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/structure/rack, -/obj/effect/turf_decal/industrial/warning, -/obj/structure/railing{ - dir = 2; - layer = 4.1 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/plasteel{ - color = "#808080" - }, -/area/hangar) "Fl" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -732,11 +804,21 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/concrete/slab_2, /area/hangar) -"Fp" = ( -/obj/structure/railing/corner{ - dir = 8 +"Fy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/shutters/indestructible/preopen{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/hangar) +"FC" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/girder, +/obj/structure/grille/broken, +/turf/open/floor/plating{ + icon_state = "platingdmg1"; + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) "FI" = ( /obj/effect/turf_decal/siding/wood{ @@ -744,26 +826,16 @@ }, /turf/open/floor/concrete/slab_2, /area/hangar) -"FL" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +"FT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust{ + planetary_atmos = 1 }, -/obj/item/pipe/binary, -/turf/open/floor/concrete/slab_3, /area/hangar) "FY" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, /turf/open/floor/plasteel/dark, /area/hangar) -"Gg" = ( -/obj/structure/closet/crate, -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/turf/open/floor/plating{ - icon_state = "foam_plating" - }, -/area/hangar) "Gm" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -771,15 +843,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/concrete/slab_2, /area/hangar) -"Gu" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +"GI" = ( +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 }, -/obj/structure/chair{ - dir = 4 - }, -/obj/item/pipe/binary, -/turf/open/floor/concrete/slab_3, /area/hangar) "Hg" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ @@ -788,25 +855,14 @@ /obj/machinery/light/floor/hangar, /turf/open/floor/plasteel/dark, /area/hangar) -"Hi" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 4 - }, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 9 - }, -/turf/open/floor/plasteel{ - color = "#808080" +"HP" = ( +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = 32 }, -/area/hangar) -"HW" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/rust{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/patterned/cargo_one, /area/hangar) "HY" = ( /turf/open/floor/plating/asteroid/icerock/smooth, @@ -825,6 +881,29 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/hangar) +"IB" = ( +/obj/structure/bed{ + icon_state = "dirty_mattress" + }, +/obj/structure/catwalk/over, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 + }, +/area/hangar) +"IE" = ( +/obj/structure/closet/crate, +/obj/item/storage/box/donkpockets{ + pixel_x = 6; + pixel_y = -3 + }, +/obj/machinery/light/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, +/area/hangar) "IF" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ dir = 8 @@ -833,22 +912,40 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/hangar) +"IK" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/caution, +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 + }, +/area/hangar) +"Jq" = ( +/obj/item/stack/cable_coil/cut/yellow, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/turf/open/floor/plasteel/tech/techmaint{ + planetary_atmos = 1 + }, +/area/hangar) +"Js" = ( +/obj/structure/easel, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, +/area/hangar) "JN" = ( /turf/closed/indestructible/reinforced, /area/hangar) -"Ka" = ( +"JZ" = ( /obj/structure/catwalk/over/plated_catwalk, -/obj/structure/firelock_frame, /turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/hangar) -"Kf" = ( -/obj/structure/fluff/hedge, -/obj/effect/turf_decal/siding/wood{ - dir = 1 + planetary_atmos = 1 }, -/turf/open/floor/concrete/reinforced, /area/hangar) "Km" = ( /turf/open/floor/plating/asteroid/icerock/cracked, @@ -859,36 +956,65 @@ }, /turf/open/floor/plasteel/dark, /area/hangar) +"KJ" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/girder, +/obj/structure/grille/broken, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"KL" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + req_access_txt = "109" + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 + }, +/area/hangar) "KN" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/decal/cleanable/dirt, /turf/open/floor/concrete/slab_2, /area/hangar) -"Lc" = ( -/obj/structure/closet/crate, -/obj/item/storage/box/donkpockets{ +"KQ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/table, +/obj/item/paper/pamphlet/gateway{ pixel_x = 6; - pixel_y = -3 + pixel_y = 4 }, -/obj/machinery/light/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/hangar) -"Lq" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/item/paper/pamphlet/centcom{ + pixel_x = 8; + pixel_y = 1 }, -/obj/structure/railing{ - dir = 1 +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 4 }, -/turf/open/floor/plasteel{ - color = "#808080" +/obj/item/pen{ + pixel_y = 4; + pixel_x = -7 + }, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 }, /area/hangar) -"Lr" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, +"KS" = ( +/obj/item/stack/rods{ + pixel_x = 7; + pixel_y = -9 + }, +/turf/open/floor/plasteel/tech/techmaint{ + planetary_atmos = 1 + }, /area/hangar) "LE" = ( /obj/effect/decal/cleanable/oil, @@ -897,12 +1023,17 @@ "LH" = ( /turf/template_noop, /area/template_noop) -"LV" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 +"LK" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_3, /area/hangar) "Mg" = ( /obj/structure/girder/displaced, @@ -912,35 +1043,51 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/hangar) +"Mt" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 9 + }, +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 + }, +/area/hangar) "Mu" = ( /turf/open/floor/plating/asteroid/iceberg, /area/hangar) -"Na" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/chair{ - dir = 8 +"Nt" = ( +/turf/open/floor/plasteel/tech/techmaint{ + planetary_atmos = 1 }, -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_y = 32 +/area/hangar) +"Ny" = ( +/obj/effect/landmark/outpost/elevator, +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 }, -/obj/machinery/light/directional/east, -/turf/open/floor/concrete/reinforced, /area/hangar) -"Nq" = ( -/obj/structure/chair/sofa/left{ - dir = 1 +"NE" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/spawner/lootdrop/glowstick{ + pixel_x = 5; + pixel_y = 9 }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/obj/machinery/light/directional/south, -/turf/open/floor/concrete/reinforced, /area/hangar) -"NL" = ( -/obj/effect/landmark/outpost/elevator, -/turf/open/floor/plasteel/elevatorshaft, +"NX" = ( +/obj/effect/turf_decal/industrial/warning, +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 + }, /area/hangar) "Og" = ( /obj/effect/turf_decal/siding/wood{ @@ -950,29 +1097,28 @@ /obj/machinery/light/directional/east, /turf/open/floor/concrete/slab_2, /area/hangar) -"Oz" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/item/stack/rods{ - pixel_x = -7; - pixel_y = -2 - }, -/turf/open/floor/plating, -/area/hangar) -"OG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/poddoor/shutters/indestructible/preopen, -/turf/open/floor/plasteel/tech, -/area/hangar) "OI" = ( /obj/effect/turf_decal/arrows{ dir = 1 }, /turf/open/floor/plasteel/tech, /area/hangar) -"Ph" = ( -/obj/effect/turf_decal/siding/wood, +"OZ" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_3, +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 + }, +/area/hangar) +"Pf" = ( +/obj/structure/closet/crate, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "foam_plating"; + planetary_atmos = 1 + }, /area/hangar) "Po" = ( /obj/item/flashlight/lantern{ @@ -980,35 +1126,46 @@ }, /turf/open/floor/plating/asteroid/icerock, /area/hangar) -"Px" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/turf/open/floor/plasteel{ - color = "#808080" +"Pu" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 }, -/area/hangar) -"PL" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 +/obj/machinery/light/directional/east, +/turf/open/floor/plating{ + icon_state = "foam_plating"; + planetary_atmos = 1 }, -/turf/open/floor/concrete/slab_3, /area/hangar) "Qb" = ( /obj/structure/flora/rock/icy, /turf/open/water/beach/deep, /area/hangar) -"QJ" = ( +"Qr" = ( /obj/structure/catwalk/over/plated_catwalk, -/obj/item/stack/cable_coil/cut/yellow, -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance, +/obj/item/kirbyplants{ + icon_state = "plant-25"; + pixel_x = 11 + }, /turf/open/floor/plating{ - icon_state = "panelscorched" + icon_state = "panelscorched"; + planetary_atmos = 1 + }, +/area/hangar) +"Qy" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/caution{ + dir = 1 + }, +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 }, /area/hangar) -"QV" = ( -/turf/open/floor/plasteel/tech/techmaint, +"Rw" = ( +/obj/effect/landmark/outpost/hangar_dock, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "RA" = ( /obj/structure/railing{ @@ -1024,29 +1181,14 @@ }, /turf/open/water/beach/deep, /area/hangar) -"RB" = ( -/obj/machinery/door/poddoor/shutters/indestructible/preopen, -/turf/open/floor/plasteel/tech, -/area/hangar) -"Sf" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/railing{ - dir = 2; - layer = 4.1 - }, -/obj/item/stack/rods{ - pixel_x = -7; - pixel_y = -2 +"RS" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/effect/turf_decal/box/corners{ + dir = 8 }, -/obj/structure/grille/broken, -/obj/structure/girder/reinforced, -/turf/open/floor/plating, -/area/hangar) -"Sg" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 +/turf/open/floor/plating/rust{ + planetary_atmos = 1 }, -/turf/open/floor/concrete/slab_3, /area/hangar) "So" = ( /obj/structure/flora/rock/icy{ @@ -1055,12 +1197,11 @@ }, /turf/open/water/beach/deep, /area/hangar) -"SO" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +"Td" = ( +/obj/effect/decal/cleanable/garbage, +/turf/open/floor/plating{ + planetary_atmos = 1 }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/concrete/tiles, /area/hangar) "Th" = ( /obj/structure/fence/corner{ @@ -1069,15 +1210,6 @@ /obj/structure/fans/tiny/invisible, /turf/open/floor/plating/asteroid/icerock, /area/hangar) -"Ts" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel{ - color = "#808080" - }, -/area/hangar) "Tw" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ dir = 1 @@ -1091,22 +1223,11 @@ /obj/effect/turf_decal/spline/fancy/opaque/black/corner, /turf/open/water/beach/deep, /area/hangar) -"TV" = ( -/obj/item/stack/rods{ - pixel_x = 7; - pixel_y = -9 - }, -/turf/open/floor/plasteel/tech/techmaint, -/area/hangar) -"Uc" = ( +"Us" = ( /obj/structure/catwalk/over/plated_catwalk, -/obj/structure/railing{ - dir = 2; - layer = 4.1 - }, -/obj/structure/grille, +/obj/item/trash/boritos, /turf/open/floor/plating{ - icon_state = "platingdmg2" + planetary_atmos = 1 }, /area/hangar) "UB" = ( @@ -1122,11 +1243,16 @@ }, /turf/open/water/beach/deep, /area/hangar) -"Vb" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel{ - color = "#808080" +"UT" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/structure/grille, +/turf/open/floor/plating{ + icon_state = "platingdmg2"; + planetary_atmos = 1 }, /area/hangar) "Vc" = ( @@ -1147,16 +1273,6 @@ /obj/effect/decal/cleanable/glass, /turf/open/floor/plasteel/dark, /area/hangar) -"Vf" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/turf/open/floor/concrete/slab_3, -/area/hangar) "Vj" = ( /obj/structure/fence{ dir = 1 @@ -1164,59 +1280,42 @@ /obj/structure/fans/tiny/invisible, /turf/open/floor/plating/asteroid/icerock, /area/hangar) -"Vo" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/structure/girder, -/obj/structure/grille/broken, -/obj/structure/railing{ - dir = 2; - layer = 4.1 - }, -/turf/open/floor/plating, +"Vk" = ( +/obj/machinery/door/airlock, +/obj/effect/landmark/outpost/elevator_machine, +/obj/structure/lattice/catwalk, +/turf/open/floor/engine, /area/hangar) -"Vq" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/machinery/atmospherics/components/unary/tank/air{ - volume = 10000000 +"Vy" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 }, -/turf/open/floor/plating, /area/hangar) -"Vz" = ( -/obj/structure/sign/poster/contraband/random{ - pixel_y = 32 +"VA" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/cargo_one{ + planetary_atmos = 1 }, -/obj/machinery/light/directional/east, +/area/hangar) +"Wo" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/firelock_frame, /turf/open/floor/plating{ - icon_state = "foam_plating" + icon_state = "panelscorched"; + planetary_atmos = 1 }, /area/hangar) -"VS" = ( -/obj/effect/turf_decal/industrial/warning/corner, -/obj/structure/railing/corner, -/obj/effect/turf_decal/industrial/warning{ - dir = 10 - }, -/turf/open/floor/plasteel{ - color = "#808080" +"Xp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/area/hangar) -"VZ" = ( -/turf/open/floor/plating, -/area/hangar) -"Wc" = ( -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating, -/area/hangar) -"Wp" = ( -/turf/open/floor/plasteel{ - color = "#808080" +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 }, /area/hangar) -"Xt" = ( -/obj/structure/catwalk/over/plated_catwalk, -/obj/machinery/atmospherics/components/binary/pump/on, -/turf/open/floor/plating, -/area/hangar) "Xx" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ dir = 1 @@ -1234,12 +1333,30 @@ "XF" = ( /turf/open/water/beach/deep, /area/hangar) +"Yt" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/item/stack/cable_coil/cut/yellow, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 + }, +/area/hangar) "YA" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, /turf/open/floor/plasteel/dark, /area/hangar) +"YN" = ( +/obj/structure/marker_beacon{ + picked_color = "Teal" + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) "YO" = ( /obj/structure/railing{ layer = 3.1 @@ -1247,15 +1364,52 @@ /obj/structure/fans/tiny/invisible, /turf/open/floor/plasteel/dark, /area/hangar) -"ZD" = ( -/obj/structure/chair/sofa/right{ +"YX" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 1 }, -/obj/effect/turf_decal/siding/wood{ +/obj/structure/railing{ dir = 1 }, +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 + }, +/area/hangar) +"Zi" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 + }, +/area/hangar) +"ZE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = -9; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/mug/tea{ + pixel_y = 9; + pixel_x = 5 + }, +/obj/machinery/light/floor/hangar, /obj/item/radio/intercom/directional/east, -/turf/open/floor/concrete/reinforced, +/turf/open/floor/concrete/slab_3{ + planetary_atmos = 1 + }, +/area/hangar) +"ZX" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/turf/open/floor/plasteel{ + color = "#808080"; + planetary_atmos = 1 + }, /area/hangar) (1,1,1) = {" @@ -1498,46 +1652,46 @@ DK DK DK FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -De +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Rw pt DK DK @@ -1556,46 +1710,46 @@ DK DK pz FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt pz DK @@ -1614,46 +1768,46 @@ DK DK pz FY -db -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -db +YN +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +YN pt pz DK @@ -1672,46 +1826,46 @@ DK DK pz FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt pz JN @@ -1730,46 +1884,46 @@ DK DK pz tN -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er Et zY DK @@ -1788,46 +1942,46 @@ DK DK pz FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt zY DK @@ -1846,46 +2000,46 @@ DK DK pz oX -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er Xx pz DK @@ -1904,49 +2058,49 @@ DK DK fn oX -db -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -db +YN +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +YN pt pz -aH +FC DK DK DK @@ -1959,52 +2113,52 @@ JN DK DK DK -pO +Aa Iw FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt zY -Dm +Us DK DK DK @@ -2017,53 +2171,53 @@ JN DK DK DK -pO +Aa Mg FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt zY -Wc -xR +JZ +Qr DK DK DK @@ -2075,53 +2229,53 @@ JN DK DK DK -pO +Aa xX tN -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er Et zY -CV -fE +IB +hb DK DK DK @@ -2132,50 +2286,50 @@ JN JN DK DK -sp -Sf +AI +AT dd FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt pz Th @@ -2190,50 +2344,50 @@ JN JN DK DK -Oz -Ab +oC +Jq Iw FY -db -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -db +YN +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +YN pt zY oq @@ -2248,50 +2402,50 @@ JN JN JN JN -pE -QV +wJ +Nt ya FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt zY oq @@ -2306,50 +2460,50 @@ JN JN DK DK -ar -TV +NE +KS Iw FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt zY oq @@ -2364,50 +2518,50 @@ JN JN DK DK -Ka -oi +Wo +vG Iw FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt zY oq @@ -2422,50 +2576,50 @@ JN JN DK DK -QJ -Uc +Yt +UT dd tN -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er Et zY oq @@ -2481,49 +2635,49 @@ JN DK DK DK -Vo +KJ Iw FY -db -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -db +YN +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +YN pt pz oq @@ -2542,46 +2696,46 @@ DK DK Xz FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt pz DS @@ -2600,46 +2754,46 @@ DK DK zY FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt pz oq @@ -2658,46 +2812,46 @@ DK DK zY FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt zY oq @@ -2716,46 +2870,46 @@ DK DK pz FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt zY oq @@ -2774,46 +2928,46 @@ DK DK pz tN -db -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -db +YN +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +YN Et zY oq @@ -2832,46 +2986,46 @@ DK DK zY FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt pz oq @@ -2890,46 +3044,46 @@ DK JN zY FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt pz JN @@ -2948,46 +3102,46 @@ DK DK ml FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt pz DK @@ -3006,46 +3160,46 @@ DK DK iG oX -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er Xx pz DK @@ -3064,46 +3218,46 @@ DK JN iG FY -db -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -db +YN +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +YN Xx pz DK @@ -3122,46 +3276,46 @@ DK JN iG cm -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er Tw pz DK @@ -3180,46 +3334,46 @@ DK DK iG oX -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er Xx pz JN @@ -3238,46 +3392,46 @@ DK DK ht oX -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt pz DK @@ -3296,46 +3450,46 @@ DK DK pz FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt zY DK @@ -3354,46 +3508,46 @@ DK DK pz FY -db -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -db +YN +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +YN Xx zY DK @@ -3412,46 +3566,46 @@ DK DK pz oX -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er Xx hz DK @@ -3470,46 +3624,46 @@ DK DK pz cm -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er nK YO Mu @@ -3528,46 +3682,46 @@ DK DK pz FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er Xx YO Mu @@ -3586,46 +3740,46 @@ DK DK pz FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt YO Mu @@ -3644,46 +3798,46 @@ DK DK zY FY -db -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -db +YN +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +YN pt YO Mu @@ -3702,46 +3856,46 @@ DK DK zY FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er pt la Mu @@ -3760,46 +3914,46 @@ DK DK kF FY -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ -VZ +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er +Er Xx la Mu @@ -3859,7 +4013,7 @@ gN aF xk qq -Fp +jp JN DK DK @@ -3937,8 +4091,8 @@ DK DK DK DK -RB -OG +dZ +Fy DK DK DK @@ -3995,8 +4149,8 @@ XF XF XF hw -wj -ln +ri +pa DK DK DK @@ -4008,9 +4162,9 @@ DK JN Vc Ew -Hi -Px -VS +Mt +ph +bg Ew qT JN @@ -4054,7 +4208,7 @@ XF XF hw FI -Ph +Zi RA XF XF @@ -4064,13 +4218,13 @@ DK DK DK JN -lO -HW -Lq -Wp -sc -Gg -bt +uf +vu +YX +hA +wu +Pf +RS DK DK DK @@ -4111,8 +4265,8 @@ XF XF Tz UO -Ar -Ph +oU +Zi EJ XF XF @@ -4122,13 +4276,13 @@ XF DK DK JN -xG -kV -wZ -cg -xN -kV -xU +HP +hO +IK +hj +ce +hO +Td DK DK DK @@ -4168,8 +4322,8 @@ DK lP lP UO -ui -LV +kf +zL rB EJ XF @@ -4180,13 +4334,13 @@ jk DK DK JN -Cl -vW -rc -Wp -Ak -kV -rF +qx +VA +ZX +hA +NX +hO +Js DK JN JN @@ -4220,15 +4374,15 @@ LH LH JN JN -Vq -Xt -ae -FL -FL -Gu -Vf -Be -Sg +BI +pF +KL +rH +rH +mg +EC +Vy +iL EJ XF XF @@ -4238,13 +4392,13 @@ DK DK DK JN -nN -DA -Ts -cg -Vb -vW -Lc +Cw +OZ +yU +hj +vy +VA +IE JN JN LH @@ -4278,14 +4432,14 @@ LH LH LH JN -yV -Wc +qy +JZ JN -az +iS Og -of -PL -Ph +ZE +Br +Zi DK DK DK @@ -4296,13 +4450,13 @@ DK DK DK JN -Vz -Lr -DY -ah -eM -kV -sn +Pu +FT +qG +Bb +Qy +hO +wc JN LH LH @@ -4343,8 +4497,8 @@ JN JN JN Fl -Ph -BZ +Zi +se DK DK DK @@ -4355,11 +4509,11 @@ DK JN JN JN -DP -iY -aL -Fj -BL +lr +ws +ec +wm +vF JN JN LH @@ -4396,14 +4550,14 @@ LH LH LH JN -xj -xj -NL -ue -wj -ln -SO -Kf +GI +GI +Ny +Vk +ri +pa +Xp +iA JN DK DK @@ -4454,14 +4608,14 @@ LH LH LH JN -xj -xj -xj -ue +GI +GI +GI +Vk Gm -kJ -SO -Nq +hB +Xp +cT JN DK DK @@ -4512,14 +4666,14 @@ LH LH LH JN -xj -xj -xj -ue -Ar +GI +GI +GI +Vk +oU KN -SO -ZD +Xp +ls JN JN JN @@ -4574,9 +4728,9 @@ JN JN JN JN -Na -Cy -qn +lf +KQ +LK JN JN LH diff --git a/_maps/outpost/hangar/test_2_56x20.dmm b/_maps/outpost/hangar/nt_asteroid_56x20.dmm similarity index 78% rename from _maps/outpost/hangar/test_2_56x20.dmm rename to _maps/outpost/hangar/nt_asteroid_56x20.dmm index aa7bc893a0ab..19221a5de90a 100644 --- a/_maps/outpost/hangar/test_2_56x20.dmm +++ b/_maps/outpost/hangar/nt_asteroid_56x20.dmm @@ -3,11 +3,15 @@ /obj/effect/turf_decal/trimline/opaque/yellow/warning{ dir = 8 }, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, /area/hangar) "an" = ( /obj/effect/turf_decal/siding/wood, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "at" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ @@ -15,12 +19,16 @@ }, /obj/machinery/light/floor/hangar, /obj/effect/turf_decal/industrial/warning/corner, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "aA" = ( /obj/effect/turf_decal/siding/wood, /obj/structure/bookcase/random/fiction, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "aF" = ( /obj/structure/bookcase/random/fiction, @@ -32,11 +40,15 @@ pixel_x = 9; pixel_y = 26 }, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "aR" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "aU" = ( /obj/effect/turf_decal/industrial/warning{ @@ -45,7 +57,9 @@ /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "bp" = ( /obj/item/stack/rods{ @@ -53,40 +67,51 @@ pixel_y = -9 }, /turf/open/floor/plating{ - icon_state = "platingdmg2" + icon_state = "platingdmg2"; + planetary_atmos = 1 }, /area/hangar) "bt" = ( /obj/structure/chair/sofa/left{ dir = 8 }, -/turf/open/floor/concrete/reinforced, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, /area/hangar) "bu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "bP" = ( /obj/effect/turf_decal/industrial/traffic{ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "ce" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "cz" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "cP" = ( /obj/effect/turf_decal/siding/wood{ @@ -99,7 +124,9 @@ /obj/structure/marker_beacon{ picked_color = "Teal" }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "dj" = ( /obj/effect/turf_decal/siding/wood{ @@ -115,7 +142,9 @@ dir = 8 }, /obj/machinery/light/directional/east, -/turf/open/floor/concrete/reinforced, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, /area/hangar) "dr" = ( /obj/structure/flora/rock/pile/icy, @@ -126,7 +155,9 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "eE" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ @@ -134,11 +165,15 @@ }, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "eP" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "eW" = ( /obj/effect/decal/cleanable/dirt, @@ -149,14 +184,18 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "fn" = ( /obj/effect/turf_decal/steeldecal/steel_decals6, /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "ft" = ( /obj/effect/turf_decal/siding/wood{ @@ -165,21 +204,28 @@ /obj/structure/sign/poster/official/moth/meth{ pixel_y = 32 }, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "fM" = ( /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "fQ" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "hl" = ( /obj/machinery/door/airlock, /obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, +/obj/structure/lattice/catwalk, +/turf/open/floor/engine, /area/hangar) "hz" = ( /obj/effect/turf_decal/siding/wood/end{ @@ -198,36 +244,48 @@ "ik" = ( /obj/structure/fireplace, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/sepia, +/turf/open/floor/plasteel/sepia{ + planetary_atmos = 1 + }, /area/hangar) "il" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "jd" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 }, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "je" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 }, /obj/structure/bookcase/random/fiction, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "ju" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "jD" = ( /obj/machinery/light/floor/hangar, /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "kx" = ( /obj/machinery/computer/cargo/express{ @@ -242,7 +300,9 @@ pixel_y = -10 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "kL" = ( /obj/effect/turf_decal/siding/wood{ @@ -256,19 +316,25 @@ dir = 1 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet/green, +/turf/open/floor/carpet/green{ + planetary_atmos = 1 + }, /area/hangar) "lE" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ dir = 1 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "lS" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "lT" = ( /obj/structure/table, @@ -286,11 +352,15 @@ pixel_y = 3; pixel_x = 4 }, -/turf/open/floor/carpet/green, +/turf/open/floor/carpet/green{ + planetary_atmos = 1 + }, /area/hangar) "mh" = ( /obj/structure/bookcase/random/fiction, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "mu" = ( /obj/effect/turf_decal/siding/wood, @@ -307,32 +377,42 @@ /area/hangar) "mX" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "nl" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 }, /obj/machinery/light/directional/north, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "oi" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "oO" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "oU" = ( /obj/structure/firelock_frame, -/turf/open/floor/plating, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "oY" = ( /obj/machinery/vending/coffee{ @@ -348,7 +428,9 @@ pixel_x = -10 }, /obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/concrete/reinforced, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, /area/hangar) "po" = ( /obj/structure/railing/corner{ @@ -364,20 +446,26 @@ pixel_x = -32 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "qa" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "qb" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "qi" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ @@ -385,7 +473,9 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "rn" = ( /obj/structure/grille/broken, @@ -395,14 +485,17 @@ pixel_x = 2 }, /turf/open/floor/plating{ - icon_state = "foam_plating" + icon_state = "foam_plating"; + planetary_atmos = 1 }, /area/hangar) "rq" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 }, -/turf/open/floor/carpet/red, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, /area/hangar) "rB" = ( /obj/effect/turf_decal/siding/wood{ @@ -419,18 +512,24 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "se" = ( /obj/effect/turf_decal/trimline/opaque/yellow/warning{ dir = 4 }, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, /area/hangar) "sg" = ( /obj/structure/bookcase/random/fiction, /obj/item/radio/intercom/directional/south, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "si" = ( /obj/effect/decal/cleanable/dirt, @@ -443,16 +542,22 @@ /obj/effect/turf_decal/arrows{ dir = 1 }, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, /area/hangar) "sF" = ( /obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "sT" = ( /obj/effect/turf_decal/techfloor/corner, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "tc" = ( /obj/machinery/door/poddoor/multi_tile/four_tile_ver, @@ -467,11 +572,15 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "tW" = ( /obj/effect/landmark/outpost/elevator, -/turf/open/floor/plasteel/elevatorshaft, +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, /area/hangar) "ut" = ( /obj/structure/rack, @@ -491,7 +600,9 @@ pixel_y = 2 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "uB" = ( /obj/structure/railing{ @@ -506,13 +617,17 @@ }, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "vt" = ( /obj/effect/turf_decal/industrial/traffic{ dir = 1 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "vA" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ @@ -520,7 +635,9 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "wx" = ( /obj/effect/turf_decal/siding/wood{ @@ -529,33 +646,44 @@ /obj/structure/chair/comfy/black{ dir = 4 }, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "xe" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 1 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "xE" = ( -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "xK" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "yh" = ( /obj/effect/turf_decal/techfloor, /obj/effect/turf_decal/techfloor/hole, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "yK" = ( /obj/structure/catwalk/over/plated_catwalk, /obj/machinery/light/broken/directional/south, /turf/open/floor/plating{ - icon_state = "panelscorched" + icon_state = "panelscorched"; + planetary_atmos = 1 }, /area/hangar) "yT" = ( @@ -575,26 +703,30 @@ pixel_y = -7; pixel_x = -8 }, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "yV" = ( /obj/effect/turf_decal/industrial/traffic/corner{ dir = 1 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "yY" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - volume = 10000000; - dir = 1 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) "zj" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "zr" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ @@ -604,20 +736,28 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "zT" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "zX" = ( /obj/structure/reagent_dispensers/watertank, /obj/machinery/light/directional/east, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "Ab" = ( -/turf/open/floor/plating, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "BA" = ( /obj/effect/turf_decal/siding/wood/corner, @@ -627,9 +767,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/carpet/red, /area/hangar) -"Cb" = ( -/turf/open/floor/plasteel/dark, -/area/hangar) "Cg" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -643,7 +780,9 @@ pixel_y = 7 }, /obj/item/toy/cards/deck/cas, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "CJ" = ( /obj/structure/chair/comfy/black{ @@ -652,7 +791,9 @@ /obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "CK" = ( /obj/structure/grille, @@ -664,23 +805,31 @@ dir = 8; layer = 4.1 }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "CV" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "CW" = ( /obj/structure/statue/snow/snowlegion, -/turf/open/floor/concrete/reinforced, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, /area/hangar) "Df" = ( /obj/effect/decal/cleanable/oil, /obj/item/radio/intercom/directional/east, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "Dy" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ @@ -688,33 +837,40 @@ }, /obj/machinery/light/floor/hangar, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "EQ" = ( /obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "Fi" = ( /turf/open/water/beach/deep, /area/hangar) "Fm" = ( -/obj/machinery/door/airlock/centcom{ - req_access_txt = "109" +/obj/machinery/door/airlock/outpost{ + req_one_access_txt = "109" }, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 1 +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 }, -/turf/open/floor/plasteel/dark, /area/hangar) "Fz" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "FB" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "FF" = ( /obj/effect/turf_decal/siding/wood{ @@ -725,7 +881,9 @@ "FN" = ( /obj/effect/turf_decal/siding/wood/corner, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "FQ" = ( /turf/closed/mineral/random/snow, @@ -733,26 +891,34 @@ "Gc" = ( /obj/effect/turf_decal/industrial/warning, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "Gf" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "Gl" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 }, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "Hi" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "Im" = ( /obj/effect/turf_decal/siding/wood{ @@ -765,7 +931,9 @@ /area/hangar) "Io" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "Iu" = ( /obj/effect/turf_decal/siding/wood{ @@ -780,7 +948,9 @@ /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "JD" = ( /obj/effect/turf_decal/siding/wood{ @@ -797,19 +967,25 @@ /area/hangar) "JX" = ( /obj/effect/turf_decal/techfloor, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "Kg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "Kp" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, /obj/machinery/light/directional/west, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "KV" = ( /obj/effect/turf_decal/siding/wood{ @@ -818,17 +994,23 @@ /obj/machinery/vending/cigarette{ pixel_x = 5 }, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "Lg" = ( -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "Ls" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 }, /obj/machinery/light/directional/east, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "LT" = ( /obj/effect/decal/cleanable/dirt, @@ -846,7 +1028,9 @@ dir = 1; layer = 4.1 }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "MI" = ( /obj/structure/closet/crate, @@ -854,7 +1038,9 @@ /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light/directional/east, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "MP" = ( /turf/closed/indestructible/reinforced, @@ -864,7 +1050,9 @@ dir = 1 }, /obj/structure/girder/displaced, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "Na" = ( /obj/effect/decal/cleanable/dirt, @@ -874,26 +1062,33 @@ /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "Nt" = ( /obj/machinery/door/airlock, /obj/effect/landmark/outpost/elevator_machine, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, +/obj/structure/lattice/catwalk, +/turf/open/floor/engine, /area/hangar) "Nu" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 }, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "NP" = ( /obj/machinery/light/floor/hangar, /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "Ph" = ( /obj/effect/turf_decal/siding/wood, @@ -908,7 +1103,9 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "Qk" = ( /obj/effect/turf_decal/siding/wood, @@ -931,14 +1128,18 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "RV" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 }, /obj/structure/fluff/hedge, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "Sj" = ( /obj/structure/railing{ @@ -961,7 +1162,9 @@ pixel_y = 3 }, /obj/machinery/light/directional/south, -/turf/open/floor/concrete/reinforced, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, /area/hangar) "Sx" = ( /turf/template_noop, @@ -978,10 +1181,14 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "SU" = ( -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/tech{ + planetary_atmos = 1 + }, /area/hangar) "Tg" = ( /obj/structure/girder, @@ -993,14 +1200,18 @@ dir = 1; layer = 4.1 }, -/turf/open/floor/plating, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "TD" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "TY" = ( /obj/effect/turf_decal/siding/wood{ @@ -1013,11 +1224,15 @@ /obj/effect/turf_decal/industrial/traffic/corner{ dir = 4 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "Uu" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) "Ux" = ( /obj/structure/noticeboard{ @@ -1033,15 +1248,15 @@ pixel_y = 14 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/sepia, +/turf/open/floor/plasteel/sepia{ + planetary_atmos = 1 + }, /area/hangar) "UA" = ( /obj/structure/girder/reinforced, -/turf/open/floor/plating, -/area/hangar) -"Vl" = ( -/obj/machinery/atmospherics/components/unary/passive_vent, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "VM" = ( /obj/structure/flora/rock/icy, @@ -1054,7 +1269,8 @@ pixel_y = 9 }, /turf/open/floor/plating{ - icon_state = "panelscorched" + icon_state = "panelscorched"; + planetary_atmos = 1 }, /area/hangar) "Xm" = ( @@ -1078,7 +1294,9 @@ pixel_y = 32 }, /obj/machinery/light/directional/east, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "Xp" = ( /obj/effect/turf_decal/siding/wood, @@ -1092,7 +1310,9 @@ /area/hangar) "XQ" = ( /obj/structure/grille, -/turf/open/floor/plating, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, /area/hangar) "XT" = ( /obj/structure/rack{ @@ -1114,7 +1334,9 @@ /obj/item/statuebust{ pixel_x = 6 }, -/turf/open/floor/plasteel/sepia, +/turf/open/floor/plasteel/sepia{ + planetary_atmos = 1 + }, /area/hangar) "Yn" = ( /obj/effect/turf_decal/siding/wood{ @@ -1125,25 +1347,33 @@ /turf/open/floor/concrete/tiles, /area/hangar) "YD" = ( -/turf/open/floor/plasteel/elevatorshaft, +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, /area/hangar) "YI" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, -/turf/open/floor/wood, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, /area/hangar) "YN" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 }, -/turf/open/floor/concrete/slab_1, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, /area/hangar) "ZX" = ( /obj/effect/turf_decal/techfloor/corner{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, /area/hangar) (1,1,1) = {" @@ -1301,7 +1531,7 @@ Ab Ab EQ uX -Cb +yY FQ FQ MP @@ -1333,7 +1563,7 @@ Ab Ab Ab fb -Cb +yY FQ FQ MP @@ -1365,7 +1595,7 @@ Ab Ab df lE -Cb +yY FQ FQ MP @@ -1429,7 +1659,7 @@ Ab Ab Ab qi -Cb +yY FQ FQ MP @@ -1461,7 +1691,7 @@ Ab Ab Ab fb -Cb +yY FQ FQ MP @@ -1525,7 +1755,7 @@ Ab Ab df lE -Cb +yY FQ FQ MP @@ -1557,7 +1787,7 @@ Ab Ab Ab lE -Cb +yY FQ FQ MP @@ -1653,7 +1883,7 @@ Ab Ab Ab qi -Cb +yY FQ FQ MP @@ -1685,7 +1915,7 @@ Ab Ab df uX -Cb +yY FQ FQ MP @@ -1717,7 +1947,7 @@ Ab Ab Ab fb -Cb +yY MP FQ MP @@ -1749,7 +1979,7 @@ Ab Ab Ab fb -Cb +yY FQ FQ MP @@ -1781,7 +2011,7 @@ Ab Ab Ab lE -Cb +yY FQ FQ MP @@ -1909,7 +2139,7 @@ Ab Ab Ab lE -Cb +yY FQ FQ MP @@ -1941,7 +2171,7 @@ Ab Ab Ab lE -Cb +yY FQ FQ MP @@ -1973,7 +2203,7 @@ Ab Ab Ab lE -Cb +yY FQ FQ MP @@ -2005,7 +2235,7 @@ Ab Ab df fb -Cb +yY FQ FQ MP @@ -2037,7 +2267,7 @@ Ab Ab Ab fb -Cb +yY FQ FQ MP @@ -2133,7 +2363,7 @@ Ab Ab Ab lE -Cb +yY FQ FQ MP @@ -2165,7 +2395,7 @@ Ab Ab df lE -Cb +yY FQ FQ MP @@ -2293,7 +2523,7 @@ Ab Ab Ab lE -Cb +yY FQ FQ MP @@ -2325,7 +2555,7 @@ Ab Ab df lE -Cb +yY FQ FQ MP @@ -2357,7 +2587,7 @@ Ab Ab Ab lE -Cb +yY FQ FQ MP @@ -2389,7 +2619,7 @@ Ab Ab Ab fb -Cb +yY FQ FQ MP @@ -2421,7 +2651,7 @@ Ab Ab Ab fb -Cb +yY MP MP MP @@ -2453,7 +2683,7 @@ Ab Ab Ab uX -Vl +yY Fm yY MP @@ -2837,7 +3067,7 @@ Ab Ab Ab uX -Cb +yY FQ FQ MP @@ -2869,7 +3099,7 @@ Ab Ab Ab lE -Cb +yY FQ FQ MP @@ -2901,7 +3131,7 @@ Ab Ab Ab lE -Cb +yY FQ FQ MP @@ -2933,7 +3163,7 @@ Ab Ab Ab lE -Cb +yY oU cz MP @@ -2965,7 +3195,7 @@ Ab Ab df fb -Cb +yY Tg yK MP @@ -2997,7 +3227,7 @@ Ab Ab Ab fb -Cb +yY bp Wp MP @@ -3029,7 +3259,7 @@ Ab Ab Ab uX -Cb +yY Tg rn MP @@ -3061,7 +3291,7 @@ Ab Ab Ab lE -Cb +yY Tg XQ MP @@ -3070,7 +3300,7 @@ MP MP FQ FQ -Cb +yY lS fn NP @@ -3093,7 +3323,7 @@ oO Dy RO vA -Cb +yY LY FQ MP @@ -3103,11 +3333,11 @@ MP FQ MP MP -Cb -Cb -Cb -Cb -Cb +yY +yY +yY +yY +yY aR Gc MI @@ -3117,15 +3347,15 @@ kx ut zX aR -Cb +yY aR aR -Cb -Cb -Cb +yY +yY +yY FB -Cb -Cb +yY +yY FQ FQ MP diff --git a/_maps/outpost/hangar/nt_asteroid_56x40.dmm b/_maps/outpost/hangar/nt_asteroid_56x40.dmm new file mode 100644 index 000000000000..fd876e5844d1 --- /dev/null +++ b/_maps/outpost/hangar/nt_asteroid_56x40.dmm @@ -0,0 +1,5478 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ae" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"ak" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, +/area/hangar) +"au" = ( +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"aE" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, +/area/hangar) +"ba" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"bx" = ( +/obj/effect/turf_decal/techfloor, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"bS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"ca" = ( +/obj/effect/landmark/outpost/hangar_dock, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"cj" = ( +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"dQ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, +/area/hangar) +"ee" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, +/area/hangar) +"ei" = ( +/obj/machinery/door/airlock/outpost{ + req_access_txt = "109" + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"ew" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"eA" = ( +/obj/machinery/door/airlock, +/obj/effect/landmark/outpost/elevator_machine, +/obj/structure/lattice/catwalk, +/turf/open/floor/engine, +/area/hangar) +"eH" = ( +/turf/closed/indestructible/reinforced, +/area/hangar) +"eS" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"fd" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"fh" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, +/area/hangar) +"fv" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, +/area/hangar) +"hB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/sign/poster/official/moth/meth{ + pixel_y = 32 + }, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"hG" = ( +/obj/effect/decal/cleanable/oil, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"hL" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"il" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/mineral/random/snow, +/area/hangar) +"iT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"jj" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"jF" = ( +/obj/structure/marker_beacon{ + picked_color = "Teal" + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"jI" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/techfloor/hole, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"jK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_x = -32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"kK" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, +/area/hangar) +"lk" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"lv" = ( +/turf/open/floor/plasteel/tech, +/area/hangar) +"lF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, +/area/hangar) +"lI" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"lN" = ( +/obj/effect/turf_decal/techfloor/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"lS" = ( +/obj/structure/railing{ + dir = 10 + }, +/turf/open/water/beach/deep, +/area/hangar) +"lY" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"lZ" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"mx" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"mK" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"nD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"nM" = ( +/obj/machinery/vending/coffee{ + pixel_x = 5 + }, +/obj/item/kirbyplants{ + icon_state = "plant-22"; + pixel_x = -11 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/elevator_call_button{ + pixel_y = 24; + pixel_x = -10 + }, +/obj/effect/landmark/outpost/elevator_machine, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, +/area/hangar) +"oa" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"op" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"oJ" = ( +/turf/open/space/basic, +/area/hangar) +"oL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/outpost/hangar_numbers, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"pp" = ( +/obj/structure/bookcase/random/fiction, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"pK" = ( +/obj/structure/chair/sofa/left{ + dir = 8 + }, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, +/area/hangar) +"qh" = ( +/obj/structure/bookcase/random/fiction, +/obj/structure/sign/plaques/deempisi{ + pixel_y = 22; + pixel_x = -8 + }, +/obj/item/toy/plush/hornet{ + pixel_x = 9; + pixel_y = 26 + }, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"qD" = ( +/obj/machinery/light/floor/hangar, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"qK" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/light/broken/directional/south, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 + }, +/area/hangar) +"qR" = ( +/obj/structure/flora/rock/pile/icy, +/turf/open/water/beach/deep, +/area/hangar) +"qT" = ( +/obj/effect/landmark/outpost/elevator, +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) +"rf" = ( +/obj/structure/noticeboard{ + pixel_y = 31 + }, +/obj/item/storage/box/matches, +/obj/item/grown/log{ + pixel_x = 7; + pixel_y = 14 + }, +/obj/item/grown/log{ + pixel_x = 7; + pixel_y = 14 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/sepia{ + planetary_atmos = 1 + }, +/area/hangar) +"rn" = ( +/obj/structure/fireplace, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/sepia{ + planetary_atmos = 1 + }, +/area/hangar) +"rw" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"rT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/table/wood, +/obj/item/storage/pill_bottle/dice{ + pixel_x = -6 + }, +/obj/item/toy/figure/lawyer{ + pixel_x = 3; + pixel_y = 7 + }, +/obj/item/toy/cards/deck/cas, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"rX" = ( +/obj/effect/turf_decal/steeldecal/steel_decals6, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"sn" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 1 + }, +/obj/structure/girder/displaced, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"sE" = ( +/obj/structure/chair/comfy{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/carpet/green{ + planetary_atmos = 1 + }, +/area/hangar) +"tD" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + pixel_x = 5; + pixel_y = 14 + }, +/obj/item/storage/photo_album/library{ + pixel_y = -2; + pixel_x = -4 + }, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, +/area/hangar) +"uz" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"uO" = ( +/obj/machinery/door/poddoor/multi_tile/four_tile_ver, +/turf/closed/indestructible/reinforced, +/area/hangar) +"uV" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, +/area/hangar) +"vc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, +/area/hangar) +"vg" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"vi" = ( +/obj/item/stack/rods{ + pixel_x = 7; + pixel_y = -9 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg2"; + planetary_atmos = 1 + }, +/area/hangar) +"wk" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 + }, +/obj/machinery/light/floor/hangar, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"wm" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"wp" = ( +/turf/template_noop, +/area/template_noop) +"xo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/light/directional/south, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, +/area/hangar) +"xp" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"xW" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"yi" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair/office{ + dir = 4 + }, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, +/area/hangar) +"yL" = ( +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"zl" = ( +/obj/structure/chair/sofa/right{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, +/area/hangar) +"Ag" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/bookcase/random/fiction, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"Ai" = ( +/obj/structure/grille/broken, +/obj/structure/catwalk/over/plated_catwalk, +/obj/item/toy/plush/beeplushie{ + pixel_y = -1; + pixel_x = 2 + }, +/turf/open/floor/plating{ + icon_state = "foam_plating"; + planetary_atmos = 1 + }, +/area/hangar) +"AT" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/hangar) +"AW" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"Bp" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"BX" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/fluff/hedge, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"Cl" = ( +/obj/machinery/door/airlock, +/obj/effect/landmark/outpost/elevator_machine, +/obj/effect/decal/cleanable/dirt, +/obj/structure/lattice/catwalk, +/turf/open/floor/engine, +/area/hangar) +"Cw" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw{ + dir = 8 + }, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Cx" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Df" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Dk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"Dr" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/vending/cigarette{ + pixel_x = 5 + }, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"DT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Ed" = ( +/obj/machinery/computer/cargo/express{ + dir = 8; + pixel_x = 7 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/decal/cleanable/garbage{ + pixel_x = -3; + pixel_y = -10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"EZ" = ( +/turf/open/floor/plasteel/elevatorshaft{ + planetary_atmos = 1 + }, +/area/hangar) +"Fs" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"FK" = ( +/obj/structure/firelock_frame, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"FP" = ( +/obj/structure/table, +/obj/item/paper/pamphlet/gateway{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/item/paper/pamphlet/centcom{ + pixel_x = 8; + pixel_y = 1 + }, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, +/area/hangar) +"FS" = ( +/obj/machinery/light/floor/hangar, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Gj" = ( +/obj/structure/statue/snow/snowlegion, +/turf/open/floor/concrete/reinforced{ + planetary_atmos = 1 + }, +/area/hangar) +"GW" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Hs" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"HD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Ib" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"Ig" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/structure/table/wood, +/obj/item/toy/cards/deck{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/toy/cards/deck/kotahi{ + pixel_x = 5; + pixel_y = 2 + }, +/obj/item/toy/plush/moth{ + pixel_y = -7; + pixel_x = -8 + }, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"Il" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/hangar) +"Io" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"Is" = ( +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/structure/girder, +/obj/structure/railing{ + dir = 1; + layer = 4.1 + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"Iy" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"IH" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"IV" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Ji" = ( +/obj/structure/grille, +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"JA" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"JM" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Kf" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Ky" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"KQ" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"KT" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/spawner/lootdrop/glowstick{ + pixel_x = 5; + pixel_y = 9 + }, +/turf/open/floor/plating{ + icon_state = "panelscorched"; + planetary_atmos = 1 + }, +/area/hangar) +"Lc" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"LD" = ( +/turf/open/water/beach/deep, +/area/hangar) +"LM" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"Mf" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/floor/hangar, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Mh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"MN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = 3; + pixel_y = 2 + }, +/obj/item/pen{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/structure/sign/poster/official/fruit_bowl{ + pixel_y = 32 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"Nt" = ( +/obj/structure/flora/rock/icy, +/turf/open/water/beach/deep, +/area/hangar) +"NC" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 1 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"NN" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"NV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"Ob" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"On" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/bookcase/random/fiction, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"OB" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_ccw{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"OC" = ( +/obj/machinery/light/floor/hangar, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"OL" = ( +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"Pg" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"Pi" = ( +/obj/effect/turf_decal/techfloor/corner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Pj" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"PQ" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = 6; + pixel_y = 17 + }, +/obj/structure/sign/poster/official/sgt{ + pixel_x = 32 + }, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, +/area/hangar) +"Rd" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, +/area/hangar) +"Rh" = ( +/obj/structure/table, +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/siding/wood, +/obj/item/newspaper{ + pixel_x = -5; + pixel_y = -1 + }, +/obj/item/newspaper{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/machinery/jukebox/boombox{ + pixel_y = 3; + pixel_x = 4 + }, +/turf/open/floor/carpet/green{ + planetary_atmos = 1 + }, +/area/hangar) +"Rn" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Ry" = ( +/obj/structure/bookcase/random/fiction, +/turf/open/floor/wood{ + planetary_atmos = 1 + }, +/area/hangar) +"Rz" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/water/beach/deep, +/area/hangar) +"RX" = ( +/obj/structure/girder, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/structure/railing{ + dir = 1; + layer = 4.1 + }, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"Sc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"Sh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"Sq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/hangar) +"Sw" = ( +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/turf/open/water/beach/deep, +/area/hangar) +"SU" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = 32 + }, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, +/area/hangar) +"SY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"Tt" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/chair/office{ + dir = 8 + }, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, +/area/hangar) +"TU" = ( +/obj/structure/rack{ + color = "#A47449"; + pixel_y = 11 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/grown/log{ + pixel_x = -7; + pixel_y = 20 + }, +/obj/item/grown/log{ + pixel_x = 7; + pixel_y = 20 + }, +/obj/item/grown/log{ + pixel_y = 25 + }, +/obj/item/statuebust{ + pixel_x = 6 + }, +/turf/open/floor/plasteel/sepia{ + planetary_atmos = 1 + }, +/area/hangar) +"Un" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/hangar) +"UY" = ( +/turf/closed/mineral/random/snow, +/area/hangar) +"VD" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"VE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, +/area/hangar) +"VV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"WE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/floor/concrete/tiles{ + planetary_atmos = 1 + }, +/area/hangar) +"Xo" = ( +/obj/structure/grille, +/turf/open/floor/plating{ + planetary_atmos = 1 + }, +/area/hangar) +"Xu" = ( +/obj/structure/rack, +/obj/item/poster/random_official{ + pixel_x = 2; + pixel_y = 9 + }, +/obj/item/poster/random_official{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/destTagger{ + pixel_x = -5 + }, +/obj/item/export_scanner{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"YV" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/concrete/slab_1{ + planetary_atmos = 1 + }, +/area/hangar) +"YW" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/hangar) +"YY" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/arrow_cw{ + dir = 8 + }, +/obj/machinery/light/floor/hangar, +/obj/effect/turf_decal/industrial/warning/corner, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"ZA" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/carpet/red{ + planetary_atmos = 1 + }, +/area/hangar) +"ZK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) +"ZX" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/dark{ + planetary_atmos = 1 + }, +/area/hangar) + +(1,1,1) = {" +wp +wp +wp +wp +eH +eH +eH +eH +eH +uO +eH +eH +eH +uO +eH +eH +eH +uO +oJ +eH +eH +uO +oJ +eH +eH +uO +oJ +eH +eH +uO +eH +eH +eH +uO +eH +eH +eH +uO +eH +eH +eH +uO +eH +eH +eH +uO +eH +eH +wp +wp +wp +wp +"} +(2,1,1) = {" +wp +wp +wp +eH +eH +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +YW +eH +eH +wp +wp +wp +"} +(3,1,1) = {" +eH +eH +eH +eH +lk +lv +lv +lv +lv +lv +lv +lv +lv +Un +lv +lv +lv +lv +Un +lv +lv +lv +lv +Un +lv +lv +lv +lv +lv +Un +lv +lv +lv +lv +Un +lv +lv +lv +lv +Un +lv +lv +lv +lv +Un +lv +lv +Iy +eH +eH +eH +eH +"} +(4,1,1) = {" +eH +UY +UY +UY +lk +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +AT +Iy +UY +UY +UY +eH +"} +(5,1,1) = {" +eH +UY +UY +Rn +fd +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +ca +cj +KQ +yL +UY +UY +eH +"} +(6,1,1) = {" +eH +UY +UY +Df +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +yL +UY +UY +eH +"} +(7,1,1) = {" +eH +UY +UY +IV +rw +jF +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +jF +NC +yL +UY +UY +eH +"} +(8,1,1) = {" +eH +UY +UY +Lc +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +VV +eH +UY +eH +"} +(9,1,1) = {" +eH +UY +UY +Rn +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +op +yL +UY +UY +eH +"} +(10,1,1) = {" +eH +UY +eH +Df +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +yL +UY +UY +eH +"} +(11,1,1) = {" +eH +UY +UY +IV +fd +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +KQ +VV +UY +UY +eH +"} +(12,1,1) = {" +eH +UY +UY +Lc +rw +jF +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +jF +NC +yL +UY +UY +eH +"} +(13,1,1) = {" +eH +UY +UY +uz +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +yL +UY +UY +eH +"} +(14,1,1) = {" +eH +UY +UY +Df +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +DT +UY +UY +eH +"} +(15,1,1) = {" +eH +UY +UY +Df +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +VV +UY +UY +eH +"} +(16,1,1) = {" +eH +UY +UY +Lc +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +op +yL +UY +UY +eH +"} +(17,1,1) = {" +eH +UY +UY +uz +fd +jF +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +jF +KQ +yL +UY +UY +eH +"} +(18,1,1) = {" +eH +UY +UY +Df +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +yL +eH +UY +eH +"} +(19,1,1) = {" +eH +UY +UY +Df +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +yL +UY +UY +eH +"} +(20,1,1) = {" +eH +UY +UY +ZX +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +yL +UY +UY +eH +"} +(21,1,1) = {" +eH +UY +UY +Rn +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +op +VV +UY +UY +eH +"} +(22,1,1) = {" +eH +UY +UY +Df +rw +jF +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +jF +hL +DT +UY +UY +eH +"} +(23,1,1) = {" +eH +UY +UY +Df +fd +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +KQ +DT +UY +UY +eH +"} +(24,1,1) = {" +eH +UY +UY +Lc +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +yL +UY +UY +eH +"} +(25,1,1) = {" +eH +UY +UY +uz +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +yL +UY +UY +eH +"} +(26,1,1) = {" +eH +UY +UY +IV +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +yL +UY +UY +eH +"} +(27,1,1) = {" +eH +UY +eH +Df +JM +jF +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +jF +hL +yL +UY +UY +eH +"} +(28,1,1) = {" +eH +UY +UY +ZX +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +yL +UY +UY +eH +"} +(29,1,1) = {" +eH +UY +UY +Rn +fd +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +KQ +VV +UY +UY +eH +"} +(30,1,1) = {" +eH +UY +UY +Df +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +VV +UY +UY +eH +"} +(31,1,1) = {" +eH +UY +UY +Df +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +yL +UY +UY +eH +"} +(32,1,1) = {" +eH +UY +UY +Lc +JM +jF +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +jF +NC +yL +UY +UY +eH +"} +(33,1,1) = {" +eH +UY +UY +Rn +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +VV +UY +UY +eH +"} +(34,1,1) = {" +eH +UY +UY +Df +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +VV +eH +UY +eH +"} +(35,1,1) = {" +eH +UY +UY +Df +fd +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +KQ +VV +UY +UY +eH +"} +(36,1,1) = {" +eH +UY +UY +ZX +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +yL +UY +UY +eH +"} +(37,1,1) = {" +eH +UY +UY +Rn +rw +jF +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +jF +NC +yL +UY +UY +eH +"} +(38,1,1) = {" +eH +UY +eH +Df +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +yL +UY +UY +eH +"} +(39,1,1) = {" +eH +UY +UY +Df +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +yL +UY +UY +eH +"} +(40,1,1) = {" +eH +UY +UY +ZX +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +yL +eH +eH +eH +"} +(41,1,1) = {" +eH +UY +UY +Rn +fd +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +KQ +yL +ei +yL +eH +"} +(42,1,1) = {" +eH +UY +UY +Df +rw +jF +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +jF +NC +Pi +eH +eH +eH +"} +(43,1,1) = {" +eH +UY +UY +Df +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +bx +UY +UY +eH +"} +(44,1,1) = {" +eH +UY +UY +ZX +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +bx +UY +UY +eH +"} +(45,1,1) = {" +eH +UY +UY +Rn +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +bx +UY +UY +eH +"} +(46,1,1) = {" +eH +UY +UY +Df +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +jI +UY +UY +eH +"} +(47,1,1) = {" +eH +UY +UY +Df +fd +jF +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +jF +KQ +bx +eH +UY +eH +"} +(48,1,1) = {" +eH +UY +UY +ZX +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +bx +UY +UY +eH +"} +(49,1,1) = {" +eH +UY +UY +Rn +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +bx +UY +UY +eH +"} +(50,1,1) = {" +eH +UY +UY +Df +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +sn +jI +UY +UY +eH +"} +(51,1,1) = {" +eH +UY +UY +Df +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +bx +UY +UY +eH +"} +(52,1,1) = {" +eH +UY +UY +ZX +rw +jF +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +jF +hL +lN +UY +UY +eH +"} +(53,1,1) = {" +eH +UY +UY +Rn +qD +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +KQ +yL +UY +UY +eH +"} +(54,1,1) = {" +eH +UY +UY +Df +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +yL +UY +UY +eH +"} +(55,1,1) = {" +eH +UY +eH +Df +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +yL +UY +UY +eH +"} +(56,1,1) = {" +eH +UY +UY +ZX +JM +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +yL +FK +Hs +eH +"} +(57,1,1) = {" +eH +UY +UY +Rn +JM +jF +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +jF +hL +yL +RX +qK +eH +"} +(58,1,1) = {" +eH +UY +UY +Df +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +hL +yL +vi +KT +eH +"} +(59,1,1) = {" +eH +UY +UY +Df +fd +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +KQ +yL +RX +Ai +eH +"} +(60,1,1) = {" +eH +UY +UY +ZX +rw +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +cj +NC +yL +RX +Xo +eH +"} +(61,1,1) = {" +eH +UY +UY +yL +Bp +OB +OB +OB +OB +Cw +OB +OB +Cw +OB +OB +OB +Cw +OB +OB +OB +Cw +OB +OB +OB +Cw +OB +OB +rX +OC +Cx +SY +ew +YY +xp +HD +FS +Ob +VD +Mf +vg +Cx +OC +ZK +Cx +ew +wk +vg +GW +yL +Is +UY +eH +"} +(62,1,1) = {" +eH +UY +UY +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +yL +VV +NN +lZ +hG +mx +Ed +Xu +Kf +VV +yL +VV +VV +yL +yL +yL +DT +yL +yL +UY +UY +eH +"} +(63,1,1) = {" +eH +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +eH +eH +eH +eH +hB +au +Fs +UY +UY +eH +eH +Ji +Ji +Ji +eH +UY +UY +iT +au +YV +UY +UY +UY +UY +UY +UY +UY +eH +"} +(64,1,1) = {" +eH +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +UY +eH +Gj +eH +Pj +NV +ae +Ky +UY +UY +eH +UY +UY +UY +eH +UY +Io +wm +NV +YV +BX +UY +UY +UY +UY +UY +UY +eH +"} +(65,1,1) = {" +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +eH +UY +UY +eH +eH +eH +xW +lI +nD +Pg +Ky +UY +eH +Ji +Ji +Ji +eH +Io +IH +NV +jj +Sh +mK +Ag +UY +UY +eH +eH +eH +eH +"} +(66,1,1) = {" +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +eH +UY +UY +LD +LD +Rz +lS +xW +ba +NV +Pg +JA +jK +JA +JA +JA +Ib +wm +au +jj +Sh +Dk +OL +On +UY +UY +eH +wp +wp +wp +"} +(67,1,1) = {" +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +eH +UY +UY +UY +LD +qR +Rz +lS +xW +ba +NV +NV +au +au +au +au +au +NV +eS +oa +OL +Il +Dk +On +UY +UY +eH +wp +wp +wp +"} +(68,1,1) = {" +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +eH +UY +UY +UY +LD +LD +LD +Rz +lS +xW +Sc +Mh +lY +lY +Sc +Mh +Sc +lY +oa +Dr +LM +OL +Sq +Ig +rT +UY +eH +wp +wp +wp +"} +(69,1,1) = {" +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +eH +eH +UY +UY +UY +LD +LD +LD +Rz +Sw +Sw +eH +UY +il +UY +eH +fh +NV +uV +eH +MN +bS +lF +dQ +ZA +eH +eH +wp +wp +wp +"} +(70,1,1) = {" +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +eH +eH +UY +eH +Nt +LD +LD +qR +LD +eH +eH +eH +eH +eH +eH +SU +NV +xo +eH +eH +rf +Rd +aE +yi +pp +eH +wp +wp +wp +"} +(71,1,1) = {" +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +eH +eH +eH +eH +LD +LD +LD +AW +eH +EZ +EZ +qT +eA +ee +WE +NV +uV +sE +eH +rn +ak +aE +tD +Ry +eH +wp +wp +wp +"} +(72,1,1) = {" +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +eH +eH +eH +eH +eH +eH +EZ +EZ +EZ +Cl +NV +NV +oL +uV +Rh +eH +TU +vc +fv +Tt +Ry +eH +wp +wp +wp +"} +(73,1,1) = {" +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +eH +EZ +EZ +EZ +Cl +VE +VE +VE +kK +sE +eH +eH +qh +PQ +Ry +eH +eH +wp +wp +wp +"} +(74,1,1) = {" +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +eH +eH +eH +eH +eH +nM +zl +pK +FP +eH +eH +eH +eH +eH +eH +eH +wp +wp +wp +wp +"} +(75,1,1) = {" +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +eH +eH +eH +eH +eH +eH +wp +wp +wp +wp +wp +wp +wp +wp +wp +wp +"} diff --git a/_maps/outpost/hangar/test_20x20.dmm b/_maps/outpost/hangar/test_20x20.dmm deleted file mode 100644 index c4301d8bceea..000000000000 --- a/_maps/outpost/hangar/test_20x20.dmm +++ /dev/null @@ -1,1072 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/open/floor/plating, -/area/hangar) -"b" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 - }, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"e" = ( -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/plasteel, -/area/hangar) -"f" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"g" = ( -/obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating, -/area/hangar) -"h" = ( -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"i" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"j" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel, -/area/hangar) -"k" = ( -/obj/machinery/atmospherics/components/binary/pump/on, -/turf/open/floor/plasteel, -/area/hangar) -"m" = ( -/turf/closed/indestructible/reinforced, -/area/hangar) -"n" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - volume = 10000000 - }, -/turf/open/floor/plasteel, -/area/hangar) -"r" = ( -/obj/item/pipe/binary, -/turf/closed/indestructible/reinforced, -/area/hangar) -"s" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hangar) -"t" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"u" = ( -/obj/structure/marker_beacon{ - picked_color = "Teal" - }, -/turf/open/floor/plating, -/area/hangar) -"w" = ( -/turf/open/floor/plasteel/tech, -/area/hangar) -"y" = ( -/obj/machinery/door/poddoor/multi_tile/four_tile_ver, -/turf/closed/indestructible/reinforced, -/area/hangar) -"D" = ( -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hangar) -"F" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"G" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"H" = ( -/turf/template_noop, -/area/template_noop) -"I" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hangar) -"K" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"Q" = ( -/obj/effect/landmark/outpost/elevator, -/turf/open/floor/plasteel/elevatorshaft, -/area/hangar) -"R" = ( -/obj/machinery/door/airlock, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, -/area/hangar) -"S" = ( -/turf/open/floor/plasteel, -/area/hangar) -"U" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"V" = ( -/obj/machinery/elevator_call_button{ - pixel_y = 25 - }, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, -/area/hangar) -"W" = ( -/turf/open/floor/plasteel/elevatorshaft, -/area/hangar) -"X" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) - -(1,1,1) = {" -H -H -H -m -m -m -m -m -m -m -y -m -m -m -y -m -m -m -y -m -m -m -y -m -m -m -y -m -m -m -m -"} -(2,1,1) = {" -H -H -H -m -S -S -j -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -i -S -S -m -"} -(3,1,1) = {" -H -H -H -m -S -S -j -w -w -t -w -w -w -w -t -w -w -w -w -t -w -w -w -w -t -w -w -i -S -S -m -"} -(4,1,1) = {" -H -H -H -m -S -S -j -U -U -U -U -U -U -U -U -U -U -U -U -U -U -U -U -U -U -U -U -i -S -S -m -"} -(5,1,1) = {" -H -H -H -m -S -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -g -i -S -S -m -"} -(6,1,1) = {" -H -H -H -m -S -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(7,1,1) = {" -H -H -H -m -S -D -j -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -u -i -D -S -m -"} -(8,1,1) = {" -H -H -H -m -S -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(9,1,1) = {" -H -H -H -m -S -S -G -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -S -S -m -"} -(10,1,1) = {" -H -H -H -m -S -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(11,1,1) = {" -H -H -H -m -S -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(12,1,1) = {" -H -H -H -m -S -D -j -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -u -i -D -S -m -"} -(13,1,1) = {" -H -H -H -m -S -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(14,1,1) = {" -H -H -H -m -S -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(15,1,1) = {" -H -H -H -m -S -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(16,1,1) = {" -H -H -H -m -S -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(17,1,1) = {" -H -H -H -m -S -D -j -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -u -i -D -S -m -"} -(18,1,1) = {" -H -H -H -m -S -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(19,1,1) = {" -H -H -H -m -S -S -G -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -b -S -S -m -"} -(20,1,1) = {" -H -H -H -m -S -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(21,1,1) = {" -H -H -H -m -S -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(22,1,1) = {" -H -H -H -m -S -D -j -u -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -u -i -D -S -m -"} -(23,1,1) = {" -H -n -k -r -X -S -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(24,1,1) = {" -m -m -m -m -m -V -j -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -i -S -S -m -"} -(25,1,1) = {" -m -W -W -Q -R -S -s -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -I -f -S -S -m -"} -(26,1,1) = {" -m -W -W -W -R -e -S -S -S -K -S -S -S -S -K -S -S -S -S -K -S -S -S -S -K -S -S -S -S -S -m -"} -(27,1,1) = {" -m -W -W -W -R -S -S -S -h -S -S -S -S -S -S -S -S -S -S -S -S -S -S -S -S -h -S -S -S -S -m -"} -(28,1,1) = {" -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -m -"} diff --git a/_maps/outpost/hangar/test_40x20.dmm b/_maps/outpost/hangar/test_40x20.dmm deleted file mode 100644 index c50c8573660c..000000000000 --- a/_maps/outpost/hangar/test_40x20.dmm +++ /dev/null @@ -1,1732 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/open/floor/plating, -/area/hangar) -"b" = ( -/turf/closed/indestructible/reinforced, -/area/hangar) -"c" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"d" = ( -/obj/machinery/atmospherics/components/binary/pump/on, -/turf/open/floor/plasteel, -/area/hangar) -"g" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"h" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hangar) -"k" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"n" = ( -/obj/item/pipe/binary, -/turf/closed/indestructible/reinforced, -/area/hangar) -"o" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - volume = 10000000 - }, -/turf/open/floor/plasteel, -/area/hangar) -"q" = ( -/turf/open/floor/plasteel, -/area/hangar) -"r" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"t" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"u" = ( -/obj/effect/landmark/outpost/elevator, -/turf/open/floor/plasteel/elevatorshaft, -/area/hangar) -"x" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"y" = ( -/obj/machinery/elevator_call_button{ - pixel_y = 25 - }, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, -/area/hangar) -"z" = ( -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/plasteel, -/area/hangar) -"B" = ( -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hangar) -"C" = ( -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"E" = ( -/obj/machinery/door/airlock, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, -/area/hangar) -"I" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 - }, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"J" = ( -/obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating, -/area/hangar) -"K" = ( -/obj/structure/marker_beacon{ - picked_color = "Teal" - }, -/turf/open/floor/plating, -/area/hangar) -"N" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel, -/area/hangar) -"P" = ( -/turf/template_noop, -/area/template_noop) -"Q" = ( -/turf/open/floor/plasteel/tech, -/area/hangar) -"S" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"T" = ( -/obj/machinery/door/poddoor/multi_tile/four_tile_ver, -/turf/closed/indestructible/reinforced, -/area/hangar) -"V" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hangar) -"W" = ( -/turf/open/floor/plasteel/elevatorshaft, -/area/hangar) -"Z" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) - -(1,1,1) = {" -P -P -P -b -b -b -b -b -b -b -T -b -b -b -T -b -b -b -T -b -b -b -T -b -b -b -T -b -b -b -b -"} -(2,1,1) = {" -P -P -P -b -q -q -N -S -S -S -S -S -S -S -S -S -S -S -S -S -S -S -S -S -S -S -S -k -q -q -b -"} -(3,1,1) = {" -P -P -P -b -q -q -N -Q -Q -Z -Q -Q -Q -Q -Z -Q -Q -Q -Q -Z -Q -Q -Q -Q -Z -Q -Q -k -q -q -b -"} -(4,1,1) = {" -P -P -P -b -q -q -N -x -x -x -x -x -x -x -x -x -x -x -x -x -x -x -x -x -x -x -x -k -q -q -b -"} -(5,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -J -k -q -q -b -"} -(6,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(7,1,1) = {" -P -P -P -b -q -B -N -K -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -K -k -B -q -b -"} -(8,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(9,1,1) = {" -P -P -P -b -q -q -t -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -I -q -q -b -"} -(10,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(11,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(12,1,1) = {" -P -P -P -b -q -B -N -K -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -K -k -B -q -b -"} -(13,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(14,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(15,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(16,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(17,1,1) = {" -P -P -P -b -q -B -N -K -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -K -k -B -q -b -"} -(18,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(19,1,1) = {" -P -P -P -b -q -q -t -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -I -q -q -b -"} -(20,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(21,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(22,1,1) = {" -P -P -P -b -q -B -N -K -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -K -k -B -q -b -"} -(23,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(24,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(25,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(26,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(27,1,1) = {" -P -P -P -b -q -B -N -K -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -K -k -B -q -b -"} -(28,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(29,1,1) = {" -P -P -P -b -q -q -t -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -I -q -q -b -"} -(30,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(31,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(32,1,1) = {" -P -P -P -b -q -B -N -K -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -K -k -B -q -b -"} -(33,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(34,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(35,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(36,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(37,1,1) = {" -P -P -P -b -q -B -N -K -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -K -k -B -q -b -"} -(38,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(39,1,1) = {" -P -P -P -b -q -q -t -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -I -q -q -b -"} -(40,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(41,1,1) = {" -P -P -P -b -q -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(42,1,1) = {" -P -P -P -b -q -B -N -K -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -K -k -B -q -b -"} -(43,1,1) = {" -P -o -d -n -g -q -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(44,1,1) = {" -b -b -b -b -b -y -N -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -q -q -b -"} -(45,1,1) = {" -b -W -W -u -E -q -h -V -V -V -V -V -V -V -V -V -V -V -V -V -V -V -V -V -V -V -V -r -q -q -b -"} -(46,1,1) = {" -b -W -W -W -E -z -q -q -q -c -q -q -q -q -c -q -q -q -q -c -q -q -q -q -c -q -q -q -q -q -b -"} -(47,1,1) = {" -b -W -W -W -E -q -q -q -C -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -q -C -q -q -q -q -b -"} -(48,1,1) = {" -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -"} diff --git a/_maps/outpost/hangar/test_40x40.dmm b/_maps/outpost/hangar/test_40x40.dmm deleted file mode 100644 index 0bae3295e4e0..000000000000 --- a/_maps/outpost/hangar/test_40x40.dmm +++ /dev/null @@ -1,2692 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/closed/indestructible/reinforced, -/area/hangar) -"d" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"e" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"f" = ( -/obj/machinery/atmospherics/components/binary/pump/on, -/turf/open/floor/plasteel, -/area/hangar) -"i" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 - }, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"j" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"l" = ( -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/plasteel, -/area/hangar) -"o" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hangar) -"p" = ( -/obj/machinery/door/poddoor/multi_tile/four_tile_ver, -/turf/closed/indestructible/reinforced, -/area/hangar) -"q" = ( -/obj/item/pipe/binary, -/turf/closed/indestructible/reinforced, -/area/hangar) -"r" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"u" = ( -/turf/template_noop, -/area/template_noop) -"v" = ( -/obj/machinery/door/airlock, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, -/area/hangar) -"z" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hangar) -"A" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel, -/area/hangar) -"B" = ( -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"D" = ( -/turf/open/floor/plating, -/area/hangar) -"E" = ( -/turf/open/floor/plasteel, -/area/hangar) -"G" = ( -/obj/machinery/elevator_call_button{ - pixel_y = 25 - }, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, -/area/hangar) -"I" = ( -/turf/open/floor/plasteel/tech, -/area/hangar) -"J" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"K" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - volume = 10000000 - }, -/turf/open/floor/plasteel, -/area/hangar) -"L" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"M" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"N" = ( -/obj/effect/landmark/outpost/elevator, -/turf/open/floor/plasteel/elevatorshaft, -/area/hangar) -"O" = ( -/obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating, -/area/hangar) -"R" = ( -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hangar) -"U" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"V" = ( -/turf/open/floor/plasteel/elevatorshaft, -/area/hangar) -"W" = ( -/obj/structure/marker_beacon{ - picked_color = "Teal" - }, -/turf/open/floor/plating, -/area/hangar) - -(1,1,1) = {" -u -u -u -a -a -a -a -a -a -a -p -a -a -a -p -a -a -a -p -a -a -a -p -a -a -a -p -a -a -a -p -a -a -a -p -a -a -a -p -a -a -a -p -a -a -a -p -a -a -a -a -"} -(2,1,1) = {" -u -u -u -a -E -E -A -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -d -J -E -E -a -"} -(3,1,1) = {" -u -u -u -a -E -E -A -I -I -j -I -I -I -I -j -I -I -I -I -j -I -I -I -I -j -I -I -I -I -j -I -I -I -I -j -I -I -I -I -j -I -I -I -I -j -I -I -J -E -E -a -"} -(4,1,1) = {" -u -u -u -a -E -E -A -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -e -J -E -E -a -"} -(5,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -O -J -E -E -a -"} -(6,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(7,1,1) = {" -u -u -u -a -E -R -A -W -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -W -J -R -E -a -"} -(8,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(9,1,1) = {" -u -u -u -a -E -E -r -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -i -E -E -a -"} -(10,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(11,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(12,1,1) = {" -u -u -u -a -E -R -A -W -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -W -J -R -E -a -"} -(13,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(14,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(15,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(16,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(17,1,1) = {" -u -u -u -a -E -R -A -W -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -W -J -R -E -a -"} -(18,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(19,1,1) = {" -u -u -u -a -E -E -r -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -i -E -E -a -"} -(20,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(21,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(22,1,1) = {" -u -u -u -a -E -R -A -W -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -W -J -R -E -a -"} -(23,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(24,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(25,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(26,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(27,1,1) = {" -u -u -u -a -E -R -A -W -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -W -J -R -E -a -"} -(28,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(29,1,1) = {" -u -u -u -a -E -E -r -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -i -E -E -a -"} -(30,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(31,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(32,1,1) = {" -u -u -u -a -E -R -A -W -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -W -J -R -E -a -"} -(33,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(34,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(35,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(36,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(37,1,1) = {" -u -u -u -a -E -R -A -W -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -W -J -R -E -a -"} -(38,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(39,1,1) = {" -u -u -u -a -E -E -r -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -i -E -E -a -"} -(40,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(41,1,1) = {" -u -u -u -a -E -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(42,1,1) = {" -u -u -u -a -E -R -A -W -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -W -J -R -E -a -"} -(43,1,1) = {" -u -K -f -q -U -E -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(44,1,1) = {" -a -a -a -a -a -G -A -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -D -J -E -E -a -"} -(45,1,1) = {" -a -V -V -N -v -E -o -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -z -M -E -E -a -"} -(46,1,1) = {" -a -V -V -V -v -l -E -E -E -L -E -E -E -E -L -E -E -E -E -L -E -E -E -E -L -E -E -E -E -L -E -E -E -E -L -E -E -E -E -L -E -E -E -E -L -E -E -E -E -E -a -"} -(47,1,1) = {" -a -V -V -V -v -E -E -B -E -E -E -E -E -E -E -E -E -B -E -E -E -E -E -E -E -E -B -B -E -E -E -E -E -E -E -E -B -E -E -E -E -E -E -E -E -E -B -E -E -E -a -"} -(48,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} diff --git a/_maps/outpost/hangar/test_56x20.dmm b/_maps/outpost/hangar/test_56x20.dmm deleted file mode 100644 index be5afd91fa78..000000000000 --- a/_maps/outpost/hangar/test_56x20.dmm +++ /dev/null @@ -1,2260 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/open/floor/plating, -/area/hangar) -"b" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"c" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"d" = ( -/obj/machinery/door/poddoor/multi_tile/four_tile_ver, -/turf/closed/indestructible/reinforced, -/area/hangar) -"g" = ( -/turf/closed/indestructible/reinforced, -/area/hangar) -"h" = ( -/obj/item/pipe/binary, -/turf/closed/indestructible/reinforced, -/area/hangar) -"k" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hangar) -"o" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hangar) -"q" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"r" = ( -/obj/structure/marker_beacon{ - picked_color = "Teal" - }, -/turf/open/floor/plating, -/area/hangar) -"t" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 - }, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"u" = ( -/obj/machinery/elevator_call_button{ - pixel_y = 25 - }, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, -/area/hangar) -"v" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"w" = ( -/obj/machinery/door/airlock, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, -/area/hangar) -"z" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"A" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"F" = ( -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/plasteel, -/area/hangar) -"H" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"L" = ( -/turf/open/floor/plasteel/elevatorshaft, -/area/hangar) -"M" = ( -/obj/effect/landmark/outpost/elevator, -/turf/open/floor/plasteel/elevatorshaft, -/area/hangar) -"O" = ( -/obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating, -/area/hangar) -"Q" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel, -/area/hangar) -"R" = ( -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"S" = ( -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hangar) -"T" = ( -/turf/open/floor/plasteel, -/area/hangar) -"U" = ( -/obj/machinery/atmospherics/components/binary/pump/on, -/turf/open/floor/plasteel, -/area/hangar) -"V" = ( -/turf/open/floor/plasteel/tech, -/area/hangar) -"W" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"Y" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - volume = 10000000 - }, -/turf/open/floor/plasteel, -/area/hangar) -"Z" = ( -/turf/template_noop, -/area/template_noop) - -(1,1,1) = {" -Z -Z -Z -g -g -g -g -g -g -g -d -g -g -g -d -g -g -g -d -g -g -g -d -g -g -g -d -g -g -g -g -"} -(2,1,1) = {" -Z -Z -Z -g -T -T -Q -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -b -A -T -T -g -"} -(3,1,1) = {" -Z -Z -Z -g -T -T -Q -V -V -v -V -V -V -V -v -V -V -V -V -v -V -V -V -V -v -V -V -A -T -T -g -"} -(4,1,1) = {" -Z -Z -Z -g -T -T -Q -W -W -W -W -W -W -W -W -W -W -W -W -W -W -W -W -W -W -W -W -A -T -T -g -"} -(5,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -O -A -T -T -g -"} -(6,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(7,1,1) = {" -Z -Z -Z -g -T -S -Q -r -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -r -A -S -T -g -"} -(8,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(9,1,1) = {" -Z -Z -Z -g -T -T -q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -t -T -T -g -"} -(10,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(11,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(12,1,1) = {" -Z -Z -Z -g -T -S -Q -r -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -r -A -S -T -g -"} -(13,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(14,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(15,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(16,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(17,1,1) = {" -Z -Z -Z -g -T -S -Q -r -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -r -A -S -T -g -"} -(18,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(19,1,1) = {" -Z -Z -Z -g -T -T -q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -t -T -T -g -"} -(20,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(21,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(22,1,1) = {" -Z -Z -Z -g -T -S -Q -r -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -r -A -S -T -g -"} -(23,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(24,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(25,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(26,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(27,1,1) = {" -Z -Z -Z -g -T -S -Q -r -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -r -A -S -T -g -"} -(28,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(29,1,1) = {" -Z -Z -Z -g -T -T -q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -t -T -T -g -"} -(30,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(31,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(32,1,1) = {" -Z -Z -Z -g -T -S -Q -r -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -r -A -S -T -g -"} -(33,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(34,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(35,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(36,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(37,1,1) = {" -Z -Z -Z -g -T -S -Q -r -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -r -A -S -T -g -"} -(38,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(39,1,1) = {" -Z -Z -Z -g -T -T -q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -t -T -T -g -"} -(40,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(41,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(42,1,1) = {" -Z -Z -Z -g -T -S -Q -r -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -r -A -S -T -g -"} -(43,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(44,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(45,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(46,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(47,1,1) = {" -Z -Z -Z -g -T -S -Q -r -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -r -A -S -T -g -"} -(48,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(49,1,1) = {" -Z -Z -Z -g -T -T -q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -t -T -T -g -"} -(50,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(51,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(52,1,1) = {" -Z -Z -Z -g -T -S -Q -r -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -r -A -S -T -g -"} -(53,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(54,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(55,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(56,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(57,1,1) = {" -Z -Z -Z -g -T -S -Q -r -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -r -A -S -T -g -"} -(58,1,1) = {" -Z -Z -Z -g -T -T -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(59,1,1) = {" -Z -Y -U -h -z -T -q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -t -T -T -g -"} -(60,1,1) = {" -g -g -g -g -g -u -Q -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -A -T -T -g -"} -(61,1,1) = {" -g -L -L -M -w -T -k -o -o -o -o -o -o -o -o -o -o -o -o -o -o -o -o -o -o -o -o -H -T -T -g -"} -(62,1,1) = {" -g -L -L -L -w -F -T -T -T -c -T -T -T -T -c -T -T -T -T -c -T -T -T -T -c -T -T -T -T -T -g -"} -(63,1,1) = {" -g -L -L -L -w -T -T -T -R -T -T -T -T -T -T -T -T -T -T -T -T -T -T -T -T -R -T -T -T -T -g -"} -(64,1,1) = {" -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -g -"} diff --git a/_maps/outpost/hangar/test_56x40.dmm b/_maps/outpost/hangar/test_56x40.dmm deleted file mode 100644 index 6ca87ef8e48a..000000000000 --- a/_maps/outpost/hangar/test_56x40.dmm +++ /dev/null @@ -1,3540 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/open/floor/plating, -/area/hangar) -"c" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hangar) -"e" = ( -/obj/effect/landmark/outpost/hangar_numbers, -/turf/open/floor/plasteel, -/area/hangar) -"f" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"g" = ( -/obj/structure/marker_beacon{ - picked_color = "Teal" - }, -/turf/open/floor/plating, -/area/hangar) -"h" = ( -/obj/machinery/door/airlock, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, -/area/hangar) -"k" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 - }, -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"l" = ( -/obj/machinery/light/floor/hangar, -/turf/open/floor/plasteel, -/area/hangar) -"n" = ( -/turf/open/floor/plasteel/tech, -/area/hangar) -"p" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"q" = ( -/obj/item/pipe/binary, -/turf/closed/indestructible/reinforced, -/area/hangar) -"s" = ( -/obj/machinery/atmospherics/components/binary/pump/on, -/turf/open/floor/plasteel, -/area/hangar) -"v" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"x" = ( -/obj/effect/turf_decal/arrows{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"y" = ( -/obj/machinery/elevator_call_button{ - pixel_y = 25 - }, -/obj/effect/landmark/outpost/elevator_machine, -/turf/open/floor/plasteel, -/area/hangar) -"z" = ( -/turf/open/floor/plasteel, -/area/hangar) -"B" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - volume = 10000000 - }, -/turf/open/floor/plasteel, -/area/hangar) -"C" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, -/turf/open/floor/plasteel, -/area/hangar) -"F" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"H" = ( -/turf/closed/indestructible/reinforced, -/area/hangar) -"J" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/hangar) -"L" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"Q" = ( -/obj/effect/landmark/outpost/elevator, -/turf/open/floor/plasteel/elevatorshaft, -/area/hangar) -"R" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hangar) -"S" = ( -/obj/effect/landmark/outpost/hangar_dock, -/turf/open/floor/plating, -/area/hangar) -"U" = ( -/obj/machinery/door/poddoor/multi_tile/four_tile_ver, -/turf/closed/indestructible/reinforced, -/area/hangar) -"V" = ( -/turf/template_noop, -/area/template_noop) -"W" = ( -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hangar) -"X" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hangar) -"Y" = ( -/turf/open/floor/plasteel/elevatorshaft, -/area/hangar) - -(1,1,1) = {" -V -V -V -H -H -H -H -H -H -H -U -H -H -H -U -H -H -H -U -H -H -H -U -H -H -H -U -H -H -H -U -H -H -H -U -H -H -H -U -H -H -H -U -H -H -H -U -H -H -H -H -"} -(2,1,1) = {" -V -V -V -H -z -z -C -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -F -v -z -z -H -"} -(3,1,1) = {" -V -V -V -H -z -z -C -n -n -p -n -n -n -n -p -n -n -n -n -p -n -n -n -n -p -n -n -n -n -p -n -n -n -n -p -n -n -n -n -p -n -n -n -n -p -n -n -v -z -z -H -"} -(4,1,1) = {" -V -V -V -H -z -z -C -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -J -v -z -z -H -"} -(5,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -S -v -z -z -H -"} -(6,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(7,1,1) = {" -V -V -V -H -z -W -C -g -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -g -v -W -z -H -"} -(8,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(9,1,1) = {" -V -V -V -H -z -z -f -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -z -z -H -"} -(10,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(11,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(12,1,1) = {" -V -V -V -H -z -W -C -g -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -g -v -W -z -H -"} -(13,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(14,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(15,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(16,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(17,1,1) = {" -V -V -V -H -z -W -C -g -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -g -v -W -z -H -"} -(18,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(19,1,1) = {" -V -V -V -H -z -z -f -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -z -z -H -"} -(20,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(21,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(22,1,1) = {" -V -V -V -H -z -W -C -g -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -g -v -W -z -H -"} -(23,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(24,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(25,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(26,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(27,1,1) = {" -V -V -V -H -z -W -C -g -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -g -v -W -z -H -"} -(28,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(29,1,1) = {" -V -V -V -H -z -z -f -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -z -z -H -"} -(30,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(31,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(32,1,1) = {" -V -V -V -H -z -W -C -g -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -g -v -W -z -H -"} -(33,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(34,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(35,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(36,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(37,1,1) = {" -V -V -V -H -z -W -C -g -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -g -v -W -z -H -"} -(38,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(39,1,1) = {" -V -V -V -H -z -z -f -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -z -z -H -"} -(40,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(41,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(42,1,1) = {" -V -V -V -H -z -W -C -g -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -g -v -W -z -H -"} -(43,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(44,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(45,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(46,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(47,1,1) = {" -V -V -V -H -z -W -C -g -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -g -v -W -z -H -"} -(48,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(49,1,1) = {" -V -V -V -H -z -z -f -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -z -z -H -"} -(50,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(51,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(52,1,1) = {" -V -V -V -H -z -W -C -g -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -g -v -W -z -H -"} -(53,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(54,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(55,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(56,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(57,1,1) = {" -V -V -V -H -z -W -C -g -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -g -v -W -z -H -"} -(58,1,1) = {" -V -V -V -H -z -z -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(59,1,1) = {" -V -B -s -q -L -z -f -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -k -z -z -H -"} -(60,1,1) = {" -H -H -H -H -H -y -C -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -v -z -z -H -"} -(61,1,1) = {" -H -Y -Y -Q -h -z -c -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -X -R -z -z -H -"} -(62,1,1) = {" -H -Y -Y -Y -h -e -z -z -z -x -z -z -z -z -x -z -z -z -z -x -z -z -z -z -x -z -z -z -z -x -z -z -z -z -x -z -z -z -z -x -z -z -z -z -x -z -z -z -z -z -H -"} -(63,1,1) = {" -H -Y -Y -Y -h -z -z -l -z -z -z -z -z -z -z -z -z -l -z -z -z -z -z -z -z -z -l -l -z -z -z -z -z -z -z -z -l -z -z -z -z -z -z -z -z -z -l -z -z -z -H -"} -(64,1,1) = {" -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -H -"} diff --git a/_maps/outpost/outpost_test_1.dmm b/_maps/outpost/indie_space.dmm similarity index 97% rename from _maps/outpost/outpost_test_1.dmm rename to _maps/outpost/indie_space.dmm index 009668fb5676..5836ab2afcfd 100644 --- a/_maps/outpost/outpost_test_1.dmm +++ b/_maps/outpost/indie_space.dmm @@ -28,6 +28,14 @@ }, /turf/open/floor/plasteel/mono, /area/outpost/crew) +"ag" = ( +/obj/machinery/door/airlock{ + id_tag = "ob2"; + name = "Stall 2"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/crew/dorm) "ai" = ( /obj/structure/chair/office{ dir = 8 @@ -131,34 +139,16 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech, /area/outpost/cargo) -"by" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, +"bE" = ( +/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 + dir = 10 }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) "bI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/effect/turf_decal/spline/fancy/opaque/grey/corner{ @@ -195,16 +185,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/vacant_rooms) -"bQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/structure/sign/poster/random{ - pixel_y = -32 - }, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) "bT" = ( /obj/structure/chair/wood/wings{ dir = 1 @@ -226,18 +206,22 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"cl" = ( +/obj/structure/table, +/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ + dir = 4 + }, +/obj/machinery/newscaster/directional/west, +/obj/item/radio/intercom/directional/north{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/outpost/crew/dorm) "cs" = ( /obj/structure/table, /obj/item/circuitboard/machine/paystand, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/vacant_rooms) -"ct" = ( -/obj/effect/turf_decal/corner/opaque/green{ - dir = 9 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "cx" = ( /obj/item/kirbyplants/random, /turf/open/floor/plasteel, @@ -259,35 +243,6 @@ /obj/structure/barricade/wooden, /turf/open/floor/plasteel/elevatorshaft, /area/outpost/cargo) -"cA" = ( -/obj/machinery/door/poddoor/preopen, -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) "cC" = ( /turf/open/floor/plasteel/tech/techmaint, /area/outpost/cargo) @@ -304,6 +259,14 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"cV" = ( +/obj/machinery/door/airlock{ + id_tag = "ob1"; + name = "Stall 1"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/crew/dorm) "cW" = ( /obj/effect/turf_decal/box/corners{ dir = 4 @@ -391,10 +354,6 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) -"dV" = ( -/obj/machinery/recycler, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) "dW" = ( /obj/machinery/firealarm/directional/north, /obj/effect/turf_decal/corner/opaque/black{ @@ -405,13 +364,6 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) -"dX" = ( -/obj/machinery/door/airlock{ - name = "Cryogenics" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) "dY" = ( /obj/structure/window/reinforced{ dir = 4 @@ -430,16 +382,6 @@ }, /turf/open/floor/wood, /area/outpost/crew) -"ed" = ( -/obj/structure/sign/poster/random{ - pixel_y = 32 - }, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "eg" = ( /obj/effect/turf_decal/corner/opaque/green{ dir = 9 @@ -524,16 +466,6 @@ /obj/effect/decal/cleanable/confetti, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) -"eO" = ( -/obj/effect/turf_decal/corner/opaque/green/three_quarters{ - dir = 4 - }, -/obj/machinery/vending/coffee, -/obj/structure/sign/poster/random{ - pixel_x = -32 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "fc" = ( /obj/structure/cable{ icon_state = "2-8" @@ -586,6 +518,19 @@ /obj/effect/decal/cleanable/garbage, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) +"fC" = ( +/obj/machinery/button/door{ + pixel_y = 36; + pixel_x = -9; + id = "outsmall2"; + name = "window shutters" + }, +/obj/item/radio/intercom/directional/north{ + pixel_y = 32; + pixel_x = -5 + }, +/turf/open/floor/wood, +/area/outpost/crew) "fD" = ( /obj/machinery/door/airlock/public/glass, /obj/machinery/door/firedoor/border_only, @@ -669,6 +614,37 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) +"gb" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Cryogenics"; + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/crew/dorm) "gf" = ( /obj/effect/turf_decal/box, /obj/structure/closet/crate/engineering, @@ -745,6 +721,17 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/wood, /area/outpost/crew) +"gP" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = -13 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/dorm) "gU" = ( /obj/structure/railing/corner{ dir = 8 @@ -780,11 +767,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/plasteel/grimy, /area/outpost/crew) -"ho" = ( -/obj/structure/table, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/vacant_rooms) "hv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/sign/poster/official/random{ @@ -839,12 +821,38 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) -"hY" = ( -/obj/effect/turf_decal/corner/opaque/green{ - dir = 6 +"ia" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/public/glass{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, /area/outpost/hallway/central) "im" = ( /obj/effect/turf_decal/corner/opaque/green/three_quarters{ @@ -950,10 +958,6 @@ }, /turf/open/floor/wood, /area/outpost/crew) -"jh" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) "jk" = ( /obj/effect/turf_decal/box, /obj/machinery/light/directional/east, @@ -988,25 +992,6 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/wood, /area/outpost/crew) -"jF" = ( -/obj/machinery/door/airlock/public/glass, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/outpost/vacant_rooms) "jH" = ( /obj/structure/rack, /obj/effect/turf_decal/box/corners, @@ -1023,36 +1008,76 @@ /obj/machinery/light/directional/east, /turf/open/floor/plasteel, /area/outpost/hallway/central) -"jS" = ( -/obj/effect/turf_decal/spline/fancy/opaque/grey{ - pixel_x = -1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/grey/corner{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) -"jU" = ( -/obj/structure/table, -/obj/machinery/door/window{ +"jN" = ( +/obj/effect/turf_decal/siding/wood{ dir = 8 }, /obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/outpost/vacant_rooms) -"kb" = ( -/obj/structure/closet/crate, -/turf/open/floor/plasteel/patterned/grid, -/area/outpost/cargo) -"kg" = ( -/obj/machinery/computer/cryopod/directional/west, -/obj/structure/table, -/obj/effect/turf_decal/corner/opaque/bottlegreen/border{ - dir = 9 +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/public/glass{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) +"jS" = ( +/obj/effect/turf_decal/spline/fancy/opaque/grey{ + pixel_x = -1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/grey/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) +"jU" = ( +/obj/structure/table, +/obj/machinery/door/window{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/outpost/vacant_rooms) +"jW" = ( +/obj/machinery/airalarm/directional/east, +/obj/item/radio/intercom/directional/north{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) +"kb" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel/patterned/grid, +/area/outpost/cargo) +"kg" = ( +/obj/machinery/computer/cryopod/directional/west, +/obj/structure/table, +/obj/effect/turf_decal/corner/opaque/bottlegreen/border{ + dir = 9 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 @@ -1080,14 +1105,6 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) -"kC" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "outsmall2" - }, -/turf/open/floor/plating, -/area/outpost/crew) "kF" = ( /obj/effect/turf_decal/corner/opaque/black{ dir = 5 @@ -1114,6 +1131,14 @@ }, /turf/open/floor/plasteel/mono, /area/outpost/crew) +"kJ" = ( +/obj/structure/table/wood, +/obj/machinery/light/floor{ + bulb_colour = "#FFDDBB"; + bulb_power = 0.3 + }, +/turf/open/floor/carpet, +/area/outpost/crew) "kP" = ( /obj/effect/turf_decal/spline/fancy/opaque/grey{ dir = 1; @@ -1156,35 +1181,11 @@ }, /turf/open/floor/plasteel/grimy, /area/outpost/crew) -"li" = ( -/obj/machinery/door/poddoor/preopen, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) +"lb" = ( +/obj/machinery/door/poddoor/ert, +/obj/machinery/door/airlock/grunge, +/turf/open/floor/plasteel/tech/grid, +/area/outpost/operations) "lj" = ( /obj/structure/table/wood, /obj/structure/sign/poster/contraband/random{ @@ -1213,6 +1214,14 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"lx" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_y = -32 + }, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/corner/opaque/green/three_quarters, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "lz" = ( /obj/effect/turf_decal/box/corners{ dir = 4 @@ -1288,6 +1297,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"lZ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew) "mg" = ( /obj/effect/turf_decal/box, /obj/structure/closet/crate, @@ -1407,6 +1428,13 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/cargo) +"mQ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/ert, +/turf/closed/indestructible/reinforced, +/area/outpost/operations) "mT" = ( /obj/machinery/light/directional/south, /turf/open/floor/plasteel/patterned/grid, @@ -1522,13 +1550,16 @@ "nU" = ( /turf/closed/indestructible/reinforced, /area/outpost/crew/dorm) -"nY" = ( +"nZ" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew/dorm) +/obj/machinery/atmospherics/components/unary/tank/air{ + volume = 10000000; + piping_layer = 2 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/operations) "ob" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt/dust, @@ -1576,6 +1607,13 @@ /obj/structure/chair/wood/wings, /turf/open/floor/carpet, /area/outpost/crew) +"oz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump/on/layer2, +/turf/open/floor/plasteel/dark, +/area/outpost/operations) "oC" = ( /obj/item/kirbyplants/random, /obj/machinery/light/small/directional/west, @@ -1594,22 +1632,6 @@ }, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) -"oL" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/airlock/wood, -/turf/open/floor/plasteel/tech, -/area/outpost/vacant_rooms) "oR" = ( /obj/structure/toilet{ pixel_y = 13 @@ -1633,22 +1655,6 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/cargo) -"pg" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) -"pj" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/components/unary/tank/air{ - volume = 10000000; - piping_layer = 2 - }, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) "pl" = ( /obj/effect/turf_decal/corner/opaque/green{ dir = 10 @@ -1671,21 +1677,6 @@ }, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) -"ps" = ( -/obj/machinery/button/door{ - id = "ob2"; - name = "door lock"; - pixel_x = 10; - pixel_y = 23; - specialfunctions = 4; - normaldoorcontrol = 1 - }, -/obj/machinery/door/airlock{ - id_tag = "ob2"; - name = "Stall 1" - }, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) "pt" = ( /obj/effect/turf_decal/siding/thinplating, /obj/effect/turf_decal/siding/thinplating{ @@ -1722,6 +1713,15 @@ "pA" = ( /turf/open/floor/plasteel/tech, /area/outpost/cargo) +"pD" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "outsmall2"; + dir = 4 + }, +/obj/structure/window/reinforced/fulltile/indestructable, +/turf/open/floor/plating, +/area/outpost/crew) "pF" = ( /obj/effect/turf_decal/box/corners{ dir = 1 @@ -1753,23 +1753,17 @@ /obj/machinery/light/directional/north, /turf/open/floor/plasteel, /area/outpost/crew) -"pX" = ( -/obj/machinery/door/poddoor/preopen, -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +"pV" = ( +/obj/structure/chair/greyscale{ + dir = 1 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ + dir = 1 }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) +/obj/machinery/light/small/directional/west, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/plasteel, +/area/outpost/crew/dorm) "pY" = ( /obj/structure/railing/corner{ dir = 1 @@ -1854,21 +1848,24 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) -"qV" = ( -/obj/machinery/button/door{ - id = "ob1"; - name = "door lock"; - pixel_x = 10; - pixel_y = 23; - specialfunctions = 4; - normaldoorcontrol = 1 +"qZ" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 }, -/obj/machinery/door/airlock{ - id_tag = "ob1"; - name = "Stall 1" +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/airlock/wood{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/vacant_rooms) "re" = ( /obj/effect/turf_decal/box/corners{ dir = 8 @@ -1881,6 +1878,21 @@ /obj/effect/turf_decal/spline/fancy/opaque/grey, /turf/open/floor/plasteel/grimy, /area/outpost/crew/dorm) +"rj" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) +"rn" = ( +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/outpost/crew/dorm) "rt" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -1889,13 +1901,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew) -"ru" = ( -/turf/closed/indestructible/reinforced{ - icon = 'icons/obj/doors/blastdoor.dmi'; - icon_state = "closed"; - name = "hardened blast door" - }, -/area/outpost/hallway/central) "ry" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 1 @@ -1916,6 +1921,28 @@ }, /turf/open/floor/grass, /area/outpost/crew) +"rD" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/machinery/door/airlock/public/glass{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) +"rE" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/dark, +/area/outpost/operations) "rF" = ( /obj/structure/railing{ dir = 8 @@ -2036,17 +2063,6 @@ }, /turf/open/floor/plasteel/elevatorshaft, /area/outpost/hallway/central) -"ss" = ( -/obj/structure/table, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/item/radio/intercom/directional/north{ - pixel_y = 24 - }, -/obj/effect/turf_decal/corner/opaque/green/three_quarters{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "su" = ( /obj/structure/railing, /obj/effect/turf_decal/spline/fancy/opaque/black, @@ -2074,6 +2090,25 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/tech, /area/outpost/vacant_rooms) +"sC" = ( +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/corner/opaque/green{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"sG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/outpost/crew/dorm) "sH" = ( /obj/effect/turf_decal/spline/fancy/wood{ dir = 8 @@ -2112,16 +2147,6 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/vacant_rooms) -"sM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/structure/sign/poster/random{ - pixel_x = 32 - }, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) "sO" = ( /obj/effect/turf_decal/corner/opaque/green{ dir = 10 @@ -2134,6 +2159,10 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"te" = ( +/obj/machinery/door/poddoor/ert, +/turf/closed/indestructible/reinforced, +/area/outpost/operations) "tg" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood/corner{ @@ -2174,6 +2203,24 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/tech, /area/outpost/vacant_rooms) +"tC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/airlock{ + name = "Cryogenics" + }, +/turf/open/floor/plasteel, +/area/outpost/crew/dorm) +"tH" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/poddoor/ert, +/obj/machinery/door/airlock/grunge{ + req_access_txt = "109" + }, +/turf/closed/indestructible/reinforced, +/area/outpost/operations) "tK" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/box, @@ -2378,6 +2425,22 @@ /obj/structure/rack, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/vacant_rooms) +"vZ" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/newscaster/directional/south, +/obj/machinery/button/door{ + id = "ob1"; + name = "door lock"; + pixel_x = -22; + pixel_y = 23; + specialfunctions = 4; + normaldoorcontrol = 1 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/dorm) "wa" = ( /obj/effect/turf_decal/corner/opaque/black{ dir = 10 @@ -2419,19 +2482,13 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/cargo) -"wy" = ( -/obj/effect/turf_decal/corner/opaque/green{ - dir = 10 - }, -/obj/structure/chair{ - dir = 8 +"wx" = ( +/obj/machinery/power/smes/magical{ + output_level = 200000 }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/cable, /turf/open/floor/plasteel, -/area/outpost/hallway/central) +/area/outpost/operations) "wB" = ( /obj/effect/turf_decal/siding/thinplating, /obj/effect/turf_decal/siding/thinplating{ @@ -2449,17 +2506,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/tech, /area/outpost/crew/dorm) -"wE" = ( -/obj/structure/table, -/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ - dir = 4 - }, -/obj/machinery/newscaster/directional/west, -/obj/item/radio/intercom/directional/north{ - pixel_y = 23 - }, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) "wF" = ( /obj/structure/window/reinforced/tinted{ dir = 8 @@ -2546,22 +2592,6 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) -"xx" = ( -/obj/machinery/door/airlock/public/glass, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) "xy" = ( /obj/structure/table, /obj/machinery/newscaster/directional/north{ @@ -2572,36 +2602,6 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) -"xA" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/door/airlock{ - name = "Cryogenics" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/outpost/crew/dorm) "xQ" = ( /obj/structure/table, /obj/item/circuitboard/machine/paystand, @@ -2624,23 +2624,6 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/carpet, /area/outpost/crew) -"xX" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/closed/indestructible/reinforced{ - icon = 'icons/obj/doors/blastdoor.dmi'; - icon_state = "closed"; - name = "hardened blast door" - }, -/area/outpost/hallway/central) -"xZ" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) "ya" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -2653,6 +2636,19 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/cargo) +"yg" = ( +/obj/effect/turf_decal/corner/opaque/green{ + dir = 10 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "yh" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood{ @@ -2722,17 +2718,6 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/cargo) -"yI" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/closed/indestructible/reinforced{ - icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi'; - icon_state = "closed"; - name = "airlock" - }, -/area/outpost/crew/dorm) "yK" = ( /obj/structure/rack, /obj/effect/turf_decal/box, @@ -2776,6 +2761,14 @@ /obj/structure/closet/cardboard, /turf/open/floor/plasteel/patterned/grid, /area/outpost/cargo) +"zq" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "outsmall1" + }, +/obj/structure/window/reinforced/fulltile/indestructable, +/turf/open/floor/plating, +/area/outpost/crew) "zv" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/corner/opaque/black{ @@ -2829,16 +2822,6 @@ /obj/machinery/light/directional/east, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/vacant_rooms) -"Ab" = ( -/obj/effect/turf_decal/corner/opaque/green{ - dir = 5 - }, -/obj/structure/sign/poster/random{ - pixel_y = 32 - }, -/obj/machinery/vending/cigarette, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "Ac" = ( /obj/structure/cable{ icon_state = "1-4" @@ -2884,12 +2867,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/outpost/crew) -"Aw" = ( -/obj/structure/sign/poster/random{ - pixel_x = -32 - }, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) "AC" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -2977,6 +2954,27 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"Ba" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) "Bh" = ( /obj/structure/table, /obj/structure/window/reinforced, @@ -2993,6 +2991,27 @@ }, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) +"Bp" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/door/airlock/public/glass{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/vacant_rooms) "Bs" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 @@ -3113,16 +3132,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) -"Co" = ( -/obj/machinery/announcement_system, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) -"Cq" = ( -/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters, -/obj/machinery/disposal/bin, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) "Ct" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 @@ -3181,34 +3190,6 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/vacant_rooms) -"CU" = ( -/obj/machinery/door/poddoor/preopen, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/machinery/door/airlock/public/glass, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/central) -"Dd" = ( -/obj/structure/chair/greyscale{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) "De" = ( /obj/structure/rack, /obj/effect/turf_decal/trimline/opaque/green/line{ @@ -3279,19 +3260,6 @@ }, /turf/open/floor/wood, /area/outpost/crew) -"DH" = ( -/obj/machinery/button/door{ - pixel_y = 36; - pixel_x = -9; - id = "outsmall2"; - name = "window shutters" - }, -/obj/item/radio/intercom/directional/north{ - pixel_y = 22; - pixel_x = -5 - }, -/turf/open/floor/wood, -/area/outpost/crew) "DJ" = ( /obj/structure/chair/comfy/brown{ dir = 4 @@ -3375,12 +3343,22 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/cargo) -"Eo" = ( -/obj/structure/rack, -/obj/effect/turf_decal/box/corners{ +"En" = ( +/obj/effect/turf_decal/corner/opaque/green/three_quarters{ dir = 4 }, -/turf/open/floor/plasteel/tech/techmaint, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"Eo" = ( +/obj/structure/rack, +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/techmaint, /area/outpost/vacant_rooms) "Ep" = ( /obj/structure/window/reinforced/tinted{ @@ -3399,13 +3377,6 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/cargo) -"Eu" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump/on/layer2, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) "Ev" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/spline/fancy/opaque/grey{ @@ -3555,6 +3526,36 @@ /obj/structure/cable, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/cargo) +"FN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/machinery/door/airlock/public/glass{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) "FQ" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -3586,34 +3587,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) -"Gj" = ( -/obj/machinery/door/airlock/public/glass, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/structure/barricade/wooden/crude, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/oil/slippery, -/turf/open/floor/plasteel/tech, -/area/outpost/vacant_rooms) -"Gm" = ( -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) "Gp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, @@ -3715,6 +3688,9 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"GM" = ( +/turf/closed/indestructible/reinforced, +/area/outpost/operations) "GQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -3881,6 +3857,16 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/vacant_rooms) +"HP" = ( +/obj/effect/turf_decal/corner/opaque/green/three_quarters{ + dir = 4 + }, +/obj/machinery/vending/coffee, +/obj/structure/sign/poster/contraband/random{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "HR" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/box, @@ -3907,13 +3893,6 @@ /obj/effect/turf_decal/siding/wood/end, /turf/open/floor/wood, /area/outpost/vacant_rooms) -"Ig" = ( -/obj/effect/turf_decal/corner/opaque/green/three_quarters{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "Ij" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -3924,6 +3903,31 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"Ik" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/floor{ + bulb_colour = "#FFDDBB"; + bulb_power = 0.3 + }, +/turf/open/floor/carpet, +/area/outpost/crew) +"Ip" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/newscaster/directional/south, +/obj/machinery/button/door{ + id = "ob2"; + name = "door lock"; + pixel_x = -22; + pixel_y = 23; + specialfunctions = 4; + normaldoorcontrol = 1 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/dorm) "It" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3949,6 +3953,12 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"IA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/outpost/operations) "IB" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, @@ -3959,25 +3969,6 @@ /obj/effect/turf_decal/spline/fancy/opaque/black, /turf/open/floor/plasteel/tech, /area/outpost/cargo) -"IP" = ( -/obj/machinery/door/airlock/public/glass, -/obj/effect/turf_decal/siding/thinplating{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/outpost/vacant_rooms) "IU" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/corner/opaque/black{ @@ -3998,14 +3989,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/plasteel, /area/outpost/crew/dorm) -"IZ" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "outsmall1" - }, -/turf/open/floor/plating, -/area/outpost/crew) "Jh" = ( /obj/effect/turf_decal/corner/opaque/black{ dir = 9 @@ -4040,14 +4023,6 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/cargo) -"Jp" = ( -/obj/structure/sign/poster/random{ - pixel_y = -32 - }, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/corner/opaque/green/three_quarters, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "Jr" = ( /obj/structure/cable{ icon_state = "1-2" @@ -4065,6 +4040,19 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/cargo) +"Jw" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/spline/fancy/wood{ + dir = 5 + }, +/obj/item/radio/intercom/directional/north{ + pixel_y = 32 + }, +/turf/open/floor/carpet/royalblack, +/area/outpost/vacant_rooms) "Jz" = ( /obj/machinery/light/directional/east, /turf/open/floor/wood, @@ -4164,6 +4152,15 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"Ku" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/box, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/plasteel/tech, +/area/outpost/cargo) "Kw" = ( /obj/structure/rack, /obj/effect/turf_decal/trimline/opaque/green/line{ @@ -4196,28 +4193,6 @@ }, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) -"KC" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/airlock/wood, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/outpost/vacant_rooms) "KD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 @@ -4228,14 +4203,6 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/plasteel/tech, /area/outpost/cargo) -"KG" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/box, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/outpost/cargo) "KH" = ( /obj/machinery/disposal/bin, /obj/effect/turf_decal/box, @@ -4270,6 +4237,12 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/outpost/crew) +"KU" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/outpost/operations) "KV" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/plasteel/patterned, @@ -4286,6 +4259,15 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/hallway/central) +"KZ" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/operations) "Ld" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -4293,18 +4275,18 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/plasteel/grimy, /area/outpost/crew) +"Lj" = ( +/obj/effect/turf_decal/corner/opaque/green{ + dir = 6 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "Lr" = ( /obj/structure/railing/corner, /obj/effect/turf_decal/spline/fancy/opaque/black/corner, /turf/open/floor/plasteel/tech, /area/outpost/cargo) -"Ls" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plasteel/patterned, -/area/outpost/crew/dorm) "Lu" = ( /turf/open/floor/wood, /area/outpost/vacant_rooms) @@ -4357,9 +4339,21 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/plasteel/tech, /area/outpost/cargo) +"LK" = ( +/obj/effect/turf_decal/corner/opaque/bottlegreen/three_quarters, +/obj/machinery/disposal/bin, +/obj/machinery/light/small/directional/south, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/outpost/crew/dorm) "LL" = ( /turf/open/floor/plasteel/patterned/grid, /area/outpost/cargo) +"LO" = ( +/turf/open/floor/plasteel, +/area/outpost/operations) "LP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -4379,6 +4373,12 @@ }, /turf/open/floor/wood, /area/outpost/crew) +"Md" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/operations) "Mk" = ( /obj/effect/turf_decal/corner/opaque/black{ dir = 5 @@ -4531,15 +4531,6 @@ /obj/structure/window/reinforced/tinted, /turf/open/floor/grass, /area/outpost/crew) -"NO" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/item/radio/intercom/directional/north{ - pixel_y = 23 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/outpost/vacant_rooms) "NT" = ( /obj/structure/rack, /obj/effect/turf_decal/trimline/opaque/green/end{ @@ -4599,11 +4590,6 @@ /obj/structure/closet/crate/science, /turf/open/floor/plasteel/patterned/grid, /area/outpost/cargo) -"Om" = ( -/obj/machinery/power/smes/magical, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "Oq" = ( /obj/effect/turf_decal/spline/fancy/opaque/grey/corner, /obj/machinery/light/directional/west, @@ -4646,11 +4632,6 @@ }, /turf/open/floor/wood, /area/outpost/vacant_rooms) -"OJ" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/plasteel/tech, -/area/outpost/cargo) "OY" = ( /obj/machinery/light/directional/south, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -4761,19 +4742,6 @@ }, /turf/open/floor/grass, /area/outpost/crew) -"PI" = ( -/obj/machinery/airalarm/directional/east, -/obj/item/radio/intercom/directional/north{ - pixel_y = 24 - }, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) -"PK" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/outpost/hallway/central) "PR" = ( /obj/structure/railing{ dir = 5 @@ -4834,6 +4802,16 @@ "Qk" = ( /turf/open/floor/carpet, /area/outpost/crew) +"Qn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/structure/sign/poster/contraband/random{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) "Qt" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 @@ -4865,18 +4843,6 @@ /obj/effect/turf_decal/box/corners, /turf/open/floor/plasteel/patterned/grid, /area/outpost/cargo) -"QG" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/plasteel/patterned, -/area/outpost/crew/dorm) -"QI" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/indestructible/reinforced, -/area/outpost/crew/dorm) "QK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -4890,12 +4856,22 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/cargo) +"QL" = ( +/obj/machinery/recycler, +/turf/open/floor/plasteel/tech/grid, +/area/outpost/operations) "QP" = ( /obj/structure/chair/office{ dir = 1 }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/cargo) +"QR" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel/patterned, +/area/outpost/crew/dorm) "QT" = ( /obj/effect/turf_decal/corner/opaque/green{ dir = 9 @@ -4937,6 +4913,29 @@ }, /turf/open/floor/plasteel/grimy, /area/outpost/crew) +"Rt" = ( +/obj/structure/table, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/corner/opaque/green/three_quarters{ + dir = 4 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) +"Ru" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/item/radio/intercom/directional/north{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/outpost/vacant_rooms) +"Rv" = ( +/obj/structure/table, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/vacant_rooms) "Ry" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/box/corners{ @@ -5073,6 +5072,30 @@ }, /turf/open/floor/wood, /area/outpost/vacant_rooms) +"SV" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/structure/barricade/wooden/crude, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/oil/slippery, +/obj/machinery/door/airlock/public/glass{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/vacant_rooms) "Td" = ( /obj/effect/turf_decal/siding/thinplating, /obj/effect/turf_decal/siding/thinplating{ @@ -5165,12 +5188,6 @@ /obj/structure/window/reinforced, /turf/open/floor/carpet, /area/outpost/crew) -"Uv" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/outpost/crew/dorm) "Uw" = ( /turf/closed/indestructible/reinforced, /area/outpost/cargo) @@ -5247,18 +5264,26 @@ dir = 8 }, /area/outpost/cargo) -"VH" = ( -/obj/structure/chair/comfy/brown{ +"VG" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ dir = 8 }, -/obj/machinery/light/small/directional/east, -/obj/effect/turf_decal/spline/fancy/wood{ - dir = 5 +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/item/radio/intercom/directional/north{ - pixel_y = 23 +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/turf/open/floor/carpet/royalblack, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, /area/outpost/vacant_rooms) "VR" = ( /obj/structure/railing{ @@ -5348,12 +5373,6 @@ }, /turf/open/floor/plasteel, /area/outpost/crew/dorm) -"WN" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/plasteel/grimy, -/area/outpost/crew) "WT" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -5372,6 +5391,16 @@ }, /turf/open/floor/plasteel, /area/outpost/hallway/central) +"WW" = ( +/obj/effect/turf_decal/corner/opaque/green{ + dir = 5 + }, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel, +/area/outpost/hallway/central) "Xc" = ( /obj/effect/turf_decal/corner/opaque/black{ dir = 10 @@ -5459,6 +5488,27 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) +"XI" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/airlock/public/glass{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/central) "XM" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet, @@ -5531,6 +5581,13 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) +"YI" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/dark, +/area/outpost/operations) "YK" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/siding/wood{ @@ -5562,6 +5619,30 @@ /obj/machinery/door/airlock/public/glass, /turf/open/floor/plasteel/tech, /area/outpost/vacant_rooms) +"YV" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/door/airlock/wood{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/vacant_rooms) "YX" = ( /obj/machinery/door/window{ dir = 8 @@ -5607,6 +5688,16 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/cargo) +"Zg" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/airlock/maintenance_hatch{ + req_access_txt = "109" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/outpost/operations) "Zi" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 @@ -6406,14 +6497,14 @@ mC mC mC mC -Or -kC -kC -kC -kC -kC -kC -Or +mC +mC +mC +mC +mC +mC +mC +mC mC mC mC @@ -6528,16 +6619,6 @@ mC mC mC mC -Or -Or -DH -ov -tr -tr -bT -jD -Or -Or mC mC mC @@ -6563,8 +6644,6 @@ mC mC mC mC -"} -(8,1,1) = {" mC mC mC @@ -6575,6 +6654,8 @@ mC mC mC mC +"} +(8,1,1) = {" mC mC mC @@ -6651,16 +6732,6 @@ mC mC mC mC -Or -ec -es -Qk -nE -nE -XM -EB -Zi -Or mC mC mC @@ -6686,8 +6757,6 @@ mC mC mC mC -"} -(9,1,1) = {" mC mC mC @@ -6708,6 +6777,8 @@ mC mC mC mC +"} +(9,1,1) = {" mC mC mC @@ -6773,18 +6844,6 @@ mC mC mC mC -Or -Or -Or -ys -bo -wF -Ep -NH -af -Or -Or -Or mC mC mC @@ -6809,8 +6868,6 @@ mC mC mC mC -"} -(10,1,1) = {" mC mC mC @@ -6843,6 +6900,8 @@ mC mC mC mC +"} +(10,1,1) = {" mC mC mC @@ -6895,19 +6954,6 @@ mC mC mC mC -Or -Or -gK -YK -TB -PR -rB -rB -FB -FQ -Ov -vf -Or mC mC mC @@ -6932,8 +6978,6 @@ mC mC mC mC -"} -(11,1,1) = {" mC mC mC @@ -6979,6 +7023,8 @@ mC mC mC mC +"} +(11,1,1) = {" mC mC mC @@ -7018,20 +7064,6 @@ mC mC mC mC -Or -Sp -Ww -sa -GJ -uG -rt -rt -tL -HH -WN -lj -Or -Or mC mC mC @@ -7055,8 +7087,6 @@ mC mC mC mC -"} -(12,1,1) = {" mC mC mC @@ -7116,6 +7146,8 @@ mC mC mC mC +"} +(12,1,1) = {" mC mC mC @@ -7141,20 +7173,6 @@ mC mC mC mC -Or -pP -Rd -tg -xa -nf -du -KQ -Ou -Oz -Rk -kY -GA -Or mC mC mC @@ -7178,8 +7196,6 @@ mC mC mC mC -"} -(13,1,1) = {" mC mC mC @@ -7253,6 +7269,8 @@ mC mC mC mC +"} +(13,1,1) = {" mC mC mC @@ -7262,23 +7280,6 @@ mC mC mC mC -Or -Or -Or -BF -Rk -kW -ng -Qh -Qh -Qh -Qh -Yo -Nl -Rk -oq -Or -mC mC mC mC @@ -7301,8 +7302,6 @@ mC mC mC mC -"} -(14,1,1) = {" mC mC mC @@ -7384,24 +7383,6 @@ mC mC mC mC -Or -Or -KK -EU -gy -lp -Au -Nv -ml -ml -ml -ml -Hm -FQ -uF -hd -Or -Or mC mC mC @@ -7411,6 +7392,8 @@ mC mC mC mC +"} +(14,1,1) = {" mC mC mC @@ -7424,8 +7407,6 @@ mC mC mC mC -"} -(15,1,1) = {" mC mC mC @@ -7507,24 +7488,6 @@ mC mC mC mC -IZ -xW -Qk -bo -PH -dH -ZM -Cc -Qk -Qk -UM -Qk -Up -pO -ob -WT -dh -Or mC mC mC @@ -7547,13 +7510,13 @@ mC mC mC mC -"} -(16,1,1) = {" mC mC mC mC mC +"} +(15,1,1) = {" mC mC mC @@ -7630,24 +7593,6 @@ mC mC mC mC -IZ -ml -Qk -Zt -PV -yh -JM -je -tr -ti -ti -ED -mn -Of -du -Ld -cx -Or mC mC mC @@ -7670,8 +7615,6 @@ mC mC mC mC -"} -(17,1,1) = {" mC mC mC @@ -7695,6 +7638,8 @@ mC mC mC mC +"} +(16,1,1) = {" mC mC mC @@ -7753,24 +7698,6 @@ mC mC mC mC -IZ -nE -Qk -iY -FB -VW -Bu -Za -Vy -sv -sv -sv -sv -JC -Uz -Or -Or -Or mC mC mC @@ -7793,8 +7720,6 @@ mC mC mC mC -"} -(18,1,1) = {" mC mC mC @@ -7836,6 +7761,8 @@ mC mC mC mC +"} +(17,1,1) = {" mC mC mC @@ -7876,24 +7803,6 @@ mC mC mC mC -IZ -jI -Wd -kI -DB -nw -uF -zn -uF -Jz -cO -gN -jI -LZ -Nx -ez -DX -Or mC mC mC @@ -7916,8 +7825,6 @@ mC mC mC mC -"} -(19,1,1) = {" mC mC mC @@ -7977,6 +7884,8 @@ mC mC mC mC +"} +(18,1,1) = {" mC mC mC @@ -7999,24 +7908,6 @@ mC mC mC mC -wL -wL -wL -wL -wL -wL -CU -li -CU -wL -wL -wL -wL -wL -wL -wL -VX -Or mC mC mC @@ -8039,8 +7930,6 @@ mC mC mC mC -"} -(20,1,1) = {" mC mC mC @@ -8118,28 +8007,12 @@ mC mC mC mC +"} +(19,1,1) = {" mC mC mC mC -wL -nO -HB -Kw -Ff -wL -ed -RV -vv -wL -oF -hU -nz -Oq -KA -wL -Or -Or mC mC mC @@ -8162,8 +8035,6 @@ mC mC mC mC -"} -(21,1,1) = {" mC mC mC @@ -8245,22 +8116,6 @@ mC mC mC mC -wL -pm -Ck -ga -rZ -wL -xs -RV -sO -wL -xQ -ZE -yK -RC -ve -wL mC mC mC @@ -8275,6 +8130,8 @@ mC mC mC mC +"} +(20,1,1) = {" mC mC mC @@ -8285,8 +8142,6 @@ mC mC mC mC -"} -(22,1,1) = {" mC mC mC @@ -8368,22 +8223,6 @@ mC mC mC mC -wL -Ry -Hi -BJ -zL -sk -Mk -ns -Xc -tB -Ev -Ps -Qt -jS -xn -wL mC mC mC @@ -8408,14 +8247,14 @@ mC mC mC mC -"} -(23,1,1) = {" mC mC mC mC mC mC +"} +(21,1,1) = {" mC mC mC @@ -8491,22 +8330,6 @@ mC mC mC mC -wL -MO -BE -fV -tZ -ry -Hg -uv -wa -Td -iB -wR -gJ -ZO -CT -wL mC mC mC @@ -8531,8 +8354,6 @@ mC mC mC mC -"} -(24,1,1) = {" mC mC mC @@ -8555,6 +8376,8 @@ mC mC mC mC +"} +(22,1,1) = {" mC mC mC @@ -8614,22 +8437,6 @@ mC mC mC mC -wL -fI -Qf -Gp -GT -wL -vr -RV -Pa -wL -wL -wL -wL -wL -wL -wL mC mC mC @@ -8654,8 +8461,6 @@ mC mC mC mC -"} -(25,1,1) = {" mC mC mC @@ -8694,6 +8499,8 @@ mC mC mC mC +"} +(23,1,1) = {" mC mC mC @@ -8737,22 +8544,6 @@ mC mC mC mC -wL -rV -cs -ZE -ZY -wL -EY -ZV -AM -sB -iw -rS -Zu -rS -KH -wL mC mC mC @@ -8777,14 +8568,6 @@ mC mC mC mC -"} -(26,1,1) = {" -mC -mC -mC -mC -mC -mC mC mC mC @@ -8839,6 +8622,8 @@ mC mC mC mC +"} +(24,1,1) = {" mC mC mC @@ -8860,22 +8645,6 @@ mC mC mC mC -wL -PI -ai -Sc -xo -wL -uX -sI -Ne -pt -et -UU -UU -Tk -pG -wL mC mC mC @@ -8900,8 +8669,6 @@ mC mC mC mC -"} -(27,1,1) = {" mC mC mC @@ -8978,27 +8745,13 @@ mC mC mC mC +"} +(25,1,1) = {" mC mC mC mC mC -wL -wL -wL -wL -wL -wL -WV -LD -lk -wL -jU -MF -nT -dq -HL -wL mC mC mC @@ -9023,8 +8776,6 @@ mC mC mC mC -"} -(28,1,1) = {" mC mC mC @@ -9107,21 +8858,6 @@ mC mC mC mC -wL -sL -Ob -uW -YR -gz -LD -fk -wL -NO -lH -nz -LP -ar -wL mC mC mC @@ -9132,6 +8868,8 @@ mC mC mC mC +"} +(26,1,1) = {" mC mC mC @@ -9146,8 +8884,6 @@ mC mC mC mC -"} -(29,1,1) = {" mC mC mC @@ -9220,31 +8956,6 @@ mC mC mC mC -nU -nU -nU -nU -nU -wL -wL -wL -wL -wL -wL -rG -Xp -rK -kQ -yM -Hb -sO -wL -mF -fM -Gc -LP -Uy -wL mC mC mC @@ -9269,8 +8980,6 @@ mC mC mC mC -"} -(30,1,1) = {" mC mC mC @@ -9282,6 +8991,8 @@ mC mC mC mC +"} +(27,1,1) = {" mC mC mC @@ -9342,32 +9053,6 @@ mC mC mC mC -nU -nU -dC -nU -wE -Dd -wL -Aw -nz -cc -YE -wL -vX -GK -mp -wL -vr -LD -GU -wL -NT -Nc -kP -LP -vn -wL mC mC mC @@ -9392,8 +9077,6 @@ mC mC mC mC -"} -(31,1,1) = {" mC mC mC @@ -9431,6 +9114,8 @@ mC mC mC mC +"} +(28,1,1) = {" mC mC mC @@ -9465,32 +9150,6 @@ mC mC mC mC -nU -kg -wm -nU -WM -Df -wL -nz -ZE -cs -ho -wL -kR -nK -qT -wL -HR -or -cg -wL -lW -cy -bI -Dz -Mz -wL mC mC mC @@ -9515,8 +9174,6 @@ mC mC mC mC -"} -(32,1,1) = {" mC mC mC @@ -9580,6 +9237,8 @@ mC mC mC mC +"} +(29,1,1) = {" mC mC mC @@ -9588,32 +9247,6 @@ mC mC mC mC -nU -IY -vV -dX -Gm -lS -wL -uc -HG -HG -Bj -wL -eL -XB -AI -wL -Pz -PE -cg -wL -wH -Uo -zX -De -Hp -wL mC mC mC @@ -9638,8 +9271,6 @@ mC mC mC mC -"} -(33,1,1) = {" mC mC mC @@ -9708,35 +9339,6 @@ mC mC mC mC -nU -nU -nU -nU -nU -nU -nU -yl -Df -wL -Ez -SC -uL -Xl -wL -wL -wL -wL -wL -dW -AC -Ix -wL -wL -wL -wL -wL -wL -wL mC mC mC @@ -9758,11 +9360,11 @@ mC mC mC mC +"} +(30,1,1) = {" mC mC mC -"} -(34,1,1) = {" mC mC mC @@ -9825,39 +9427,20 @@ mC mC mC mC +Or +pD +pD +pD +pD +pD +pD +Or mC mC mC mC mC mC -nU -xZ -jh -nU -Si -ki -Yb -Oa -TW -wL -Qj -vX -vX -Xl -wL -eO -AY -kA -Yd -pX -cA -pX -Yd -ss -QA -EI -Yd mC mC mC @@ -9884,8 +9467,6 @@ mC mC mC mC -"} -(35,1,1) = {" mC mC mC @@ -9902,6 +9483,8 @@ mC mC mC mC +"} +(31,1,1) = {" mC mC mC @@ -9954,33 +9537,6 @@ mC mC mC mC -nU -pj -Eu -yI -nY -ZS -ri -HC -Df -wL -mz -Eo -jH -Xl -wL -DU -vL -Fu -Eg -IU -qQ -EG -Eg -dD -Gu -DQ -Yd mC mC mC @@ -9993,6 +9549,16 @@ mC mC mC mC +Or +Or +fC +ov +Ik +Ik +bT +jD +Or +Or mC mC mC @@ -10007,8 +9573,6 @@ mC mC mC mC -"} -(36,1,1) = {" mC mC mC @@ -10042,6 +9606,8 @@ mC mC mC mC +"} +(32,1,1) = {" mC mC mC @@ -10077,41 +9643,6 @@ mC mC mC mC -nU -nU -nU -nU -Zx -Th -qs -Gq -Cq -wL -sM -zv -mA -bQ -wL -ex -RN -GL -hG -cU -Kt -Ij -hG -Bs -MA -pl -Yd -mC -mC -mC -mC -mC -mC -mC -mC mC mC mC @@ -10130,11 +9661,6 @@ mC mC mC mC -"} -(37,1,1) = {" -mC -mC -mC mC mC mC @@ -10146,6 +9672,16 @@ mC mC mC mC +Or +ec +es +Qk +nE +nE +XM +EB +Zi +Or mC mC mC @@ -10193,44 +9729,13 @@ mC mC mC mC +"} +(33,1,1) = {" mC mC mC mC mC -nU -nU -nU -qH -qH -nU -nU -nU -nU -xA -nU -wL -wL -IP -jF -wL -wL -Yd -xs -OY -Yd -KW -zS -zS -Yd -iQ -jx -vT -Yd -Yd -Yd -Yd -Yd mC mC mC @@ -10253,8 +9758,6 @@ mC mC mC mC -"} -(38,1,1) = {" mC mC mC @@ -10291,6 +9794,18 @@ mC mC mC mC +Or +Or +Or +ys +bo +wF +Ep +NH +af +Or +Or +Or mC mC mC @@ -10321,42 +9836,6 @@ mC mC mC mC -nU -pg -QI -Ls -MB -KV -nU -Ig -HU -yu -mL -eg -ct -ms -Jh -QT -sX -fD -nI -RV -Yd -ks -ks -sr -kH -RV -dK -Yd -Yd -AR -dS -Sa -Yd -Yd -Yd -Yd mC mC mC @@ -10373,11 +9852,11 @@ mC mC mC mC +"} +(34,1,1) = {" mC mC mC -"} -(39,1,1) = {" mC mC mC @@ -10437,6 +9916,19 @@ mC mC mC mC +Or +Or +gK +YK +TB +PR +rB +rB +FB +FQ +Ov +vf +Or mC mC mC @@ -10444,42 +9936,6 @@ mC mC mC mC -nU -Uv -nU -uQ -Lx -Xr -wB -kF -Mr -fc -aC -CL -Jr -It -wn -Jr -St -AK -Xx -DY -Yd -ks -ks -ks -kH -Ao -Vq -qt -CR -mt -Dg -RF -xX -PK -Om -Yd mC mC mC @@ -10499,8 +9955,6 @@ mC mC mC mC -"} -(40,1,1) = {" mC mC mC @@ -10521,6 +9975,8 @@ mC mC mC mC +"} +(35,1,1) = {" mC mC mC @@ -10567,42 +10023,6 @@ mC mC mC mC -nU -dV -nU -GS -nd -KV -nU -im -jM -JB -aH -JX -hY -AU -ls -uy -sX -fD -nI -LD -Yd -ks -ks -ks -kH -DV -jx -Yr -jl -Ty -em -Xm -ru -jx -jx -Yd mC mC mC @@ -10619,11 +10039,23 @@ mC mC mC mC +Or +Sp +Ww +sa +GJ +uG +rt +rt +tL +HH +lZ +lj +Or +Or mC mC mC -"} -(41,1,1) = {" mC mC mC @@ -10666,6 +10098,8 @@ mC mC mC mC +"} +(36,1,1) = {" mC mC mC @@ -10690,42 +10124,6 @@ mC mC mC mC -nU -nU -nU -GS -Ni -JU -wL -wL -wL -Gj -wL -wL -wL -KC -oL -wL -wL -Yd -Ap -OY -Yd -Mt -Mt -Mt -Yd -tU -Yd -Yd -Yd -OC -zG -Zr -Yd -Yd -Yd -Yd mC mC mC @@ -10745,8 +10143,6 @@ mC mC mC mC -"} -(42,1,1) = {" mC mC mC @@ -10766,6 +10162,20 @@ mC mC mC mC +Or +pP +Rd +tg +xa +nf +du +KQ +Ou +Oz +Rk +kY +GA +Or mC mC mC @@ -10811,41 +10221,12 @@ mC mC mC mC +"} +(37,1,1) = {" mC mC mC mC -nU -qV -nU -ps -wL -bg -fv -GG -GB -wL -oC -sH -iI -OH -wL -FF -bs -ac -Hl -cU -Ct -yp -xr -sm -tv -pw -Yd -Yd -Yd -Yd -Yd mC mC mC @@ -10868,8 +10249,6 @@ mC mC mC mC -"} -(43,1,1) = {" mC mC mC @@ -10904,6 +10283,22 @@ mC mC mC mC +Or +Or +Or +BF +Rk +kW +ng +Qh +Qh +Qh +Qh +Yo +Nl +Rk +oq +Or mC mC mC @@ -10938,36 +10333,6 @@ mC mC mC mC -nU -QG -nU -QG -wL -bL -CI -xi -Jl -wL -ST -eq -TA -He -wL -Ab -Ty -lX -YC -ls -Sn -nM -Bx -XS -Cj -wy -Yd -cZ -Co -Yd mC mC mC @@ -10979,6 +10344,8 @@ mC mC mC mC +"} +(38,1,1) = {" mC mC mC @@ -10991,8 +10358,6 @@ mC mC mC mC -"} -(44,1,1) = {" mC mC mC @@ -11040,6 +10405,24 @@ mC mC mC mC +Or +Or +KK +EU +gy +lp +Au +Nv +ml +ml +ml +ml +Hm +FQ +uF +hd +Or +Or mC mC mC @@ -11061,36 +10444,6 @@ mC mC mC mC -nU -nU -nU -nU -wL -wL -gF -PA -oe -wL -DJ -AL -Lu -hA -wL -jd -Od -Jp -Yd -xx -by -xx -Yd -xy -np -sn -Yd -Yd -Yd -Yd mC mC mC @@ -11115,8 +10468,7 @@ mC mC mC "} -(45,1,1) = {" -mC +(39,1,1) = {" mC mC mC @@ -11176,6 +10528,29 @@ mC mC mC mC +zq +xW +Qk +bo +PH +dH +ZM +Cc +Qk +Qk +UM +Qk +Up +pO +ob +WT +dh +Or +mC +mC +mC +mC +mC mC mC mC @@ -11189,28 +10564,6 @@ mC mC mC mC -wL -rM -nc -IB -wL -Zm -Qc -HZ -YX -wL -Yd -Yd -Yd -Uw -jC -bJ -jC -Uw -Yd -Yd -Yd -Yd mC mC mC @@ -11238,7 +10591,7 @@ mC mC mC "} -(46,1,1) = {" +(40,1,1) = {" mC mC mC @@ -11298,6 +10651,24 @@ mC mC mC mC +zq +kJ +Qk +Zt +PV +yh +JM +je +tr +ti +ti +ED +mn +Of +du +Ld +cx +Or mC mC mC @@ -11312,24 +10683,6 @@ mC mC mC mC -wL -hB -FU -Ka -wL -VH -Ky -Ky -yj -wL -Uw -oR -YB -Rb -jC -Xk -Kz -Uw mC mC mC @@ -11361,7 +10714,7 @@ mC mC mC "} -(47,1,1) = {" +(41,1,1) = {" mC mC mC @@ -11421,6 +10774,26 @@ mC mC mC mC +zq +nE +Qk +iY +FB +VW +Bu +Za +Vy +sv +sv +sv +sv +JC +Uz +Or +Or +Or +mC +mC mC mC mC @@ -11435,26 +10808,6 @@ mC mC mC mC -wL -wL -wL -wL -wL -wL -wL -wL -wL -wL -Uw -Uw -Uw -Uw -pA -KJ -pA -Uw -Uw -Uw mC mC mC @@ -11484,7 +10837,12 @@ mC mC mC "} -(48,1,1) = {" +(42,1,1) = {" +mC +mC +mC +mC +mC mC mC mC @@ -11539,6 +10897,26 @@ mC mC mC mC +zq +jI +Wd +kI +DB +nw +uF +zn +uF +Jz +cO +gN +jI +LZ +Nx +ez +DX +Or +mC +mC mC mC mC @@ -11569,15 +10947,6 @@ mC mC mC mC -Uw -pF -Fa -pA -KJ -pA -Yv -jn -Uw mC mC mC @@ -11590,6 +10959,8 @@ mC mC mC mC +"} +(43,1,1) = {" mC mC mC @@ -11606,8 +10977,6 @@ mC mC mC mC -"} -(49,1,1) = {" mC mC mC @@ -11651,6 +11020,24 @@ mC mC mC mC +wL +wL +wL +wL +wL +wL +Ba +jN +Ba +wL +wL +wL +wL +wL +wL +wL +VX +Or mC mC mC @@ -11691,21 +11078,12 @@ mC mC mC mC -Uw -Uw -UE -LL -pA -KJ -pA -LL -mT -Uw -Uw mC mC mC mC +"} +(44,1,1) = {" mC mC mC @@ -11729,8 +11107,6 @@ mC mC mC mC -"} -(50,1,1) = {" mC mC mC @@ -11767,6 +11143,24 @@ mC mC mC mC +wL +nO +HB +Kw +Ff +wL +sC +RV +vv +wL +oF +hU +nz +Oq +KA +wL +Or +Or mC mC mC @@ -11811,22 +11205,9 @@ mC mC mC mC +"} +(45,1,1) = {" mC -Uw -Uw -Uw -iV -LL -LL -pA -KJ -pA -LL -LL -yV -Uw -Uw -Uw mC mC mC @@ -11852,8 +11233,6 @@ mC mC mC mC -"} -(51,1,1) = {" mC mC mC @@ -11887,6 +11266,22 @@ mC mC mC mC +wL +pm +Ck +ga +rZ +wL +xs +RV +sO +wL +xQ +ZE +yK +RC +ve +wL mC mC mC @@ -11933,24 +11328,9 @@ mC mC mC mC +"} +(46,1,1) = {" mC -Uw -Uw -gf -mg -GQ -Ko -Xn -pA -gs -pA -Ko -QD -Wz -xm -Hx -Uw -Uw mC mC mC @@ -11975,8 +11355,6 @@ mC mC mC mC -"} -(52,1,1) = {" mC mC mC @@ -12011,6 +11389,22 @@ mC mC mC mC +wL +Ry +Hi +BJ +zL +sk +Mk +ns +Xc +tB +Ev +Ps +Qt +jS +xn +wL mC mC mC @@ -12056,26 +11450,9 @@ mC mC mC mC -Uw -Uw -gr -QY -QY -EH -PG -PG -ey -Jo -fj -VR -VR -DA -RG -OJ -KG -Uw -Uw mC +"} +(47,1,1) = {" mC mC mC @@ -12098,8 +11475,6 @@ mC mC mC mC -"} -(53,1,1) = {" mC mC mC @@ -12137,6 +11512,22 @@ mC mC mC mC +wL +MO +BE +fV +tZ +ry +Hg +uv +wa +Td +iB +wR +gJ +ZO +CT +wL mC mC mC @@ -12179,29 +11570,12 @@ mC mC mC mC -Uw -Yv -kb -LL -Fa -Ze -iG -iG -mB -RY -Ju -iG -iG -Wt -Yv -kb -LL -Fa -Uw mC mC mC mC +"} +(48,1,1) = {" mC mC mC @@ -12221,8 +11595,6 @@ mC mC mC mC -"} -(54,1,1) = {" mC mC mC @@ -12263,6 +11635,24 @@ mC mC mC mC +wL +fI +Qf +Gp +GT +wL +vr +RV +Pa +wL +wL +wL +wL +wL +wL +wL +mC +mC mC mC mC @@ -12302,30 +11692,17 @@ mC mC mC mC -Uw -Am -LL -LL -QD -Ze -iG -iG -lK -FM -iF -iG -iG -Wt -cW -LL -LL -dt -Uw mC mC mC mC mC +"} +(49,1,1) = {" +mC +mC +mC +mC mC mC mC @@ -12344,8 +11721,6 @@ mC mC mC mC -"} -(55,1,1) = {" mC mC mC @@ -12383,6 +11758,23 @@ mC mC mC mC +wL +rV +cs +ZE +ZY +wL +EY +ZV +AM +sB +iw +rS +Zu +rS +KH +wL +mC mC mC mC @@ -12425,28 +11817,11 @@ mC mC mC mC -Uw -EW -pA -pA -pA -Ze -iG -xc -LG -Kn -EK -pe -iG -Eh -Cd -Cd -Cd -gm -Uw mC mC mC +"} +(50,1,1) = {" mC mC mC @@ -12467,8 +11842,6 @@ mC mC mC mC -"} -(56,1,1) = {" mC mC mC @@ -12508,6 +11881,22 @@ mC mC mC mC +wL +jW +ai +Sc +xo +wL +uX +sI +Ne +pt +et +UU +UU +Tk +pG +wL mC mC mC @@ -12548,31 +11937,14 @@ mC mC mC mC -Uw -Pu -Lz -cC -fZ -Ze -iG -Qw -cz -cz -cz -Vh -iG -hI -vu -lC -cC -lC -Uw mC mC mC mC mC mC +"} +(51,1,1) = {" mC mC mC @@ -12590,8 +11962,6 @@ mC mC mC mC -"} -(57,1,1) = {" mC mC mC @@ -12634,6 +12004,22 @@ mC mC mC mC +wL +wL +wL +wL +wL +wL +WV +LD +lk +wL +jU +MF +nT +dq +HL +wL mC mC mC @@ -12671,25 +12057,6 @@ mC mC mC mC -Uw -Vg -QP -cC -Bh -Ze -iG -Qw -cz -jp -cz -Vh -iG -hI -bk -QP -cC -Tt -Uw mC mC mC @@ -12699,6 +12066,8 @@ mC mC mC mC +"} +(52,1,1) = {" mC mC mC @@ -12713,8 +12082,6 @@ mC mC mC mC -"} -(58,1,1) = {" mC mC mC @@ -12761,6 +12128,21 @@ mC mC mC mC +wL +sL +Ob +uW +YR +gz +LD +fk +wL +Ru +lH +nz +LP +ar +wL mC mC mC @@ -12794,25 +12176,6 @@ mC mC mC mC -Uw -dY -Pj -cC -Do -Ze -iG -Qw -cz -cz -cz -Vh -iG -hI -qc -JL -cC -TY -Uw mC mC mC @@ -12826,6 +12189,8 @@ mC mC mC mC +"} +(53,1,1) = {" mC mC mC @@ -12836,8 +12201,6 @@ mC mC mC mC -"} -(59,1,1) = {" mC mC mC @@ -12878,6 +12241,31 @@ mC mC mC mC +nU +nU +nU +nU +nU +wL +wL +wL +wL +wL +wL +rG +Xp +rK +kQ +yM +Hb +sO +wL +mF +fM +Gc +LP +Uy +wL mC mC mC @@ -12917,25 +12305,6 @@ mC mC mC mC -Uw -oi -RG -RG -RG -gU -bv -sd -fh -fQ -fh -MN -bv -BQ -QY -QY -QY -mO -Uw mC mC mC @@ -12943,6 +12312,8 @@ mC mC mC mC +"} +(54,1,1) = {" mC mC mC @@ -12959,8 +12330,6 @@ mC mC mC mC -"} -(60,1,1) = {" mC mC mC @@ -12994,6 +12363,32 @@ mC mC mC mC +nU +nU +dC +nU +cl +pV +wL +rj +nz +cc +YE +wL +vX +GK +mp +wL +vr +LD +GU +wL +NT +Nc +kP +LP +vn +wL mC mC mC @@ -13040,25 +12435,8 @@ mC mC mC mC -Uw -iL -LL -LL -Fa -ya -Yv -YQ -Lr -Eq -bt -da -Fa -EM -Yv -LL -LL -re -Uw +"} +(55,1,1) = {" mC mC mC @@ -13082,8 +12460,6 @@ mC mC mC mC -"} -(61,1,1) = {" mC mC mC @@ -13110,6 +12486,32 @@ mC mC mC mC +nU +kg +wm +nU +WM +Df +wL +nz +ZE +cs +Rv +wL +kR +nK +qT +wL +HR +or +cg +wL +lW +cy +bI +Dz +Mz +wL mC mC mC @@ -13156,6 +12558,8 @@ mC mC mC mC +"} +(56,1,1) = {" mC mC mC @@ -13163,25 +12567,6 @@ mC mC mC mC -Uw -Ko -WI -LL -qi -ya -LL -su -VE -zW -Re -an -LL -EM -Ko -kb -kb -QD -Uw mC mC mC @@ -13205,8 +12590,6 @@ mC mC mC mC -"} -(62,1,1) = {" mC mC mC @@ -13226,6 +12609,32 @@ mC mC mC mC +nU +IY +vV +tC +rn +lS +wL +uc +HG +HG +Bj +wL +eL +XB +AI +wL +Pz +PE +cg +wL +wH +Uo +zX +De +Hp +wL mC mC mC @@ -13272,6 +12681,8 @@ mC mC mC mC +"} +(57,1,1) = {" mC mC mC @@ -13286,25 +12697,6 @@ mC mC mC mC -Uw -Uw -qP -Cd -Cd -VV -LL -su -cC -cC -cC -an -LL -gX -Cd -hv -yy -Uw -Uw mC mC mC @@ -13328,8 +12720,6 @@ mC mC mC mC -"} -(63,1,1) = {" mC mC mC @@ -13339,6 +12729,35 @@ mC mC mC mC +GM +GM +GM +GM +nU +nU +nU +yl +Df +wL +Ez +SC +uL +Xl +wL +wL +wL +wL +wL +dW +AC +Ix +wL +wL +wL +wL +wL +wL +wL mC mC mC @@ -13385,6 +12804,8 @@ mC mC mC mC +"} +(58,1,1) = {" mC mC mC @@ -13410,23 +12831,6 @@ mC mC mC mC -Uw -Uw -Hx -jk -QK -Ko -hx -Qe -cC -cC -lz -Oj -EM -jk -zp -Uw -Uw mC mC mC @@ -13448,11 +12852,36 @@ mC mC mC mC +GM +YI +rE +GM +Si +ki +Yb +Oa +TW +wL +Qj +vX +vX +Xl +wL +HP +AY +kA +Yd +XI +ia +XI +Yd +Rt +QA +EI +Yd mC mC mC -"} -(64,1,1) = {" mC mC mC @@ -13498,6 +12927,8 @@ mC mC mC mC +"} +(59,1,1) = {" mC mC mC @@ -13534,21 +12965,6 @@ mC mC mC mC -Uw -Uw -Uw -mG -Ac -ID -wr -cC -Ud -ME -oV -KD -Uw -Uw -Uw mC mC mC @@ -13559,6 +12975,33 @@ mC mC mC mC +GM +nZ +oz +tH +sG +ZS +ri +HC +Df +wL +mz +Eo +jH +Xl +wL +DU +vL +Fu +Eg +IU +qQ +EG +Eg +dD +Gu +DQ +Yd mC mC mC @@ -13574,8 +13017,6 @@ mC mC mC mC -"} -(65,1,1) = {" mC mC mC @@ -13609,6 +13050,10 @@ mC mC mC mC +"} +(60,1,1) = {" +mC +mC mC mC mC @@ -13653,23 +13098,39 @@ mC mC mC mC +GM +GM +GM +GM +Zx +Th +qs +Gq +LK +wL +bE +zv +mA +Qn +wL +ex +RN +GL +hG +cU +Kt +Ij +hG +Bs +MA +pl +Yd mC mC mC mC mC mC -Uw -Uw -LI -lP -py -NX -rF -pY -tK -Uw -Uw mC mC mC @@ -13697,8 +13158,6 @@ mC mC mC mC -"} -(66,1,1) = {" mC mC mC @@ -13714,6 +13173,8 @@ mC mC mC mC +"} +(61,1,1) = {" mC mC mC @@ -13758,6 +13219,39 @@ mC mC mC mC +GM +GM +GM +gP +qH +nU +nU +nU +nU +gb +nU +wL +wL +VG +Bp +wL +wL +Yd +xs +OY +Yd +KW +zS +zS +Yd +iQ +jx +vT +Yd +Yd +Yd +Yd +Yd mC mC mC @@ -13783,15 +13277,6 @@ mC mC mC mC -Uw -Uw -Uw -Uw -Uw -Uw -Uw -Uw -Uw mC mC mC @@ -13811,6 +13296,8 @@ mC mC mC mC +"} +(62,1,1) = {" mC mC mC @@ -13820,8 +13307,6 @@ mC mC mC mC -"} -(67,1,1) = {" mC mC mC @@ -13857,6 +13342,42 @@ mC mC mC mC +GM +Md +Zg +QR +MB +KV +nU +En +HU +yu +mL +eg +Eg +ms +Jh +QT +sX +fD +nI +RV +Yd +ks +ks +sr +kH +RV +dK +Yd +Yd +AR +dS +Sa +GM +GM +GM +GM mC mC mC @@ -13898,6 +13419,8 @@ mC mC mC mC +"} +(63,1,1) = {" mC mC mC @@ -13942,9 +13465,43 @@ mC mC mC mC +lb +KZ +GM +uQ +Lx +Xr +wB +kF +Mr +fc +aC +CL +Jr +It +wn +Jr +St +AK +Xx +DY +Yd +ks +ks +ks +kH +Ao +Vq +qt +CR +mt +Dg +RF +mQ +IA +wx +GM mC -"} -(68,1,1) = {" mC mC mC @@ -13985,6 +13542,8 @@ mC mC mC mC +"} +(64,1,1) = {" mC mC mC @@ -14029,6 +13588,42 @@ mC mC mC mC +GM +QL +GM +GS +nd +KV +nU +im +jM +JB +aH +JX +Lj +AU +ls +uy +sX +fD +nI +LD +Yd +ks +ks +ks +kH +DV +jx +Yr +jl +Ty +em +Xm +te +LO +KU +GM mC mC mC @@ -14066,12 +13661,12 @@ mC mC mC mC -"} -(69,1,1) = {" mC mC mC mC +"} +(65,1,1) = {" mC mC mC @@ -14116,6 +13711,42 @@ mC mC mC mC +GM +GM +GM +GS +Ni +JU +wL +wL +wL +SV +wL +wL +wL +YV +qZ +wL +wL +Yd +Ap +OY +Yd +Mt +Mt +Mt +Yd +tU +Yd +Yd +Yd +OC +zG +Zr +GM +GM +GM +GM mC mC mC @@ -14157,6 +13788,8 @@ mC mC mC mC +"} +(66,1,1) = {" mC mC mC @@ -14189,8 +13822,6 @@ mC mC mC mC -"} -(70,1,1) = {" mC mC mC @@ -14205,6 +13836,37 @@ mC mC mC mC +nU +cV +nU +ag +wL +bg +fv +GG +GB +wL +oC +sH +iI +OH +wL +FF +bs +ac +Hl +cU +Ct +yp +xr +sm +tv +pw +Yd +Yd +Yd +Yd +Yd mC mC mC @@ -14249,6 +13911,8 @@ mC mC mC mC +"} +(67,1,1) = {" mC mC mC @@ -14295,6 +13959,35 @@ mC mC mC mC +nU +vZ +nU +Ip +wL +bL +CI +xi +Jl +wL +ST +eq +TA +He +wL +WW +Ty +lX +YC +ls +Sn +nM +Bx +XS +Cj +yg +Yd +cZ +Yd mC mC mC @@ -14312,8 +14005,6 @@ mC mC mC mC -"} -(71,1,1) = {" mC mC mC @@ -14343,6 +14034,8 @@ mC mC mC mC +"} +(68,1,1) = {" mC mC mC @@ -14389,6 +14082,35 @@ mC mC mC mC +nU +nU +nU +nU +wL +wL +gF +PA +oe +wL +DJ +AL +Lu +hA +wL +jd +Od +lx +Yd +rD +FN +rD +Yd +xy +np +sn +Yd +Yd +Yd mC mC mC @@ -14436,8 +14158,7 @@ mC mC mC "} -(72,1,1) = {" -mC +(69,1,1) = {" mC mC mC @@ -14489,6 +14210,28 @@ mC mC mC mC +wL +rM +nc +IB +wL +Zm +Qc +HZ +YX +wL +Yd +Yd +Yd +Uw +jC +bJ +jC +Uw +Yd +Yd +Yd +Yd mC mC mC @@ -14537,6 +14280,8 @@ mC mC mC mC +"} +(70,1,1) = {" mC mC mC @@ -14558,8 +14303,6 @@ mC mC mC mC -"} -(73,1,1) = {" mC mC mC @@ -14590,6 +14333,24 @@ mC mC mC mC +wL +hB +FU +Ka +wL +Jw +Ky +Ky +yj +wL +Uw +oR +YB +Rb +jC +Xk +Kz +Uw mC mC mC @@ -14642,6 +14403,8 @@ mC mC mC mC +"} +(71,1,1) = {" mC mC mC @@ -14681,8 +14444,6 @@ mC mC mC mC -"} -(74,1,1) = {" mC mC mC @@ -14695,6 +14456,26 @@ mC mC mC mC +wL +wL +wL +wL +wL +wL +wL +wL +wL +wL +Uw +Uw +Uw +Uw +pA +KJ +pA +Uw +Uw +Uw mC mC mC @@ -14745,6 +14526,8 @@ mC mC mC mC +"} +(72,1,1) = {" mC mC mC @@ -14804,11 +14587,18 @@ mC mC mC mC -"} -(75,1,1) = {" mC mC mC +Uw +pF +Fa +pA +KJ +pA +Yv +jn +Uw mC mC mC @@ -14859,6 +14649,8 @@ mC mC mC mC +"} +(73,1,1) = {" mC mC mC @@ -14920,6 +14712,17 @@ mC mC mC mC +Uw +Uw +UE +LL +pA +KJ +pA +LL +mT +Uw +Uw mC mC mC @@ -14927,8 +14730,6 @@ mC mC mC mC -"} -(76,1,1) = {" mC mC mC @@ -14971,6 +14772,8 @@ mC mC mC mC +"} +(74,1,1) = {" mC mC mC @@ -15030,6 +14833,21 @@ mC mC mC mC +Uw +Uw +Uw +iV +LL +LL +pA +KJ +pA +LL +LL +yV +Uw +Uw +Uw mC mC mC @@ -15050,8 +14868,6 @@ mC mC mC mC -"} -(77,1,1) = {" mC mC mC @@ -15079,6 +14895,8 @@ mC mC mC mC +"} +(75,1,1) = {" mC mC mC @@ -15137,6 +14955,23 @@ mC mC mC mC +Uw +Uw +gf +mg +GQ +Ko +Xn +pA +gs +pA +Ko +QD +Wz +xm +Hx +Uw +Uw mC mC mC @@ -15173,8 +15008,6 @@ mC mC mC mC -"} -(78,1,1) = {" mC mC mC @@ -15185,6 +15018,8 @@ mC mC mC mC +"} +(76,1,1) = {" mC mC mC @@ -15242,6 +15077,25 @@ mC mC mC mC +Uw +Uw +gr +QY +QY +EH +PG +PG +ey +Jo +fj +VR +VR +DA +RG +RG +Ku +Uw +Uw mC mC mC @@ -15287,6 +15141,8 @@ mC mC mC mC +"} +(77,1,1) = {" mC mC mC @@ -15296,8 +15152,6 @@ mC mC mC mC -"} -(79,1,1) = {" mC mC mC @@ -15346,6 +15200,25 @@ mC mC mC mC +Uw +Yv +kb +LL +Fa +Ze +iG +iG +mB +RY +Ju +iG +iG +Wt +Yv +kb +LL +Fa +Uw mC mC mC @@ -15391,6 +15264,8 @@ mC mC mC mC +"} +(78,1,1) = {" mC mC mC @@ -15419,8 +15294,6 @@ mC mC mC mC -"} -(80,1,1) = {" mC mC mC @@ -15450,6 +15323,25 @@ mC mC mC mC +Uw +Am +LL +LL +QD +Ze +iG +iG +lK +FM +iF +iG +iG +Wt +cW +LL +LL +dt +Uw mC mC mC @@ -15495,6 +15387,8 @@ mC mC mC mC +"} +(79,1,1) = {" mC mC mC @@ -15542,8 +15436,6 @@ mC mC mC mC -"} -(81,1,1) = {" mC mC mC @@ -15554,6 +15446,25 @@ mC mC mC mC +Uw +EW +pA +pA +pA +Ze +iG +xc +LG +Kn +EK +pe +iG +Eh +Cd +Cd +Cd +gm +Uw mC mC mC @@ -15599,6 +15510,8 @@ mC mC mC mC +"} +(80,1,1) = {" mC mC mC @@ -15656,6 +15569,25 @@ mC mC mC mC +Uw +Pu +Lz +cC +fZ +Ze +iG +Qw +cz +cz +cz +Vh +iG +hI +vu +lC +cC +lC +Uw mC mC mC @@ -15665,8 +15597,6 @@ mC mC mC mC -"} -(82,1,1) = {" mC mC mC @@ -15703,6 +15633,8 @@ mC mC mC mC +"} +(81,1,1) = {" mC mC mC @@ -15760,6 +15692,25 @@ mC mC mC mC +Uw +Vg +QP +cC +Bh +Ze +iG +Qw +cz +jp +cz +Vh +iG +hI +bk +QP +cC +Tt +Uw mC mC mC @@ -15788,8 +15739,6 @@ mC mC mC mC -"} -(83,1,1) = {" mC mC mC @@ -15807,6 +15756,8 @@ mC mC mC mC +"} +(82,1,1) = {" mC mC mC @@ -15864,6 +15815,25 @@ mC mC mC mC +Uw +dY +Pj +cC +Do +Ze +iG +Qw +cz +cz +cz +Vh +iG +hI +qc +JL +cC +TY +Uw mC mC mC @@ -15909,10 +15879,10 @@ mC mC mC mC +"} +(83,1,1) = {" mC mC -"} -(84,1,1) = {" mC mC mC @@ -15968,6 +15938,25 @@ mC mC mC mC +Uw +oi +RG +RG +RG +gU +bv +sd +fh +fQ +fh +MN +bv +BQ +QY +QY +QY +mO +Uw mC mC mC @@ -16013,6 +16002,8 @@ mC mC mC mC +"} +(84,1,1) = {" mC mC mC @@ -16034,8 +16025,6 @@ mC mC mC mC -"} -(85,1,1) = {" mC mC mC @@ -16072,6 +16061,25 @@ mC mC mC mC +Uw +iL +LL +LL +Fa +ya +Yv +YQ +Lr +Eq +bt +da +Fa +EM +Yv +LL +LL +re +Uw mC mC mC @@ -16117,6 +16125,8 @@ mC mC mC mC +"} +(85,1,1) = {" mC mC mC @@ -16157,8 +16167,6 @@ mC mC mC mC -"} -(86,1,1) = {" mC mC mC @@ -16176,6 +16184,25 @@ mC mC mC mC +Uw +Ko +WI +LL +qi +ya +LL +su +VE +zW +Re +an +LL +EM +Ko +kb +kb +QD +Uw mC mC mC @@ -16221,6 +16248,8 @@ mC mC mC mC +"} +(86,1,1) = {" mC mC mC @@ -16278,10 +16307,27 @@ mC mC mC mC +Uw +Uw +qP +Cd +Cd +VV +LL +su +cC +cC +cC +an +LL +gX +Cd +hv +yy +Uw +Uw mC mC -"} -(87,1,1) = {" mC mC mC @@ -16325,6 +16371,8 @@ mC mC mC mC +"} +(87,1,1) = {" mC mC mC @@ -16383,6 +16431,23 @@ mC mC mC mC +Uw +Uw +Hx +jk +QK +Ko +hx +Qe +cC +cC +lz +Oj +EM +jk +zp +Uw +Uw mC mC mC @@ -16403,8 +16468,6 @@ mC mC mC mC -"} -(88,1,1) = {" mC mC mC @@ -16431,6 +16494,8 @@ mC mC mC mC +"} +(88,1,1) = {" mC mC mC @@ -16490,6 +16555,21 @@ mC mC mC mC +Uw +Uw +Uw +mG +Ac +ID +wr +cC +Ud +ME +oV +KD +Uw +Uw +Uw mC mC mC @@ -16526,8 +16606,6 @@ mC mC mC mC -"} -(89,1,1) = {" mC mC mC @@ -16539,6 +16617,8 @@ mC mC mC mC +"} +(89,1,1) = {" mC mC mC @@ -16600,6 +16680,17 @@ mC mC mC mC +Uw +Uw +LI +lP +py +NX +rF +pY +tK +Uw +Uw mC mC mC @@ -16713,15 +16804,15 @@ mC mC mC mC -mC -mC -mC -mC -mC -mC -mC -mC -mC +Uw +Uw +Uw +Uw +Uw +Uw +Uw +Uw +Uw mC mC mC diff --git a/_maps/outpost/outpost_test_2.dmm b/_maps/outpost/nanotrasen_asteroid.dmm similarity index 89% rename from _maps/outpost/outpost_test_2.dmm rename to _maps/outpost/nanotrasen_asteroid.dmm index 5884b870792c..39a1808839b2 100644 --- a/_maps/outpost/outpost_test_2.dmm +++ b/_maps/outpost/nanotrasen_asteroid.dmm @@ -12,21 +12,12 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/plasteel/rockvault, /area/outpost/operations) "ae" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/firealarm/directional/north, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20; - pixel_x = -3 - }, -/turf/open/floor/wood, -/area/outpost/crew/bar) +/obj/machinery/door/airlock/freezer, +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/hallway/central) "ag" = ( /obj/structure/table/reinforced, /obj/item/folder/blue{ @@ -215,6 +206,7 @@ /obj/effect/turf_decal/industrial/warning{ dir = 4 }, +/obj/machinery/light/small/directional/west, /turf/open/floor/plasteel/dark, /area/outpost/operations) "aU" = ( @@ -315,6 +307,14 @@ }, /obj/structure/closet/secure_closet/security/sec, /obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/button/door{ + dir = 4; + pixel_x = -28; + pixel_y = 6; + id = "outpost_security"; + req_access_txt = "101"; + name = "Security Lockdown" + }, /turf/open/floor/plasteel/dark, /area/outpost/security) "bu" = ( @@ -439,9 +439,12 @@ /turf/open/floor/carpet/nanoweave, /area/outpost/crew/canteen) "bO" = ( -/obj/machinery/door/airlock/grunge, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) +/obj/effect/turf_decal/techfloor, +/obj/item/radio/intercom/directional/north{ + pixel_x = -3 + }, +/turf/open/floor/plasteel/tech, +/area/outpost/crew/cryo) "bP" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -577,16 +580,13 @@ pixel_y = -3 }, /obj/item/toy/plush/beeplushie, -/obj/effect/turf_decal/weather/snow/corner{ - dir = 5 - }, -/obj/effect/turf_decal/weather/snow/corner{ - dir = 6 - }, /obj/item/reagent_containers/food/drinks/mug/tea{ pixel_y = -14; pixel_x = -4 }, +/obj/effect/turf_decal/weather/snow/surround{ + dir = 4 + }, /turf/open/floor/plating/asteroid/snow/under/lit, /area/outpost/external) "cm" = ( @@ -635,6 +635,13 @@ }, /turf/open/floor/concrete/slab_3, /area/outpost/hallway/central) +"cw" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/concrete/slab_3, +/area/outpost/hallway/central) "cB" = ( /obj/item/kirbyplants/photosynthetic, /turf/open/floor/plasteel, @@ -681,6 +688,7 @@ /obj/machinery/newscaster/directional/north{ pixel_x = -32 }, +/obj/machinery/light/directional/west, /turf/open/floor/wood, /area/outpost/operations) "cJ" = ( @@ -726,15 +734,37 @@ /turf/open/floor/plasteel/cult, /area/outpost/maintenance/fore) "cX" = ( -/obj/structure/sign/warning/electricshock{ - pixel_y = 32 +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating/dark, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/red/line, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ - icon_state = "0-2" + icon_state = "4-8" }, -/obj/machinery/power/smes/magical, -/turf/open/floor/plasteel/telecomms_floor, -/area/outpost/engineering) +/obj/machinery/door/poddoor/ert{ + dir = 8; + id = "outpost_security"; + desc = "A heavy duty blast door." + }, +/obj/machinery/door/airlock/outpost{ + dir = 4; + icon = 'icons/obj/doors/airlocks/station/security.dmi'; + overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'; + assemblytype = /obj/structure/door_assembly/door_assembly_sec; + req_one_access_txt = "101" + }, +/turf/open/floor/plasteel/dark, +/area/outpost/security) "da" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 @@ -832,14 +862,14 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "du" = ( -/obj/machinery/door/airlock{ - name = "WC" +/obj/effect/turf_decal/techfloor{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/patterned/ridged{ - color = "#4c535b" +/obj/item/radio/intercom/directional/north{ + pixel_x = -3 }, -/area/outpost/crew/library) +/turf/open/floor/plasteel/tech, +/area/outpost/security/armory) "dv" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -876,12 +906,16 @@ /turf/open/space/basic, /area/outpost/external) "dA" = ( -/obj/machinery/door/airlock/public/glass, -/obj/effect/landmark/outpost/elevator_machine{ - shaft = "4" +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/hallway/fore) +/obj/item/kirbyplants{ + icon_state = "plant-21" + }, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/concrete/tiles, +/area/outpost/hallway/central) "dB" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -945,15 +979,23 @@ /turf/open/floor/grass, /area/outpost/crew/lounge) "dN" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave{ - pixel_y = 5 +/obj/structure/barricade/wooden/crude{ + layer = 3.13 }, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/library) +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/door/poddoor/shutters/indestructible{ + name = "Showcase Storage"; + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/outpost/maintenance/fore) "dO" = ( /obj/effect/turf_decal/snow, -/obj/effect/turf_decal/weather/snow/corner{ +/obj/effect/turf_decal/weather/snow{ dir = 8 }, /turf/open/floor/concrete/reinforced, @@ -1191,6 +1233,13 @@ }, /turf/open/floor/plasteel, /area/outpost/vacant_rooms) +"eM" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/turf_decal/corner/opaque/yellow/full, +/obj/effect/turf_decal/corner/opaque/yellow/diagonal, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/dark, +/area/outpost/cargo) "eO" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -1338,6 +1387,11 @@ /obj/effect/turf_decal/number/one, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/hallway/fore) +"fo" = ( +/obj/effect/turf_decal/corner/opaque/blue/full, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel/white, +/area/outpost/medical) "fp" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -1488,8 +1542,11 @@ /turf/open/floor/concrete/slab_3, /area/outpost/hallway/starboard) "fO" = ( -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/library) +/obj/structure/urinal{ + pixel_y = 28 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/canteen) "fP" = ( /obj/structure/chair{ dir = 4 @@ -1549,19 +1606,12 @@ /turf/open/floor/plasteel/dark, /area/outpost/crew/cryo) "fZ" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/item/banner, -/obj/effect/turf_decal/spline/fancy/opaque/black{ - dir = 1 - }, -/obj/effect/turf_decal/spline/fancy/opaque/black, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20 +/obj/machinery/door/airlock/maintenance_hatch{ + req_access_txt = "109"; + dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/outpost/hallway/fore) +/turf/open/floor/plating, +/area/outpost/crew/library) "ga" = ( /turf/open/floor/plasteel/stairs{ icon = 'icons/obj/stairs.dmi' @@ -1658,7 +1708,6 @@ }, /obj/effect/decal/cleanable/wrapping, /obj/item/radio/intercom/directional/west, -/obj/machinery/firealarm/directional/west, /turf/open/floor/concrete/slab_1, /area/outpost/hallway/central) "gv" = ( @@ -1718,11 +1767,26 @@ }, /turf/open/floor/plasteel/tech, /area/outpost/crew/cryo) +"gF" = ( +/obj/structure/table/reinforced, +/obj/item/kitchen/knife{ + pixel_y = 6; + pixel_x = 9 + }, +/obj/item/book/manual/chef_recipes{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/kitchen/rollingpin, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/library) "gH" = ( /obj/structure/girder, /obj/effect/decal/cleanable/blood/gibs/old, /obj/structure/sign/poster/official/random{ - pixel_y = -32 + pixel_x = -32 }, /turf/open/floor/plating, /area/outpost/maintenance/aft) @@ -1817,7 +1881,13 @@ /turf/open/floor/plasteel/tech/grid, /area/outpost/security/armory) "gW" = ( -/obj/machinery/door/poddoor/ert, +/obj/machinery/door/poddoor/ert{ + id = "outpost_ert" + }, +/obj/effect/turf_decal/industrial/traffic, +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, /turf/open/floor/plasteel/dark, /area/outpost/security/armory) "ha" = ( @@ -1890,19 +1960,9 @@ /turf/open/floor/plasteel/tech, /area/outpost/crew/bar) "hp" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/wrapping, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/wood, -/area/outpost/crew/bar) +/obj/machinery/processor, +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/library) "hu" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/engine, @@ -1916,14 +1976,14 @@ /turf/open/floor/plasteel/dark, /area/outpost/operations) "hy" = ( -/obj/machinery/door/airlock/highsecurity, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/door/airlock/external{ + dir = 8 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/crew/cryo) +/obj/structure/barricade/wooden/crude{ + layer = 3.1 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/aft) "hA" = ( /obj/effect/turf_decal/industrial/hatch/yellow, /obj/effect/turf_decal/corner/opaque/yellow/full, @@ -1942,14 +2002,9 @@ /turf/open/floor/plasteel/sepia, /area/outpost/crew/canteen) "hE" = ( -/obj/machinery/door/poddoor/shutters/indestructible{ - name = "Showcase Storage" - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/canteen) "hF" = ( /obj/structure/table/wood, /obj/item/trash/plate{ @@ -2061,6 +2116,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/showroomfloor, /area/outpost/hallway/central) +"ia" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/railing/wood{ + layer = 3.1; + dir = 8 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/grass, +/area/outpost/crew/lounge) "ic" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ @@ -2217,6 +2283,15 @@ }, /turf/open/floor/concrete/tiles, /area/outpost/hallway/central) +"iK" = ( +/obj/machinery/door/airlock/command{ + name = "Council Chamber"; + req_access_txt = "19"; + security_level = 6; + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/operations) "iL" = ( /obj/effect/turf_decal/trimline/opaque/beige/filled/line, /turf/open/floor/plasteel/dark, @@ -2280,6 +2355,13 @@ /obj/structure/catwalk/over/plated_catwalk, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"ja" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/concrete/slab_3, +/area/outpost/hallway/starboard) "jb" = ( /obj/structure/rack, /obj/item/storage/belt/utility/full/engi{ @@ -2333,25 +2415,29 @@ /obj/effect/turf_decal/siding/wood{ dir = 8 }, -/obj/machinery/firealarm/directional/west, /obj/item/radio/intercom/directional/west, /turf/open/floor/carpet/nanoweave, /area/outpost/crew/canteen) "jl" = ( -/obj/machinery/door/poddoor/shutters/preopen, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8 + }, /obj/structure/barricade/wooden, +/obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/outpost/maintenance/aft) "jm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/structure/chair/comfy/brown{ + dir = 4 }, -/obj/machinery/light/directional/north, -/obj/structure/sign/poster/retro/nanotrasen_logo_80s{ - pixel_y = 32 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/concrete/tiles, -/area/outpost/crew/garden) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/operations) "jn" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -2568,15 +2654,18 @@ /turf/open/floor/plasteel/rockvault, /area/outpost/operations) "jT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/structure/railing{ + dir = 4 }, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20 +/obj/item/banner, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 1 }, -/turf/open/floor/carpet/nanoweave, -/area/outpost/crew/canteen) -"jU" = ( +/obj/effect/turf_decal/spline/fancy/opaque/black, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel/dark, +/area/outpost/hallway/fore) +"jU" = ( /obj/effect/turf_decal/borderfloorwhite{ dir = 5 }, @@ -2603,6 +2692,10 @@ dir = 8; name = "Reception Window" }, +/obj/machinery/door/poddoor/preopen{ + id = "outpost_office_lockdown"; + dir = 8 + }, /turf/open/floor/plasteel, /area/outpost/operations) "jX" = ( @@ -2679,8 +2772,11 @@ /turf/open/floor/grass, /area/outpost/crew/lounge) "kl" = ( -/obj/machinery/door/airlock/mining{ - req_access_txt = "109" +/obj/machinery/door/airlock/outpost{ + dir = 1; + icon = 'icons/obj/doors/airlocks/station/mining.dmi'; + overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'; + assemblytype = /obj/structure/door_assembly/door_assembly_min }, /turf/open/floor/plasteel/tech, /area/outpost/cargo/office) @@ -2865,6 +2961,10 @@ /area/outpost/hallway/aft) "lb" = ( /obj/effect/spawner/structure/window/reinforced/indestructable, +/obj/machinery/door/poddoor/ert{ + id = "outpost_security_desk"; + desc = "A heavy duty blast door." + }, /turf/open/floor/plating, /area/outpost/security) "le" = ( @@ -2928,19 +3028,13 @@ /obj/effect/turf_decal/siding/wood{ dir = 6 }, -/obj/machinery/firealarm/directional/south, /obj/item/radio/intercom/directional/south, /turf/open/floor/grass, /area/outpost/crew/lounge) -"li" = ( -/obj/effect/turf_decal/number/seven, -/turf/open/floor/plasteel/elevatorshaft, -/area/outpost/vacant_rooms) "lq" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/machinery/firealarm/directional/east, /obj/item/radio/intercom/directional/east, /turf/open/floor/concrete/slab_3, /area/outpost/hallway/starboard) @@ -2954,13 +3048,8 @@ /turf/open/floor/wood, /area/outpost/hallway/central) "lx" = ( -/obj/machinery/door/airlock/freezer, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/showroomfloor, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/plasteel/sepia, /area/outpost/crew/canteen) "ly" = ( /obj/effect/decal/cleanable/dirt, @@ -2999,29 +3088,12 @@ /turf/open/floor/grass, /area/outpost/crew/lounge) "lG" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wideplating/dark, -/obj/effect/turf_decal/trimline/opaque/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/opaque/red/line, -/obj/machinery/door/airlock/security/glass{ - req_access_txt = "101" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/structure/grille/broken, +/obj/machinery/door/airlock/maintenance_hatch{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4; - req_one_access_txt = "101" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/outpost/security) +/turf/open/floor/plating, +/area/outpost/maintenance/fore) "lH" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -3066,11 +3138,15 @@ /turf/open/floor/plating/foam, /area/outpost/maintenance/aft) "lM" = ( -/obj/machinery/door/poddoor/shutters/preopen, -/obj/structure/barricade/wooden, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plating, -/area/outpost/maintenance/aft) +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock{ + dir = 4; + name = "Chapel" + }, +/turf/open/floor/plasteel/tech, +/area/outpost/crew/lounge) "lN" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/white{ @@ -3174,7 +3250,7 @@ pixel_y = 3; pixel_x = -1 }, -/obj/effect/turf_decal/weather/snow/corner{ +/obj/effect/turf_decal/weather/snow{ dir = 9 }, /turf/open/floor/plating/asteroid/snow/under/lit, @@ -3183,6 +3259,13 @@ /obj/structure/barricade/wooden, /turf/open/floor/plating, /area/outpost/maintenance/aft) +"mj" = ( +/obj/effect/spawner/structure/window/reinforced/indestructable, +/obj/machinery/door/poddoor/preopen{ + id = "outpost_security_window" + }, +/turf/open/floor/plating, +/area/outpost/security) "mk" = ( /obj/effect/turf_decal/techfloor{ dir = 8 @@ -3228,6 +3311,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, +/obj/machinery/firealarm/directional/east, /turf/open/floor/plasteel/sepia, /area/outpost/crew/canteen) "mr" = ( @@ -3291,15 +3375,18 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "mw" = ( -/obj/machinery/door/airlock/command{ - req_access_txt = "101" - }, /obj/effect/turf_decal/industrial/warning{ dir = 8 }, /obj/effect/turf_decal/industrial/warning{ dir = 4 }, +/obj/machinery/door/airlock/outpost{ + assemblytype = /obj/structure/door_assembly/door_assembly_com; + icon = 'icons/obj/doors/airlocks/station/command.dmi'; + overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'; + req_one_access_txt = "109" + }, /turf/open/floor/plasteel/dark, /area/outpost/operations) "mx" = ( @@ -3337,20 +3424,13 @@ /turf/open/floor/wood, /area/outpost/crew/bar) "mB" = ( -/obj/machinery/door/airlock/medical{ - req_access_txt = "109" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/table/wood, +/obj/machinery/status_display/ai{ + pixel_y = 32 }, -/turf/open/floor/plasteel/white, -/area/outpost/medical) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/outpost/operations) "mD" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -3425,6 +3505,12 @@ /obj/effect/turf_decal/techfloor{ dir = 4 }, +/obj/machinery/button/door{ + pixel_y = 28; + id = "outpost_ert"; + req_access_txt = "101"; + pixel_x = -3 + }, /turf/open/floor/plasteel/tech, /area/outpost/security/armory) "mP" = ( @@ -3541,16 +3627,18 @@ /turf/open/floor/plasteel, /area/outpost/vacant_rooms) "nk" = ( -/obj/structure/chair/comfy/black{ +/obj/structure/chair/comfy/black, +/obj/effect/turf_decal/siding/wood{ dir = 8 }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable{ + icon_state = "0-4" }, /turf/open/floor/wood, /area/outpost/vacant_rooms/office) "nn" = ( +/obj/structure/elevator_platform, /turf/open/floor/plasteel/elevatorshaft, /area/outpost/vacant_rooms) "no" = ( @@ -3810,17 +3898,23 @@ /turf/open/floor/wood, /area/outpost/hallway/central) "op" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Bridge Access"; - req_access_txt = "101"; - security_level = 6 - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/door/airlock/outpost{ + assemblytype = /obj/structure/door_assembly/door_assembly_com; + icon = 'icons/obj/doors/airlocks/station/command.dmi'; + glass = 1; + overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'; + name = "Bridge Access"; + req_one_access_txt = "109" + }, +/obj/machinery/door/poddoor/preopen{ + id = "outpost_bridge_lockdown" + }, /turf/open/floor/plasteel, /area/outpost/operations) "oq" = ( @@ -3850,6 +3944,7 @@ /obj/effect/turf_decal/industrial/warning{ dir = 8 }, +/obj/machinery/firealarm/directional/west, /turf/open/floor/plasteel/dark, /area/outpost/cargo) "oA" = ( @@ -3867,6 +3962,7 @@ /obj/structure/chair/sofa/right{ dir = 4 }, +/obj/machinery/firealarm/directional/west, /turf/open/floor/concrete/tiles, /area/outpost/hallway/aft) "oD" = ( @@ -3942,6 +4038,7 @@ /obj/effect/turf_decal/techfloor{ dir = 4 }, +/obj/machinery/firealarm/directional/south, /turf/open/floor/plasteel/tech, /area/outpost/hallway/fore) "oX" = ( @@ -3997,7 +4094,6 @@ /obj/structure/chair/sofa/left{ dir = 4 }, -/obj/machinery/firealarm/directional/west, /obj/item/radio/intercom/directional/west, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 @@ -4011,12 +4107,20 @@ /turf/open/floor/plasteel/elevatorshaft, /area/outpost/hallway/fore) "pm" = ( -/obj/machinery/door/airlock/external, -/obj/structure/barricade/wooden/crude{ - layer = 3.1 +/obj/effect/turf_decal/industrial/warning{ + dir = 4 }, -/turf/open/floor/plating, -/area/outpost/maintenance/aft) +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/rockvault, +/area/outpost/operations) "po" = ( /turf/closed/indestructible/reinforced, /area/outpost/medical) @@ -4046,12 +4150,20 @@ "pt" = ( /obj/machinery/light/directional/south, /obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/west, /turf/open/floor/carpet/blue, /area/outpost/hallway/central) "pu" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/turf/open/floor/plasteel/tech, -/area/outpost/vacant_rooms) +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/trimline/transparent/lightgrey/line{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/engineering/atmospherics) "pv" = ( /obj/structure/railing/wood{ layer = 3.1; @@ -4138,6 +4250,13 @@ }, /turf/open/floor/plasteel/sepia, /area/outpost/crew/library) +"pK" = ( +/obj/effect/spawner/structure/window/reinforced/indestructable, +/obj/machinery/door/poddoor/preopen{ + id = "outpost_bridge_lockdown" + }, +/turf/open/floor/plating, +/area/outpost/operations) "pL" = ( /obj/structure/flora/rock/pile/largejungle{ pixel_x = -26; @@ -4173,6 +4292,12 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/button/door{ + pixel_y = 28; + id = "outpost_security_window"; + req_access_txt = "101"; + name = "Cell Window Shutters" + }, /turf/open/floor/plasteel/dark, /area/outpost/security) "pT" = ( @@ -4247,16 +4372,14 @@ /area/outpost/maintenance/fore) "qg" = ( /obj/structure/table/reinforced, -/obj/item/modular_computer/laptop/preset/civilian{ +/obj/item/reagent_containers/food/condiment/enzyme{ + pixel_x = -2; pixel_y = 6 }, -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20; - pixel_x = -3 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/security) +/obj/item/reagent_containers/glass/beaker, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/library) "qi" = ( /obj/effect/turf_decal/techfloor/orange{ dir = 1 @@ -4371,11 +4494,12 @@ /turf/open/floor/plasteel/white, /area/outpost/medical) "qy" = ( -/obj/machinery/door/airlock/external{ - req_access_txt = "109" +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/turf/open/floor/plating, -/area/outpost/maintenance/aft) +/obj/machinery/firealarm/directional/west, +/turf/open/floor/carpet/nanoweave, +/area/outpost/hallway/central) "qz" = ( /obj/structure/railing/corner/wood{ dir = 1 @@ -4472,23 +4596,23 @@ /turf/open/floor/plasteel/patterned/ridged, /area/outpost/hallway/central) "qK" = ( -/obj/structure/chair/sofa/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 8 }, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20 +/turf/open/floor/plating{ + icon_state = "panelscorched" }, -/turf/open/floor/wood, -/area/outpost/crew/library) +/area/outpost/maintenance/aft) "qL" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/effect/landmark/outpost/elevator_machine{ + shaft = "1" }, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/library) +/obj/machinery/door/airlock/public/glass{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/hallway/fore) "qN" = ( /obj/effect/turf_decal/steeldecal/steel_decals10{ dir = 5 @@ -4525,7 +4649,6 @@ dir = 8 }, /obj/item/radio/intercom/directional/west, -/obj/machinery/firealarm/directional/west, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/stairs{ icon = 'icons/obj/stairs.dmi' @@ -4563,16 +4686,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/dark, /area/outpost/crew/cryo) -"rb" = ( -/obj/machinery/door/airlock/command, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/operations) "rc" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -4603,7 +4716,6 @@ pixel_x = -8 }, /obj/item/radio/intercom/directional/west, -/obj/machinery/firealarm/directional/west, /turf/open/floor/carpet/blue, /area/outpost/hallway/central) "rh" = ( @@ -4652,19 +4764,13 @@ }, /area/outpost/maintenance/aft) "rl" = ( -/obj/structure/table/reinforced, -/obj/item/kitchen/knife{ - pixel_y = 6; - pixel_x = 9 - }, -/obj/item/book/manual/chef_recipes{ - pixel_x = -4; - pixel_y = 6 +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/item/kitchen/rollingpin, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/library) +/obj/item/radio/intercom/directional/north, +/turf/open/floor/concrete/slab_3, +/area/outpost/hallway/central) "ro" = ( /obj/structure/table/wood/poker, /obj/item/flashlight/lamp/green{ @@ -4687,12 +4793,23 @@ /turf/open/floor/wood, /area/outpost/crew/library) "rs" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/library) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/outpost{ + dir = 4; + icon = 'icons/obj/doors/airlocks/station/medical.dmi'; + overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'; + assemblytype = /obj/structure/door_assembly/door_assembly_med + }, +/turf/open/floor/plasteel/white, +/area/outpost/medical) "ru" = ( /obj/effect/turf_decal/techfloor{ dir = 8 @@ -4769,19 +4886,12 @@ /turf/open/floor/plasteel/tech/grid, /area/outpost/security) "rE" = ( -/obj/machinery/door/airlock/command{ - name = "Council Chamber"; - req_access_txt = "19"; - security_level = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/outpost/operations) +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/library) "rG" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -4901,15 +5011,17 @@ /turf/open/floor/plasteel/white, /area/outpost/medical) "rV" = ( -/obj/machinery/door/poddoor{ - id = "heron_outercargo"; - name = "Cargo Hatch" +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/outpost/cargo) -"rW" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 5 +/obj/structure/sign/poster/retro/nanotrasen_logo_80s{ + pixel_y = 32 + }, +/turf/open/floor/concrete/tiles, +/area/outpost/crew/garden) +"rW" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 5 }, /obj/machinery/suit_storage_unit/inherit, /turf/open/floor/plasteel/tech/grid, @@ -5001,9 +5113,16 @@ /turf/open/floor/carpet/blue, /area/outpost/operations) "st" = ( -/obj/machinery/door/poddoor/shutters/indestructible, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) +/obj/machinery/door/airlock/freezer{ + req_access_txt = "109" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, +/area/outpost/crew/canteen) "su" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -5135,7 +5254,6 @@ dir = 8 }, /obj/item/radio/intercom/directional/west, -/obj/machinery/firealarm/directional/west, /turf/open/floor/concrete/slab_3, /area/outpost/hallway/fore) "sL" = ( @@ -5344,12 +5462,17 @@ /turf/open/floor/wood, /area/outpost/operations) "ty" = ( -/obj/machinery/door/airlock/atmos, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/door/airlock/outpost{ + assemblytype = /obj/structure/door_assembly/door_assembly_atmo; + icon = 'icons/obj/doors/airlocks/station/atmos.dmi'; + overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'; + req_access_txt = "101" + }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/engineering/atmospherics) "tz" = ( @@ -5420,6 +5543,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/east, /turf/open/floor/wood, /area/outpost/vacant_rooms/office) "tM" = ( @@ -5474,12 +5598,12 @@ }, /area/outpost/maintenance/aft) "tV" = ( -/obj/effect/turf_decal/siding/white{ - dir = 4 +/obj/machinery/door/airlock/maintenance_hatch{ + req_access_txt = "109"; + dir = 8 }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plasteel, -/area/outpost/vacant_rooms) +/turf/open/floor/concrete/reinforced, +/area/outpost/maintenance/aft) "tW" = ( /obj/machinery/computer/cargo/express{ dir = 8 @@ -5487,9 +5611,6 @@ /obj/effect/turf_decal/techfloor{ dir = 4 }, -/obj/structure/sign/poster/contraband/random{ - pixel_y = 32 - }, /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/plasteel/dark, /area/outpost/cargo) @@ -5515,6 +5636,13 @@ /obj/structure/chair/comfy/black{ dir = 1 }, +/obj/machinery/button/door{ + dir = 4; + pixel_x = -28; + pixel_y = 6; + id = "outpost_security_desk"; + name = "Desk Shutter" + }, /turf/open/floor/plasteel/dark, /area/outpost/security) "ua" = ( @@ -5917,9 +6045,11 @@ /turf/open/floor/plasteel, /area/outpost/crew/canteen) "vr" = ( -/obj/machinery/door/airlock/freezer, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/sink{ + pixel_y = 23 + }, +/obj/structure/mirror{ + pixel_y = 32 }, /turf/open/floor/plasteel/showroomfloor, /area/outpost/crew/canteen) @@ -5990,12 +6120,11 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "vG" = ( -/obj/machinery/door/airlock/public/glass, -/obj/effect/landmark/outpost/elevator_machine{ - shaft = "1" +/obj/machinery/door/poddoor/shutters/indestructible{ + dir = 8 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/hallway/fore) +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) "vI" = ( /obj/effect/turf_decal/techfloor/orange{ dir = 4 @@ -6040,7 +6169,6 @@ /obj/machinery/libraryscanner, /obj/machinery/light/directional/south, /obj/item/radio/intercom/directional/west, -/obj/machinery/firealarm/directional/west, /turf/open/floor/carpet/red, /area/outpost/vacant_rooms/office) "vM" = ( @@ -6179,9 +6307,12 @@ /turf/open/floor/plasteel/rockvault, /area/outpost/operations) "we" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) +/obj/structure/railing/wood{ + dir = 4 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/grass, +/area/outpost/crew/garden) "wf" = ( /obj/structure/flora/rock/jungle{ pixel_x = 12 @@ -6233,6 +6364,7 @@ /turf/open/floor/plasteel/dark, /area/outpost/security) "wq" = ( +/obj/structure/elevator_platform, /turf/open/floor/plasteel/elevatorshaft, /area/outpost/crew/library) "wt" = ( @@ -6248,16 +6380,16 @@ /turf/open/floor/concrete/slab_3, /area/outpost/hallway/starboard) "wy" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, /obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, -/obj/item/kirbyplants{ - icon_state = "plant-21" - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/concrete/tiles, -/area/outpost/hallway/central) +/obj/machinery/light/directional/south, +/turf/open/floor/wood, +/area/outpost/vacant_rooms/office) "wz" = ( /obj/effect/turf_decal/techfloor/orange, /obj/machinery/computer/monitor{ @@ -6484,7 +6616,7 @@ /area/outpost/hallway/central) "xk" = ( /obj/structure/bonfire/prelit, -/obj/effect/turf_decal/weather/snow/corner{ +/obj/effect/turf_decal/weather/snow{ dir = 1 }, /turf/open/floor/plating/asteroid/snow/under/lit, @@ -6572,9 +6704,13 @@ }, /area/outpost/maintenance/aft) "xC" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plasteel, -/area/outpost/hallway/fore) +/obj/structure/chair/office, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/carpet/red, +/area/outpost/vacant_rooms/office) "xD" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/wood{ @@ -6595,11 +6731,12 @@ /turf/open/floor/carpet/nanoweave, /area/outpost/crew/canteen) "xF" = ( +/obj/structure/catwalk/over/plated_catwalk, /obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "109" + dir = 4 }, /turf/open/floor/plating, -/area/outpost/crew/library) +/area/outpost/maintenance/fore) "xH" = ( /obj/machinery/door/window/brigdoor/security, /obj/structure/rack, @@ -6785,14 +6922,13 @@ /turf/open/floor/plating/asteroid/snow/airless, /area/outpost/external) "yl" = ( -/obj/structure/sink{ - pixel_y = 23 - }, -/obj/structure/mirror{ - pixel_y = 32 +/obj/effect/turf_decal/techfloor/orange{ + dir = 1 }, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/canteen) +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel/tech/grid, +/area/outpost/engineering) "ym" = ( /obj/effect/turf_decal/trimline/opaque/beige/filled/corner, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -6844,6 +6980,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/effect/turf_decal/siding/wood, +/obj/item/radio/intercom/directional/west, /turf/open/floor/wood, /area/outpost/operations) "yA" = ( @@ -6892,17 +7029,13 @@ }, /area/outpost/maintenance/aft) "yF" = ( -/obj/structure/chair/comfy/black, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable{ - icon_state = "0-4" +/obj/effect/turf_decal/techfloor{ + dir = 4 }, -/turf/open/floor/wood, -/area/outpost/vacant_rooms/office) +/obj/effect/overlay/holoray, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel/tech, +/area/outpost/crew/cryo) "yG" = ( /obj/structure/table/reinforced, /obj/item/flashlight/lamp{ @@ -7030,11 +7163,18 @@ /turf/open/floor/concrete/slab_3, /area/outpost/hallway/central) "yZ" = ( -/obj/structure/urinal{ - pixel_y = 28 +/obj/structure/barricade/wooden/crude{ + layer = 3.13 }, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/canteen) +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/door/poddoor/shutters/indestructible{ + name = "Showcase Storage"; + dir = 4 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) "za" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -7111,11 +7251,11 @@ /turf/open/floor/plasteel/dark, /area/outpost/operations) "zn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/door/poddoor/ert{ dir = 8 }, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/library) +/turf/open/floor/plasteel/dark, +/area/outpost/cargo) "zo" = ( /obj/structure/table/reinforced, /obj/item/storage/photo_album{ @@ -7170,6 +7310,7 @@ "zB" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/food/plant_smudge, +/obj/machinery/firealarm/directional/east, /turf/open/floor/plasteel/sepia, /area/outpost/hallway/central) "zD" = ( @@ -7255,10 +7396,12 @@ /turf/open/floor/carpet/blue, /area/outpost/hallway/central) "zQ" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/grille/broken, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/carpet/nanoweave, +/area/outpost/crew/canteen) "zR" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -7309,26 +7452,16 @@ /turf/open/floor/engine, /area/outpost/crew/cryo) "Ab" = ( +/obj/structure/elevator_platform, /turf/open/floor/plasteel/elevatorshaft, /area/outpost/cargo) "Ac" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wideplating/dark, -/obj/effect/turf_decal/trimline/opaque/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/opaque/red/line, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/centcom{ - name = "Briefing Room"; - req_access_txt = "101" +/obj/effect/turf_decal/siding/white{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/outpost/security/armory) +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) "Ad" = ( /turf/closed/mineral/random/snow, /area/outpost/operations) @@ -7343,7 +7476,9 @@ /area/outpost/operations) "Ag" = ( /obj/machinery/door/airlock{ - req_access_txt = "109" + req_access_txt = "109"; + explosion_block = 2; + normal_integrity = 1000 }, /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -7572,14 +7707,11 @@ /turf/open/floor/carpet/nanoweave, /area/outpost/crew/canteen) "AS" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20; - pixel_x = -3 +/obj/machinery/door/airlock/grunge{ + dir = 8 }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel/mono/dark, -/area/outpost/cargo) +/turf/open/floor/plasteel, +/area/outpost/vacant_rooms) "AT" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -7626,6 +7758,20 @@ /obj/effect/spawner/structure/window/reinforced/indestructable, /turf/open/floor/plating, /area/outpost/external) +"Bg" = ( +/obj/effect/turf_decal/corner/opaque/blue{ + dir = 5 + }, +/obj/machinery/smartfridge/bloodbank/preloaded, +/obj/effect/turf_decal/corner/opaque/blue/full, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north{ + pixel_x = -3 + }, +/turf/open/floor/plasteel/white, +/area/outpost/medical) "Bi" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -7723,12 +7869,12 @@ /turf/open/floor/plating/asteroid/icerock/cracked, /area/outpost/maintenance/fore) "Bz" = ( -/obj/structure/table/wood, /obj/machinery/recharger, /obj/structure/railing{ dir = 4 }, /obj/machinery/airalarm/directional/north, +/obj/structure/table/wood/reinforced, /turf/open/floor/plasteel/dark, /area/outpost/operations) "BA" = ( @@ -7742,12 +7888,15 @@ /turf/open/floor/plasteel/cult, /area/outpost/maintenance/fore) "BC" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/outpost/hallway/central) +/obj/machinery/door/airlock/freezer{ + dir = 4; + req_access_txt = "109" + }, +/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, +/area/outpost/crew/canteen) "BD" = ( /obj/effect/turf_decal/techfloor{ dir = 9 @@ -8060,12 +8209,8 @@ /turf/open/floor/plasteel/tech/techmaint, /area/outpost/engineering/atmospherics) "CF" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/outpost/maintenance/aft) +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/library) "CG" = ( /obj/effect/landmark/outpost/elevator{ shaft = "1" @@ -8073,14 +8218,12 @@ /turf/open/floor/plasteel/elevatorshaft, /area/outpost/hallway/fore) "CH" = ( -/obj/machinery/chem_master/condimaster, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/greenglow, -/obj/structure/sign/poster/retro/smile{ - pixel_y = -32 +/obj/structure/barricade/wooden, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8 }, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/library) +/turf/open/floor/plating, +/area/outpost/maintenance/aft) "CJ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/girder/displaced, @@ -8097,17 +8240,14 @@ /turf/open/floor/plasteel/dark, /area/outpost/crew/cryo) "CL" = ( -/obj/machinery/door/poddoor/shutters/indestructible{ - name = "Showcase Storage" - }, -/obj/structure/barricade/wooden/crude{ - layer = 3.13 - }, -/obj/effect/turf_decal/industrial/warning{ +/obj/structure/railing, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/turf/open/floor/plating, -/area/outpost/maintenance/fore) +/obj/structure/table, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/hallway/fore) "CN" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -8229,10 +8369,11 @@ /turf/open/floor/engine/n2o, /area/outpost/engineering/atmospherics) "Dk" = ( -/obj/machinery/vending/coffee, -/obj/effect/decal/cleanable/robot_debris, -/turf/open/floor/concrete/slab_1, -/area/outpost/hallway/central) +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 8 + }, +/turf/open/floor/plating, +/area/outpost/maintenance/fore) "Dl" = ( /obj/machinery/computer/card, /turf/open/floor/plasteel/dark, @@ -8312,6 +8453,7 @@ /obj/effect/turf_decal/industrial/warning{ dir = 8 }, +/obj/machinery/light/small/directional/east, /turf/open/floor/plasteel/dark, /area/outpost/operations) "DH" = ( @@ -8350,15 +8492,10 @@ /turf/open/floor/plasteel/dark, /area/outpost/operations) "DO" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/food/condiment/enzyme{ - pixel_x = -2; - pixel_y = 6 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/obj/item/reagent_containers/glass/beaker, -/obj/machinery/firealarm/directional/south, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, +/turf/open/floor/plasteel/showroomfloor, /area/outpost/crew/library) "DP" = ( /obj/machinery/computer/crew, @@ -8414,9 +8551,13 @@ /turf/open/floor/plasteel, /area/outpost/hallway/fore) "Eb" = ( -/obj/machinery/door/airlock/wood/glass, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner, +/obj/machinery/firealarm/directional/north, /turf/open/floor/wood, -/area/outpost/vacant_rooms/office) +/area/outpost/crew/bar) "Ec" = ( /obj/effect/turf_decal/siding/wood/corner, /obj/effect/decal/cleanable/dirt, @@ -8469,7 +8610,7 @@ /obj/item/kirbyplants{ icon_state = "plant-03" }, -/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/carpet, /area/outpost/crew/library) "Ei" = ( @@ -8486,7 +8627,9 @@ /area/outpost/hallway/central) "Em" = ( /obj/machinery/door/airlock{ - req_access_txt = "109" + req_access_txt = "109"; + explosion_block = 2; + normal_integrity = 1000 }, /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -8757,6 +8900,14 @@ /obj/machinery/light/directional/east, /turf/open/floor/concrete/slab_1, /area/outpost/hallway/central) +"Fh" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/stairs{ + barefootstep = "woodbarefoot"; + color = "#A47449"; + footstep = "wood" + }, +/area/outpost/hallway/fore) "Fi" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -8782,9 +8933,16 @@ }, /area/outpost/maintenance/aft) "Fo" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plasteel/sepia, -/area/outpost/crew/canteen) +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/radio/intercom/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/concrete/slab_3, +/area/outpost/crew/garden) "Fp" = ( /obj/effect/turf_decal/techfloor/orange, /obj/structure/railing{ @@ -8879,10 +9037,6 @@ }, /turf/open/floor/carpet/green, /area/outpost/hallway/aft) -"FB" = ( -/obj/effect/turf_decal/number/nine, -/turf/open/floor/plasteel/elevatorshaft, -/area/outpost/crew/library) "FC" = ( /obj/machinery/light/directional/west, /turf/open/floor/plasteel, @@ -8978,9 +9132,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/rockvault, /area/outpost/operations) -"Gb" = ( -/turf/closed/mineral/random/snow, -/area/outpost/crew/canteen) "Gc" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 @@ -8999,10 +9150,6 @@ }, /turf/open/floor/plasteel/dark, /area/outpost/security) -"Gg" = ( -/obj/effect/turf_decal/number/eight, -/turf/open/floor/plasteel/elevatorshaft, -/area/outpost/cargo) "Gh" = ( /obj/machinery/door/airlock/maintenance_hatch{ req_access_txt = "109" @@ -9049,32 +9196,31 @@ /turf/open/floor/plasteel/dark, /area/outpost/operations) "Gn" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20 +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/door/poddoor/shutters/indestructible{ + name = "Showcase Storage"; + dir = 4 }, -/turf/open/floor/concrete/slab_3, -/area/outpost/crew/garden) +/turf/open/floor/plating, +/area/outpost/maintenance/fore) "Gq" = ( /obj/machinery/door/poddoor/multi_tile/three_tile_hor, /turf/closed/indestructible/reinforced, /area/outpost/maintenance/fore) "Gr" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/structure/sign/poster/contraband/space_cola{ - pixel_x = -32; +/obj/structure/sign/warning/electricshock{ pixel_y = 32 }, -/turf/open/floor/concrete/slab_3, -/area/outpost/hallway/central) +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/smes/magical{ + output_level = 200000 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/outpost/engineering) "Gs" = ( /obj/machinery/door/window/brigdoor/westright, /obj/machinery/door/window/brigdoor/westright{ @@ -9133,19 +9279,29 @@ pixel_y = 5; pixel_x = 1 }, -/obj/effect/turf_decal/weather/snow/corner{ +/obj/effect/turf_decal/weather/snow{ dir = 10 }, /turf/open/floor/plating/asteroid/snow/under/lit, /area/outpost/external) "Gw" = ( -/obj/effect/turf_decal/techfloor, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20; - pixel_x = -3 +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 }, -/turf/open/floor/plasteel/tech, -/area/outpost/crew/cryo) +/obj/effect/turf_decal/siding/wideplating/dark, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/red/line, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/outpost{ + dir = 4; + name = "Briefing Room" + }, +/turf/open/floor/plasteel/dark, +/area/outpost/security/armory) "Gx" = ( /turf/open/floor/plating, /area/outpost/hallway/fore) @@ -9306,7 +9462,6 @@ /area/outpost/crew/bar) "GT" = ( /obj/effect/turf_decal/siding/wood, -/obj/machinery/firealarm/directional/south, /obj/item/radio/intercom/directional/south, /turf/open/floor/concrete/slab_3, /area/outpost/hallway/central) @@ -9418,14 +9573,19 @@ /turf/open/floor/plasteel/dark, /area/outpost/operations) "Hu" = ( -/obj/machinery/door/airlock/highsecurity{ - req_access_txt = "109" +/obj/effect/turf_decal/siding/wood{ + dir = 10 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/chair{ + dir = 1 }, -/turf/open/floor/plasteel/tech, -/area/outpost/crew/cryo) +/obj/effect/decal/cleanable/wrapping, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/wood, +/area/outpost/crew/bar) "Hv" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -9466,14 +9626,9 @@ /turf/open/floor/plasteel/rockvault, /area/outpost/operations) "HD" = ( -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/outpost/operations) +/obj/machinery/door/airlock, +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/canteen) "HE" = ( /turf/open/floor/plasteel/stairs{ icon = 'icons/obj/stairs.dmi'; @@ -9509,7 +9664,6 @@ /turf/open/floor/plasteel/telecomms_floor, /area/outpost/crew/cryo) "HJ" = ( -/obj/machinery/firealarm/directional/east, /obj/item/radio/intercom/directional/east, /turf/open/floor/plasteel/sepia, /area/outpost/crew/canteen) @@ -9562,21 +9716,11 @@ /turf/open/floor/plasteel/telecomms_floor, /area/outpost/crew/cryo) "HW" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/sign/poster/retro/radio{ - pixel_x = 32 - }, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20 +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 4 }, -/turf/open/floor/wood, -/area/outpost/crew/library) +/turf/open/floor/plating, +/area/outpost/maintenance/fore) "HY" = ( /turf/open/floor/plating/asteroid/icerock/cracked, /area/outpost/external) @@ -9634,31 +9778,25 @@ /turf/open/floor/concrete/slab_1, /area/outpost/hallway/central) "Ig" = ( -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 5 - }, -/obj/machinery/smartfridge/bloodbank/preloaded, -/obj/effect/turf_decal/corner/opaque/blue/full, -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20; - pixel_x = -3 +/obj/machinery/door/airlock/outpost{ + dir = 4; + icon = 'icons/obj/doors/airlocks/external/external.dmi'; + overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi'; + assemblytype = /obj/structure/door_assembly/door_assembly_ext; + doorClose = 'sound/machines/airlocks/external/airlock_ext_close.ogg'; + doorOpen = 'sound/machines/airlocks/external/airlock_ext_open.ogg' }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel/white, -/area/outpost/medical) +/turf/open/floor/plating, +/area/outpost/maintenance/aft) "Ih" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, +/obj/machinery/chem_master/condimaster, /obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20 +/obj/effect/decal/cleanable/greenglow, +/obj/structure/sign/poster/retro/smile{ + pixel_y = -32 }, -/turf/open/floor/concrete/slab_3, -/area/outpost/hallway/central) +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/library) "Ij" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -9795,18 +9933,13 @@ /turf/open/floor/plasteel/tech, /area/outpost/cargo) "II" = ( -/obj/effect/turf_decal/techfloor, -/obj/effect/turf_decal/trimline/transparent/lightgrey/line{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/engineering/atmospherics) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/library) "IJ" = ( /turf/open/floor/plasteel, /area/outpost/crew/canteen) @@ -9832,6 +9965,7 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/plasteel/rockvault, /area/outpost/operations) "IN" = ( @@ -9861,13 +9995,12 @@ /turf/open/floor/plasteel/dark, /area/outpost/operations) "IS" = ( -/obj/effect/turf_decal/techfloor{ +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/effect/overlay/holoray, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plasteel/tech, -/area/outpost/crew/cryo) +/obj/machinery/firealarm/directional/east, +/turf/open/floor/concrete/slab_3, +/area/outpost/hallway/starboard) "IW" = ( /turf/open/floor/plasteel/stairs{ barefootstep = "woodbarefoot"; @@ -9903,6 +10036,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/west, /turf/open/floor/concrete/tiles, /area/outpost/hallway/central) "Jb" = ( @@ -10089,7 +10223,6 @@ pixel_y = -32 }, /obj/item/radio/intercom/directional/east, -/obj/machinery/firealarm/directional/east, /turf/open/floor/wood, /area/outpost/hallway/central) "JH" = ( @@ -10148,13 +10281,11 @@ }, /area/outpost/operations) "JP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/library) +/turf/open/floor/plasteel/tech, +/area/outpost/vacant_rooms) "JR" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -10302,12 +10433,15 @@ /turf/open/floor/plasteel/patterned/grid, /area/outpost/hallway/fore) "Kp" = ( -/obj/structure/mineral_door/paperframe, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/door/airlock{ + name = "WC"; + dir = 8 }, -/turf/open/floor/plasteel/tech, -/area/outpost/crew/lounge) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/ridged{ + color = "#4c535b" + }, +/area/outpost/crew/library) "Kt" = ( /obj/structure/bed{ pixel_x = 1 @@ -10391,7 +10525,6 @@ /turf/open/floor/plating/rust, /area/outpost/maintenance/aft) "KF" = ( -/obj/structure/table/wood, /obj/item/paper_bin{ pixel_x = 5; pixel_y = 4 @@ -10401,6 +10534,20 @@ pixel_y = 6 }, /obj/machinery/light/directional/north, +/obj/machinery/button/door{ + id = "outpost_bridge_lockdown"; + req_access_txt = "101"; + pixel_x = -8; + pixel_y = 8; + name = "Bridge Lockdown" + }, +/obj/structure/table/wood/reinforced, +/obj/machinery/button/door{ + id = "outpost_office_lockdown"; + req_access_txt = "101"; + pixel_x = -8; + name = "Office Lockdown" + }, /turf/open/floor/plasteel/dark, /area/outpost/operations) "KG" = ( @@ -10586,8 +10733,11 @@ /area/outpost/crew/library) "Lz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "109" +/obj/machinery/door/airlock/outpost{ + assemblytype = /obj/structure/door_assembly/door_assembly_mhatch; + icon = 'icons/obj/doors/airlocks/hatch/maintenance.dmi'; + overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi'; + req_access_txt = "101" }, /turf/open/floor/plating, /area/outpost/engineering/atmospherics) @@ -10746,9 +10896,20 @@ /turf/open/floor/grass, /area/outpost/crew/lounge) "LW" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/library) +/obj/machinery/door/airlock/command{ + name = "Council Chamber"; + req_access_txt = "19"; + security_level = 6; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/outpost/operations) "LX" = ( /obj/effect/turf_decal/steeldecal/steel_decals10{ dir = 5 @@ -10835,7 +10996,7 @@ /turf/open/floor/grass/snow/safe, /area/outpost/hallway/starboard) "Mn" = ( -/obj/machinery/photocopier/nt{ +/obj/machinery/photocopier{ pixel_y = 3 }, /obj/effect/decal/cleanable/dirt, @@ -10892,9 +11053,14 @@ /turf/open/floor/plating, /area/outpost/hallway/fore) "MF" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/outpost/crew/lounge) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/grunge, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/crew/cryo) "MK" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -11368,18 +11534,19 @@ /turf/open/floor/plasteel/telecomms_floor, /area/outpost/crew/cryo) "Of" = ( +/obj/structure/chair{ + dir = 8 + }, /obj/effect/turf_decal/siding/wood{ - dir = 4 + dir = 1 }, -/obj/machinery/light/directional/north, -/obj/structure/sign/poster/retro/nanotrasen_logo_80s{ - pixel_y = 32 - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/sign/poster/retro/radio{ + pixel_x = 32 }, -/turf/open/floor/concrete/tiles, -/area/outpost/crew/garden) +/obj/item/radio/intercom/directional/north, +/turf/open/floor/wood, +/area/outpost/crew/library) "Og" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/showroomfloor, @@ -11448,13 +11615,13 @@ /turf/open/floor/concrete/slab_3, /area/outpost/hallway/central) "Os" = ( -/obj/effect/turf_decal/weather/snow/corner{ - dir = 6 - }, /obj/item/shovel, /obj/item/flashlight/lantern{ pixel_x = 7 }, +/obj/effect/turf_decal/weather/snow{ + dir = 6 + }, /turf/open/floor/plating/asteroid/snow/under/lit, /area/outpost/external) "Ot" = ( @@ -11488,12 +11655,10 @@ /turf/open/floor/plasteel/dark, /area/outpost/operations) "Ow" = ( -/obj/structure/toilet/secret{ - dir = 4; - secret_type = /obj/item/storage/box/donkpockets/donkpocketgondola - }, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/canteen) +/obj/structure/window/reinforced/fulltile, +/obj/structure/grille, +/turf/open/floor/plating, +/area/outpost/crew/lounge) "Ox" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/railing/wood{ @@ -11508,8 +11673,14 @@ /area/outpost/cargo) "OA" = ( /obj/machinery/processor, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/library) +/obj/effect/turf_decal/industrial/warning{ + dir = 2; + color = "#808080" + }, +/obj/effect/decal/cleanable/food/tomato_smudge, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel, +/area/outpost/crew/canteen) "OC" = ( /obj/effect/turf_decal/siding/white{ dir = 8 @@ -11540,7 +11711,7 @@ /obj/effect/turf_decal/techfloor{ dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/plasteel/dark, /area/outpost/security) "OG" = ( @@ -11740,15 +11911,9 @@ /turf/open/floor/grass, /area/outpost/crew/lounge) "Pp" = ( -/obj/structure/chair/office, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20 - }, -/turf/open/floor/carpet/red, -/area/outpost/vacant_rooms/office) +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/plasteel, +/area/outpost/hallway/fore) "Pt" = ( /obj/item/kirbyplants{ icon_state = "plant-21" @@ -11774,9 +11939,13 @@ /turf/open/floor/concrete/slab_2, /area/outpost/hallway/central) "PA" = ( -/obj/structure/mineral_door/paperframe, -/turf/open/floor/plasteel/tech, -/area/outpost/crew/lounge) +/obj/machinery/vending/coffee, +/obj/effect/decal/cleanable/robot_debris, +/obj/structure/sign/poster/contraband/space_cola{ + pixel_y = 32 + }, +/turf/open/floor/concrete/slab_1, +/area/outpost/hallway/central) "PB" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/showcase/machinery/cloning_pod, @@ -11862,14 +12031,12 @@ /turf/open/floor/wood, /area/outpost/maintenance/aft) "PP" = ( -/obj/structure/railing, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/table, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plasteel/tech/techmaint, -/area/outpost/hallway/fore) +/obj/machinery/door/airlock/outpost, +/turf/open/floor/plasteel/tech, +/area/outpost/crew/cryo) "PR" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -11935,9 +12102,6 @@ /turf/open/floor/wood/ebony, /area/outpost/crew/lounge) "Qf" = ( -/obj/machinery/door/airlock/mining{ - req_access_txt = "109" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, @@ -11947,16 +12111,20 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/door/airlock/outpost{ + dir = 4; + icon = 'icons/obj/doors/airlocks/station/mining.dmi'; + overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'; + assemblytype = /obj/structure/door_assembly/door_assembly_min + }, /turf/open/floor/plasteel/tech/grid, /area/outpost/cargo) "Qj" = ( -/obj/machinery/door/airlock/command{ - name = "Council Chamber"; - req_access_txt = "19"; - security_level = 6 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/outpost/operations) +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/library) "Ql" = ( /obj/structure/rack, /obj/effect/turf_decal/box/corners, @@ -12085,17 +12253,14 @@ }, /area/outpost/maintenance/aft) "QC" = ( -/obj/machinery/processor, -/obj/effect/turf_decal/industrial/warning{ - dir = 2; - color = "#808080" +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 8 }, -/obj/effect/decal/cleanable/food/tomato_smudge, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/outpost/crew/canteen) +/turf/open/floor/plasteel/tech, +/area/outpost/hallway/fore) "QD" = ( /obj/structure/flora/rock/pile/largejungle{ pixel_x = 3; @@ -12321,6 +12486,7 @@ dir = 4 }, /obj/machinery/newscaster/directional/south, +/obj/machinery/firealarm/directional/east, /turf/open/floor/concrete/tiles, /area/outpost/hallway/aft) "Rt" = ( @@ -12381,9 +12547,10 @@ /turf/open/floor/concrete/slab_3, /area/outpost/hallway/starboard) "RD" = ( -/obj/machinery/door/airlock, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/canteen) +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/indestructable, +/turf/open/floor/plating, +/area/outpost/operations) "RE" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -12415,7 +12582,6 @@ /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/machinery/firealarm/directional/east, /obj/item/radio/intercom/directional/east, /turf/open/floor/concrete/tiles, /area/outpost/hallway/aft) @@ -12452,7 +12618,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/concrete/tiles, /area/outpost/hallway/aft) "RR" = ( @@ -12461,14 +12627,17 @@ /turf/open/floor/plasteel/tech, /area/outpost/cargo) "RS" = ( -/obj/machinery/door/airlock/engineering{ - req_access_txt = "109" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/door/airlock/outpost{ + assemblytype = /obj/structure/door_assembly/door_assembly_eng; + icon = 'icons/obj/doors/airlocks/station/engineering.dmi'; + overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'; + req_access_txt = "101" + }, /turf/open/floor/plasteel/tech, /area/outpost/engineering) "RT" = ( @@ -12524,15 +12693,12 @@ /turf/open/floor/plating, /area/outpost/maintenance/fore) "Sa" = ( -/obj/effect/turf_decal/techfloor{ - dir = 8 - }, -/obj/item/radio/intercom/directional/north{ - pixel_y = 20; - pixel_x = -3 +/obj/structure/toilet/secret{ + dir = 4; + secret_type = /obj/item/storage/box/donkpockets/donkpocketgondola }, -/turf/open/floor/plasteel/tech, -/area/outpost/security/armory) +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/canteen) "Sd" = ( /obj/structure/grille/broken, /obj/effect/spawner/lootdrop/minor/pirate_or_bandana, @@ -12591,18 +12757,9 @@ /turf/open/floor/plasteel/dark, /area/outpost/operations) "Sw" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/rockvault, -/area/outpost/operations) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/library) "Sx" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -12619,16 +12776,19 @@ /turf/open/floor/plasteel/sepia, /area/outpost/crew/canteen) "SB" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Bridge Access"; - req_access_txt = "101"; - security_level = 6 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/door/airlock/outpost{ + assemblytype = /obj/structure/door_assembly/door_assembly_com; + icon = 'icons/obj/doors/airlocks/station/command.dmi'; + glass = 1; + overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'; + name = "Bridge Access"; + req_one_access_txt = "109" + }, /turf/open/floor/plasteel, /area/outpost/operations) "SE" = ( @@ -12944,6 +13104,14 @@ }, /turf/open/floor/concrete/slab_3, /area/outpost/hallway/central) +"TI" = ( +/obj/effect/spawner/structure/window/reinforced/indestructable, +/obj/machinery/door/poddoor/preopen{ + id = "outpost_office_lockdown"; + dir = 8 + }, +/turf/open/floor/plating, +/area/outpost/operations) "TJ" = ( /turf/closed/indestructible/reinforced, /area/outpost/hallway/central) @@ -12965,18 +13133,30 @@ /turf/open/floor/plasteel, /area/outpost/crew/canteen) "TN" = ( -/obj/machinery/light/directional/north, -/obj/structure/table/wood, -/obj/machinery/status_display/ai{ - pixel_y = 32 +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/north{ - pixel_y = 5; - pixel_x = -3 +/obj/effect/turf_decal/siding/wideplating/dark, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 1 }, -/turf/open/floor/wood, -/area/outpost/operations) +/obj/effect/turf_decal/trimline/opaque/red/line, +/obj/machinery/door/airlock/security/glass{ + req_access_txt = "109"; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4; + req_one_access_txt = "101" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/outpost/security) "TP" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -13128,6 +13308,9 @@ pixel_x = 6; pixel_y = 7 }, +/obj/item/radio/intercom/directional/north{ + pixel_x = -3 + }, /turf/open/floor/wood, /area/outpost/crew/bar) "Uo" = ( @@ -13260,19 +13443,17 @@ /turf/open/floor/plasteel/telecomms_floor, /area/outpost/crew/cryo) "UQ" = ( -/obj/machinery/door/poddoor/shutters/indestructible{ - name = "Showcase Storage" - }, -/obj/structure/barricade/wooden/crude{ - layer = 3.13 +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +/obj/structure/sign/poster/retro/nanotrasen_logo_80s{ + pixel_y = 32 }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" +/obj/structure/cable{ + icon_state = "4-8" }, -/area/outpost/maintenance/fore) +/turf/open/floor/concrete/tiles, +/area/outpost/crew/garden) "US" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, @@ -13518,6 +13699,18 @@ /obj/effect/turf_decal/corner/opaque/blue/full, /turf/open/floor/plasteel/white, /area/outpost/medical) +"VF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/carpet/nanoweave, +/area/outpost/crew/canteen) "VI" = ( /obj/machinery/light/small/directional/south, /obj/structure/chair{ @@ -13531,11 +13724,14 @@ /turf/open/floor/plating/rust, /area/outpost/maintenance/fore) "VK" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - req_access_txt = "109" +/obj/effect/landmark/outpost/elevator_machine{ + shaft = "4" }, -/turf/open/floor/concrete/reinforced, -/area/outpost/maintenance/aft) +/obj/machinery/door/airlock/public/glass{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/outpost/hallway/fore) "VL" = ( /obj/machinery/gibber, /obj/effect/decal/cleanable/dirt, @@ -13723,13 +13919,16 @@ /turf/open/floor/plasteel/patterned/grid, /area/outpost/hallway/fore) "WE" = ( -/obj/machinery/door/airlock/freezer, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/hallway/central) +/obj/structure/flora/grass/jungle, +/obj/machinery/light/directional/north, +/turf/open/floor/grass, +/area/outpost/crew/garden) "WI" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/kitchen_coldroom/freezerfloor, -/area/outpost/crew/canteen) +/obj/machinery/door/airlock/wood/glass{ + dir = 8 + }, +/turf/open/floor/wood, +/area/outpost/vacant_rooms/office) "WJ" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -13767,12 +13966,12 @@ /turf/open/floor/plasteel/tech, /area/outpost/hallway/fore) "WT" = ( -/obj/machinery/door/airlock/maintenance_hatch, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/table/reinforced, +/obj/machinery/microwave{ + pixel_y = 5 }, -/turf/open/floor/plasteel/tech, -/area/outpost/hallway/fore) +/turf/open/floor/plasteel/showroomfloor, +/area/outpost/crew/library) "WU" = ( /obj/structure/table/wood, /obj/item/storage/photo_album/library{ @@ -13798,12 +13997,12 @@ /turf/open/floor/plasteel/patterned/grid, /area/outpost/hallway/fore) "WY" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/door/airlock/maintenance_hatch, -/turf/open/floor/plating{ - icon_state = "panelscorched" +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/item/radio/intercom/directional/north{ + pixel_x = -3 }, -/area/outpost/maintenance/aft) +/turf/open/floor/plasteel/mono/dark, +/area/outpost/cargo) "WZ" = ( /turf/open/floor/plating, /area/outpost/maintenance/aft) @@ -13934,15 +14133,16 @@ /turf/open/floor/wood, /area/outpost/crew/library) "Xz" = ( -/obj/effect/turf_decal/techfloor/orange{ - dir = 1 +/obj/structure/table/reinforced, +/obj/item/modular_computer/laptop/preset/civilian{ + pixel_y = 6 }, -/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom/directional/north{ - pixel_y = 20 + pixel_x = -3 }, -/turf/open/floor/plasteel/tech/grid, -/area/outpost/engineering) +/turf/open/floor/plasteel/dark, +/area/outpost/security) "XA" = ( /obj/structure/bookcase/random/fiction, /obj/item/candle/infinite{ @@ -14145,7 +14345,6 @@ dir = 1 }, /obj/item/radio/intercom/directional/south, -/obj/machinery/firealarm/directional/south, /turf/open/floor/plasteel/sepia, /area/outpost/crew/library) "Yo" = ( @@ -14210,6 +14409,11 @@ /obj/structure/catwalk/over/plated_catwalk, /turf/open/floor/plating, /area/outpost/maintenance/fore) +"Yw" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/plasteel/mono/dark, +/area/outpost/cargo) "Yy" = ( /obj/effect/turf_decal/techfloor, /obj/effect/turf_decal/trimline/transparent/lightgrey/line{ @@ -14475,7 +14679,6 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/machinery/light/directional/north, /obj/structure/sign/logo{ icon_state = "nanotrasen_sign4"; pixel_y = 32 @@ -14585,7 +14788,10 @@ dir = 1 }, /obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/ert, +/obj/machinery/door/poddoor/ert{ + id = "outpost_security_desk"; + desc = "A heavy duty blast door." + }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/security) "ZE" = ( @@ -14734,12 +14940,15 @@ /turf/open/floor/grass, /area/outpost/hallway/fore) "ZR" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/structure/chair/sofa/corner{ dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/concrete/slab_3, -/area/outpost/hallway/starboard) +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/wood, +/area/outpost/crew/library) "ZS" = ( /obj/effect/turf_decal/techfloor{ dir = 1 @@ -14769,29 +14978,14 @@ /turf/open/floor/plasteel/sepia, /area/outpost/crew/library) "ZX" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wideplating/dark, -/obj/effect/turf_decal/trimline/opaque/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/opaque/red/line, -/obj/machinery/door/airlock/security{ - req_access_txt = "101" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 8 }, -/obj/structure/cable{ - icon_state = "4-8" +/turf/open/floor/plating{ + icon_state = "panelscorched" }, -/obj/machinery/door/poddoor/ert, -/turf/open/floor/plasteel/dark, -/area/outpost/security) +/area/outpost/maintenance/aft) "ZY" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -14843,11 +15037,6 @@ vV vV vV vV -MF -MF -MF -MF -MF vV vV vV @@ -14878,8 +15067,6 @@ vV vV vV vV -"} -(2,1,1) = {" vV vV vV @@ -14909,13 +15096,9 @@ vV vV vV vV -MF -MF -Kv -tJ -Qe -MF -MF +vV +vV +vV vV vV vV @@ -14946,7 +15129,38 @@ vV vV vV "} -(3,1,1) = {" +(2,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV vV vV vV @@ -14958,12 +15172,6 @@ vV vV vV vV -Zp -Zp -Zp -Zp -Zp -Zp vV vV vV @@ -14975,15 +15183,6 @@ vV vV vV vV -MF -MF -EB -Qd -fK -fK -fQ -MF -MF vV vV vV @@ -15012,8 +15211,6 @@ vV vV vV vV -"} -(4,1,1) = {" vV vV vV @@ -15023,36 +15220,11 @@ vV vV vV vV -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp vV vV vV vV vV -Zp -Zp -Zp -Zp -Mx -rd -wt -fK -Qd -Qd -SL -yJ -Mx -Zp -Zp vV vV vV @@ -15080,7 +15252,14 @@ vV vV vV "} -(5,1,1) = {" +(3,1,1) = {" +vV +vV +vV +vV +vV +vV +vV vV vV vV @@ -15089,39 +15268,7 @@ vV vV vV vV -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp vV -Zp -Zp -Zp -Zp -Zp -Zp -Mx -lD -uw -ot -Qd -vu -uw -ot -Mx -aL -aL -Zp -Zp vV vV vV @@ -15146,8 +15293,6 @@ vV vV vV vV -"} -(6,1,1) = {" vV vV vV @@ -15156,40 +15301,6 @@ vV vV vV vV -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Mx -AC -EJ -Po -fK -zR -nA -FM -Mx -cL -aL -aL -aL -Zp vV vV vV @@ -15213,8 +15324,6 @@ vV vV vV vV -"} -(7,1,1) = {" vV vV vV @@ -15222,44 +15331,6 @@ vV vV vV vV -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Mx -Zl -dM -od -fK -qX -BY -Vp -Gh -BX -Ap -EZ -aL -aL -Zp -Zp -Zp vV vV vV @@ -15280,8 +15351,6 @@ vV vV vV vV -"} -(8,1,1) = {" vV vV vV @@ -15289,48 +15358,6 @@ vV vV vV vV -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Mx -kk -mn -Pi -tz -Oo -LV -lh -Mx -yP -iN -iN -uV -aL -Zp -Zp -Zp -Zp -Zp -Zp -Zp vV vV vV @@ -15348,57 +15375,16 @@ vV vV vV "} -(9,1,1) = {" +(4,1,1) = {" +vV +vV +vV vV vV vV vV vV vV -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -TJ -TJ -TJ -TJ -TJ -TJ -Mx -Mx -Mx -PA -Kp -PA -Mx -Mx -Mx -cL -cL -cL -Tv -cL -cL -aL -Zp -Zp -Zp -Zp -Zp -Zp vV vV vV @@ -15414,59 +15400,12 @@ vV vV vV vV -"} -(10,1,1) = {" vV vV vV vV vV vV -Zp -Zp -Zp -Zp -Zp -Zp -Zp -wH -lJ -wH -wH -lJ -OP -OP -Zp -TJ -TJ -qj -yc -Ja -gu -Wj -re -dE -Tn -Qp -Iz -gN -Tn -AF -Pm -rf -pt -cL -tQ -Xp -RV -Fe -Zp -Zp -Zp -Zp -Zp -Zp -Zp vV vV vV @@ -15481,62 +15420,11 @@ vV vV vV vV -"} -(11,1,1) = {" vV vV vV vV vV -Zp -Zp -HY -sN -sN -sN -Zp -OP -wH -RO -xD -xf -eX -zu -OP -Zp -TJ -xH -ta -MQ -sd -Cd -Cd -Cd -RE -Cd -Gc -Wi -cm -Tn -xO -OV -Js -ay -bX -Lf -cL -lL -Ll -Zp -Zp -Zp -Zp -Zp -Zp -Zp -aW -aW -aW vV vV vV @@ -15548,63 +15436,10 @@ vV vV vV vV -"} -(12,1,1) = {" vV vV vV vV -Zp -Zp -Zp -sN -Ft -sN -HY -Zp -OP -LS -eW -eW -eW -Nz -PH -wH -Zp -TJ -BI -qW -xy -Ze -EH -pz -pz -pz -pz -Dp -jn -TS -Tn -df -OV -DU -zP -cL -uq -cL -BS -cL -gS -Zp -Zp -Zp -Zp -Zp -Zp -ak -aW -aW -aW vV vV vV @@ -15615,64 +15450,11 @@ vV vV vV vV -"} -(13,1,1) = {" vV vV vV vV -Zp -Zp -HY -sN vV -Ft -Ft -Zp -wH -tl -yb -zu -eW -Ra -ip -wH -wH -wH -wH -va -yO -wy -Kh -Ff -yh -DJ -Nd -zI -LG -yX -YO -ob -eO -RT -TJ -cL -Gz -cL -WY -cL -aL -cL -cL -aL -aL -Zp -cL -cL -qy -cL -aW -aW vV vV vV @@ -15682,65 +15464,11 @@ vV vV vV vV -"} -(14,1,1) = {" vV vV vV -Zp -Zp -Zp -sN vV vV -cb -Ft -OP -wH -wH -wH -we -wH -lJ -wH -wH -Zi -jQ -wH -WC -WC -WC -WC -WC -WC -WC -Dk -jI -Zc -HA -xU -TJ -TJ -TJ -TJ -hX -uj -hJ -eI -bG -nc -cL -uo -Fn -aL -aL -cL -WZ -WZ -cL -aW -aW -Zp vV vV vV @@ -15749,65 +15477,9 @@ vV vV vV vV -"} -(15,1,1) = {" vV vV vV -Zp -Zp -Zp -HY -Ft -dx -YE -hH -DD -kc -sn -sg -yD -Dw -PB -uJ -lJ -wa -JY -aD -WC -mA -Uk -ze -dv -hp -WC -TJ -vO -gk -mW -WJ -Pa -wn -NP -TJ -cL -cL -cL -Bs -KD -aw -cL -fV -RX -Rt -aL -cL -QY -WZ -cL -aW -Zp -Zp vV vV vV @@ -15816,66 +15488,8 @@ vV vV vV vV -"} -(16,1,1) = {" vV vV -Zp -Zp -Zp -Zp -HY -HY -Ft -hH -hH -nP -wB -vf -GO -jo -Hk -GH -UA -wH -Oq -Il -Nq -WC -Ez -uv -dr -Bj -mv -GS -bP -Gr -GB -zz -wF -EP -xh -Tz -TJ -hZ -VL -cL -Br -iN -ly -cL -DH -PN -PO -iH -cL -cL -pm -cL -Zp -Zp -Zp -Zp vV vV vV @@ -15884,65 +15498,69 @@ vV vV vV "} -(17,1,1) = {" +(5,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV vV -Zp -Zp -Zp -AB -Zp -Zp -Zp -Zp -Zp -Zp -OP -lJ -UQ -CL -zQ -lJ -hE -hE -wH -wH -we -wH -WC -Tt -ge -nX -Tm -un -sQ -LK -BG -Ij -zz -Lj -Ju -xh -Sn -WE -El -Og -cL -pG -sX -Tc -cL -rc -xA -cL -cL -cL -Dt -QB -cL -cL -Zp -Zp -Zp vV vV vV @@ -15950,66 +15568,7 @@ vV vV vV vV -"} -(18,1,1) = {" vV -Zp -Zp -gv -AB -Re -Zp -Zp -Zp -Zp -wH -wH -wH -vy -zv -IE -vE -LP -xY -SH -Jf -Oh -ha -WC -ae -Ep -Xb -Kg -yI -DS -wJ -Px -er -Ua -RY -zB -oo -JE -TJ -El -LM -cL -ar -lI -cL -cL -jl -lM -cL -Sp -Xw -yn -uV -im -cL -cL -Zp -Zp vV vV vV @@ -16017,688 +15576,5748 @@ vV vV vV vV -"} -(19,1,1) = {" vV -Zp -Zp -mc -Gv -AB -Zp -Zp -Zp -wH -lJ -oH -eR -Yo -he -CZ -xM -Cj -xd -RZ -UT -Jv -cM -te -IF -lR -aE -ZZ -YJ -GS -Fd -Dp -Ev -GT -TJ -TJ -TJ -TJ -TJ -PC -qI -cL -CF -cL -cL -mh -bR -ar -QH -tD -bR -yp -iN -Dy -gH -cL -cL -Zp -Zp vV vV vV vV vV vV -"} -(20,1,1) = {" vV -Zp -Zp -xk -Os -yj -Zp -Zp -Zp -OP -Ci -UG -nH -xV -wH -lJ -wH -Rp -Rp -Rp -Rp -Rp -gM -WC -il -iE -si -si -qT -WC -TJ -vO -Ev -mt -Tn -SR -QW -Gi -TJ -TJ -cL -cL -rk -rk -bR -bR -iW -fJ -cL -Hy -IB -bq -zH -KW -To -sl -cL -cL -Zp vV vV vV vV vV vV -"} -(21,1,1) = {" vV -Zp -Zp -ck -KY -Zp -Zp -Zp -Zp -OP -Mb -UG -lz -wH -wH -fF -ev -Rp -AE -AE -CG -Rp -hb -WC -Un -hK -OM -OM -Bw -WC -OU -Qp -Ev -Zz -Tn -lf -Kb -Rd -If -Ds -cL -mH -Sm -UK -yr -qF -Qw -Rx -Rx -Rx -Rx -Rx -Rx -Rx -fM -sF -yE -cL -Zp -Zp -Zp vV vV vV vV -"} -(22,1,1) = {" vV -Zp -Zp -Zp -OP -OP -OP -OP -OP -wH -TZ -UG -wH -wH -ng -Lw -BB -Rp -AE -AE -AE -Rp -Rp -WC -WC -WC -fb -hk -kx -WC -PV -Qp -jh -Jm -AD -nU -eg -dF -kT -wR -vw -vw -vw -cL -VK -cL -Rx -Rx -uR -wW -NQ -IS -Fm -Rx -Rx -ef -cL -cL -cL -Zp -Zp -Zp vV vV vV -"} -(23,1,1) = {" vV vV -Zp -OP -OP -Zy -JC -CV -aJ -wH -Uu -eR -Ay -ai -SK -Yz -NC -Rp -AE -AE -AE -Rp -Lv -Ex -wQ -WC -WC -WC -WC -WC -TJ -iR -SF -bk -Tn -gm -NW -Zt -vw -vw -vw -vx -vx -Wq -Mq -uk -Rx -uR -de -Gu -Bu -UP -kZ -Fm -Rx -Mi -hd -dh -aL -Zp -Zp -Zp -Zp vV vV -"} -(24,1,1) = {" vV vV vV -Gq -ka -ok -Ob -nv -zF -wH -ml -Xs -wH -gz -cW -yK -vY -Rp -Rp -vG -Rp -Rp -LQ -uX -Ex -MD -Gx -Gx -Gx -Gx -TJ -gL -gk -Zz -Tn -pD -Pf -Ql -vw -vx -vx -vx -pL -Ed -fc -fc -Rx -xp -LF -kB -wK -HI -pq -qm -Rx -zY -qQ -aL -aL -Zp -Zp -Zp -Zp vV vV -"} -(25,1,1) = {" vV vV vV -wH -ea -jG -jG -Cn -eW -kH -FL -lX -Rp -Rp -Rp -Rp -Rp -Rp -Ww -fn -PP -Rp -KU -KU -KU -Rp -Rp -Rp -Rp -Gx -TJ -Lh -ir -HA -TJ -TJ -TJ -vw -vw -vx -cr -cr -cr -RK -cr -RK -Rx -Pl -Oe -Zu -yN -wl -Ou -oh -Rx -Rx -Rx -Rx -Rx -Zp -Zp -Zp -Zp -Zp vV -"} -(26,1,1) = {" vV vV vV -wH -tF -Kx -hu -EY -nQ -wH -NI -KQ -Rp -AE -AE -AL -Rp -pC -Bb -kw -OC -qU -gR -WX -Ug -hh -At -Rp -Gx -Gx -TJ -qA -TH -Zz -sH -hM -TJ -vw -Vk -cr -cr -NX -cr -Xg -eH -bA -Rx -KG -PL -XS -EA -Pc -Yf -ZS -hW -rJ -Fu -Rx -Rx -Zp -Zp -Zp -Zp -Zp vV -"} -(27,1,1) = {" vV vV -Zp -OP -OP -Uv -vz -gM -Sd -wH -Vy -GY -Rp -AE -AE -AE -XY -Yi -Ko -vZ -vZ -ga -ga -tX -vZ -MA -eZ -Rp -qZ -jg -TJ -Zn -gk -TS -JX -xu -Zs -vw -eH -bA -Ox -eH -eH -kz -aA -ZY -Rx -Na -Se -HT -JM -pE -js -cR -hW -CK -rA -MC -Rx -Zp -Zp -Zp -Zp -Zp vV -"} -(28,1,1) = {" vV -Zp -Zp -Zp -OP -OP -OP -OP -we -wH -Te -qw -Rp -AE -AE -AE -Rp -lH -Ko -vZ -ur -AM -AM -oK -vZ -MA -vS -Rp -Rp -WT -TJ -vW -Fq -IW -Mc -yQ -za -vw -jm -fL -fL -mJ -mJ -mJ -XT -fT -Rx -Rx -XV -eC -eC -eC -gC -hW -hW -pZ -Rm -Vb -Rx -Zp -Zp -Zp -Zp -Zp -Zp "} -(29,1,1) = {" -Zp -Zp -Zp -Zp -Zp -Zp -OP -mS -aF -wH +(6,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(7,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(8,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(9,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(10,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(11,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(12,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(13,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(14,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(15,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(16,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(17,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(18,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(19,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(20,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(21,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(22,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(23,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(24,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Ow +Ow +Ow +Ow +Ow +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(25,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Ow +Ow +Kv +tJ +Qe +Ow +Ow +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(26,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Ow +Ow +EB +Qd +fK +fK +fQ +Ow +Ow +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(27,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Mx +rd +wt +fK +Qd +Qd +SL +yJ +Mx +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(28,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +vV +Zp +Zp +Zp +Zp +Zp +Zp +Mx +lD +uw +ot +Qd +vu +uw +ia +Mx +aL +aL +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(29,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Mx +AC +EJ +Po +fK +zR +nA +FM +Mx +cL +aL +aL +aL +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(30,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Mx +Zl +dM +od +fK +qX +BY +Vp +Gh +BX +Ap +EZ +aL +aL +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(31,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Mx +kk +mn +Pi +tz +Oo +LV +lh +Mx +yP +iN +iN +uV +aL +Zp +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(32,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +TJ +TJ +TJ +TJ +TJ +TJ +Mx +Mx +Mx +Mx +lM +Mx +Mx +Mx +Mx +cL +cL +cL +Tv +cL +cL +aL +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(33,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +Zp +Zp +wH +lJ +wH +wH +lJ +OP +OP +Zp +TJ +TJ +qj +yc +Ja +gu +Wj +re +dE +Tn +cw +Iz +gN +Tn +AF +Pm +rf +pt +cL +tQ +Xp +RV +Fe +Zp +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(34,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +HY +sN +sN +sN +Zp +OP +wH +RO +xD +xf +eX +zu +OP +Zp +TJ +xH +ta +MQ +sd +Cd +Cd +Cd +RE +Cd +Gc +Wi +cm +Tn +xO +OV +Js +ay +bX +Lf +cL +lL +Ll +Zp +Zp +Zp +Zp +Zp +Zp +Zp +aW +aW +aW +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(35,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +sN +Ft +sN +HY +Zp +OP +LS +eW +eW +eW +Nz +PH +wH +Zp +TJ +BI +qW +xy +Ze +EH +pz +pz +pz +pz +Dp +jn +TS +Tn +df +OV +DU +zP +cL +uq +cL +BS +cL +gS +Zp +Zp +Zp +Zp +Zp +Zp +ak +aW +aW +aW +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(36,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +HY +sN +vV +Ft +Ft +Zp +wH +tl +yb +zu +eW +Ra +ip +wH +wH +wH +wH +va +yO +dA +Kh +Ff +yh +DJ +Nd +zI +LG +yX +YO +ob +eO +RT +TJ +cL +Gz +cL +qK +cL +aL +cL +cL +aL +aL +Zp +cL +cL +Ig +cL +aW +aW +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(37,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +sN +vV +vV +cb +Ft +OP +wH +wH +wH +HW +wH +lJ +wH +wH +Zi +jQ +wH +WC +WC +WC +WC +WC +WC +WC +PA +jI +Zc +HA +xU +TJ +TJ +TJ +TJ +hX +uj +hJ +eI +bG +nc +cL +uo +Fn +aL +aL +cL +WZ +WZ +cL +aW +aW +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(38,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +HY +Ft +dx +YE +hH +DD +kc +sn +sg +yD +Dw +PB +uJ +lJ +wa +JY +aD +WC +mA +Uk +ze +dv +Hu +WC +TJ +vO +gk +mW +WJ +Pa +wn +NP +TJ +cL +cL +cL +Bs +KD +aw +cL +fV +RX +Rt +aL +cL +QY +WZ +cL +aW +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(39,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +HY +HY +Ft +hH +hH +nP +wB +vf +GO +jo +Hk +GH +UA +wH +Oq +Il +Nq +WC +Ez +uv +dr +Bj +mv +GS +bP +Gc +GB +zz +wF +EP +xh +Tz +TJ +hZ +VL +cL +Br +iN +ly +cL +DH +PN +PO +iH +cL +cL +hy +cL +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(40,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +AB +Zp +Zp +Zp +Zp +Zp +Zp +OP +lJ +dN +yZ +lG +lJ +Gn +Gn +wH +wH +Dk +wH +WC +Tt +ge +nX +Tm +un +sQ +LK +BG +Ij +zz +Lj +Ju +xh +Sn +ae +El +Og +cL +pG +sX +Tc +cL +rc +xA +cL +cL +cL +Dt +QB +cL +cL +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(41,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +gv +AB +Re +Zp +Zp +Zp +Zp +wH +wH +wH +vy +zv +IE +vE +LP +xY +SH +Jf +Oh +ha +WC +Eb +Ep +Xb +Kg +yI +DS +wJ +Px +er +Ua +RY +zB +oo +JE +TJ +El +LM +cL +ar +lI +cL +cL +CH +jl +cL +Sp +Xw +yn +uV +im +cL +cL +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(42,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +mc +Gv +AB +Zp +Zp +Zp +wH +lJ +oH +eR +Yo +he +CZ +xM +Cj +xd +RZ +UT +Jv +cM +te +IF +lR +aE +ZZ +YJ +GS +Fd +Dp +Ev +GT +TJ +TJ +TJ +TJ +TJ +PC +qI +cL +ZX +cL +cL +mh +bR +ar +QH +tD +bR +yp +iN +Dy +gH +cL +cL +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(43,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +xk +Os +yj +Zp +Zp +Zp +OP +Ci +UG +nH +xV +wH +lJ +wH +Rp +Rp +Rp +Rp +Rp +gM +WC +il +iE +si +si +qT +WC +TJ +vO +Ev +mt +Tn +SR +QW +Gi +TJ +TJ +cL +cL +rk +rk +bR +bR +iW +fJ +cL +Hy +IB +bq +zH +KW +To +sl +cL +cL +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(44,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +ck +KY +Zp +Zp +Zp +Zp +OP +Mb +UG +lz +wH +wH +fF +ev +Rp +AE +AE +CG +Rp +hb +WC +Un +hK +OM +OM +Bw +WC +OU +Qp +Ev +Zz +Tn +lf +Kb +Rd +If +Ds +cL +mH +Sm +UK +yr +qF +Qw +Rx +Rx +Rx +Rx +Rx +Rx +Rx +fM +sF +yE +cL +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(45,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +OP +OP +OP +OP +OP +wH +TZ +UG +wH +wH +ng +Lw +BB +Rp +AE +AE +AE +Rp +Rp +WC +WC +WC +fb +hk +kx +WC +PV +Qp +jh +Jm +AD +nU +eg +dF +kT +wR +vw +vw +vw +cL +tV +cL +Rx +Rx +uR +wW +NQ +yF +Fm +Rx +Rx +ef +cL +cL +cL +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(46,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +OP +OP +Zy +JC +CV +aJ +wH +Uu +eR +Ay +ai +SK +Yz +NC +Rp +AE +AE +AE +Rp +Lv +Ex +wQ +WC +WC +WC +WC +WC +TJ +iR +SF +bk +Tn +gm +NW +Zt +vw +vw +vw +vx +vx +Wq +Mq +uk +Rx +uR +de +Gu +Bu +UP +kZ +Fm +Rx +Mi +hd +dh +aL +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(47,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Gq +ka +ok +Ob +nv +zF +wH +ml +Xs +wH +gz +cW +yK +vY +Rp +Rp +qL +Rp +Rp +LQ +uX +Ex +MD +Gx +Gx +Gx +Gx +TJ +gL +gk +Zz +Tn +pD +Pf +Ql +vw +vx +vx +vx +pL +Ed +fc +fc +Rx +xp +LF +kB +wK +HI +pq +qm +Rx +zY +qQ +aL +aL +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(48,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +wH +ea +jG +jG +Cn +eW +kH +FL +lX +Rp +Rp +Rp +Rp +Rp +Rp +Ww +fn +CL +Rp +KU +KU +KU +Rp +Rp +Rp +Rp +Gx +TJ +Lh +ir +HA +TJ +TJ +TJ +vw +vw +vx +cr +cr +cr +RK +cr +RK +Rx +Pl +Oe +Zu +yN +wl +Ou +oh +Rx +Rx +Rx +Rx +Rx +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(49,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +wH +tF +Kx +hu +EY +nQ +wH +NI +KQ +Rp +AE +AE +AL +Rp +pC +Bb +kw +OC +qU +gR +WX +Ug +hh +At +Rp +Gx +Gx +TJ +qA +TH +Zz +sH +hM +TJ +vw +Vk +cr +cr +NX +cr +Xg +eH +bA +Rx +KG +PL +XS +EA +Pc +Yf +ZS +hW +rJ +Fu +Rx +Rx +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(50,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +OP +OP +Uv +vz +gM +Sd +wH +Vy +GY +Rp +AE +AE +AE +XY +Yi +Ko +vZ +vZ +ga +ga +tX +vZ +MA +eZ +Rp +qZ +jg +TJ +Zn +gk +TS +JX +xu +Zs +vw +we +bA +Ox +eH +eH +kz +aA +ZY +Rx +Na +Se +HT +JM +pE +js +cR +hW +CK +rA +MC +Rx +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(51,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +OP +OP +OP +OP +HW +wH +Te +qw +Rp +AE +AE +AE +Rp +lH +Ko +vZ +ur +AM +AM +oK +vZ +MA +vS +Rp +Rp +QC +TJ +vW +Fq +IW +Mc +yQ +za +vw +rV +fL +fL +mJ +mJ +mJ +XT +fT +Rx +Rx +XV +eC +eC +eC +gC +hW +hW +pZ +Rm +Vb +Rx +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(52,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +Zp +OP +mS +aF +wH Xu Ud Rp @@ -16706,1991 +21325,8071 @@ Rp Rp Rp Rp -aV -Ko -vZ -Ik -wM -zZ -uZ -OK -rj -YS +aV +Ko +vZ +Ik +wM +zZ +uZ +OK +rj +YS +Rp +sJ +sz +Fh +Rw +Gk +Ny +Cd +Cd +Kj +vw +Hv +Oc +Ol +Ol +Ol +Ol +sP +XB +zL +Rx +ra +NJ +HO +NJ +fX +hW +TA +ru +nY +je +Rx +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(53,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +Zp +OP +sD +Pb +wH +CD +vB +AV +Hi +Dh +BV +Ei +sB +bv +zy +WB +fE +ZT +Uo +WS +up +WS +Io +EV +Hj +NG +iJ +MU +Sk +Sk +iJ +iJ +QK +KC +dp +zb +Bx +zb +zb +zb +Bx +Bx +MF +gn +ZN +RF +BL +PZ +PP +dg +Eq +VN +FG +Rx +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(54,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +OP +OP +Th +AW +wH +xF +wH +Rp +Rp +Rp +Rp +Rp +jT +Ko +vZ +Ik +vc +vN +OG +RH +wh +oS +Rp +rR +tp +ZB +Rw +rw +og +pz +pz +pz +vw +Fo +uI +rx +td +rx +rx +rx +jw +zL +Rx +Nh +dq +kt +GE +Tw +hW +Aa +IC +IC +NY +Rx +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(55,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +OP +OP +OP +lA +Ru +gl +Jw +UG +xm +Rp +AE +AE +pl +Rp +FD +Ko +vZ +UI +tf +tf +Vz +vZ +MA +At +Rp +xL +Ta +ez +hi +NH +hi +Xi +cp +Qm +vw +UQ +fv +fv +fv +fv +fv +xZ +RM +Rx +Rx +Nb +iB +iB +iB +Fm +hW +hW +Iy +ts +ci +Rx +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(56,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +OP +UZ +SN +Yj +HG +jD +wH +oE +zs +Rp +AE +AE +AE +cq +HH +Ko +vZ +vZ +ga +ga +Vz +vZ +MA +eZ +Rp +ZQ +OJ +QP +zz +gk +zz +ZG +Ec +Wd +vw +sL +XH +qz +et +et +eb +dC +FN +Rx +bC +de +Gu +Bu +UP +kZ +Fm +hW +DP +rA +rO +Rx +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(57,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +OP +UW +UG +HG +NM +wH +wH +wH +wH +Rp +AE +AE +AE +Rp +Vi +Ui +WD +Qy +nb +Ok +hP +KX +Wu +aH +Rp +Rp +xa +Hx +Dp +GB +Ua +Kk +lt +TJ +vw +WE +cr +cr +zO +cr +Yt +et +XH +Rx +bO +LF +kB +wK +HI +pq +ZS +hW +Cc +nT +Rx +Rx +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(58,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +wH +bQ +iM +vv +hj +hj +Gr +BD +hg +Rp +Rp +Rp +Rp +Rp +Rp +vT +NF +VV +Rp +qd +Qb +Pp +DZ +Rp +QT +QT +QT +QT +xQ +Ev +HA +It +WI +It +vw +vw +Qu +cr +na +KL +wf +Ew +vx +Rx +Pl +Oe +Zu +yN +wl +Ou +oh +Rx +Rx +Rx +Rx +hc +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(59,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +wH +wH +xF +wH +hj +Gr +Cp +Yr +LX +wY +an +Yh +px +xW +Rp +Rp +VK +Rp +QT +QT +JP +QT +QT +QT +EU +NV +Bi +Ho +Oa +Ev +mt +It +mE +nk +bJ +vw +vx +vx +cr +cr +vx +vx +vx +Rx +xp +PL +XS +EA +Pc +Yf +BQ +Rx +Uh +fl +Nr +Nr +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(60,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +wH +wH +CJ +iY +VI +hj +lg +SP +IY +Jc +GQ +CC +sU +ie +wz +Rp +AE +AE +Jb +QT +nn +nn +nn +QT +wL +Rl +by +TT +xs +Qp +xT +bY +RA +yi +fp +wy +vw +vw +vx +vx +vx +vx +vx +vx +Rx +qO +Se +jE +JM +pE +js +gC +Rx +jU +Lx +Vh +Nr +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(61,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +wH +Wo +uP +Yv +BN +hj +Gr +EO +LJ +qN +wY +Lr +Vu +Pv +YM +Rp +AE +AE +AE +QT +nn +nn +nn +QT +Wc +di +vm +eS +Bm +Co +Ev +Zz +It +BJ +dL +GR +vK +vw +vw +vw +vw +po +po +po +Rx +Rx +Na +mR +mk +eC +gC +Rx +Rx +Nr +Kp +Nr +Nr +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(62,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +wH +qe +Fs +wH +wH +hj +hj +Gr +DR +NO +hj +hj +yl +Fy +hj +Rp +AE +AE +AE +QT +nn +nn +nn +QT +ps +Ee +Ee +Ee +QT +Nu +jh +QS +It +jX +TP +Si +rQ +It +Gd +mp +Ey +po +Bg +fo +nz +Rx +Rx +Rx +Rx +Rx +Rx +Rx +fB +vJ +cn +Zv +Nr +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(63,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +wH +LN +nt +pU +uE +jC +pU +pU +pU +pU +pU +zD +HL +OE +jZ +Rp +Rp +Rp Rp -sJ -sz -ZB -Rw -Gk -Ny -Cd -Cd -Kj -vw -Hv -Oc -Ol -Ol -Ol -Ol -sP -XB -zL -Rx -ra -NJ -HO -NJ -fX -hW -TA -ru -nY -je -Rx +QT +vG +vG +vG +QT +QT +QT +AS +QT +QT +rl +Ev +Or +It +wN +lB +Si +uL +dR +dR +dR +fk +po +kF +VC +lK +po +Mo +uQ +cf +bV +gI +Za +Nr +Nr +cn +ZV +Nr +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(64,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +wH +wH +HG +pU +pT +Eg +NK +cC +Jp +Lp +pU +vl +Iu +UL +OI +hj +en +wV +hj +fR +Qz +Xf +lN +nj +Qz +kf +Qz +Ns +QT +Uc +Ev +CW +It +It +xC +WU +FT +tK +QR +QR +vM +po +Kd +qx +nJ +po +xI +UC +ZC +oA +Am +mI +Sx +pX +eu +tP +Nr +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(65,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +UM +By +db +Xt +Lz +ry +ry +YP +dT +Qv +Mf +ty +qi +tb +NL +QO +RS +WL +WL +RS +eL +kO +kO +JZ +Ro +Uy +Tk +kO +Zh +yL +fr +ve +Zz +QG +It +nE +Jq +ZO +It +XA +zM +Gd +po +Gj +aB +rU +po +Zk +Mw +Gt +cG +Mw +In +gA +LD +mY +Nr +Nr +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(66,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +HY +HY +wH +wH +pU +aq +Fp +jb +Kw +tO +Et +pU +zl +wg +vI +ZE +hj +da +OR +hj +aC +iT +iT +ys +jv +gh +zi +Ac +MX +QT +vO +GB +mP +TJ +It +It +It +It +It +It +It +It +po +mu +fA +oq +po +LC +IL +le +pg +mx +Za +GA +MK +Vv +Nr +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(67,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +HY +Zp +Zp +pU +aq +Fp +pU +HE +aZ +TW +pU +kq +Dm +hj +hj +hj +hj +hj +hj +QT +QT +AS +QT +QT +QT +QT +QT +QT +QT +RB +gk +Zz +vC +Me +pj +oC +ep +vC +pv +Ca +QN +po +po +rs +po +po +Za +Za +Za +Za +Za +Za +Za +AT +rT +Nr +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(68,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +pU +pU +pU +pU +eU +tO +JS +pU +pU +pU +gP +Vr +BA +sR +gP +ba +DL +FC +IJ +cB +gP +dj +dj +dj +dj +Gy +Qp +gk +mW +Ub +Dg +Cl +Dg +bB +vC +mr +mr +mr +Zm +la +MM +mr +Nr +Rz +zj +Db +nh +YR +fG +fG +Nj +Xy +Nr +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(69,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +pU +vD +Vm +my +LO +CE +Vm +QU +pU +Qq +AK +sR +sR +gP +ua +sI +mZ +IJ +IJ +gP +dj +dj +dj +Xm +Ak +Qp +uH +Px +uf +aU +GU +FQ +FA +Ag +xK +su +Ng +Yp +Yp +CN +Yp +Em +YG +vQ +fg +EM +Ax +JK +rL +Es +jz +Nr +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(70,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +pU +rP +Vm +my +LO +CE +Vm +qc +pU +dX +Pk +Rc +tm +st +lT +gy +wZ +XQ +CA +gP +TJ +TJ +TJ +kd +AN +Qp +gk +Ua +yW +PR +PR +VA +PF +vC +Fi +Ux +KM +RG +RP +iG +Rr +Nr +Sh +ON +ON +Nc +XK +ZW +us +Ts +Yl +Nr +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(71,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +pU +vD +Vm +my +mz +ye +Vm +QU +pU +dU +Td +gx +sR +gP +zQ +wc +xE +XP +eQ +jj +qy +uG +Ib +ut +ut +Gc +Ev +cv +vC +dB +KA +iG +Yb +vC +bn +Ef +sA +ex +Nn +Qf +Nn +Nr +ZR +QM +ro +pN +XK +jf +Al +BT +Rj +Nr +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(72,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +pU +pU +pU +pu +mz +zV +pU +pU +pU +Ji +go +Zb +Hq +gP +ee +Vs +VF +ZJ +bL +oa +cj +Iv +Iv +Iv +Iv +wJ +XD +Wn +Mt +Mt +Mt +cX +Mt +Mt +lS +Mg +TR +ex +RR +Ln +oI +Nr +Cw +fq +gB +Au +Fz +iu +pJ +Nm +gT +Nr +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(73,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +pU +lr +Vm +my +mz +ye +Vm +QA +pU +gP +BC +gP +gP +gP +AR +JB +gP +gP +gP +gP +TJ +dj +UU +QD +jF +Qp +Ev +Zz +Mt +yG +zo +tt +bt +Mt +ic +Zw +vd +kl +aI +Ln +oI +Nr +sv +mG +aR +Nc +kA +Nr +Nr +Nr +Nr +Nr +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(74,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +pU +ui +Vm +my +mz +ye +Vm +qp +pU +Hh +pr +vq +gP +Sz +Nw +ff +AA +zG +tY +gP +dj +dj +dj +VM +tE +Qp +Ev +Zz +Mt +Xz +En +QL +XW +Mt +Mt +ex +ex +ex +Nn +Qf +Nn +Nr +Nr +yB +Md +pN +Fw +Nr +hp +rh +WT +Nr +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(75,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +pU +lr +Vm +my +mz +ye +Vm +QA +pU +OA +IJ +tv +rZ +AA +Nw +ff +gK +tA +xv +gP +Rq +Rq +Rq +Rq +gs +vo +tr +jL +Mt +Mn +zf +rv +ki +RJ +Mt +Ab +Ab +Ab +bx +qu +mb +cS +Nr +of +qb +xR +MR +BF +II +rE +qg +Nr +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(76,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +pU +pU +pU +Yy +mz +ig +pU +pU +pU +XC +IJ +tv +jc +AA +iQ +bu +gK +UY +tN +UD +DE +Rq +Rq +Rq +gs +xo +EF +iD +Mt +Mt +Aj +LI +ki +rD +Mt +Ab +Ab +Ab +ZK +Zf +jY +cS +Nr +rB +Vq +ca +LZ +bU +Qj +Sw +gF +Nr +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(77,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +pU +Di +Vm +my +mz +PE +Vm +tj +pU +NA +tG +tv +yV +AA +AA +TQ +Ni +xr +oZ +UD +cJ +cJ +Rq +Rq +gs +zq +MP +fy +ZD +tZ +wp +jK +EW +rW +Mt +Ab +Ab +Ab +jx +IH +jY +cS +Nr +fj +YF +ca +cU +sT +DO +CF +Ih +Nr +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(78,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +pU +BH +Vm +MZ +Ck +ye +Vm +tj +pU +vk +TL +IJ +uc +AA +GC +mD +oD +oD +pI +UD +bb +CQ +gO +Rq +gs +Ya +MP +fy +lb +Du +OF +qG +uU +Mt +Mt +Nn +Nn +Nn +Nn +GK +jY +Nn +Nr +Of +Hp +ca +Eh +Nr +GD +qo +Nr +Nr +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(79,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +pU +Tu +Vm +ke +hO +bW +Vm +tj +pU +gP +Lg +IJ +gP +zS +fP +aN +AA +Pt +GC +UD +av +Mk +CQ +Rq +gs +Kz +uD +oN +Mt +Mt +Mt +TN +Mt +Mt +NR +EC +cF +WP +Df +xe +Kf +ow +Nr +Nr +Nr +fZ +Nr +Nr +Nr +Nr +Nr +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(80,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +pU +pU +pU +Vm +UX +Vm +pU +pU +pU +gP +gP +gP +gP +Iq +hD +AA +gK +on +SW +UD +VT +Oi +kI +Rq +gs +KV +uD +fy +mj +GW +Ge +tt +Vg +Mt +Od +Od +Od +ZM +Wz +jB +YT +iL +uS +Nr +wq +wq +wq +Nr +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(81,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +pU +bd +bd +NZ +bd +bd +pU +Ad +gP +vr +Sa +gP +Wx +dQ +GC +gK +hF +GG +gP +dO +gs +gs +gs +gs +ZH +tr +fy +mj +YH +KT +LI +JH +Mt +Od +Od +bH +ZM +Wz +jB +YT +iL +eM +Nr +wq +wq +wq +Nr +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(82,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +pU +bd +bd +wk +bd +bd +pU +Ad +gP +fO +hE +HD +mq +HJ +lx +gK +ST +MO +gP +wE +GL +Ot +ja +Vn +ct +uD +Vc +Mt +Mt +Mt +pR +sV +Mt +YX +uu +ft +ft +kY +bw +cK +Zd +OX +Nr +wq +wq +wq +Nr +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(83,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +pU +pU +pU +pU +pU +pU +pU +wS +gP +gP +gP +wS +wS +wS +gP +gP +gP +gP +gP +gP +gP +SX +Qo +wu +wu +kR +fN +mj +GW +Ge +fu +GI +Mt +Yw +Od +bH +ZM +Xo +yo +YT +Zd +hA +Nn +Nn +Nn +Nn +Nn +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(84,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Ft +Ft +lY +Bf +EN +wS +wS +Nf +iv +Jt +wS +Ad +Ad +Ad +Kn +Ad +Ad +Ad +Ad +Ad +Ad +Ad +wS +oc +Tp +eh +IS +lq +RC +mj +YH +KT +dw +Zr +Mt +WY +bH +ZF +Oy +bj +BR +om +ce +uS +Nn +aO +Pd +qv +Nn +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(85,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Ft +Zp +lY +Bf +EN +RD +gU +Ty +tI +mF +wS +wS +wS +wS +Gs +wS +wS +wS +wS +wS +Ad +Ad +wS +OQ +MP +fy +FU +FU +FU +FU +FU +FU +Gw +FU +FU +YX +ft +rN +uu +Wz +Fx +dd +VZ +ms +rX +PY +oL +sM +Nn +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(86,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +lY +Bf +EN +RD +XI +Cs +FV +ne +JO +BE +Cv +UO +ej +pm +Lo +jR +Ai +wS +wS +wS +wS +wC +tr +Vc +FU +du +Lu +jJ +YN +EE +gJ +rG +FU +Od +bH +Od +ZM +Xo +wj +no +ym +nF +Hb +PX +Xh +Rk +Nn +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(87,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +HY +lY +Bf +EN +RD +zm +Vl +PG +hI +sx +uK +DV +wT +kP +jm +gd +Rg +Cy +wI +aS +FR +pK +Ya +pe +TC +gW +bS +bS +jV +gw +hV +gV +Rn +FU +Od +Od +Od +ZM +Xo +cK +cK +iL +xw +Nn +lZ +Xh +kJ +Nn +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(88,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +HY +HY +lY +Bf +EN +wS +Op +GJ +tC +Gm +hx +US +Mp +KP +vs +ag +Yq +Rg +kM +SB +Wp +oJ +op +IP +kR +oG +gW +bS +bS +jV +ny +ny +iX +Rn +FU +nZ +hQ +ei +ei +CU +Vx +Xv +ti +uS +Nn +tW +LE +Nn +Nn +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(89,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Ft +HY +lY +Bf +EN +RD +IZ +Vl +bg +Rf +dD +oX +TF +nC +SE +HS +zK +US +iz +wI +DF +xt +pK +KV +jP +jL +FU +mN +JJ +Ao +yA +YZ +az +FU +FU +Nn +Nn +Nn +Nn +zn +zn +zn +zn +Nn +Nn +Nn +Nn +Nn +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(90,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Ft +Zp +lY +Bf +EN +RD +As +eP +Ia +Az +QI +Ce +Xd +wd +IM +ac +HC +qE +HZ +wS +wS +wS +wS +TI +jW +TI +wS +wS +FU +FU +FU +FU +FU +FU +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(91,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +lY +Bf +EN +RD +HF +fU +GN +Ov +wS +wS +wS +LW +wS +wS +wS +iK +wS +wS +sm +Jh +wS +Dl +HM +Su +Qn +wS +Zp +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(92,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +lY +Bf +EN +wS +wS +aG +iv +Ke +wS +cH +yy +kC +pa +YI +wS +Bc +IN +wS +eK +PS +wS +KF +fH +So +Ie +wS +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(93,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +ak +ak +ak +wS +RD +RD +RD +wS +mB +eB +qk +sb +so +wS +qC +DM +mw +IR +Af +mw +JR +gg +cc +DY +wS +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(94,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +ak +ak +ak +ak +EN +EN +EN +wS +tx +tM +Mv +do +NT +wS +ue +YC +wS +TV +Kt +wS +Bz +Ls +Hs +kN +wS +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(95,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +ak +ak +ak +Bf +Bf +Bf +wS +RD +RD +wS +wS +wS +wS +RD +wS +wS +wS +wS +wS +wS +wS +wS +wS +wS +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(96,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +sN +sN +sN +HY +HY +HY +HY +HY +sN +sN +sN +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(97,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +Zp +Zp +sN +sN +HY +HY +Zp +Zp +HY +sN +sN +sN +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(98,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +Zp +Zp +Zp +Zp +HY +HY +HY +Zp +vV +vV +vV +vV +vV +Zp Zp Zp Zp Zp Zp Zp +Zp +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(99,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(100,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(101,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(102,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(103,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(104,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV "} -(30,1,1) = {" -Zp -Zp -Zp -Zp -Zp -Zp -OP -sD -Pb -wH -CD -vB -AV -Hi -Dh -BV -Ei -sB -bv -zy -WB -fE -ZT -Uo -WS -up -WS -Io -EV -Hj -NG -iJ -MU -Sk -Sk -iJ -iJ -QK -KC -dp -zb -Bx -zb -zb -zb -Bx -Bx -hy -gn -ZN -RF -BL -PZ -Hu -dg -Eq -VN -FG -Rx -Zp -Zp -Zp -Zp -Zp -Zp +(105,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(106,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV "} -(31,1,1) = {" -Zp -Zp -Zp -Zp -Zp -OP -OP -Th -AW -wH -Jw -wH -Rp -Rp -Rp -Rp -Rp -fZ -Ko -vZ -Ik -vc -vN -OG -RH -wh -oS -Rp -rR -tp -ZB -Rw -rw -og -pz -pz -pz -vw -Gn -uI -rx -td -rx -rx -rx -jw -zL -Rx -Nh -dq -kt -GE -Tw -hW -Aa -IC -IC -NY -Rx -Zp -Zp -Zp -Zp -Zp -Zp +(107,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV "} -(32,1,1) = {" -Zp -Zp -Zp -OP -OP -OP -lA -Ru -gl -Jw -UG -xm -Rp -AE -AE -pl -Rp -FD -Ko -vZ -UI -tf -tf -Vz -vZ -MA -At -Rp -xL -Ta -ez -hi -NH -hi -Xi -cp -Qm -vw -Of -fv -fv -fv -fv -fv -xZ -RM -Rx -Rx -Nb -iB -iB -iB -Fm -hW -hW -Iy -ts -ci -Rx -Zp -Zp -Zp -Zp -Zp -Zp +(108,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(109,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV "} -(33,1,1) = {" -Zp -Zp -Zp -OP -UZ -SN -Yj -HG -jD -wH -oE -zs -Rp -AE -AE -AE -cq -HH -Ko -vZ -vZ -ga -ga -Vz -vZ -MA -eZ -Rp -ZQ -OJ -QP -zz -gk -zz -ZG -Ec -Wd -vw -sL -XH -qz -et -et -eb -dC -FN -Rx -bC -de -Gu -Bu -UP -kZ -Fm -hW -DP -rA -rO -Rx -Zp -Zp -Zp -Zp -Zp -Zp +(110,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV "} -(34,1,1) = {" -Zp -Zp -Zp -OP -UW -UG -HG -NM -wH -wH -wH -wH -Rp -AE -AE -AE -Rp -Vi -Ui -WD -Qy -nb -Ok -hP -KX -Wu -aH -Rp -Rp -xa -Hx -Dp -GB -Ua -Kk -lt -TJ -vw -Ew -cr -cr -zO -cr -Yt -et -XH -Rx -Gw -LF -kB -wK -HI -pq -ZS -hW -Cc -nT -Rx -Rx -Zp -Zp -Zp -Zp -Zp -Zp +(111,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(112,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV "} -(35,1,1) = {" -Zp -Zp -Zp -wH -bQ -iM -vv -hj -hj -cX -BD -hg -Rp -Rp -Rp -Rp -Rp -Rp -vT -NF -VV -Rp -qd -Qb -xC -DZ -Rp -QT -QT -QT -QT -xQ -Ev -HA -It -Eb -It -vw -vw -Qu -cr -na -KL -wf -Ew -vx -Rx -Pl -Oe -Zu -yN -wl -Ou -oh -Rx -Rx -Rx -Rx -hc -Zp -Zp -Zp -Zp -Zp -Zp +(113,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +"} +(114,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV "} -(36,1,1) = {" -Zp -Zp -Zp -wH -wH -Jw -wH -hj -cX -Cp -Yr -LX -wY -an -Yh -px -xW -Rp -Rp -dA -Rp -QT -QT -pu -QT -QT -QT -EU -NV -Bi -Ho -Oa -Ev -mt -It -mE -yF -bJ -vw -vx -vx -cr -cr -vx -vx -vx -Rx -xp -PL -XS -EA -Pc -Yf -BQ -Rx -Uh -fl -Nr -Nr -Zp -Zp -Zp -Zp -Zp +(115,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV vV -"} -(37,1,1) = {" -Zp -Zp -wH -wH -CJ -iY -VI -hj -lg -SP -IY -Jc -GQ -CC -sU -ie -wz -Rp -AE -AE -Jb -QT -nn -nn -nn -QT -wL -Rl -by -TT -xs -Qp -xT -bY -RA -yi -fp -nk -vw -vw -vx -vx -vx -vx -vx -vx -Rx -qO -Se -jE -JM -pE -js -gC -Rx -jU -Lx -Vh -Nr -Zp -Zp -Zp -Zp -Zp vV "} -(38,1,1) = {" -Zp -Zp -wH -Wo -uP -Yv -BN -hj -cX -EO -LJ -qN -wY -Lr -Vu -Pv -YM -Rp -AE -AE -AE -QT -nn -li -nn -QT -Wc -di -vm -eS -Bm -Co -Ev -Zz -It -BJ -dL -GR -vK -vw -vw -vw -vw -po -po -po -Rx -Rx -Na -mR -mk -eC -gC -Rx -Rx -Nr -du -Nr -Nr -Zp -Zp -Zp -Zp -Zp +(116,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV vV -"} -(39,1,1) = {" -Zp -Zp -wH -qe -Fs -wH -wH -hj -hj -cX -DR -NO -hj -hj -Xz -Fy -hj -Rp -AE -AE -AE -QT -nn -nn -nn -QT -ps -Ee -Ee -Ee -QT -Nu -jh -QS -It -jX -TP -Si -rQ -It -Gd -mp -Ey -po -Ig -VC -nz -Rx -Rx -Rx -Rx -Rx -Rx -Rx -fB -vJ -cn -Zv -Nr -Zp -Zp -Zp -Zp vV vV -"} -(40,1,1) = {" -Zp -Zp -wH -LN -nt -pU -uE -jC -pU -pU -pU -pU -pU -zD -HL -OE -jZ -Rp -Rp -Rp -Rp -QT -st -st -st -QT -QT -QT -bO -QT -QT -Ih -Ev -Or -It -wN -lB -Si -uL -dR -dR -dR -fk -po -kF -VC -lK -po -Mo -uQ -cf -bV -gI -Za -Nr -Nr -cn -ZV -Nr -Zp -Zp -Zp vV vV vV -"} -(41,1,1) = {" vV -Zp -wH -wH -HG -pU -pT -Eg -NK -cC -Jp -Lp -pU -vl -Iu -UL -OI -hj -en -wV -hj -fR -Qz -Xf -lN -nj -Qz -kf -Qz -Ns -QT -Uc -Ev -CW -It -It -Pp -WU -FT -tK -QR -QR -vM -po -Kd -qx -nJ -po -xI -UC -ZC -oA -Am -mI -Sx -pX -eu -tP -Nr -Zp -Zp -Zp vV vV vV -"} -(42,1,1) = {" vV -UM -By -db -Xt -Lz -ry -ry -YP -dT -Qv -Mf -ty -qi -tb -NL -QO -RS -WL -WL -RS -eL -kO -kO -JZ -Ro -Uy -Tk -kO -Zh -yL -fr -ve -Zz -QG -It -nE -Jq -ZO -It -XA -zM -Gd -po -Gj -aB -rU -po -Zk -Mw -Gt -cG -Mw -In -gA -LD -mY -Nr -Nr -Zp -Zp -Zp vV vV vV -"} -(43,1,1) = {" vV -HY -HY -wH -wH -pU -aq -Fp -jb -Kw -tO -Et -pU -zl -wg -vI -ZE -hj -da -OR -hj -aC -iT -iT -ys -jv -gh -zi -tV -MX -QT -vO -GB -mP -TJ -It -It -It -It -It -It -It -It -po -mu -fA -oq -po -LC -IL -le -pg -mx -Za -GA -MK -Vv -Nr -Zp -Zp -Zp -Zp vV vV vV -"} -(44,1,1) = {" vV vV -HY -Zp -Zp -pU -aq -Fp -pU -HE -aZ -TW -pU -kq -Dm -hj -hj -hj -hj -hj -hj -QT -QT -bO -QT -QT -QT -QT -QT -QT -QT -RB -gk -Zz -vC -Me -pj -oC -ep -vC -pv -Ca -QN -po -po -mB -po -po -Za -Za -Za -Za -Za -Za -Za -AT -rT -Nr -Zp -Zp -Zp -Zp vV vV vV -"} -(45,1,1) = {" vV vV -Zp -Zp -Zp -pU -pU -pU -pU -eU -tO -JS -pU -pU -pU -gP -Vr -BA -sR -gP -ba -DL -FC -IJ -cB -gP -dj -dj -dj -dj -Gy -Qp -gk -mW -Ub -Dg -Cl -Dg -bB -vC -mr -mr -mr -Zm -la -MM -mr -Nr -Rz -zj -Db -nh -YR -fG -fG -Nj -Xy -Nr -Zp -Zp -Zp -Zp vV vV vV "} -(46,1,1) = {" +(117,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV vV vV -Zp -Zp -Zp -Zp -pU -vD -Vm -my -LO -CE -Vm -QU -pU -Qq -AK -sR -sR -gP -ua -sI -mZ -IJ -IJ -gP -dj -dj -dj -Xm -Ak -Qp -uH -Px -uf -aU -GU -FQ -FA -Ag -xK -su -Ng -Yp -Yp -CN -Yp -Em -YG -vQ -fg -EM -Ax -JK -rL -Es -jz -Nr -Zp -Zp -Zp -Zp vV vV vV -"} -(47,1,1) = {" vV vV -Zp -Zp -Zp -Zp -pU -rP -Vm -my -LO -CE -Vm -qc -pU -dX -Pk -Rc -tm -lx -lT -gy -wZ -XQ -CA -gP -TJ -TJ -TJ -kd -AN -Qp -gk -Ua -yW -PR -PR -VA -PF -vC -Fi -Ux -KM -RG -RP -iG -Rr -Nr -Sh -ON -ON -Nc -XK -ZW -us -Ts -Yl -Nr -Zp -Zp -Zp -Zp -Zp vV vV -"} -(48,1,1) = {" vV vV -Zp -Zp -Zp -Zp -pU -vD -Vm -my -mz -ye -Vm -QU -pU -dU -Td -gx -sR -gP -jT -wc -xE -XP -eQ -jj -BC -uG -Ib -ut -ut -Gc -Ev -cv -vC -dB -KA -iG -Yb -vC -bn -Ef -sA -ex -Nn -Qf -Nn -Nr -qK -QM -ro -pN -XK -jf -Al -BT -Rj -Nr -Zp -Zp -Zp -Zp -Zp vV vV -"} -(49,1,1) = {" vV vV -Zp -Zp -Zp -Zp -pU -pU -pU -II -mz -zV -pU -pU -pU -Ji -go -Zb -Hq -gP -ee -Vs -bL -ZJ -bL -oa -cj -Iv -Iv -Iv -Iv -wJ -XD -Wn -Mt -Mt -Mt -ZX -Mt -Mt -lS -Mg -TR -ex -RR -Ln -oI -Nr -Cw -fq -gB -Au -Fz -iu -pJ -Nm -gT -Nr -Zp -Zp -Zp -Zp -Zp vV vV -"} -(50,1,1) = {" vV vV -Zp -Zp -Zp -Zp -pU -lr -Vm -my -mz -ye -Vm -QA -pU -gP -vr -gP -gP -gP -AR -JB -gP -gP -gP -gP -TJ -dj -UU -QD -jF -Qp -Ev -Zz -Mt -yG -zo -tt -bt -Mt -ic -Zw -vd -kl -aI -Ln -oI -Nr -sv -mG -aR -Nc -kA -Nr -Nr -Nr -Nr -Nr -Zp -Zp -Zp -Zp -Zp vV vV -"} -(51,1,1) = {" vV vV -Zp -Zp -Zp -Zp -pU -ui -Vm -my -mz -ye -Vm -qp -pU -Hh -pr -vq -gP -Sz -Nw -ff -AA -zG -tY -gP -dj -dj -dj -VM -tE -Qp -Ev -Zz -Mt -qg -En -QL -XW -Mt -Mt -ex -ex -ex -Nn -Qf -Nn -Nr -Nr -yB -Md -pN -Fw -Nr -OA -rh -dN -Nr -Zp -Zp -Zp -Zp -Zp vV vV -"} -(52,1,1) = {" vV vV -Zp -Zp -Zp -Zp -pU -lr -Vm -my -mz -ye -Vm -QA -pU -QC -IJ -tv -rZ -AA -Nw -ff -gK -tA -xv -gP -Rq -Rq -Rq -Rq -gs -vo -tr -jL -Mt -Mn -zf -rv -ki -RJ -Mt -Ab -Ab -Ab -bx -qu -mb -cS -Nr -of -qb -xR -MR -BF -JP -rs -DO -Nr -Zp -Zp -Zp -Zp vV vV vV -"} -(53,1,1) = {" vV vV -Zp -Zp -Zp -Zp -pU -pU -pU -Yy -mz -ig -pU -pU -pU -XC -IJ -tv -jc -AA -iQ -bu -gK -UY -tN -UD -DE -Rq -Rq -Rq -gs -xo -EF -iD -Mt -Mt -Aj -LI -ki -rD -Mt -Ab -Gg -Ab -ZK -Zf -jY -cS -Nr -rB -Vq -ca -LZ -bU -zn -LW -rl -Nr -Zp -Zp -Zp -Zp vV vV vV -"} -(54,1,1) = {" vV vV vV -Zp -Zp -Zp -pU -Di -Vm -my -mz -PE -Vm -tj -pU -NA -tG -tv -yV -AA -AA -TQ -Ni -xr -oZ -UD -cJ -cJ -Rq -Rq -gs -zq -MP -fy -ZD -tZ -wp -jK -EW -rW -Mt -Ab -Ab -Ab -jx -IH -jY -cS -Nr -fj -YF -ca -cU -sT -qL -fO -CH -Nr -Zp -Zp -Zp -Zp vV vV vV -"} -(55,1,1) = {" vV vV vV -Zp -Zp -Zp -pU -BH -Vm -MZ -Ck -ye -Vm -tj -pU -vk -TL -IJ -uc -AA -GC -mD -oD -oD -pI -UD -bb -CQ -gO -Rq -gs -Ya -MP -fy -lb -Du -OF -qG -uU -Mt -Mt -Nn -Nn -Nn -Nn -GK -jY -Nn -Nr -HW -Hp -ca -Eh -Nr -GD -qo -Nr -Nr -Zp -Zp -Zp vV vV vV vV -"} -(56,1,1) = {" vV vV vV -Zp -Zp -Zp -pU -Tu -Vm -ke -hO -bW -Vm -tj -pU -gP -Lg -IJ -gP -zS -fP -aN -AA -Pt -GC -UD -av -Mk -CQ -Rq -gs -Kz -uD -oN -Mt -Mt -Mt -lG -Mt -Mt -NR -EC -cF -WP -Df -xe -Kf -ow -Nr -Nr -Nr -xF -Nr -Nr -Nr -Nr -Nr -Zp -Zp -Zp vV vV vV vV vV -"} -(57,1,1) = {" vV vV vV vV -Zp -Zp -pU -pU -pU -Vm -UX -Vm -pU -pU -pU -gP -gP -gP -gP -Iq -hD -AA -gK -on -SW -UD -VT -Oi -kI -Rq -gs -KV -uD -fy -lb -GW -Ge -tt -Vg -Mt -Od -Od -Od -ZM -Wz -jB -YT -iL -uS -Nr -wq -wq -wq -Nr -Zp -Zp -Zp -Zp -Zp -Zp vV vV vV vV vV -"} -(58,1,1) = {" vV vV vV vV -Zp -Zp -Zp -pU -bd -bd -NZ -bd -bd -pU -Gb -gP -yl -Ow -gP -Wx -dQ -GC -gK -hF -GG -gP -dO -gs -gs -gs -gs -ZH -tr -fy -lb -YH -KT -LI -JH -Mt -Od -Od -bH -ZM -Wz -jB -YT -iL -xw -Nr -wq -FB -wq -Nr -Zp -Zp -Zp -Zp -Zp vV vV vV @@ -18698,131 +29397,64 @@ vV vV vV "} -(59,1,1) = {" +(118,1,1) = {" +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV +vV vV vV vV vV vV -Zp -Zp -pU -bd -bd -wk -bd -bd -pU -Gb -gP -yZ -WI -RD -mq -HJ -Fo -gK -ST -MO -gP -wE -GL -Ot -Vn -Vn -ct -uD -Vc -Mt -Mt -Mt -pR -sV -Mt -YX -uu -ft -ft -kY -bw -cK -Zd -OX -Nr -wq -wq -wq -Nr -Zp -Zp -Zp -Zp -Zp vV vV vV vV vV vV -"} -(60,1,1) = {" vV vV vV vV vV -Zp -Zp -pU -pU -pU -pU -pU -pU -pU -gP -gP -gP -gP -wS -wS -wS -gP -gP -gP -gP -gP -gP -gP -SX -Qo -wu -wu -kR -fN -lb -GW -Ge -fu -GI -Mt -Od -Od -bH -ZM -Xo -yo -YT -Zd -hA -Nn -Nn -Nn -Nn -Nn -Zp -Zp -Zp vV vV vV @@ -18831,65 +29463,11 @@ vV vV vV vV -"} -(61,1,1) = {" vV vV vV vV vV -Ft -Ft -lY -Bf -EN -wS -wS -Nf -iv -Jt -wS -Ad -Ad -Ad -Kn -Ad -Ad -Ad -Ad -Ad -Ad -Ad -wS -oc -Tp -eh -ZR -lq -RC -lb -YH -KT -dw -Zr -Mt -AS -bH -ZF -Oy -bj -BR -om -ce -uS -Nn -aO -Pd -qv -Nn -Zp -Zp -Zp vV vV vV @@ -18898,64 +29476,11 @@ vV vV vV vV -"} -(62,1,1) = {" vV vV vV vV vV -Ft -Zp -lY -Bf -EN -wI -gU -Ty -tI -mF -wS -wS -wS -wS -Gs -wS -wS -wS -wS -wS -Ad -Ad -wS -OQ -MP -fy -FU -FU -FU -FU -FU -FU -Ac -FU -FU -YX -ft -rN -uu -Wz -Fx -dd -VZ -ms -rX -PY -oL -sM -Nn -Zp -Zp vV vV vV @@ -18965,64 +29490,11 @@ vV vV vV vV -"} -(63,1,1) = {" vV vV vV vV vV -Zp -Zp -lY -Bf -EN -wI -XI -Cs -FV -ne -JO -BE -Cv -UO -ej -Sw -Lo -jR -Ai -wS -wS -wS -wS -wC -tr -Vc -FU -Sa -Lu -jJ -YN -EE -gJ -rG -FU -Od -bH -Od -ZM -Xo -wj -no -ym -nF -Hb -PX -Xh -Rk -Nn -Zp -Zp vV vV vV @@ -19032,63 +29504,11 @@ vV vV vV vV -"} -(64,1,1) = {" vV vV vV vV vV -Zp -HY -lY -Bf -EN -wI -zm -Vl -PG -hI -sx -uK -DV -wT -kP -HD -gd -Rg -Cy -wI -aS -FR -wI -Ya -pe -TC -gW -bS -bS -jV -gw -hV -gV -Rn -FU -Od -Od -Od -ZM -Xo -cK -cK -iL -xw -Nn -lZ -Xh -kJ -Nn -Zp vV vV vV @@ -19100,62 +29520,18 @@ vV vV vV "} -(65,1,1) = {" +(119,1,1) = {" +vV +vV +vV +vV +vV +vV vV vV vV vV vV -HY -HY -lY -Bf -EN -wS -Op -GJ -tC -Gm -hx -US -Mp -KP -vs -ag -Yq -Rg -kM -SB -Wp -oJ -op -IP -kR -oG -gW -bS -bS -jV -ny -ny -iX -Rn -FU -nZ -hQ -ei -ei -CU -Vx -Xv -ti -uS -Nn -tW -LE -Nn -Nn -Zp vV vV vV @@ -19166,63 +29542,11 @@ vV vV vV vV -"} -(66,1,1) = {" vV vV vV vV vV -Ft -HY -lY -Bf -EN -wI -IZ -Vl -bg -Rf -dD -oX -TF -nC -SE -HS -zK -US -iz -wI -DF -xt -wI -KV -jP -jL -FU -mN -JJ -Ao -yA -YZ -az -FU -FU -Nn -Nn -Nn -Nn -rV -rV -rV -rV -Nn -Nn -Nn -Nn -Nn -Zp -Zp vV vV vV @@ -19233,48 +29557,11 @@ vV vV vV vV -"} -(67,1,1) = {" vV vV vV vV vV -Ft -Zp -lY -Bf -EN -wI -As -eP -Ia -Az -QI -Ce -Xd -wd -IM -ac -HC -qE -HZ -wS -wS -wS -wS -wI -jW -wI -wS -wS -FU -FU -FU -FU -FU -FU -Zp vV vV vV @@ -19300,48 +29587,11 @@ vV vV vV vV -"} -(68,1,1) = {" vV vV vV vV vV -Zp -Zp -lY -Bf -EN -wI -HF -fU -GN -Ov -wS -wS -wS -rE -wS -wS -wS -Qj -wS -wS -sm -Jh -wS -Dl -HM -Su -Qn -wS -Zp -Zp -Zp -Zp -Zp -Zp -Zp vV vV vV @@ -19367,46 +29617,11 @@ vV vV vV vV -"} -(69,1,1) = {" vV vV vV vV vV -Zp -Zp -lY -Bf -EN -wS -wS -aG -iv -Ke -wS -cH -yy -kC -pa -YI -wS -Bc -IN -wS -eK -PS -wS -KF -fH -So -Ie -wS -Zp -Zp -Zp -Zp -Zp vV vV vV @@ -19427,6 +29642,8 @@ vV vV vV vV +"} +(120,1,1) = {" vV vV vV @@ -19434,46 +29651,12 @@ vV vV vV vV -"} -(70,1,1) = {" vV vV vV vV vV vV -Zp -Zp -ak -ak -ak -wS -wI -wI -wI -wS -TN -eB -qk -sb -so -wS -qC -DM -rb -IR -Af -mw -JR -gg -cc -DY -wS -Zp -Zp -Zp -Zp -Zp vV vV vV @@ -19501,45 +29684,12 @@ vV vV vV vV -"} -(71,1,1) = {" vV vV vV vV vV vV -Zp -Zp -ak -ak -ak -ak -EN -EN -EN -wS -tx -tM -Mv -do -NT -wS -ue -YC -wS -TV -Kt -wS -Bz -Ls -Hs -kN -wS -Zp -Zp -Zp -Zp vV vV vV @@ -19568,44 +29718,12 @@ vV vV vV vV -"} -(72,1,1) = {" vV vV vV vV vV vV -Zp -Zp -Zp -ak -ak -ak -Bf -Bf -Bf -wS -wI -wI -wS -wS -wS -wS -wI -wS -wS -wS -wS -wS -wS -wS -wS -wS -wS -Zp -Zp -Zp vV vV vV @@ -19635,8 +29753,6 @@ vV vV vV vV -"} -(73,1,1) = {" vV vV vV @@ -19644,34 +29760,16 @@ vV vV vV vV -Zp -Zp -Zp -Zp -Zp -sN -sN -sN -HY -HY -HY -HY -HY -sN -sN -sN -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp +vV +vV +vV +vV +vV +"} +(121,1,1) = {" +vV +vV +vV vV vV vV @@ -19702,8 +29800,6 @@ vV vV vV vV -"} -(74,1,1) = {" vV vV vV @@ -19712,32 +29808,6 @@ vV vV vV vV -Zp -Zp -Zp -Zp -Zp -Zp -sN -sN -HY -HY -Zp -Zp -HY -sN -sN -sN -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp vV vV vV @@ -19769,8 +29839,6 @@ vV vV vV vV -"} -(75,1,1) = {" vV vV vV @@ -19782,27 +29850,11 @@ vV vV vV vV -Zp -Zp -Zp -Zp -HY -HY -HY -Zp vV vV vV vV vV -Zp -Zp -Zp -Zp -Zp -Zp -Zp -Zp vV vV vV diff --git a/_maps/shuttles/shiptest/independent_beluga.dmm b/_maps/shuttles/independent/independent_beluga.dmm similarity index 99% rename from _maps/shuttles/shiptest/independent_beluga.dmm rename to _maps/shuttles/independent/independent_beluga.dmm index 8737c51a64e6..67d686bd4faa 100644 --- a/_maps/shuttles/shiptest/independent_beluga.dmm +++ b/_maps/shuttles/independent/independent_beluga.dmm @@ -647,6 +647,7 @@ /obj/item/clothing/head/hopcap, /obj/item/gun/energy/e_gun/mini, /obj/item/clothing/head/HoS/cowboy, +/obj/item/clothing/suit/jacket/leather/duster/command, /turf/open/floor/plasteel/dark, /area/ship/bridge) "ge" = ( @@ -1071,7 +1072,7 @@ pixel_y = -32 }, /obj/item/storage/bag/tray, -/obj/item/storage/box/donkpockets{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = 6; pixel_y = 6 }, @@ -1169,7 +1170,7 @@ req_access_txt = "1" }, /obj/machinery/light/directional/north, -/obj/item/ammo_box/magazine/co9mm/rubbershot{ +/obj/item/ammo_box/magazine/co9mm/rubber{ pixel_x = 9; pixel_y = 4 }, @@ -3504,10 +3505,9 @@ pixel_x = -28 }, /obj/item/clothing/under/rank/command/captain, -/obj/item/clothing/under/rank/command/lieutenant, +/obj/item/clothing/under/rank/command, /obj/item/clothing/shoes/laceup, /obj/item/clothing/shoes/cowboy/black, -/obj/item/clothing/suit/armor/vest/capcarapace/alt, /obj/item/clothing/suit/armor/vest/capcarapace/duster, /obj/item/clothing/head/beret/captain, /obj/item/clothing/head/caphat, @@ -3521,6 +3521,7 @@ /obj/item/areaeditor/shuttle, /obj/effect/turf_decal/spline/fancy/opaque/bottlegreen, /obj/item/clothing/head/caphat/cowboy, +/obj/item/clothing/suit/armor/vest/capcarapace/captunic, /turf/open/floor/wood/walnut, /area/ship/bridge) "Hv" = ( diff --git a/_maps/shuttles/shiptest/independent_box.dmm b/_maps/shuttles/independent/independent_box.dmm similarity index 94% rename from _maps/shuttles/shiptest/independent_box.dmm rename to _maps/shuttles/independent/independent_box.dmm index 0a011231ffbd..d80bb829bfbb 100644 --- a/_maps/shuttles/shiptest/independent_box.dmm +++ b/_maps/shuttles/independent/independent_box.dmm @@ -148,6 +148,7 @@ dir = 5 }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/airalarm/directional/east, /turf/open/floor/plasteel/tech/grid, /area/ship/medical/morgue) "aI" = ( @@ -257,10 +258,12 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/effect/turf_decal/ntspaceworks_small, /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/ship/engineering) "bk" = ( @@ -320,11 +323,15 @@ /obj/effect/turf_decal/industrial/shutoff{ dir = 1 }, +/obj/effect/decal/cleanable/wrapping, /turf/open/floor/plating, /area/ship/engineering) "bo" = ( /obj/structure/catwalk/over, -/turf/open/floor/plating/airless, +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8 + }, +/turf/open/floor/plating, /area/ship/external) "bq" = ( /turf/closed/wall/mineral/titanium/nodiagonal, @@ -353,12 +360,28 @@ /turf/open/floor/plasteel/dark, /area/ship/medical) "bw" = ( -/obj/structure/sign/poster/official/random, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/medical) +/obj/machinery/button/door{ + dir = 8; + id = "boxbathroom"; + name = "Privacy Button"; + normaldoorcontrol = 1; + pixel_x = 26; + pixel_y = 7; + specialfunctions = 4 + }, +/obj/machinery/shower{ + dir = 1; + layer = 3 + }, +/obj/structure/curtain, +/obj/item/soap, +/obj/machinery/door/window/northleft, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/crew/toilet) "by" = ( /obj/machinery/door/airlock/external, /obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/atmospherics/pipe/layer_manifold/visible, /turf/open/floor/plating, /area/ship/engineering) "bz" = ( @@ -549,6 +572,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, +/obj/machinery/atmospherics/pipe/layer_manifold/visible, /turf/open/floor/plating, /area/ship/engineering) "cd" = ( @@ -596,21 +620,35 @@ /turf/open/floor/carpet/nanoweave/blue, /area/ship/bridge) "cr" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/machinery/atmospherics/components/unary/portables_connector/layer2, /obj/structure/cable{ - icon_state = "6-9" + icon_state = "6-8" }, -/obj/effect/decal/cleanable/wrapping, -/obj/effect/turf_decal/ntspaceworks_small/right, +/obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/ship/engineering) "cu" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/engineering) -"cw" = ( -/obj/structure/sign/poster/random, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/medical) +/obj/effect/turf_decal/spline/fancy/opaque/blue, +/obj/structure/sink{ + dir = 4; + pixel_x = -12 + }, +/obj/structure/mirror{ + pixel_x = -24 + }, +/obj/structure/toilet{ + pixel_y = 13 + }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 22 + }, +/obj/machinery/light/small/directional/north{ + pixel_x = -10 + }, +/turf/open/floor/plasteel/freezer, +/area/ship/crew/toilet) "cB" = ( /turf/open/floor/plasteel/mono/dark, /area/ship/medical) @@ -653,9 +691,6 @@ /turf/open/floor/plasteel/dark, /area/ship/cargo) "cE" = ( -/obj/machinery/door/airlock{ - name = "Restroom" - }, /obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ dir = 1 @@ -667,27 +702,25 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/door/airlock{ + pixel_x = "chemistry" + }, /turf/open/floor/plasteel/dark, -/area/ship/crew) +/area/ship/crew/toilet) "cF" = ( -/obj/structure/sign/departments/restroom, /turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew) +/area/ship/crew/toilet) "cG" = ( +/obj/effect/spawner/lootdrop/maintenance/three, /obj/structure/closet/emcloset/anchored, /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 4 }, -/obj/effect/spawner/lootdrop/maintenance/three, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, /obj/machinery/button/door{ id = "box_engine1"; name = "Egnine shutter"; pixel_y = 28 }, -/obj/machinery/light/small/broken/directional/south, /turf/open/floor/plating, /area/ship/engineering) "cJ" = ( @@ -717,21 +750,14 @@ }, /obj/structure/table/chem, /obj/machinery/light/broken/directional/south, -/obj/structure/cable{ - icon_state = "1-4" - }, /obj/effect/turf_decal/siding/white{ dir = 1 }, -/obj/machinery/reagentgrinder{ - pixel_y = 8; - pixel_x = 16 - }, /obj/item/reagent_containers/glass/filter{ pixel_x = -8 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/crew) +/turf/open/floor/plasteel/tech/grid, +/area/ship/crew/toilet) "cO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 1 @@ -741,22 +767,37 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/freezer, -/area/ship/crew) +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/item/cigbutt/roach, +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen/corner{ + dir = 4 + }, +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) "cP" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = 12 +/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/light_switch{ + pixel_x = 19; + pixel_y = 12; + dir = 8 }, -/obj/structure/mirror{ - pixel_x = 28 +/obj/structure/cable{ + icon_state = "0-8" }, -/turf/open/floor/plasteel/freezer, -/area/ship/crew) +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen{ + dir = 5 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) "cQ" = ( /obj/machinery/smartfridge/chemistry/preloaded, /turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew) +/area/ship/crew/toilet) "cT" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -767,10 +808,6 @@ /turf/open/floor/wood, /area/ship/crew) "cU" = ( -/obj/machinery/light_switch{ - pixel_x = -25; - pixel_y = 25 - }, /obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, @@ -803,10 +840,10 @@ dir = 8 }, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "1-4" }, -/turf/open/floor/plasteel/freezer, -/area/ship/crew) +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) "da" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -815,8 +852,15 @@ dir = 4 }, /obj/item/cigbutt, -/turf/open/floor/plasteel/freezer, -/area/ship/crew) +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen/corner{ + dir = 4 + }, +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen/corner, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) "dc" = ( /obj/effect/turf_decal/corner/opaque/blue{ dir = 8 @@ -831,6 +875,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/white, /area/ship/crew) "de" = ( @@ -844,6 +891,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/wood, /area/ship/crew) "df" = ( @@ -856,6 +906,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/wood, /area/ship/crew) "dg" = ( @@ -866,6 +919,9 @@ /obj/structure/chair/stool{ dir = 1 }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/open/floor/wood, /area/ship/crew) "dh" = ( @@ -895,6 +951,7 @@ /obj/item/clothing/neck/stethoscope, /obj/structure/window/reinforced/spawner/north, /obj/effect/turf_decal/spline/fancy/opaque/black/corner, +/obj/machinery/light/small/directional/west, /turf/open/floor/plasteel/dark, /area/ship/crew) "do" = ( @@ -927,6 +984,7 @@ /area/ship/medical) "ds" = ( /obj/machinery/suit_storage_unit/cmo, +/obj/machinery/airalarm/directional/east, /turf/open/floor/plasteel/dark, /area/ship/crew) "dt" = ( @@ -978,7 +1036,6 @@ /turf/open/floor/plating, /area/ship/engineering) "ei" = ( -/obj/machinery/light/small/directional/east, /obj/machinery/cryopod, /obj/effect/turf_decal/box/white, /obj/machinery/computer/cryopod/retro/directional/north, @@ -995,19 +1052,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/plasteel/dark, /area/ship/cargo) -"eP" = ( -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 - }, -/obj/structure/catwalk/over, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ship/engineering) "eR" = ( /obj/machinery/door/window/westright, /obj/effect/turf_decal/trimline/opaque/blue/warning{ @@ -1137,7 +1181,6 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light/directional/west, /obj/structure/closet/firecloset/wall{ dir = 4; pixel_x = -32 @@ -1198,12 +1241,21 @@ /turf/open/floor/plating, /area/ship/medical) "hS" = ( -/obj/item/cigbutt/roach, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ +/obj/item/clothing/head/beret/chem, +/obj/item/clothing/suit/longcoat/chemist, +/obj/item/reagent_containers/dropper, +/obj/item/storage/box/pillbottles, +/obj/structure/closet/wall/white/chem{ + pixel_y = 32 + }, +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen/corner{ dir = 8 }, -/turf/open/floor/plasteel/freezer, -/area/ship/crew) +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) "iv" = ( /obj/effect/turf_decal/industrial/warning{ dir = 1 @@ -1230,20 +1282,6 @@ }, /turf/open/floor/plating, /area/ship/engineering) -"iQ" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/structure/catwalk/over, -/obj/structure/sign/warning/electricshock{ - pixel_x = 32 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/ship/engineering) "iU" = ( /obj/structure/closet/secure_closet/medical2, /turf/open/floor/plasteel/dark, @@ -1261,16 +1299,16 @@ /obj/structure/sign/poster/official/cleanliness{ pixel_x = 32 }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable{ - icon_state = "0-8" - }, /obj/effect/turf_decal/siding/white{ dir = 1 }, -/obj/structure/table/chem, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/crew) +/obj/structure/frame/machine, +/obj/item/stack/cable_coil/cyan{ + amount = 5 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plasteel/tech/grid, +/area/ship/crew/toilet) "jk" = ( /obj/machinery/firealarm/directional/south, /obj/machinery/stasis{ @@ -1382,7 +1420,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/item/radio/intercom/directional/west, +/obj/machinery/light/directional/west, /turf/open/floor/plasteel/tech, /area/ship/medical) "mx" = ( @@ -1425,15 +1463,22 @@ /area/ship/medical) "nA" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/donkpockets{ +/obj/effect/spawner/lootdrop/ration{ pixel_y = 3 }, -/obj/effect/spawner/lootdrop/donkpockets{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = -5; pixel_y = 3 }, -/obj/machinery/light/small/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 21 + }, /turf/open/floor/wood, /area/ship/crew) "nQ" = ( @@ -1474,19 +1519,15 @@ /turf/open/floor/plating, /area/ship/cargo) "qD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/structure/catwalk/over, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 }, /obj/structure/cable{ icon_state = "5-9" }, -/obj/structure/catwalk/over, -/obj/effect/turf_decal/number/two, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ - dir = 1 +/obj/structure/sign/warning/electricshock{ + pixel_x = 32 }, /turf/open/floor/plating, /area/ship/engineering) @@ -1502,14 +1543,10 @@ /obj/structure/railing{ dir = 4 }, +/obj/machinery/light/small/directional/south, /turf/open/floor/plating, /area/ship/engineering) "ro" = ( -/obj/machinery/light_switch{ - dir = 1; - pixel_x = -25; - pixel_y = -25 - }, /obj/effect/turf_decal/corner/opaque/lightgrey/diagonal, /obj/effect/turf_decal/trimline/opaque/white/filled/line{ dir = 8 @@ -1540,18 +1577,9 @@ /turf/open/floor/plasteel/white, /area/ship/cargo) "ss" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/machinery/door/window/survival_pod{ - dir = 4 - }, -/obj/structure/curtain, -/obj/structure/window/reinforced/tinted/frosted{ - dir = 1 - }, -/turf/open/floor/mineral/titanium/airless, -/area/ship/crew) +/obj/machinery/door/window/northleft, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/toilet) "su" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -1569,17 +1597,18 @@ /obj/effect/turf_decal/siding/wood, /obj/structure/bookcase/manuals/medical, /obj/effect/turf_decal/siding/wood, +/obj/machinery/light/small/directional/south, /turf/open/floor/wood, /area/ship/crew) "tn" = ( /obj/machinery/vending/wardrobe/medi_wardrobe, -/obj/machinery/firealarm/directional/north, /obj/effect/turf_decal/corner/transparent/neutral{ dir = 1 }, /obj/effect/turf_decal/corner/transparent/neutral{ dir = 8 }, +/obj/machinery/light/small/directional/north, /turf/open/floor/plasteel/dark, /area/ship/crew) "tw" = ( @@ -1593,15 +1622,14 @@ /area/ship/engineering) "tz" = ( /obj/structure/catwalk/over, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 + dir = 9 }, /obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/effect/turf_decal/number/nine, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ - dir = 1 + icon_state = "2-5" }, /turf/open/floor/plating, /area/ship/engineering) @@ -1631,19 +1659,14 @@ "uj" = ( /obj/machinery/light/small/built/directional/west, /obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/light_switch{ - pixel_x = -25; - pixel_y = 25 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/structure/cable{ icon_state = "0-2" }, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light_switch{ - dir = 4; - pixel_x = -20; - pixel_y = 10 + pixel_x = -13; + pixel_y = 21 }, /turf/open/floor/carpet/nanoweave/blue, /area/ship/bridge) @@ -1767,7 +1790,6 @@ /turf/open/floor/plating, /area/ship/crew) "vs" = ( -/obj/machinery/airalarm/directional/south, /obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/light/small/built/directional/south, /obj/structure/sign/warning/biohazard{ @@ -1794,6 +1816,7 @@ /area/ship/bridge) "vE" = ( /obj/structure/dresser, +/obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel, /area/ship/crew) "vX" = ( @@ -1825,7 +1848,7 @@ /obj/effect/turf_decal/industrial/outline/yellow, /obj/item/wrench, /obj/structure/cable/yellow, -/obj/machinery/light/small/directional/south, +/obj/machinery/airalarm/directional/south, /turf/open/floor/plating, /area/ship/engineering) "wd" = ( @@ -1858,7 +1881,6 @@ icon_state = "2-4" }, /obj/structure/catwalk/over, -/obj/effect/turf_decal/ntspaceworks_small/left, /turf/open/floor/plating, /area/ship/engineering) "wj" = ( @@ -1989,19 +2011,12 @@ /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, /obj/machinery/button/door{ dir = 1; id = "box_engine3"; name = "Egnine shutter"; pixel_y = -28 }, -/obj/machinery/light/small/directional/north, /turf/open/floor/plating, /area/ship/engineering) "yN" = ( @@ -2026,6 +2041,9 @@ /obj/structure/closet/crate/freezer/surplus_limbs, /obj/item/reagent_containers/glass/beaker/synthflesh, /obj/effect/turf_decal/corner/opaque/lightgrey/diagonal, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, /turf/open/floor/plasteel/dark, /area/ship/cargo) "zy" = ( @@ -2054,6 +2072,15 @@ /obj/machinery/sleeper{ dir = 4 }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -21; + pixel_y = -10 + }, +/obj/item/radio/intercom/directional/west{ + pixel_x = -41; + pixel_y = -3 + }, /turf/open/floor/plasteel/tech, /area/ship/medical) "AH" = ( @@ -2194,20 +2221,13 @@ /obj/item/mop, /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = 11; - pixel_y = -16 - }, /turf/open/floor/plating, /area/ship/engineering) "Dm" = ( /obj/structure/catwalk/over, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, +/obj/item/cigbutt/roach, /obj/item/reagent_containers/food/snacks/burrito, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/ship/external) "Dr" = ( /obj/machinery/door/airlock{ @@ -2229,10 +2249,10 @@ /obj/machinery/atmospherics/pipe/simple/orange/hidden{ dir = 4 }, -/obj/structure/catwalk/over, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 6 }, +/obj/machinery/light/small/broken/directional/north, /turf/open/floor/plating, /area/ship/engineering) "ED" = ( @@ -2295,6 +2315,11 @@ /obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ dir = 4 }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 10; + pixel_y = -19 + }, /turf/open/floor/plating, /area/ship/engineering) "Gb" = ( @@ -2304,9 +2329,6 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-6" - }, /obj/structure/cable{ icon_state = "1-2" }, @@ -2356,16 +2378,24 @@ /turf/open/floor/plating, /area/ship/engineering) "HM" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/layer2, -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/structure/railing{ +/obj/machinery/power/terminal{ dir = 4 }, +/obj/structure/cable/yellow{ + icon_state = "0-10" + }, +/obj/effect/spawner/lootdrop/maintenance/three, +/obj/structure/rack, +/obj/item/areaeditor/shuttle, +/obj/item/flashlight{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 4 + }, +/obj/item/bot_assembly/hygienebot, +/obj/machinery/firealarm/directional/north, /turf/open/floor/plating, /area/ship/engineering) "Ic" = ( @@ -2388,15 +2418,12 @@ /turf/open/floor/plasteel/mono/dark, /area/ship/medical) "In" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/industrial/outline/yellow, /obj/machinery/power/smes/engineering{ charge = 1e+006 }, /obj/structure/cable{ icon_state = "0-10" }, -/obj/effect/turf_decal/industrial/outline/yellow, /turf/open/floor/plating, /area/ship/engineering) "Ja" = ( @@ -2416,11 +2443,13 @@ }, /turf/open/floor/plasteel/white, /area/ship/medical) +"Jy" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/crew/toilet) "JI" = ( /obj/structure/chair/office/light{ dir = 1 }, -/obj/machinery/light/small/directional/south, /obj/effect/turf_decal/corner/opaque/blue{ dir = 8 }, @@ -2471,8 +2500,8 @@ "Lf" = ( /obj/structure/table, /obj/machinery/microwave, -/obj/machinery/airalarm/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/light/small/directional/north, /turf/open/floor/wood, /area/ship/crew) "Ln" = ( @@ -2509,20 +2538,15 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, -/obj/structure/closet/wall/white/chem{ - dir = 4; - pixel_y = -32; +/obj/structure/sign/departments/restroom{ pixel_x = -32 }, -/obj/item/storage/box/pillbottles, -/obj/item/clothing/suit/longcoat/chemist, -/obj/item/reagent_containers/dropper, -/obj/item/clothing/head/beret/chem, -/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{ - dir = 8 +/obj/effect/turf_decal/siding/white{ + dir = 5 }, -/turf/open/floor/plasteel/freezer, -/area/ship/crew) +/obj/structure/table/chem, +/turf/open/floor/plasteel/tech/grid, +/area/ship/crew/toilet) "Mi" = ( /turf/closed/wall/mineral/titanium, /area/ship/medical/morgue) @@ -2551,16 +2575,19 @@ /turf/open/floor/plasteel/tech, /area/ship/medical) "NT" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/siding/white{ - dir = 1 +/obj/effect/turf_decal/siding/white/corner{ + dir = 4 }, -/obj/structure/frame/machine, -/obj/item/stack/cable_coil/cyan{ - amount = 5 +/obj/structure/table/chem, +/obj/machinery/reagentgrinder{ + pixel_y = 14 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/crew) +/obj/structure/sign/poster/official/moth/meth{ + pixel_y = -32 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel/tech/grid, +/area/ship/crew/toilet) "OF" = ( /obj/machinery/fax, /obj/structure/table/reinforced, @@ -2568,10 +2595,6 @@ /turf/open/floor/plasteel/dark, /area/ship/crew) "OS" = ( -/obj/machinery/door/airlock{ - dir = 4; - name = "Restroom" - }, /obj/machinery/door/firedoor/border_only{ dir = 8 }, @@ -2584,19 +2607,31 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock{ + pixel_x = "chemistry"; + dir = 8 + }, /turf/open/floor/plasteel/dark, -/area/ship/crew) +/area/ship/crew/toilet) "Ps" = ( /obj/structure/catwalk/over, -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, /obj/item/chair/plastic, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/ship/external) "Qh" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 12; + pixel_y = -17 + }, /turf/open/floor/plasteel/white, /area/ship/cargo) "QD" = ( @@ -2678,6 +2713,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 5 }, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/wood, /area/ship/crew) "Tr" = ( @@ -2697,18 +2733,16 @@ /turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/medical/morgue) "UA" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 4 +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 }, -/obj/item/flashlight{ - pixel_x = 3; - pixel_y = 3 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 5 }, -/obj/item/areaeditor/shuttle, -/obj/effect/spawner/lootdrop/maintenance/three, -/obj/item/bot_assembly/hygienebot, -/obj/effect/turf_decal/number/four, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/light/small/directional/south, /turf/open/floor/plating, /area/ship/engineering) "UN" = ( @@ -2808,17 +2842,19 @@ /turf/open/floor/plating, /area/ship/engineering) "XD" = ( -/obj/machinery/firealarm/directional/west, -/obj/structure/curtain, -/obj/machinery/shower{ - pixel_y = 15 +/obj/machinery/door/airlock{ + dir = 4; + name = "Restroom"; + id_tag = "boxbathroom" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/machinery/door/window/survival_pod{ +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/item/soap, -/turf/open/floor/mineral/titanium/airless, -/area/ship/crew) +/turf/open/floor/plasteel/dark, +/area/ship/crew/toilet) "XN" = ( /obj/structure/extinguisher_cabinet/directional/north, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -2851,6 +2887,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/white, /area/ship/crew) "Ye" = ( @@ -2882,6 +2921,9 @@ /obj/effect/turf_decal/siding/thinplating/dark{ dir = 6 }, +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, /turf/open/floor/plasteel/tech, /area/ship/medical) "Yj" = ( @@ -2978,9 +3020,9 @@ aa aa at cG -cu +at Dm -cu +at yI at aa @@ -2997,11 +3039,11 @@ aa aa aa at -AH +DP by Ps cc -yA +UA at aa aa @@ -3017,11 +3059,11 @@ aa aa aa at -Gi +AH at bo at -lM +yA at aa aa @@ -3037,11 +3079,11 @@ aa aa aS at -DP +Gi at aa at -eP +lM at aS aa @@ -3162,10 +3204,10 @@ bq aa at In -iQ -UA -at -aS +cF +cF +cF +Jy aa aa "} @@ -3182,10 +3224,10 @@ bq hQ al al -at -at -at -at +cF +cu +bw +cF aa aa "} @@ -3202,11 +3244,11 @@ QM bM VQ Ic -tD +cF XD ss -tD -nQ +cF +Jy aa "} (15,1,1) = {" @@ -3226,7 +3268,7 @@ cF hS LV NT -tD +cF aa "} (16,1,1) = {" @@ -3246,7 +3288,7 @@ cE cO cZ cK -tD +cF aa "} (17,1,1) = {" @@ -3266,7 +3308,7 @@ cQ cP da ja -tD +cF aa "} (18,1,1) = {" @@ -3282,11 +3324,11 @@ dr Bh tT jk -tD -tD +cF +cF OS -tD -tD +cF +cF cY "} (19,1,1) = {" @@ -3417,11 +3459,11 @@ aq bc jI zl -bw +al gB fJ Yg -cw +al vE cV di diff --git a/_maps/shuttles/shiptest/independent_boyardee.dmm b/_maps/shuttles/independent/independent_boyardee.dmm similarity index 98% rename from _maps/shuttles/shiptest/independent_boyardee.dmm rename to _maps/shuttles/independent/independent_boyardee.dmm index bb35d794651d..aa0360e74c32 100644 --- a/_maps/shuttles/shiptest/independent_boyardee.dmm +++ b/_maps/shuttles/independent/independent_boyardee.dmm @@ -53,7 +53,13 @@ id = "cargoblastdoors" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/fans/tiny, +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + dir = 4; + id = "cargoholofield" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, /turf/open/floor/plating, /area/ship/cargo) "ct" = ( @@ -223,7 +229,7 @@ /area/ship/storage) "ej" = ( /obj/structure/table/reinforced, -/obj/item/storage/box/donkpockets, +/obj/effect/spawner/lootdrop/ration, /obj/effect/turf_decal/corner/opaque/white/half, /obj/effect/turf_decal/corner/opaque/white{ dir = 4 @@ -488,6 +494,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, +/obj/structure/cable{ + icon_state = "1-8" + }, /turf/open/floor/plasteel, /area/ship/cargo) "kr" = ( @@ -669,6 +678,9 @@ /obj/effect/turf_decal/industrial/warning{ dir = 1 }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/ship/cargo) "no" = ( @@ -1298,7 +1310,6 @@ /obj/machinery/door/poddoor{ id = "cargoblastdoors" }, -/obj/structure/fans/tiny, /turf/open/floor/plating, /area/ship/cargo) "yn" = ( @@ -1309,6 +1320,19 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/canteen) +"ys" = ( +/obj/machinery/door/poddoor{ + id = "cargoblastdoors" + }, +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + dir = 8; + id = "cargoholofield" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/ship/cargo) "yF" = ( /obj/effect/turf_decal/corner/transparent/neutral{ dir = 4 @@ -2259,7 +2283,7 @@ /area/ship/crew) "Qc" = ( /obj/structure/table/reinforced, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, /obj/structure/cable{ icon_state = "4-8" }, @@ -2318,6 +2342,9 @@ icon_state = "2-8" }, /obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/ship/cargo) "Ro" = ( @@ -2466,6 +2493,20 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/ship/crew/canteen) +"Ty" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/ship/cargo) "TD" = ( /turf/closed/wall/r_wall, /area/ship/crew/hydroponics) @@ -2522,6 +2563,14 @@ pixel_x = 25; pixel_y = 25 }, +/obj/machinery/button/shieldwallgen{ + pixel_y = 24; + pixel_x = 37; + id = "cargoholofield" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel, /area/ship/cargo) "Uy" = ( @@ -3274,7 +3323,7 @@ vZ as cp nc -Av +Ty tP FN np @@ -3335,7 +3384,7 @@ vZ "} (25,1,1) = {" yi -yk +ys Uv jN YR diff --git a/_maps/shuttles/shiptest/independent_bubble.dmm b/_maps/shuttles/independent/independent_bubble.dmm similarity index 100% rename from _maps/shuttles/shiptest/independent_bubble.dmm rename to _maps/shuttles/independent/independent_bubble.dmm diff --git a/_maps/shuttles/shiptest/independent_byo.dmm b/_maps/shuttles/independent/independent_byo.dmm similarity index 98% rename from _maps/shuttles/shiptest/independent_byo.dmm rename to _maps/shuttles/independent/independent_byo.dmm index 458d8c6f0fb3..e7aed1945ea5 100644 --- a/_maps/shuttles/shiptest/independent_byo.dmm +++ b/_maps/shuttles/independent/independent_byo.dmm @@ -585,12 +585,12 @@ name = "food crate" }, /obj/item/storage/cans/sixbeer, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plating/airless, /area/ship/construction) "Vu" = ( diff --git a/_maps/shuttles/shiptest/independent_caravan.dmm b/_maps/shuttles/independent/independent_caravan.dmm similarity index 99% rename from _maps/shuttles/shiptest/independent_caravan.dmm rename to _maps/shuttles/independent/independent_caravan.dmm index 8f9837c4065f..4f4554641a9a 100644 --- a/_maps/shuttles/shiptest/independent_caravan.dmm +++ b/_maps/shuttles/independent/independent_caravan.dmm @@ -846,8 +846,8 @@ /area/ship/crew) "oA" = ( /obj/structure/table/reinforced, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/kitchen/knife, /obj/item/kitchen/rollingpin, /turf/open/floor/carpet/royalblue, diff --git a/_maps/shuttles/shiptest/independent_dwayne.dmm b/_maps/shuttles/independent/independent_dwayne.dmm similarity index 99% rename from _maps/shuttles/shiptest/independent_dwayne.dmm rename to _maps/shuttles/independent/independent_dwayne.dmm index ecf9b941b994..645b3a652960 100644 --- a/_maps/shuttles/shiptest/independent_dwayne.dmm +++ b/_maps/shuttles/independent/independent_dwayne.dmm @@ -63,7 +63,7 @@ icon_state = "4-8" }, /obj/structure/table/wood, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, /obj/item/storage/cans/sixbeer, /turf/open/floor/wood, /area/ship/crew) @@ -811,12 +811,12 @@ icon_state = "1-2" }, /obj/item/storage/cans/sixbeer, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel/tech/grid, /area/ship/engineering) "rE" = ( @@ -1552,8 +1552,9 @@ /obj/effect/turf_decal/corner/opaque/blue/half{ dir = 1 }, -/obj/item/clothing/head/caphat/cowboy, /obj/item/radio/intercom/wideband/directional/east, +/obj/item/clothing/suit/armor/vest/capcarapace/duster, +/obj/item/clothing/head/caphat/cowboy, /turf/open/floor/plasteel/dark, /area/ship/bridge) "Ka" = ( diff --git a/_maps/shuttles/shiptest/independent_halftrack.dmm b/_maps/shuttles/independent/independent_halftrack.dmm similarity index 98% rename from _maps/shuttles/shiptest/independent_halftrack.dmm rename to _maps/shuttles/independent/independent_halftrack.dmm index b2a10b35c53e..f82d26ffd66d 100644 --- a/_maps/shuttles/shiptest/independent_halftrack.dmm +++ b/_maps/shuttles/independent/independent_halftrack.dmm @@ -179,8 +179,8 @@ /area/ship/crew) "fa" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/machinery/newscaster/directional/south, /turf/open/floor/carpet/nanoweave, /area/ship/crew) @@ -371,28 +371,28 @@ /obj/item/gun/ballistic/automatic/smg/vector{ spawnwithmagazine = 0 }, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, +/obj/item/ammo_box/magazine/smgm9mm/rubber, +/obj/item/ammo_box/magazine/smgm9mm/rubber, /obj/item/gun/ballistic/automatic/pistol/commander/no_mag, /obj/item/gun/ballistic/automatic/pistol/commander/no_mag, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/structure/closet/secure_closet/wall{ @@ -432,11 +432,11 @@ /obj/item/ammo_box/magazine/co9mm, /obj/item/ammo_box/magazine/co9mm, /obj/item/ammo_box/magazine/co9mm, -/obj/item/ammo_box/magazine/co9mm/rubbershot, -/obj/item/ammo_box/magazine/co9mm/rubbershot, -/obj/item/ammo_box/magazine/co9mm/rubbershot, -/obj/item/ammo_box/magazine/co9mm/rubbershot, -/obj/item/ammo_box/magazine/co9mm/rubbershot, +/obj/item/ammo_box/magazine/co9mm/rubber, +/obj/item/ammo_box/magazine/co9mm/rubber, +/obj/item/ammo_box/magazine/co9mm/rubber, +/obj/item/ammo_box/magazine/co9mm/rubber, +/obj/item/ammo_box/magazine/co9mm/rubber, /obj/effect/turf_decal/box/red, /turf/open/floor/plasteel/dark, /area/ship/security) @@ -1022,20 +1022,20 @@ /obj/item/gun/ballistic/automatic/smg/vector{ spawnwithmagazine = 0 }, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, +/obj/item/ammo_box/magazine/smgm9mm/rubber, +/obj/item/ammo_box/magazine/smgm9mm/rubber, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/gun/ballistic/automatic/pistol/commander/no_mag, /obj/item/gun/ballistic/automatic/pistol/commander/no_mag, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ @@ -1051,7 +1051,7 @@ req_access_txt = "5" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/machinery/light/directional/north, @@ -1502,8 +1502,8 @@ /obj/structure/closet/secure_closet/security, /obj/item/gun/ballistic/automatic/pistol/deagle, /obj/item/gun/ballistic/automatic/pistol/deagle, -/obj/item/gun/ballistic/automatic/assualt/ak47, -/obj/item/gun/ballistic/automatic/assualt/ak47, +/obj/item/gun/ballistic/automatic/assault/ak47, +/obj/item/gun/ballistic/automatic/assault/ak47, /obj/item/ammo_box/magazine/ak47, /obj/item/ammo_box/magazine/ak47, /obj/item/ammo_box/magazine/ak47, diff --git a/_maps/shuttles/shiptest/independent_junker.dmm b/_maps/shuttles/independent/independent_junker.dmm similarity index 99% rename from _maps/shuttles/shiptest/independent_junker.dmm rename to _maps/shuttles/independent/independent_junker.dmm index d740a30838a9..006a74a2e3fb 100644 --- a/_maps/shuttles/shiptest/independent_junker.dmm +++ b/_maps/shuttles/independent/independent_junker.dmm @@ -98,16 +98,6 @@ /obj/item/cutting_board, /turf/open/floor/plastic, /area/ship/crew/canteen/kitchen) -"aX" = ( -/obj/structure/cable{ - icon_state = "6-10" - }, -/obj/machinery/computer/helm/retro, -/obj/item/paper/construction{ - default_raw_text = "Yeah, just so you know, I left the fuel and air pumps OFF when I dropped this thing of for you, you're gonna have to go outside and turn em on to start up the engines

The pumps are outside on the tank things to the left and right on the back of the ship, there's also one in each engine room you'll need to get going." - }, -/turf/open/floor/plating, -/area/ship/bridge) "bc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -217,6 +207,15 @@ icon_state = "wood-broken3" }, /area/ship/maintenance/starboard) +"cX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/closed/wall/mineral/titanium/survival/nodiagonal, +/area/ship/storage/eva) "dm" = ( /turf/closed/wall/mineral/titanium/survival, /area/ship/cargo) @@ -355,17 +354,6 @@ /obj/structure/girder/reinforced, /turf/open/floor/plating, /area/ship/bridge) -"gh" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/warning/dust, -/obj/machinery/airalarm/directional/east, -/obj/item/paper/construction{ - default_raw_text = "

Airlock Instructions


Because none of you numbnuts can remember them


1: Bolt the door behind you so you dont bump into it and lose all our air.
Bolt is the LEFT BUTTON
2: Go to the air alarm, set it to siphon
3: When at least most of the gas is out, turn OFF siphon
4: You can now open the shutters
I shouldnt have to tell you this, but theyre the RIGHT button

To go back IN


1: Close the shutters behind you
2: Set the air alarm to SIPHON again
3: When all of the dangerous gas is out, set the air alarm to FILL
3: Once the pressure is at least 50 kpa, you can set the air alarm back to normal, and unbolt the door

I still can't fucking believe I have to write this." - }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/ship/cargo) "go" = ( /obj/machinery/atmospherics/pipe/simple/purple/hidden, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -1388,6 +1376,16 @@ }, /turf/open/floor/pod/dark, /area/ship/crew/canteen) +"yf" = ( +/obj/structure/cable{ + icon_state = "6-10" + }, +/obj/machinery/computer/helm/retro, +/obj/item/paper/construction{ + default_raw_text = "Yeah, just so you know, I left the fuel and air pumps OFF when I dropped this thing of for you, you're gonna have to go outside and turn em on to start up the engines

The pumps are outside on the tank things to the left and right on the back of the ship, there's also one in each engine room you'll need to get going." + }, +/turf/open/floor/plating, +/area/ship/bridge) "yp" = ( /turf/closed/wall/rust, /area/ship/engineering/electrical) @@ -2097,12 +2095,17 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/ship/crew/canteen/kitchen) -"Mu" = ( -/obj/machinery/atmospherics/components/unary/relief_valve/atmos/atmos_waste{ - dir = 8 +"Mz" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/industrial/warning/dust, +/obj/machinery/airalarm/directional/east, +/obj/item/paper/construction{ + default_raw_text = "

Airlock Instructions


Because none of you numbnuts can remember them


1: Bolt the door behind you so you dont bump into it and lose all our air.
Bolt is the LEFT BUTTON
2: Go to the air alarm, set it to siphon
3: When at least most of the gas is out, turn OFF siphon
4: You can now open the shutters
I shouldnt have to tell you this, but theyre the RIGHT button

To go back IN


1: Close the shutters behind you
2: Set the air alarm to SIPHON again
3: When all of the dangerous gas is out, set the air alarm to FILL
3: Once the pressure is at least 50 kpa, you can set the air alarm back to normal, and unbolt the door

I still can't fucking believe I have to write this." }, -/turf/open/floor/engine/hull, -/area/template_noop) +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/ship/cargo) "MW" = ( /obj/docking_port/stationary{ dwidth = 15; @@ -2151,40 +2154,6 @@ }, /turf/open/floor/pod/dark, /area/ship/maintenance/starboard) -"Og" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/stack/cable_coil/cut/red{ - pixel_x = -15; - pixel_y = -8 - }, -/obj/item/paper/crumpled{ - pixel_y = 4; - pixel_x = -23; - default_raw_text = "Attempt 301. Longitudinal traction was applied to the upper protruding flesh appendage. Muffled screaming (possibly Jeff?) was observed. Spontaneous amputation occurred and the screaming ceased. Duct tape applied.

Results: Reployer remains unfunctioning." - }, -/obj/item/paper/crumpled{ - pixel_y = -12; - pixel_x = -3; - default_raw_text = "Attempt 1180. Salt circle was established with regular rituals. 30mL of blood was dripped directly onto the reployer, and chanting begun 1 minute after the beginning of the attempt. Despite using only lighting from tallow candles, soapbucket scrying was ineffective in troubleshooting the problem.

Results: Reployer remains unfunctioning." - }, -/obj/effect/decal/cleanable/greenglow/filled, -/obj/item/screwdriver/old{ - pixel_y = -2; - pixel_x = -15 - }, -/obj/effect/decal/cleanable/blood, -/obj/machinery/light/small/directional/east, -/obj/item/trash/candle{ - pixel_y = 17; - pixel_x = -10 - }, -/obj/item/trash/candle{ - pixel_y = 17; - pixel_x = 10 - }, -/obj/structure/salvageable/protolathe/reployer, -/turf/open/floor/pod/dark, -/area/ship/crew/office) "Ol" = ( /turf/closed/wall/mineral/titanium/survival/nodiagonal, /area/ship/crew/canteen) @@ -2455,6 +2424,40 @@ /obj/effect/decal/cleanable/blood/footprints, /turf/open/floor/plating/rust, /area/ship/maintenance/starboard) +"VR" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/stack/cable_coil/cut/red{ + pixel_x = -15; + pixel_y = -8 + }, +/obj/item/paper/crumpled{ + pixel_y = 4; + pixel_x = -23; + default_raw_text = "Attempt 301. Longitudinal traction was applied to the upper protruding flesh appendage. Muffled screaming (possibly Jeff?) was observed. Spontaneous amputation occurred and the screaming ceased. Duct tape applied.

Results: Reployer remains unfunctioning." + }, +/obj/item/paper/crumpled{ + pixel_y = -12; + pixel_x = -3; + default_raw_text = "Attempt 1180. Salt circle was established with regular rituals. 30mL of blood was dripped directly onto the reployer, and chanting begun 1 minute after the beginning of the attempt. Despite using only lighting from tallow candles, soapbucket scrying was ineffective in troubleshooting the problem.

Results: Reployer remains unfunctioning." + }, +/obj/effect/decal/cleanable/greenglow/filled, +/obj/item/screwdriver/old{ + pixel_y = -2; + pixel_x = -15 + }, +/obj/effect/decal/cleanable/blood, +/obj/machinery/light/small/directional/east, +/obj/item/trash/candle{ + pixel_y = 17; + pixel_x = -10 + }, +/obj/item/trash/candle{ + pixel_y = 17; + pixel_x = 10 + }, +/obj/structure/salvageable/protolathe/reployer, +/turf/open/floor/pod/dark, +/area/ship/crew/office) "VY" = ( /obj/machinery/atmospherics/pipe/simple/purple/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -2571,6 +2574,12 @@ }, /turf/closed/wall/mineral/wood, /area/ship/maintenance/central) +"Xu" = ( +/obj/machinery/atmospherics/components/unary/relief_valve/atmos/atmos_waste{ + dir = 8 + }, +/turf/open/floor/engine/hull, +/area/ship/external) "XF" = ( /obj/structure/cable{ icon_state = "1-8" @@ -2592,15 +2601,6 @@ "XS" = ( /turf/closed/wall/mineral/titanium/survival/nodiagonal, /area/ship/storage/eva) -"XT" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium/survival/nodiagonal, -/area/ship/storage/eva) "XV" = ( /obj/structure/cable{ icon_state = "5-10" @@ -3067,7 +3067,7 @@ bF bt HB YK -Og +VR JQ xx sh @@ -3180,7 +3180,7 @@ By mN qR Ye -gh +Mz Yr BZ BZ @@ -3272,7 +3272,7 @@ PE "} (19,1,1) = {" YB -aX +yf PR yD EG @@ -3288,7 +3288,7 @@ ay Wh Eb GI -XT +cX zz tB EZ @@ -3344,7 +3344,7 @@ IR hq ZK vd -Mu +Xu BZ Jn BZ diff --git a/_maps/shuttles/shiptest/independent_kilo.dmm b/_maps/shuttles/independent/independent_kilo.dmm similarity index 99% rename from _maps/shuttles/shiptest/independent_kilo.dmm rename to _maps/shuttles/independent/independent_kilo.dmm index 2c9d8a006140..29264dd2958f 100644 --- a/_maps/shuttles/shiptest/independent_kilo.dmm +++ b/_maps/shuttles/independent/independent_kilo.dmm @@ -646,6 +646,7 @@ /obj/item/spacecash/bundle/c1000, /obj/item/spacecash/bundle/c1000, /obj/item/spacecash/bundle/c1000, +/obj/item/clothing/suit/armor/vest/capcarapace/duster, /turf/open/floor/carpet, /area/ship/crew) "da" = ( @@ -1412,11 +1413,11 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/item/storage/box/donkpockets{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = -6; pixel_y = 4 }, -/obj/item/storage/box/donkpockets{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = -6; pixel_y = 8 }, diff --git a/_maps/shuttles/shiptest/independent_lagoon.dmm b/_maps/shuttles/independent/independent_lagoon.dmm similarity index 100% rename from _maps/shuttles/shiptest/independent_lagoon.dmm rename to _maps/shuttles/independent/independent_lagoon.dmm diff --git a/_maps/shuttles/shiptest/independent_litieguai.dmm b/_maps/shuttles/independent/independent_litieguai.dmm similarity index 94% rename from _maps/shuttles/shiptest/independent_litieguai.dmm rename to _maps/shuttles/independent/independent_litieguai.dmm index cf8ac312b338..9e64a8e4407a 100644 --- a/_maps/shuttles/shiptest/independent_litieguai.dmm +++ b/_maps/shuttles/independent/independent_litieguai.dmm @@ -54,9 +54,6 @@ /area/ship/storage) "bC" = ( /obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, /obj/effect/turf_decal/industrial/outline/red, /obj/machinery/autolathe, /turf/open/floor/plasteel/tech, @@ -83,7 +80,7 @@ "cn" = ( /obj/effect/turf_decal/trimline/opaque/red/filled/warning, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "cs" = ( /obj/machinery/defibrillator_mount/loaded{ pixel_y = -32 @@ -91,7 +88,7 @@ /obj/effect/turf_decal/industrial/loading{ dir = 4 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/tech, /area/ship/medical) "cI" = ( /obj/effect/turf_decal/trimline/opaque/red/filled/line{ @@ -202,11 +199,11 @@ /area/ship/crew) "eS" = ( /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "fa" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/machinery/newscaster/directional/south, /turf/open/floor/plasteel/grimy, /area/ship/crew) @@ -229,7 +226,7 @@ /obj/machinery/stasis, /obj/effect/turf_decal/industrial/outline/red, /obj/machinery/light/directional/west, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/tech/grid, /area/ship/medical) "go" = ( /obj/effect/turf_decal/corner/opaque/red/full, @@ -246,10 +243,10 @@ icon_state = "2-8" }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "gL" = ( /turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/hallway/aft) +/area/ship/cargo) "gO" = ( /obj/structure/cable{ icon_state = "0-4" @@ -268,7 +265,7 @@ name = "Lobby" }, /turf/open/floor/engine, -/area/ship/hallway/aft) +/area/ship/cargo) "hq" = ( /turf/open/floor/plasteel/stairs/right{ dir = 8 @@ -278,10 +275,10 @@ /obj/effect/turf_decal/arrows/red{ dir = 8 }, -/obj/effect/turf_decal/siding/thinplating/dark{ +/obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 4 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/patterned/grid, /area/ship/storage) "hF" = ( /obj/structure/table/reinforced, @@ -297,7 +294,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/tech/grid, /area/ship/medical) "hT" = ( /obj/machinery/power/apc/auto_name/directional/south, @@ -308,7 +305,7 @@ }, /obj/machinery/light_switch{ dir = 1; - pixel_x = -12; + pixel_x = -13; pixel_y = -16 }, /turf/open/floor/vault, @@ -324,7 +321,7 @@ }, /obj/effect/turf_decal/corner/opaque/white/mono, /turf/open/floor/plasteel/white, -/area/ship/medical) +/area/ship/cargo) "iA" = ( /turf/closed/wall/mineral/titanium, /area/ship/crew) @@ -333,6 +330,9 @@ dir = 4 }, /obj/machinery/airalarm/directional/south, +/obj/structure/sign/poster/official/cleanliness{ + pixel_x = -32 + }, /turf/open/floor/plasteel/freezer, /area/ship/crew/toilet) "iP" = ( @@ -391,8 +391,8 @@ /obj/item/radio/intercom/directional/east, /obj/machinery/power/terminal, /obj/structure/cable/yellow, -/obj/structure/reagent_dispensers/fueltank, /obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/ship/maintenance/starboard) "kO" = ( @@ -439,7 +439,7 @@ pixel_y = -1 }, /obj/item/reagent_containers/medigel/sterilizine, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/tech/grid, /area/ship/medical) "kR" = ( /obj/machinery/computer/crew, @@ -457,6 +457,11 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, +/obj/machinery/light_switch{ + pixel_x = 19; + pixel_y = 13; + dir = 8 + }, /turf/open/floor/plasteel/white, /area/ship/medical) "lj" = ( @@ -467,7 +472,7 @@ /obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/tech, /area/ship/medical) "lF" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -492,7 +497,7 @@ icon_state = "1-4" }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "lY" = ( /obj/machinery/door/airlock/medical{ dir = 4; @@ -637,7 +642,7 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "oH" = ( /obj/effect/turf_decal/trimline/opaque/red/filled/warning{ dir = 1 @@ -651,7 +656,7 @@ icon_state = "1-4" }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "oQ" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/southleft, @@ -689,7 +694,7 @@ pixel_y = -4 }, /turf/open/floor/plating, -/area/ship/medical) +/area/ship/cargo) "oS" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 @@ -711,7 +716,7 @@ /obj/machinery/light_switch{ dir = 1; pixel_x = -12; - pixel_y = -16 + pixel_y = -13 }, /turf/open/floor/plasteel/freezer, /area/ship/crew/toilet) @@ -769,7 +774,7 @@ icon_state = "1-2" }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "ru" = ( /obj/effect/turf_decal/trimline/opaque/red/filled/warning{ dir = 8 @@ -795,7 +800,7 @@ }, /obj/machinery/light_switch{ dir = 1; - pixel_x = -12; + pixel_x = -13; pixel_y = -16 }, /turf/open/floor/carpet/nanoweave, @@ -890,7 +895,7 @@ /obj/item/kirbyplants/random, /obj/machinery/airalarm/directional/west, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "tO" = ( /obj/structure/closet/secure_closet{ icon_state = "med_secure"; @@ -899,7 +904,6 @@ /obj/machinery/airalarm/directional/south, /obj/item/clothing/glasses/hud/health, /obj/item/clothing/glasses/hud/health, -/obj/structure/extinguisher_cabinet/directional/north, /obj/item/clothing/glasses/hud/health, /obj/item/healthanalyzer, /obj/item/healthanalyzer, @@ -907,15 +911,13 @@ /obj/item/storage/backpack/satchel/med, /obj/item/storage/backpack/satchel/med, /obj/item/storage/backpack/satchel/med, -/obj/item/clothing/under/rank/medical, -/obj/item/clothing/under/rank/medical, -/obj/item/clothing/under/rank/medical, -/obj/item/clothing/under/rank/medical, -/obj/item/clothing/under/rank/medical, -/obj/item/clothing/under/rank/medical, /obj/item/clothing/shoes/sneakers/blue, /obj/item/clothing/shoes/sneakers/blue, /obj/item/clothing/shoes/sneakers/blue, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/item/clothing/under/rank/medical/paramedic/emt, +/obj/item/clothing/under/rank/medical/paramedic/emt, +/obj/item/clothing/under/rank/medical/paramedic/emt, /turf/open/floor/plasteel/grimy, /area/ship/crew) "tT" = ( @@ -923,11 +925,8 @@ /obj/structure/chair{ dir = 8 }, -/obj/structure/sign/poster/official/soft_cap_pop_art{ - pixel_x = 32 - }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "tW" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/turf_decal/corner/opaque/white/mono, @@ -951,7 +950,7 @@ /obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/tech, /area/ship/medical) "uq" = ( /obj/structure/table/reinforced, @@ -965,15 +964,14 @@ /obj/item/folder/white, /obj/item/pen, /turf/open/floor/plating, -/area/ship/medical) +/area/ship/cargo) "ur" = ( /obj/effect/turf_decal/trimline/opaque/red/filled/line{ dir = 1 }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "uE" = ( -/obj/machinery/light/directional/south, /obj/structure/window/reinforced/tinted/frosted{ dir = 8 }, @@ -982,6 +980,7 @@ }, /obj/machinery/rnd/production/techfab/department/medical, /obj/effect/turf_decal/industrial/hatch/red, +/obj/machinery/firealarm/directional/south, /turf/open/floor/plasteel/white, /area/ship/medical) "uN" = ( @@ -995,14 +994,16 @@ icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "uW" = ( /obj/structure/chair{ dir = 8 }, -/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/sign/poster/official/soft_cap_pop_art{ + pixel_x = 32 + }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "ve" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced{ @@ -1016,7 +1017,7 @@ /obj/machinery/door/firedoor/border_only, /obj/effect/turf_decal/industrial/hatch/red, /turf/open/floor/plating, -/area/ship/medical) +/area/ship/cargo) "vj" = ( /obj/effect/turf_decal/trimline/opaque/red/filled/warning{ dir = 1 @@ -1027,11 +1028,11 @@ }, /obj/machinery/light_switch{ dir = 8; - pixel_x = 20; - pixel_y = 14 + pixel_x = 19; + pixel_y = 13 }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "vn" = ( /obj/effect/turf_decal/trimline/opaque/red/filled/line{ dir = 8 @@ -1077,8 +1078,8 @@ /obj/item/storage/toolbox/electrical, /obj/machinery/light_switch{ dir = 8; - pixel_x = 20; - pixel_y = 14 + pixel_x = 19; + pixel_y = 13 }, /turf/open/floor/plating, /area/ship/maintenance/port) @@ -1112,7 +1113,7 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "yi" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable{ @@ -1124,7 +1125,7 @@ /obj/machinery/light_switch{ dir = 4; pixel_x = -20; - pixel_y = 10 + pixel_y = 13 }, /turf/open/floor/plating, /area/ship/maintenance/starboard) @@ -1147,7 +1148,7 @@ /obj/structure/bodycontainer/morgue{ dir = 8 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/tech, /area/ship/medical) "zE" = ( /obj/structure/cable{ @@ -1187,38 +1188,26 @@ /obj/effect/turf_decal/industrial/hatch/yellow, /turf/open/floor/plating, /area/ship/maintenance/port) -"Aj" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/firealarm/directional/west, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/white, -/area/ship/hallway/fore) "AG" = ( -/obj/effect/turf_decal/siding/thinplating/dark, /obj/structure/railing{ dir = 6 }, /obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/turf/open/floor/plasteel/patterned/grid, /area/ship/storage) "AJ" = ( /turf/closed/wall/mineral/titanium, -/area/ship/hallway/aft) +/area/ship/cargo) "Bl" = ( /obj/effect/turf_decal/corner/opaque/red/full, /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "BH" = ( /obj/machinery/power/shieldwallgen/atmos/roundstart{ dir = 1; @@ -1277,7 +1266,7 @@ name = "Lobby" }, /turf/open/floor/engine, -/area/ship/hallway/aft) +/area/ship/cargo) "Cr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -1289,9 +1278,10 @@ }, /obj/machinery/light_switch{ dir = 4; - pixel_x = -20; + pixel_x = -21; pixel_y = 10 }, +/obj/machinery/firealarm/directional/west, /turf/open/floor/plasteel/white, /area/ship/hallway/fore) "CX" = ( @@ -1356,7 +1346,6 @@ /obj/item/storage/box/gloves, /obj/item/storage/box/masks, /obj/item/storage/box/bodybags, -/obj/machinery/firealarm/directional/east, /turf/open/floor/plasteel/white, /area/ship/medical) "DU" = ( @@ -1367,7 +1356,7 @@ /obj/structure/window/reinforced{ dir = 1 }, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/tech/grid, /area/ship/medical) "Ev" = ( /turf/closed/wall/mineral/titanium/nodiagonal, @@ -1396,7 +1385,6 @@ /obj/item/lighter{ pixel_x = -8 }, -/obj/machinery/light/directional/north, /turf/open/floor/plasteel/white, /area/ship/medical) "Go" = ( @@ -1412,7 +1400,7 @@ /obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/tech, /area/ship/medical) "Gs" = ( /obj/effect/turf_decal/industrial/hatch/yellow, @@ -1482,7 +1470,7 @@ /obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/tech, /area/ship/medical) "HP" = ( /turf/open/floor/carpet/nanoweave/beige, @@ -1505,13 +1493,14 @@ dir = 1 }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "Ja" = ( /obj/structure/chair{ dir = 4 }, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "Je" = ( /obj/machinery/power/terminal, /obj/structure/cable/yellow, @@ -1554,6 +1543,11 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/firealarm/directional/west, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -21; + pixel_y = -10 + }, /turf/open/floor/plasteel, /area/ship/crew) "Ko" = ( @@ -1600,7 +1594,6 @@ /obj/item/clothing/glasses/science, /obj/item/reagent_containers/glass/beaker/large, /obj/item/reagent_containers/glass/beaker/large, -/obj/machinery/airalarm/directional/east, /obj/structure/closet/wall/white/chem{ dir = 1; name = "Chemistry Locker"; @@ -1608,12 +1601,13 @@ }, /obj/item/storage/backpack/satchel/chem, /obj/item/clothing/head/beret/chem, +/obj/machinery/light/directional/east, /turf/open/floor/plasteel/white, /area/ship/medical) "KW" = ( /obj/structure/sign/departments/medbay/alt, /turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/hallway/aft) +/area/ship/cargo) "Lh" = ( /obj/machinery/atmospherics/components/binary/pump/on/layer2, /obj/structure/closet/firecloset/wall{ @@ -1640,11 +1634,11 @@ /obj/effect/turf_decal/arrows/red{ dir = 8 }, -/obj/effect/turf_decal/siding/thinplating/dark/corner, /obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, +/obj/effect/turf_decal/spline/fancy/opaque/black/corner, +/turf/open/floor/plasteel/patterned/grid, /area/ship/storage) "Lt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -1665,13 +1659,13 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, /obj/effect/turf_decal/siding/white, /obj/effect/turf_decal/siding/white{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, /turf/open/floor/vault, /area/ship/storage) "Ml" = ( @@ -1705,15 +1699,8 @@ /area/ship/maintenance/starboard) "MK" = ( /obj/effect/turf_decal/industrial/outline/red, -/obj/structure/rack, -/obj/item/pickaxe/emergency{ - desc = "For extracting yourself from rough landings, and getting to the even rougher ones"; - name = "Medical Retrieval Tool" - }, -/obj/item/pickaxe/emergency{ - desc = "For extracting yourself from rough landings, and getting to the even rougher ones"; - name = "Medical Retrieval Tool" - }, +/obj/structure/railing/corner, +/obj/machinery/vending/medical, /turf/open/floor/plasteel/tech/grid, /area/ship/storage) "MN" = ( @@ -1811,7 +1798,7 @@ /obj/machinery/airalarm/directional/south, /obj/effect/turf_decal/industrial/hatch/red, /obj/structure/closet/crate/freezer/surplus_limbs/organs, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/tech, /area/ship/medical) "OB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -1834,7 +1821,7 @@ /obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/tech, /area/ship/medical) "Pp" = ( /obj/effect/turf_decal/corner/opaque/white/mono, @@ -1907,8 +1894,11 @@ "Qp" = ( /obj/machinery/vending/snack/random, /obj/effect/turf_decal/trimline/opaque/red/filled/line, +/obj/structure/sign/poster/official/cleanliness{ + pixel_x = -32 + }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "Qq" = ( /turf/closed/wall/mineral/titanium, /area/ship/medical) @@ -1963,11 +1953,6 @@ /obj/structure/cable{ icon_state = "0-2" }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -20; - pixel_y = 10 - }, /turf/open/floor/plasteel, /area/ship/crew) "QY" = ( @@ -2001,7 +1986,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "Rs" = ( /obj/effect/turf_decal/trimline/opaque/red/filled/warning{ dir = 8 @@ -2028,7 +2013,7 @@ density = 0; pixel_y = 32 }, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/tech/grid, /area/ship/medical) "RW" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -2068,10 +2053,10 @@ /obj/effect/turf_decal/arrows/red{ dir = 8 }, -/obj/effect/turf_decal/siding/thinplating/dark{ +/obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 4 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/patterned/grid, /area/ship/storage) "Sy" = ( /obj/machinery/stasis, @@ -2080,7 +2065,7 @@ density = 0; pixel_y = 32 }, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/tech/grid, /area/ship/medical) "SH" = ( /obj/machinery/light/directional/east, @@ -2147,6 +2132,9 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/structure/closet/secure_closet/medical2, +/obj/item/reagent_containers/glass/bottle/morphine, +/obj/item/reagent_containers/glass/bottle/morphine, /turf/open/floor/plating, /area/ship/maintenance/starboard) "TI" = ( @@ -2171,7 +2159,7 @@ name = "Lobby" }, /turf/open/floor/engine, -/area/ship/hallway/aft) +/area/ship/cargo) "TR" = ( /obj/structure/chair, /obj/effect/landmark/start/assistant, @@ -2248,17 +2236,17 @@ /area/ship/crew) "UX" = ( /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/gun/ballistic/automatic/pistol/commander/no_mag, /obj/item/gun/ballistic/automatic/pistol/commander/no_mag, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot; + ammo_type = /obj/item/ammo_casing/c9mm/rubber; name = "Commander magazine (Rubbershot 9mm)" }, /obj/item/ammo_box/magazine/co9mm{ @@ -2301,7 +2289,7 @@ }, /obj/effect/turf_decal/corner/opaque/white/mono, /turf/open/floor/plasteel/white, -/area/ship/medical) +/area/ship/cargo) "Vs" = ( /obj/item/radio/intercom/wideband/directional/south, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -2327,7 +2315,7 @@ }, /obj/item/reagent_containers/syringe, /obj/item/radio/intercom/directional/north, -/turf/open/floor/plasteel/tech, +/turf/open/floor/plasteel/tech/grid, /area/ship/medical) "VM" = ( /obj/machinery/power/smes/shuttle/precharged{ @@ -2353,9 +2341,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/sign/poster/official/cleanliness{ - pixel_y = -32 - }, /turf/open/floor/plasteel/freezer, /area/ship/crew/toilet) "Wc" = ( @@ -2453,7 +2438,7 @@ dir = 4 }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "Xs" = ( /obj/machinery/light/small/directional/south{ pixel_x = 17 @@ -2537,18 +2522,15 @@ /obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/tech, /area/ship/medical) "YI" = ( /obj/machinery/light/directional/west, /obj/structure/chair{ dir = 4 }, -/obj/structure/sign/poster/official/cleanliness{ - pixel_x = -32 - }, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) "YK" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -2566,11 +2548,6 @@ dir = 1 }, /obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -20; - pixel_y = 10 - }, /turf/open/floor/plasteel/white, /area/ship/medical) "YM" = ( @@ -2592,14 +2569,14 @@ /obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/tech, /area/ship/medical) "ZO" = ( /obj/machinery/vending/cola/random, /obj/effect/turf_decal/trimline/opaque/red/filled/line, /obj/machinery/firealarm/directional/east, /turf/open/floor/plasteel, -/area/ship/hallway/aft) +/area/ship/cargo) (1,1,1) = {" UG @@ -2802,7 +2779,7 @@ OA YM YM JA -YM +gL gL Rh gL @@ -2880,7 +2857,7 @@ Wc Ll Pr BK -Aj +Ll sM Cr vn @@ -2982,7 +2959,7 @@ ck YM YM JA -YM +gL gL Xj gL diff --git a/_maps/shuttles/shiptest/independent_masinyane.dmm b/_maps/shuttles/independent/independent_masinyane.dmm similarity index 100% rename from _maps/shuttles/shiptest/independent_masinyane.dmm rename to _maps/shuttles/independent/independent_masinyane.dmm diff --git a/_maps/shuttles/shiptest/independent_meta.dmm b/_maps/shuttles/independent/independent_meta.dmm similarity index 99% rename from _maps/shuttles/shiptest/independent_meta.dmm rename to _maps/shuttles/independent/independent_meta.dmm index 52232d6b22b0..8adc2aeb86a5 100644 --- a/_maps/shuttles/shiptest/independent_meta.dmm +++ b/_maps/shuttles/independent/independent_meta.dmm @@ -343,28 +343,6 @@ }, /turf/open/floor/plating, /area/ship/engineering) -"aP" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ship/engineering) "aQ" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/door/airlock/external{ @@ -400,18 +378,6 @@ }, /turf/template_noop, /area/template_noop) -"bg" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 1; - piping_layer = 2 - }, -/obj/machinery/light/small/built/directional/south, -/turf/open/floor/plating, -/area/ship/engineering) "bh" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/industrial/outline/yellow, @@ -426,15 +392,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/plating, /area/ship/engineering) -"bi" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/plating, -/area/ship/engineering) "bj" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable{ @@ -611,7 +568,7 @@ /obj/structure/sign/poster/contraband/random{ pixel_y = 32 }, -/obj/item/storage/box/donkpockets, +/obj/effect/spawner/lootdrop/ration, /obj/effect/turf_decal/corner/transparent/bar, /obj/effect/turf_decal/corner/transparent/bar{ dir = 1 @@ -619,51 +576,6 @@ /obj/machinery/light/small/built/directional/west, /turf/open/floor/plasteel, /area/ship/crew/canteen) -"bN" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table, -/obj/item/trash/plate{ - pixel_x = -6; - pixel_y = -2 - }, -/obj/item/trash/plate{ - pixel_x = -6 - }, -/obj/item/trash/plate{ - pixel_x = -6; - pixel_y = 2 - }, -/obj/item/trash/plate{ - pixel_x = -6; - pixel_y = 4 - }, -/obj/item/trash/plate{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/kitchen/fork{ - pixel_x = 12; - pixel_y = 3 - }, -/obj/item/kitchen/fork{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/light_switch{ - pixel_x = -13; - pixel_y = 22 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) "bO" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable{ @@ -1043,42 +955,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/plasteel, /area/ship/crew/canteen) -"cD" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/paper_bin{ - pixel_x = -4 - }, -/obj/item/pen{ - pixel_x = -4 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/item/camera{ - pixel_x = 12; - pixel_y = 6 - }, -/obj/item/storage/photo_album{ - pixel_x = 14 - }, -/obj/item/spacecash/bundle/c1000{ - pixel_x = 7 - }, -/obj/item/spacecash/bundle/c1000{ - pixel_x = 7 - }, -/obj/item/spacecash/bundle/c1000{ - pixel_x = 7 - }, -/obj/machinery/light/small/built/directional/west, -/obj/machinery/light_switch{ - pixel_x = -13; - pixel_y = 22 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) "cE" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt/dust, @@ -1174,19 +1050,6 @@ /obj/machinery/computer/helm/viewscreen/directional/south, /turf/open/floor/plasteel/dark, /area/ship/engineering) -"cJ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/light_switch{ - dir = 4; - pixel_y = 10; - pixel_x = -20 - }, -/turf/open/floor/plasteel/dark, -/area/ship/cargo) "cK" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -1534,29 +1397,6 @@ }, /turf/open/floor/plating, /area/ship/engineering) -"dJ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/glass{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 10 - }, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = 11; - pixel_y = -16 - }, -/turf/open/floor/plating, -/area/ship/engineering) "dK" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -1867,28 +1707,6 @@ }, /turf/open/floor/plating, /area/ship/engineering) -"gr" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table, -/obj/structure/bedsheetbin, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/effect/turf_decal/corner/opaque/blue/diagonal{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white/diagonal, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = -12; - pixel_y = -16 - }, -/turf/open/floor/plasteel, -/area/ship/crew) "hq" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/ntspaceworks_big/one{ @@ -2034,12 +1852,29 @@ /obj/effect/turf_decal/corner/transparent/neutral/full, /turf/open/floor/plasteel/dark, /area/ship/cargo) -"mL" = ( -/obj/machinery/porta_turret/ship/weak{ +"mk" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 10 + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, -/turf/closed/wall/mineral/titanium, -/area/ship/bridge) +/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 11; + pixel_y = -16 + }, +/turf/open/floor/plating, +/area/ship/engineering) "nK" = ( /obj/machinery/door/airlock/external, /obj/effect/mapping_helpers/airlock/cyclelink_helper, @@ -2277,6 +2112,25 @@ }, /turf/open/floor/plasteel, /area/ship/crew) +"uB" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ship/engineering) "ve" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/ntspaceworks_big/eight{ @@ -2377,6 +2231,28 @@ /obj/effect/turf_decal/corner/transparent/neutral/full, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"zw" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/corner/opaque/blue/diagonal{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -12; + pixel_y = -16 + }, +/turf/open/floor/plasteel, +/area/ship/crew) "zC" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/ntspaceworks_big/four{ @@ -2384,18 +2260,42 @@ }, /turf/open/floor/plasteel/dark, /area/ship/cargo) -"zJ" = ( +"Ac" = ( +/obj/structure/table, /obj/effect/decal/cleanable/dirt/dust, +/obj/item/paper_bin{ + pixel_x = -4 + }, +/obj/item/pen{ + pixel_x = -4 + }, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-2" }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/light/small/built/directional/east, -/turf/open/floor/plating, -/area/ship/engineering) +/obj/item/camera{ + pixel_x = 12; + pixel_y = 6 + }, +/obj/item/storage/photo_album{ + pixel_x = 14 + }, +/obj/item/spacecash/bundle/c1000{ + pixel_x = 7 + }, +/obj/item/spacecash/bundle/c1000{ + pixel_x = 7 + }, +/obj/item/spacecash/bundle/c1000{ + pixel_x = 7 + }, +/obj/machinery/light/small/built/directional/west, +/obj/machinery/light_switch{ + pixel_x = -13; + pixel_y = 22 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) "Ag" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/corner/transparent/neutral/full, @@ -2437,6 +2337,15 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/plasteel/dark, /area/ship/crew) +"AY" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/blood, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plating, +/area/ship/engineering) "By" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/blood, @@ -2466,6 +2375,51 @@ /obj/effect/turf_decal/corner/transparent/neutral/full, /turf/open/floor/plasteel/dark, /area/ship/cargo) +"EX" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/item/trash/plate{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/trash/plate{ + pixel_x = -6 + }, +/obj/item/trash/plate{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/trash/plate{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/trash/plate{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/kitchen/fork{ + pixel_x = 12; + pixel_y = 3 + }, +/obj/item/kitchen/fork{ + pixel_x = 6; + pixel_y = 3 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/corner/transparent/bar, +/obj/effect/turf_decal/corner/transparent/bar{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/light_switch{ + pixel_x = -13; + pixel_y = 22 + }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen) "Fb" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -2588,6 +2542,12 @@ /obj/effect/turf_decal/corner/transparent/neutral/full, /turf/open/floor/plasteel/dark, /area/ship/cargo) +"Lo" = ( +/obj/machinery/porta_turret/ship/weak{ + dir = 1 + }, +/turf/closed/wall/mineral/titanium, +/area/ship/bridge) "Lq" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable{ @@ -2602,6 +2562,12 @@ /obj/effect/turf_decal/corner/transparent/neutral/full, /turf/open/floor/plasteel/dark, /area/ship/cargo) +"LF" = ( +/obj/machinery/porta_turret/ship/weak{ + dir = 4 + }, +/turf/closed/wall/mineral/titanium, +/area/ship/bridge) "LK" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/airalarm/directional/north, @@ -2620,6 +2586,19 @@ }, /turf/open/floor/plasteel, /area/ship/crew) +"Mf" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/machinery/light_switch{ + dir = 4; + pixel_y = 10; + pixel_x = -20 + }, +/turf/open/floor/plasteel/dark, +/area/ship/cargo) "MC" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -2901,12 +2880,18 @@ /obj/machinery/light/small/built/directional/west, /turf/open/floor/plasteel/dark, /area/ship/crew) -"VT" = ( -/obj/machinery/porta_turret/ship/weak{ - dir = 4 +"Ws" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/closed/wall/mineral/titanium, -/area/ship/bridge) +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/light/small/built/directional/east, +/turf/open/floor/plating, +/area/ship/engineering) "Xs" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/ntspaceworks_big/two{ @@ -2940,6 +2925,18 @@ /obj/effect/turf_decal/corner/transparent/neutral/full, /turf/open/floor/plasteel/dark, /area/ship/crew) +"ZB" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 1; + piping_layer = 2 + }, +/obj/machinery/light/small/built/directional/south, +/turf/open/floor/plating, +/area/ship/engineering) "ZR" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable{ @@ -3001,7 +2998,7 @@ ac ak az aM -bg +ZB ac aa ab @@ -3039,11 +3036,11 @@ aa "} (5,1,1) = {" aa -mL +Lo ac aB aO -bi +AY ac bH ac @@ -3053,7 +3050,7 @@ cH ac cZ JR -dJ +mk ac jJ aa @@ -3063,8 +3060,8 @@ aa aa am aC -aP -zJ +uB +Ws by dR rF @@ -3133,7 +3130,7 @@ tU Fb Ag cy -cJ +Mf cP db On @@ -3276,7 +3273,7 @@ aH Zf bq bD -bN +EX ca co cA @@ -3291,7 +3288,7 @@ aa "} (17,1,1) = {" aa -mL +Lo ai ai rU @@ -3361,7 +3358,7 @@ uw ai bF bQ -cD +Ac yZ cO bQ @@ -3421,7 +3418,7 @@ aj OX ku MM -gr +zw ai bQ cg @@ -3481,10 +3478,10 @@ aa (26,1,1) = {" aa aa -VT +LF ai ai -VT +LF aa aa aa @@ -3492,10 +3489,10 @@ aa aa aa aa -VT +LF bD bD -VT +LF aa aa "} diff --git a/_maps/shuttles/shiptest/independent_mudskipper.dmm b/_maps/shuttles/independent/independent_mudskipper.dmm similarity index 99% rename from _maps/shuttles/shiptest/independent_mudskipper.dmm rename to _maps/shuttles/independent/independent_mudskipper.dmm index 2f3900971f1b..033800b8f8e5 100644 --- a/_maps/shuttles/shiptest/independent_mudskipper.dmm +++ b/_maps/shuttles/independent/independent_mudskipper.dmm @@ -1795,10 +1795,10 @@ /obj/structure/closet/crate{ name = "ration crate" }, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/snacks/canned/beans, /obj/item/reagent_containers/food/snacks/canned/beans, /obj/item/reagent_containers/food/snacks/canned/beans, diff --git a/_maps/shuttles/shiptest/independent_nemo.dmm b/_maps/shuttles/independent/independent_nemo.dmm similarity index 100% rename from _maps/shuttles/shiptest/independent_nemo.dmm rename to _maps/shuttles/independent/independent_nemo.dmm diff --git a/_maps/shuttles/shiptest/independent_pillbottle.dmm b/_maps/shuttles/independent/independent_pillbottle.dmm similarity index 100% rename from _maps/shuttles/shiptest/independent_pillbottle.dmm rename to _maps/shuttles/independent/independent_pillbottle.dmm diff --git a/_maps/shuttles/shiptest/independent_rigger.dmm b/_maps/shuttles/independent/independent_rigger.dmm similarity index 99% rename from _maps/shuttles/shiptest/independent_rigger.dmm rename to _maps/shuttles/independent/independent_rigger.dmm index 00347dae6852..bcf0af7954a0 100644 --- a/_maps/shuttles/shiptest/independent_rigger.dmm +++ b/_maps/shuttles/independent/independent_rigger.dmm @@ -225,12 +225,19 @@ /area/ship/construction) "dx" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/effect/turf_decal/corner/opaque/yellow/diagonal, /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/plasteel/white, /area/ship/crew/canteen) +"dH" = ( +/obj/structure/table/reinforced, +/obj/machinery/firealarm/directional/west, +/obj/machinery/fax, +/obj/machinery/light/directional/south, +/turf/open/floor/carpet/blue, +/area/ship/bridge) "dJ" = ( /obj/effect/turf_decal/industrial/outline/yellow, /obj/structure/closet/firecloset, @@ -947,12 +954,12 @@ name = "food crate" }, /obj/item/storage/cans/sixbeer, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/effect/turf_decal/box/corners{ dir = 1 }, @@ -972,6 +979,22 @@ }, /turf/open/floor/plasteel/grimy, /area/ship/security) +"mD" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/closet/emcloset/wall{ + pixel_y = 28 + }, +/obj/structure/catwalk/over, +/turf/open/floor/plating, +/area/ship/engineering) "mH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 @@ -1604,13 +1627,6 @@ /obj/item/clothing/head/hardhat/dblue, /turf/open/floor/plating, /area/ship/engineering) -"un" = ( -/obj/structure/table/reinforced, -/obj/machinery/firealarm/directional/west, -/obj/machinery/fax, -/obj/machinery/light/directional/south, -/turf/open/floor/carpet/blue, -/area/ship/bridge) "uy" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2274,31 +2290,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering) -"AC" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/closet/emcloset/wall{ - pixel_y = 28 - }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering) -"AH" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/obj/structure/curtain/bounty, -/turf/open/floor/plasteel/grimy, -/area/ship/crew) "AQ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -2847,15 +2838,6 @@ /obj/machinery/atmospherics/components/unary/portables_connector/layer4, /turf/open/floor/plating, /area/ship/engineering/atmospherics) -"Hn" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/obj/structure/curtain/bounty, -/obj/structure/sign/poster/contraband/random{ - pixel_x = -32 - }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew) "Ht" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2907,6 +2889,15 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/plasteel/grimy, /area/ship/security) +"HN" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/obj/structure/curtain/bounty, +/obj/structure/sign/poster/contraband/random{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/grimy, +/area/ship/crew) "HR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 @@ -3287,6 +3278,12 @@ }, /turf/open/floor/plasteel/dark, /area/ship/medical) +"Ne" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/obj/structure/curtain/bounty, +/turf/open/floor/plasteel/grimy, +/area/ship/crew) "Nh" = ( /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -4147,8 +4144,8 @@ req_access_txt = "1" }, /obj/item/ammo_box/c38_box, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, /obj/item/ammo_box/magazine/m45, /turf/open/floor/plasteel/dark, /area/ship/security) @@ -4534,9 +4531,9 @@ bC FO cc Ce -Hn -AH -AH +HN +Ne +Ne Ry gc Fu @@ -4811,7 +4808,7 @@ pt JK cl ax -un +dH qd Vt QQ @@ -4992,7 +4989,7 @@ fh lx tx Tq -AC +mD cR CG jx diff --git a/_maps/shuttles/shiptest/independent_rube_goldberg.dmm b/_maps/shuttles/independent/independent_rube_goldberg.dmm similarity index 99% rename from _maps/shuttles/shiptest/independent_rube_goldberg.dmm rename to _maps/shuttles/independent/independent_rube_goldberg.dmm index 69043b560f0d..50febf2f2550 100644 --- a/_maps/shuttles/shiptest/independent_rube_goldberg.dmm +++ b/_maps/shuttles/independent/independent_rube_goldberg.dmm @@ -2852,9 +2852,9 @@ /area/ship/engineering/atmospherics) "Ck" = ( /obj/structure/closet/crate/freezer, -/obj/item/storage/box/donkpockets/donkpocketpizza, -/obj/item/storage/box/donkpockets/donkpocketspicy, -/obj/item/storage/box/donkpockets/donkpocketteriyaki, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/pizzabox/meat, /obj/item/pizzabox/vegetable, /obj/machinery/camera/autoname{ diff --git a/_maps/shuttles/shiptest/independent_schmiedeberg.dmm b/_maps/shuttles/independent/independent_schmiedeberg.dmm similarity index 100% rename from _maps/shuttles/shiptest/independent_schmiedeberg.dmm rename to _maps/shuttles/independent/independent_schmiedeberg.dmm diff --git a/_maps/shuttles/shiptest/independent_shepherd.dmm b/_maps/shuttles/independent/independent_shepherd.dmm similarity index 99% rename from _maps/shuttles/shiptest/independent_shepherd.dmm rename to _maps/shuttles/independent/independent_shepherd.dmm index 611beb40135b..f9c1fd853ecd 100644 --- a/_maps/shuttles/shiptest/independent_shepherd.dmm +++ b/_maps/shuttles/independent/independent_shepherd.dmm @@ -48,16 +48,6 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/wood, /area/ship/crew/library) -"at" = ( -/obj/item/paper/natural{ - icon_state = "paper_words"; - default_raw_text = "

Trappist Recipe


By Pater Noster

Servings: 2 Prep Time: 10 mins Cook Time: 1-2 hrs Difficulty: Easy
Trappist beer is a rich and pleasant beer traditionally brewed by monks.

Ingredients


Ale:
Ale! The core of any good drink. Easily obtainable by fermenting oats in a barrel for a while. This will be the basis of our brew, giving it it's fruity taste and color!
Holy water:
This is what a makes a trappist a trappist and not a trapisst, the religion! Real easy to get if you are reading this where you are supposed to be reading this! If the chaplain can't bothered it's also easily harvestable from holymelons as long as you bother to separate it.
Sugar:
Sugar is what's gonna make it all come together sweetening the brew and mixing well with the ale from earlier. It's easy to obtain from grinding sugarcanes. Feel free to add liberally.

Preparation


1. Mix the ale and holy water together.
2. Add some sugar to the mix as you keep stirring it for 1 minute.
3. At this point you're free to just use it as is! But feel free to experiment by adding new flavours and really making it your own!

Closing statement


And that's it! Hopefully this guide has been somewhat helpful. A final tip I have is to drink it with bread and cheese, really finishes of the package."; - name = "paper - Trappist Recipe"; - pixel_x = 2; - pixel_y = 4 - }, -/turf/open/floor/wood/ebony, -/area/ship/crew/canteen) "av" = ( /obj/structure/table/wood, /obj/item/flashlight/lantern, @@ -1612,6 +1602,16 @@ /obj/item/reagent_containers/glass/bucket/wooden, /turf/open/floor/wood/ebony, /area/ship/crew/canteen) +"ok" = ( +/obj/item/paper/natural{ + icon_state = "paper_words"; + default_raw_text = "

Trappist Recipe


By Pater Noster

Servings: 2 Prep Time: 10 mins Cook Time: 1-2 hrs Difficulty: Easy
Trappist beer is a rich and pleasant beer traditionally brewed by monks.

Ingredients


Ale:
Ale! The core of any good drink. Easily obtainable by fermenting oats in a barrel for a while. This will be the basis of our brew, giving it it's fruity taste and color!
Holy water:
This is what a makes a trappist a trappist and not a trapisst, the religion! Real easy to get if you are reading this where you are supposed to be reading this! If the chaplain can't bothered it's also easily harvestable from holymelons as long as you bother to separate it.
Sugar:
Sugar is what's gonna make it all come together sweetening the brew and mixing well with the ale from earlier. It's easy to obtain from grinding sugarcanes. Feel free to add liberally.

Preparation


1. Mix the ale and holy water together.
2. Add some sugar to the mix as you keep stirring it for 1 minute.
3. At this point you're free to just use it as is! But feel free to experiment by adding new flavours and really making it your own!

Closing statement


And that's it! Hopefully this guide has been somewhat helpful. A final tip I have is to drink it with bread and cheese, really finishes of the package."; + name = "paper - Trappist Recipe"; + pixel_x = 2; + pixel_y = 4 + }, +/turf/open/floor/wood/ebony, +/area/ship/crew/canteen) "on" = ( /turf/open/floor/plasteel/stairs/right{ dir = 4 @@ -1807,6 +1807,14 @@ }, /turf/open/floor/wood, /area/ship/hallway/starboard) +"pN" = ( +/obj/structure/window/reinforced/spawner/west, +/obj/effect/turf_decal/corner/opaque/lightgrey/mono, +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output{ + dir = 8 + }, +/turf/open/floor/engine/air, +/area/ship/engineering/atmospherics) "pO" = ( /turf/closed/wall, /area/ship/crew/canteen) @@ -4998,15 +5006,6 @@ }, /turf/open/floor/plating, /area/ship/crew/chapel) -"Sa" = ( -/obj/structure/window/reinforced/spawner/west, -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output{ - dir = 8; - piping_layer = 2 - }, -/obj/effect/turf_decal/corner/opaque/lightgrey/mono, -/turf/open/floor/engine/air, -/area/ship/engineering/atmospherics) "Sb" = ( /obj/effect/turf_decal/siding/wood{ color = "#332521"; @@ -6810,7 +6809,7 @@ xj xj Uf Gi -Sa +pN uq ti dM @@ -7457,7 +7456,7 @@ ZG ZG pO OO -at +ok uY QC ZG diff --git a/_maps/shuttles/shiptest/independent_shetland.dmm b/_maps/shuttles/independent/independent_shetland.dmm similarity index 99% rename from _maps/shuttles/shiptest/independent_shetland.dmm rename to _maps/shuttles/independent/independent_shetland.dmm index 173322da6bd4..062e8a8f61f3 100644 --- a/_maps/shuttles/shiptest/independent_shetland.dmm +++ b/_maps/shuttles/independent/independent_shetland.dmm @@ -975,8 +975,8 @@ /area/ship/engineering/engine) "kO" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/effect/turf_decal/corner/opaque/white{ dir = 10 }, @@ -1157,12 +1157,12 @@ name = "food crate" }, /obj/item/storage/cans/sixbeer, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/effect/turf_decal/box, /turf/open/floor/plating{ icon_state = "platingdmg2" diff --git a/_maps/shuttles/shiptest/independent_tranquility.dmm b/_maps/shuttles/independent/independent_tranquility.dmm similarity index 99% rename from _maps/shuttles/shiptest/independent_tranquility.dmm rename to _maps/shuttles/independent/independent_tranquility.dmm index 242267392e9b..e612c7fe57e9 100644 --- a/_maps/shuttles/shiptest/independent_tranquility.dmm +++ b/_maps/shuttles/independent/independent_tranquility.dmm @@ -27,6 +27,27 @@ }, /turf/open/floor/plasteel/white, /area/ship/crew/canteen) +"aE" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 11; + pixel_y = -17 + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/hallway/starboard) "aF" = ( /obj/structure/window/reinforced{ dir = 1 @@ -967,28 +988,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/crew/cryo) -"hk" = ( -/obj/structure/closet/wall/orange{ - pixel_y = 32 - }, -/obj/item/clothing/suit/fire/atmos, -/obj/item/clothing/mask/gas/atmos, -/obj/item/clothing/head/hardhat/atmos, -/obj/item/storage/belt/utility/atmostech, -/obj/item/clothing/head/beret/atmos, -/obj/item/circuitboard/machine/shieldwallgen/atmos, -/obj/item/circuitboard/machine/shieldwallgen/atmos, -/obj/item/stack/tape/industrial, -/obj/item/stack/tape/industrial, -/obj/item/storage/backpack/duffelbag/engineering, -/obj/item/extinguisher/advanced, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4{ - dir = 4 - }, -/obj/item/clothing/head/beret/atmos, -/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering/engine) "hn" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Workshop" @@ -1448,6 +1447,35 @@ }, /turf/open/floor/carpet/nanoweave/beige, /area/ship/hallway/port) +"kC" = ( +/obj/structure/chair/comfy/brown, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/structure/closet/wall{ + dir = 4; + name = "Wardrobe"; + pixel_x = -28 + }, +/obj/item/clothing/head/wig/random, +/obj/item/clothing/under/color/jumpskirt/random, +/obj/item/clothing/under/color/random, +/obj/item/clothing/under/rank/command/captain/skirt, +/obj/item/clothing/under/rank/command/captain/suit, +/obj/item/pen/fountain/captain, +/obj/item/radio/headset/heads/captain, +/obj/item/storage/backpack/duffelbag/captain, +/obj/item/clothing/suit/hooded/wintercoat/captain, +/obj/item/clothing/suit/armor/vest/capcarapace/duster, +/obj/item/clothing/head/caphat/cowboy, +/obj/item/clothing/shoes/cowboy/fancy, +/obj/item/clothing/under/pants/camo, +/obj/item/clothing/suit/hooded/wintercoat/captain, +/turf/open/floor/wood, +/area/ship/crew/dorm/dormfive) "kK" = ( /obj/effect/spawner/structure/window/shuttle, /obj/machinery/door/poddoor/shutters/preopen{ @@ -1570,21 +1598,6 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/ship/engineering/engine) -"mb" = ( -/obj/effect/turf_decal/techfloor/orange{ - dir = 9 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/suit_storage_unit/independent/engineering, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/light_switch{ - pixel_y = 21; - pixel_x = -12 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/electrical) "mc" = ( /obj/effect/turf_decal/techfloor{ dir = 6 @@ -1612,18 +1625,6 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/wood/birch, /area/ship/crew/crewfive) -"mv" = ( -/obj/structure/table/reinforced, -/obj/item/radio/intercom/wideband/table{ - dir = 1 - }, -/obj/item/toy/plush/knight{ - name = "The Navigator"; - pixel_x = -9; - pixel_y = 5 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/bridge) "mz" = ( /obj/effect/spawner/structure/window/shuttle, /obj/machinery/door/poddoor/shutters/preopen{ @@ -1752,6 +1753,19 @@ }, /turf/open/floor/carpet/nanoweave/beige, /area/ship/hallway/starboard) +"nz" = ( +/obj/machinery/hydroponics/soil, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light_switch{ + pixel_x = 20; + dir = 8; + pixel_y = -12 + }, +/turf/open/floor/grass, +/area/ship/crew/hydroponics) "nN" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 @@ -1828,26 +1842,6 @@ }, /turf/open/floor/carpet, /area/ship/crew/crewfive) -"oN" = ( -/obj/structure/closet/wall/blue{ - dir = 4; - name = "Personal Effects"; - pixel_x = -32 - }, -/obj/item/storage/belt/utility/full, -/obj/item/clothing/suit/hooded/wintercoat/engineering, -/obj/item/clothing/under/misc/pj/red, -/obj/item/clothing/under/pants/black, -/obj/item/clothing/under/dress/blacktango, -/obj/item/clothing/suit/apron/overalls, -/obj/item/clothing/suit/gothcoat, -/obj/item/clothing/suit/ianshirt, -/obj/item/clothing/suit/nerdshirt, -/obj/item/clothing/head/beret/eng/hazard, -/obj/item/radio/headset/headset_eng, -/obj/item/cartridge/lawyer, -/turf/open/floor/carpet/nanoweave/red, -/area/ship/crew/dorm/dormfour) "oS" = ( /obj/structure/cable{ icon_state = "2-8" @@ -2006,6 +2000,31 @@ color = "#4c535b" }, /area/ship/hallway/port) +"pT" = ( +/obj/effect/turf_decal/techfloor/orange, +/obj/structure/closet/wall/orange{ + dir = 1; + pixel_y = -32 + }, +/obj/item/stack/tape/industrial/electrical, +/obj/item/stack/tape/industrial, +/obj/item/holosign_creator/engineering, +/obj/item/storage/backpack/duffelbag/engineering, +/obj/item/storage/belt/utility/full/engi, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/item/rcl/pre_loaded, +/obj/item/clothing/suit/radiation, +/obj/item/clothing/head/radiation, +/obj/item/geiger_counter, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass/twenty, +/obj/item/circuitboard/machine/cell_charger, +/obj/item/clothing/head/beret/eng, +/obj/item/clothing/head/beret/eng/hazard, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) "qa" = ( /turf/template_noop, /area/template_noop) @@ -2062,6 +2081,26 @@ }, /turf/open/floor/carpet/nanoweave/beige, /area/ship/hallway/port) +"qV" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/closet/wall{ + dir = 1; + name = "Wardrobe"; + pixel_y = -28 + }, +/obj/item/clothing/head/wig/random, +/obj/item/storage/box/syndie_kit/chameleon, +/obj/item/paper_bin/bundlenatural, +/obj/item/clothing/under/color/jumpskirt/random, +/obj/item/clothing/under/color/random, +/obj/item/clothing/suit/jacket/letterman, +/obj/item/clothing/suit/toggle/lawyer/brown, +/obj/item/clothing/under/suit/burgundy, +/obj/item/clothing/under/pants/red, +/obj/item/clothing/suit/nerdshirt, +/obj/item/storage/bag/books, +/turf/open/floor/wood, +/area/ship/crew/dorm/dormfive) "rc" = ( /obj/structure/bookcase/random/religion, /obj/effect/turf_decal/siding/wood{ @@ -2402,6 +2441,23 @@ }, /turf/open/floor/plating, /area/ship/medical/surgery) +"tU" = ( +/obj/effect/turf_decal/techfloor{ + dir = 10 + }, +/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen{ + dir = 10 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/item/storage/overmap_ship/electric/directional/west, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 11; + pixel_y = -17 + }, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) "tX" = ( /obj/docking_port/stationary{ dwidth = 10; @@ -2568,14 +2624,6 @@ /obj/machinery/vending/boozeomat, /turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/crew/canteen) -"vv" = ( -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 26; - pixel_y = 6 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/hallway/port) "vx" = ( /turf/open/floor/wood/ebony, /area/ship/crew/canteen) @@ -2871,6 +2919,28 @@ /obj/structure/cable, /turf/open/floor/carpet/nanoweave/red, /area/ship/crew/dorm/dormfour) +"xW" = ( +/obj/structure/closet/wall/orange{ + pixel_y = 32 + }, +/obj/item/clothing/suit/fire/atmos, +/obj/item/clothing/mask/gas/atmos, +/obj/item/clothing/head/hardhat/atmos, +/obj/item/storage/belt/utility/atmostech, +/obj/item/clothing/head/beret/atmos, +/obj/item/circuitboard/machine/shieldwallgen/atmos, +/obj/item/circuitboard/machine/shieldwallgen/atmos, +/obj/item/stack/tape/industrial, +/obj/item/stack/tape/industrial, +/obj/item/storage/backpack/duffelbag/engineering, +/obj/item/extinguisher/advanced, +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4{ + dir = 4 + }, +/obj/item/clothing/head/beret/atmos, +/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/engineering/engine) "yg" = ( /obj/machinery/light/directional/north, /obj/structure/chair/sofa/corner, @@ -2915,23 +2985,6 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/plasteel/tech/grid, /area/ship/crew/crewfour) -"yz" = ( -/obj/effect/turf_decal/techfloor{ - dir = 10 - }, -/obj/effect/turf_decal/spline/fancy/opaque/bottlegreen{ - dir = 10 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/item/storage/overmap_ship/electric/directional/west, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = 11; - pixel_y = -17 - }, -/turf/open/floor/plasteel/tech, -/area/ship/bridge) "yE" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3201,31 +3254,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/carpet/nanoweave/beige, /area/ship/hallway/port) -"Aq" = ( -/obj/effect/turf_decal/techfloor/orange, -/obj/structure/closet/wall/orange{ - dir = 1; - pixel_y = -32 - }, -/obj/item/stack/tape/industrial/electrical, -/obj/item/stack/tape/industrial, -/obj/item/holosign_creator/engineering, -/obj/item/storage/backpack/duffelbag/engineering, -/obj/item/storage/belt/utility/full/engi, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil/random, -/obj/item/rcl/pre_loaded, -/obj/item/clothing/suit/radiation, -/obj/item/clothing/head/radiation, -/obj/item/geiger_counter, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/glass/twenty, -/obj/item/circuitboard/machine/cell_charger, -/obj/item/clothing/head/beret/eng, -/obj/item/clothing/head/beret/eng/hazard, -/obj/item/clothing/suit/hooded/wintercoat/engineering, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/electrical) "Ay" = ( /turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/crew/dorm/dormfour) @@ -3341,11 +3369,6 @@ }, /turf/open/floor/wood, /area/ship/crew/dorm/dormfive) -"BJ" = ( -/obj/machinery/hydroponics/soil, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/grass, -/area/ship/crew/hydroponics) "BK" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood{ @@ -3366,25 +3389,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/carpet/nanoweave/beige, /area/ship/hallway/starboard) -"BS" = ( -/obj/machinery/light/dim/directional/west, -/obj/machinery/iv_drip, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 5 - }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/light_switch{ - pixel_y = 21; - pixel_x = -12 - }, -/turf/open/floor/plasteel/white, -/area/ship/medical/surgery) "BV" = ( /obj/structure/table, /obj/structure/window/reinforced/spawner{ @@ -3617,35 +3621,6 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ship/engineering/electrical) -"Dp" = ( -/obj/structure/chair/comfy/brown, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/structure/closet/wall{ - dir = 4; - name = "Wardrobe"; - pixel_x = -28 - }, -/obj/item/clothing/head/wig/random, -/obj/item/clothing/under/color/jumpskirt/random, -/obj/item/clothing/under/color/random, -/obj/item/clothing/under/rank/command/captain/skirt, -/obj/item/clothing/under/rank/command/captain/suit, -/obj/item/pen/fountain/captain, -/obj/item/radio/headset/heads/captain, -/obj/item/storage/backpack/duffelbag/captain, -/obj/item/clothing/suit/hooded/wintercoat/captain, -/obj/item/clothing/suit/armor/vest/capcarapace/duster, -/obj/item/clothing/head/caphat/cowboy, -/obj/item/clothing/shoes/cowboy/fancy, -/obj/item/clothing/under/pants/camo, -/obj/item/clothing/suit/hooded/wintercoat/captain, -/turf/open/floor/wood, -/area/ship/crew/dorm/dormfive) "Du" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3789,17 +3764,6 @@ }, /turf/open/floor/plating, /area/ship/crew/crewfour) -"En" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/light_switch{ - pixel_y = 21; - pixel_x = -12 - }, -/turf/open/floor/plasteel/tech, -/area/ship/storage) "Eo" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable{ @@ -3935,28 +3899,17 @@ }, /turf/open/floor/plasteel/tech, /area/ship/security/armory) -"FW" = ( -/obj/machinery/hydroponics/soil, -/obj/machinery/power/apc/auto_name/directional/east, +"FR" = ( +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "0-2" }, /obj/machinery/light_switch{ - pixel_x = 20; - dir = 8; - pixel_y = -12 - }, -/turf/open/floor/grass, -/area/ship/crew/hydroponics) -"Ga" = ( -/obj/structure/chair/comfy/black{ - dir = 8 - }, -/mob/living/simple_animal/parrot/Poly{ - name = "Polyphema" + pixel_y = 21; + pixel_x = -12 }, /turf/open/floor/plasteel/tech, -/area/ship/crew/crewfour) +/area/ship/storage) "Gb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/layer2{ dir = 4 @@ -4061,6 +4014,18 @@ }, /turf/open/floor/carpet, /area/ship/crew/crewfive) +"GN" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom/wideband/table{ + dir = 1 + }, +/obj/item/toy/plush/knight{ + name = "The Navigator"; + pixel_x = -9; + pixel_y = 5 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/bridge) "GO" = ( /obj/structure/table/wood, /obj/item/toy/cards/deck/tarot{ @@ -4097,26 +4062,6 @@ }, /turf/open/floor/plating, /area/ship/crew/cryo) -"GW" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/closet/wall{ - dir = 1; - name = "Wardrobe"; - pixel_y = -28 - }, -/obj/item/clothing/head/wig/random, -/obj/item/storage/box/syndie_kit/chameleon, -/obj/item/paper_bin/bundlenatural, -/obj/item/clothing/under/color/jumpskirt/random, -/obj/item/clothing/under/color/random, -/obj/item/clothing/suit/jacket/letterman, -/obj/item/clothing/suit/toggle/lawyer/brown, -/obj/item/clothing/under/suit/burgundy, -/obj/item/clothing/under/pants/red, -/obj/item/clothing/suit/nerdshirt, -/obj/item/storage/bag/books, -/turf/open/floor/wood, -/area/ship/crew/dorm/dormfive) "GZ" = ( /obj/structure/window/reinforced, /obj/structure/sink/puddle, @@ -4278,6 +4223,21 @@ }, /turf/open/floor/wood/birch, /area/ship/crew/crewtwo) +"Ib" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 9 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/suit_storage_unit/independent/engineering, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -12 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) "If" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 @@ -4358,20 +4318,6 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ship/crew/crewfour) -"IF" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - color = "#792f27"; - dir = 9 - }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -20; - pixel_y = 12 - }, -/turf/open/floor/wood, -/area/ship/crew/canteen) "IJ" = ( /obj/item/kirbyplants/random, /turf/open/floor/carpet/nanoweave/beige, @@ -4940,6 +4886,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/carpet/nanoweave/beige, /area/ship/hallway/starboard) +"Nd" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 26; + pixel_y = 6 + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/hallway/port) "Ng" = ( /obj/structure/cable{ icon_state = "1-8" @@ -4976,6 +4930,40 @@ }, /turf/open/floor/wood, /area/ship/crew/canteen) +"Nl" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/suit_storage_unit/independent/engineering, +/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4{ + dir = 6 + }, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -12 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/engineering/engine) +"Nv" = ( +/obj/machinery/light/dim/directional/west, +/obj/machinery/iv_drip, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 5 + }, +/obj/effect/turf_decal/corner/opaque/bottlegreen{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -12 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical/surgery) "Ny" = ( /obj/structure/cable{ icon_state = "1-8" @@ -5041,6 +5029,20 @@ }, /turf/open/floor/plasteel/white, /area/ship/crew/canteen) +"NX" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + color = "#792f27"; + dir = 9 + }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20; + pixel_y = 12 + }, +/turf/open/floor/wood, +/area/ship/crew/canteen) "Of" = ( /obj/structure/table, /obj/item/reagent_containers/food/drinks/mug{ @@ -5060,20 +5062,14 @@ /turf/open/floor/plasteel, /area/ship/crew/cryo) "Om" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/suit_storage_unit/independent/engineering, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4{ - dir = 6 +/obj/structure/chair/comfy/black{ + dir = 8 }, -/obj/machinery/light_switch{ - pixel_y = 21; - pixel_x = -12 +/mob/living/simple_animal/parrot/Polly{ + name = "Pollyphema" }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering/engine) +/turf/open/floor/plasteel/tech, +/area/ship/crew/crewfour) "Oz" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood, @@ -5156,27 +5152,6 @@ /obj/machinery/vending/clothing, /turf/open/floor/plasteel/tech, /area/ship/crew/cryo) -"OV" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = 11; - pixel_y = -17 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/hallway/starboard) "Pg" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable{ @@ -5402,6 +5377,11 @@ }, /turf/open/floor/wood, /area/ship/crew/dorm/dormfive) +"QH" = ( +/obj/machinery/hydroponics/soil, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/grass, +/area/ship/crew/hydroponics) "QO" = ( /obj/machinery/door/airlock/external, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -5501,7 +5481,7 @@ /area/ship/engineering/engine) "Rk" = ( /obj/structure/table, -/obj/item/ammo_box/magazine/m45/rubbershot{ +/obj/item/ammo_box/magazine/m45/rubber{ pixel_x = 7; pixel_y = -2 }, @@ -5664,15 +5644,15 @@ /area/ship/hallway/starboard) "Sg" = ( /obj/structure/table, -/obj/item/ammo_casing/c45/rubbershot{ +/obj/item/ammo_casing/c45/rubber{ pixel_x = 6; pixel_y = 7 }, -/obj/item/ammo_casing/c45/rubbershot{ +/obj/item/ammo_casing/c45/rubber{ pixel_x = 4; pixel_y = 5 }, -/obj/item/ammo_casing/c45/rubbershot{ +/obj/item/ammo_casing/c45/rubber{ pixel_x = 8; pixel_y = 3 }, @@ -5856,6 +5836,26 @@ "TC" = ( /turf/closed/wall/mineral/titanium, /area/ship/storage) +"TI" = ( +/obj/structure/closet/wall/blue{ + dir = 4; + name = "Personal Effects"; + pixel_x = -32 + }, +/obj/item/storage/belt/utility/full, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/item/clothing/under/misc/pj/red, +/obj/item/clothing/under/pants/black, +/obj/item/clothing/under/dress/blacktango, +/obj/item/clothing/suit/apron/overalls, +/obj/item/clothing/suit/gothcoat, +/obj/item/clothing/suit/ianshirt, +/obj/item/clothing/suit/nerdshirt, +/obj/item/clothing/head/beret/eng/hazard, +/obj/item/radio/headset/headset_eng, +/obj/item/cartridge/lawyer, +/turf/open/floor/carpet/nanoweave/red, +/area/ship/crew/dorm/dormfour) "TJ" = ( /obj/structure/closet/wall{ dir = 8; @@ -6923,8 +6923,8 @@ Aa lW fu Qb -BJ -FW +QH +nz Pr GZ Uy @@ -6970,9 +6970,9 @@ Uy Uy Uy Uy -mb +Ib Vn -Aq +pT aO Sp aq @@ -7032,7 +7032,7 @@ wf RI zI Pg -vv +Nd tY tY tY @@ -7134,7 +7134,7 @@ UU vx Ch oS -IF +NX cI Qe vj @@ -7167,7 +7167,7 @@ mA Io UI zF -yz +tU mA fY Fq @@ -7225,7 +7225,7 @@ MJ dD mV Fq -Om +Nl xs Sp aq @@ -7247,7 +7247,7 @@ qa qa qa kR -mv +GN fF ey IU @@ -7267,7 +7267,7 @@ xp rB Dx Fq -hk +xW JX Jq Gs @@ -7379,7 +7379,7 @@ Bm yY mc mA -OV +aE Fq Wk Nj @@ -7633,17 +7633,17 @@ qB bP QW xV -oN +TI Ay eC Lb jp pJ sb -BS +Nv Fl QQ -En +FR SC Ug aq @@ -7878,7 +7878,7 @@ iK QA AL uW -Dp +kC rt iK yr @@ -7921,10 +7921,10 @@ tA Gf XH pK -GW +qV iK XP -Ga +Om ZK mB ID diff --git a/_maps/shuttles/independent/nanotrasen_heron.dmm b/_maps/shuttles/independent/nanotrasen_heron.dmm new file mode 100644 index 000000000000..a7ccdec275fc --- /dev/null +++ b/_maps/shuttles/independent/nanotrasen_heron.dmm @@ -0,0 +1,16151 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/obj/effect/spawner/lootdrop/salvage_50, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"ac" = ( +/obj/effect/turf_decal/industrial/radiation{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/radiation{ + dir = 8 + }, +/obj/item/reagent_containers/hypospray/medipen/penacid, +/obj/item/reagent_containers/hypospray/medipen/penacid, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson/prescription, +/obj/effect/decal/cleanable/dirt, +/obj/item/geiger_counter{ + pixel_x = 1; + pixel_y = -5 + }, +/obj/structure/closet/radiation{ + anchored = 1 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"ae" = ( +/obj/structure/chair/comfy/beige{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/bridge) +"ag" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/communications) +"ah" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 10 + }, +/obj/structure/railing{ + dir = 10; + layer = 4.1 + }, +/obj/structure/table/reinforced, +/obj/machinery/computer/secure_data/laptop{ + dir = 1; + pixel_y = 4; + pixel_x = 2 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"aj" = ( +/obj/structure/window/reinforced, +/obj/structure/bed, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"ak" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"am" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/techfloor, +/obj/machinery/door/poddoor{ + id = "armoury_heron"; + name = "Armoury Shutters"; + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"ao" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"as" = ( +/obj/structure/sign/poster/official/walk{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 1 + }, +/area/ship/science/robotics) +"at" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"aw" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 8 + }, +/obj/structure/sign/poster/official/obey{ + pixel_x = -31 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"az" = ( +/obj/machinery/computer/operating, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/corner/opaque/blue/full, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"aC" = ( +/obj/machinery/recharge_station, +/obj/item/robot_suit/prebuilt, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/industrial/hatch/yellow, +/turf/open/floor/plasteel/tech, +/area/ship/science/robotics) +"aG" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/radiation{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"aK" = ( +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"aN" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/communications) +"aO" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastright{ + dir = 2 + }, +/obj/item/folder/yellow{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/machinery/door/window/northright, +/turf/open/floor/plasteel, +/area/ship/cargo) +"aQ" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black/three_quarters{ + dir = 4 + }, +/obj/machinery/vending/coffee, +/obj/structure/sign/painting/library{ + pixel_y = 32 + }, +/obj/structure/railing/wood{ + layer = 3.1; + dir = 8 + }, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"aU" = ( +/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/effect/turf_decal/corner/opaque/brown/diagonal, +/obj/effect/turf_decal/industrial/loading, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/cargo) +"aV" = ( +/obj/machinery/telecomms/server/presets/nanotrasen{ + network = "nt_commnet"; + layer = 3.1 + }, +/obj/machinery/airalarm/directional/west, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/circuit/green, +/area/ship/engineering/communications) +"bb" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/chair/office{ + dir = 8; + name = "tactical swivel chair" + }, +/turf/open/floor/plating/catwalk_floor, +/area/ship/science/robotics) +"bc" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"bd" = ( +/obj/machinery/mecha_part_fabricator{ + dir = 1 + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/science/robotics) +"bj" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/steeldecal/steel_decals1, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"bl" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"bm" = ( +/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/effect/turf_decal/corner/opaque/brown/diagonal, +/obj/machinery/mineral/ore_redemption{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel, +/area/ship/cargo) +"bn" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black/three_quarters{ + dir = 1 + }, +/obj/structure/chair, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"br" = ( +/obj/item/clothing/under/rank/cargo/qm, +/obj/effect/turf_decal/corner/opaque/yellow/full, +/obj/effect/turf_decal/corner/opaque/yellow/diagonal, +/obj/structure/closet/wall{ + dir = 4; + icon_door = "orange_wall"; + name = "quartermaster's closet"; + pixel_x = -28 + }, +/obj/item/clothing/neck/cloak/qm, +/obj/item/clothing/under/rank/cargo/qm/skirt, +/obj/item/clothing/head/beret/qm, +/turf/open/floor/plasteel, +/area/ship/cargo) +"bu" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/ship/science/robotics) +"bC" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/red/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"bD" = ( +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/obj/structure/closet/secure_closet/security/sec, +/obj/machinery/light/directional/west{ + light_color = "#e8eaff" + }, +/obj/item/ammo_box/magazine/co9mm, +/obj/item/gun/energy/disabler{ + pixel_y = -2; + pixel_x = 3 + }, +/obj/item/storage/belt/security/webbing, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"bE" = ( +/obj/structure/chair/sofa/right{ + dir = 1 + }, +/turf/open/floor/carpet/green, +/area/ship/crew/dorm) +"bF" = ( +/obj/effect/turf_decal/steeldecal, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/rnd/production/circuit_imprinter/department/science, +/obj/machinery/firealarm/directional/east, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"bG" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/ship/cargo) +"bH" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/mug{ + pixel_x = 10 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola{ + pixel_x = -9; + pixel_y = 3 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"bI" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"bK" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"bL" = ( +/obj/structure/sign/poster/official/love_ian{ + pixel_x = 32 + }, +/obj/structure/table/reinforced, +/obj/item/radio/intercom/directional/north, +/obj/item/flashlight/lamp{ + pixel_y = 3; + pixel_x = -5 + }, +/obj/machinery/jukebox/boombox{ + pixel_y = 4; + pixel_x = 2; + icon_state = "boombox-" + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/bridge) +"bM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"bN" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_generalwindows"; + name = "Blast Shutters" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/shuttle, +/turf/open/floor/plating, +/area/ship/security) +"bS" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/power/emitter/welded{ + dir = 1 + }, +/obj/machinery/light/directional/south, +/obj/structure/cable{ + icon_state = "0-1" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"cd" = ( +/obj/effect/turf_decal/trimline/opaque/beige/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"ci" = ( +/obj/effect/turf_decal/techfloor/corner{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor/corner, +/obj/effect/turf_decal/techfloor/corner{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor/corner{ + dir = 4 + }, +/obj/effect/turf_decal/steeldecal/steel_decals7, +/obj/effect/turf_decal/steeldecal/steel_decals7{ + dir = 4; + pixel_x = -1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals7{ + dir = 8 + }, +/obj/effect/turf_decal/steeldecal/steel_decals7{ + dir = 1; + pixel_x = -1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/maintenance/central) +"cj" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_x = -1; + pixel_y = 4 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 2; + pixel_y = -1 + }, +/obj/item/storage/belt/utility/full{ + pixel_y = 6 + }, +/obj/item/clothing/glasses/meson/engine{ + pixel_x = 2; + pixel_y = 4 + }, +/obj/machinery/airalarm/directional/south, +/obj/item/clothing/glasses/welding, +/turf/open/floor/plasteel/tech, +/area/ship/science/robotics) +"ck" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/door/window/northright{ + dir = 2 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"cm" = ( +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 5 + }, +/obj/effect/turf_decal/siding/thinplating{ + layer = 2.040; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"co" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"cp" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"cq" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"cr" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"ct" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 8 + }, +/obj/item/kirbyplants{ + icon_state = "plant-21"; + pixel_x = -6; + pixel_y = 17 + }, +/obj/structure/plaque/static_plaque/golden/captain{ + pixel_y = 32 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/ship/crew/law_office) +"cv" = ( +/obj/machinery/door/firedoor, +/obj/machinery/autolathe, +/obj/machinery/door/window/southleft{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"cB" = ( +/obj/effect/turf_decal/techfloor/corner{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor/corner{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/industrial/caution, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil/streak{ + pixel_y = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"cE" = ( +/obj/effect/turf_decal/corner_techfloor_gray/diagonal, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel/dark, +/area/ship/storage) +"cF" = ( +/obj/machinery/suit_storage_unit/independent/pilot, +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"cK" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/garbage{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_y = 32 + }, +/turf/open/floor/plating/catwalk_floor, +/area/ship/science/robotics) +"cO" = ( +/obj/machinery/door/poddoor{ + id = "heron_outercargo"; + name = "Cargo Hatch" + }, +/obj/docking_port/mobile{ + can_move_docking_ports = 1; + launch_status = 0; + port_direction = 4; + preferred_direction = 4 + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/cargo) +"cX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/button/door{ + dir = 1; + id = "heron_sm_lockdown"; + name = "Supermatter Lockdown"; + pixel_y = -24 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"cY" = ( +/obj/machinery/power/smes/shuttle/precharged{ + dir = 4 + }, +/obj/structure/window/plasma/reinforced/spawner/west, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/window/eastright{ + name = "Engine Access" + }, +/turf/open/floor/plating, +/area/ship/maintenance/central) +"db" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"de" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 5 + }, +/obj/machinery/computer/atmos_control/tank/air_tank{ + sensors = list("hairon"="Heron Air Mix Tank") + }, +/obj/machinery/light_switch{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"dh" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/structure/reflector/box, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"dj" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"dn" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/fluff/hedge, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"dp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/elevatorshaft, +/area/ship/science/robotics) +"dq" = ( +/obj/structure/bed, +/obj/item/bedsheet/dorms, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/curtain/cloth/grey, +/obj/machinery/light/small/directional/west, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/wood/walnut{ + icon_state = "wood-broken3" + }, +/area/ship/crew/dorm) +"dr" = ( +/obj/effect/turf_decal/steeldecal/steel_decals1, +/obj/effect/turf_decal/spline/fancy/opaque/blue{ + dir = 4 + }, +/obj/machinery/firealarm/directional/west, +/obj/item/kirbyplants{ + icon_state = "plant-22"; + pixel_x = -10 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"dt" = ( +/obj/effect/turf_decal/techfloor/orange/corner, +/obj/machinery/atmospherics/components/binary/pump/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"du" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"dB" = ( +/obj/structure/window/plasma/reinforced/spawner/east, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/item/tank/internals/plasma/full, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 5 + }, +/turf/open/floor/engine, +/area/ship/engineering/electrical) +"dF" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"dG" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"dI" = ( +/obj/structure/sign/poster/official/moth/supermatter{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/obj/machinery/light/directional/south, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"dJ" = ( +/obj/effect/turf_decal/trimline/opaque/bottlegreen/line{ + dir = 4 + }, +/obj/item/bot_assembly/medbot, +/obj/machinery/door/firedoor/border_only, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"dL" = ( +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 5 + }, +/obj/effect/turf_decal/radiation, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"dM" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"dN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/elevatorshaft, +/area/ship/science/robotics) +"dQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"dS" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4; + layer = 4.1; + color = "#808080" + }, +/obj/machinery/mass_driver{ + id = "heron_mechlaunch" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/elevatorshaft, +/area/ship/science/robotics) +"dU" = ( +/obj/effect/turf_decal/trimline/opaque/red/warning{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"dY" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/ship/hangar) +"ec" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/bridge) +"ed" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/camera{ + dir = 5 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"ef" = ( +/obj/machinery/door/poddoor{ + id = "heron_innercargo"; + name = "Cargo Bay Blast Door" + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/storage) +"ei" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/light/floor, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/hangar) +"ej" = ( +/obj/machinery/telecomms/bus/preset_five{ + network = "nt_commnet" + }, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/circuit/green, +/area/ship/engineering/communications) +"ek" = ( +/obj/item/gun/energy/e_gun/smg{ + pixel_y = 9 + }, +/obj/item/gun/energy/e_gun/smg{ + pixel_y = 2 + }, +/obj/item/gun/ballistic/shotgun/automatic/combat{ + pixel_y = -3 + }, +/obj/structure/rack, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"eq" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black{ + dir = 8 + }, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"er" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"et" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"eu" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/structure/girder, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"ev" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/effect/turf_decal/siding/white{ + dir = 5 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"ew" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"ez" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 1 + }, +/area/ship/bridge) +"eA" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"eG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"eI" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/crew/office) +"eK" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/airalarm/engine{ + pixel_y = 24; + dir = 1 + }, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/engine) +"eP" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/structure/sign/departments/security{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"eT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"eU" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"eV" = ( +/obj/structure/closet/wall/orange{ + name = "fuel locker"; + pixel_y = 28 + }, +/obj/item/stack/sheet/mineral/plasma/fifty, +/obj/effect/decal/cleanable/wrapping{ + pixel_y = 15 + }, +/obj/machinery/airalarm/directional/east, +/obj/machinery/light/directional/east, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/central) +"eW" = ( +/obj/effect/turf_decal/borderfloorblack{ + dir = 1 + }, +/obj/machinery/computer/secure_data, +/turf/open/floor/plasteel/tech/grid, +/area/ship/bridge) +"eX" = ( +/obj/structure/window/reinforced/fulltile/shuttle, +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_outerbridge"; + name = "Blast Shutters"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/bridge) +"fa" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 + }, +/obj/machinery/power/shieldwallgen/atmos{ + anchored = 1; + dir = 4; + id = "heron_outercargoholo"; + locked = 1 + }, +/obj/machinery/door/poddoor{ + id = "heron_outercargo"; + name = "Cargo Hatch" + }, +/obj/structure/cable{ + icon_state = "0-1" + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/cargo) +"fb" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"fe" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1 + }, +/turf/open/floor/engine/air, +/area/ship/engineering/atmospherics) +"fg" = ( +/obj/effect/turf_decal/trimline/opaque/beige/filled/line, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/internals, +/obj/item/clothing/suit/space/fragile, +/obj/item/clothing/suit/space/fragile, +/obj/item/clothing/suit/space/fragile, +/obj/item/clothing/suit/space/fragile, +/obj/item/clothing/head/helmet/space/fragile, +/obj/item/clothing/head/helmet/space/fragile, +/obj/item/clothing/head/helmet/space/fragile, +/obj/item/clothing/head/helmet/space/fragile, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/turf/open/floor/plasteel, +/area/ship/cargo) +"fk" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"fm" = ( +/obj/machinery/door/airlock/hatch, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"fn" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/warning, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"fp" = ( +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 5 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"fq" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"fr" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood/walnut{ + icon_state = "wood-broken2" + }, +/area/ship/crew/dorm) +"fv" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hangar) +"fB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"fD" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/machinery/jukebox/boombox{ + pixel_y = 5 + }, +/obj/item/newspaper{ + pixel_x = 6; + pixel_y = -3 + }, +/obj/item/book/manual/wiki/engineering_guide{ + pixel_x = -3; + pixel_y = -8 + }, +/obj/structure/sign/warning/incident{ + pixel_y = 32 + }, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"fE" = ( +/obj/machinery/door/airlock/external, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/catwalk/over, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/engineering) +"fI" = ( +/obj/effect/turf_decal/trimline/opaque/red/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"fJ" = ( +/obj/machinery/firealarm/directional/north, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"fM" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"fP" = ( +/obj/machinery/door/airlock/grunge{ + name = "Bathroom" + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"fQ" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/hangar) +"fR" = ( +/obj/machinery/door/airlock/engineering/glass, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/engine) +"fT" = ( +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"fW" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8; + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"fZ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"gb" = ( +/obj/structure/closet/wall/orange{ + name = "Chief Engineer's Locker"; + pixel_y = 28 + }, +/obj/item/clothing/under/rank/engineering/chief_engineer, +/obj/item/clothing/suit/toggle/hazard, +/obj/item/storage/backpack/industrial, +/obj/item/clothing/head/beret/ce, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/shoes/workboots{ + pixel_y = -7 + }, +/obj/item/clothing/gloves/color/yellow, +/obj/item/radio/headset/heads/ce, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/item/pipe_dispenser{ + pixel_y = -10 + }, +/obj/item/storage/belt/utility/chief/full{ + pixel_y = -11; + pixel_x = 9 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"gd" = ( +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/purple/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/central) +"gv" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"gw" = ( +/obj/machinery/atmospherics/components/unary/thermomachine{ + dir = 1; + piping_layer = 2 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"gx" = ( +/obj/structure/table/reinforced, +/obj/item/storage/pill_bottle/epinephrine{ + pixel_x = 10; + pixel_y = 9 + }, +/obj/item/storage/pill_bottle/mannitol{ + pixel_x = 10; + pixel_y = 5 + }, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/item/clothing/gloves/color/latex, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/effect/turf_decal/corner/opaque/blue/full, +/obj/machinery/smartfridge/chemistry/preloaded{ + pixel_x = 32; + density = 0 + }, +/obj/item/reagent_containers/medigel/synthflesh{ + pixel_x = -9; + pixel_y = -2 + }, +/obj/item/reagent_containers/medigel/synthflesh{ + pixel_x = -3; + pixel_y = -1 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"gz" = ( +/obj/effect/turf_decal/trimline/opaque/blue/warning, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/corner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"gB" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/structure/sign/departments/medbay/alt{ + pixel_y = 32 + }, +/obj/machinery/door/airlock/security/glass{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/hangar) +"gD" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/item/kirbyplants{ + icon_state = "plant-03" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating{ + layer = 2.040; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"gG" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/hand_labeler, +/obj/effect/turf_decal/siding/thinplating{ + dir = 9 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel, +/area/ship/cargo) +"gI" = ( +/obj/effect/turf_decal/trimline/opaque/red/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"gL" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"gN" = ( +/obj/effect/turf_decal/siding/thinplating/dark/corner, +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/decal/cleanable/plasma, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"gP" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/north, +/turf/open/floor/plating, +/area/ship/hangar) +"gY" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/rechargefloor, +/obj/mecha/combat/marauder{ + internals_req_access = 0; + operation_req_access = 0 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/science/robotics) +"gZ" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/railing/corner, +/obj/effect/turf_decal/siding/thinplating/dark/corner, +/turf/open/floor/plating, +/area/ship/hangar) +"hb" = ( +/obj/effect/turf_decal/corner/opaque/bottlegreen/full, +/obj/machinery/suit_storage_unit/inherit/industrial, +/obj/item/clothing/suit/space/hardsuit/medical, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"hj" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/item/kirbyplants{ + icon_state = "plant-10"; + pixel_x = -6 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"hk" = ( +/obj/structure/table/wood/reinforced, +/obj/item/paper_bin{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/pen/survival{ + pixel_x = -7; + pixel_y = 3 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"hm" = ( +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/turf_decal/spline/fancy/opaque/blue, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"hn" = ( +/obj/effect/spawner/lootdrop/glowstick{ + pixel_x = 5; + pixel_y = 9 + }, +/obj/effect/decal/cleanable/plastic, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/catwalk/over/plated_catwalk, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"hp" = ( +/obj/effect/turf_decal/techfloor/corner, +/obj/effect/turf_decal/techfloor/corner{ + dir = 8 + }, +/obj/effect/turf_decal/arrows{ + pixel_y = 15; + pixel_x = 10 + }, +/obj/effect/turf_decal/arrows{ + pixel_y = 15; + pixel_x = -10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/steeldecal/steel_decals_central4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"hr" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/engineering) +"ht" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/line, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/machinery/computer/monitor{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"hw" = ( +/obj/machinery/door/poddoor{ + id = "heron_innercargo"; + name = "Cargo Bay Blast Door" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/storage) +"hx" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/status_display{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"hD" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"hF" = ( +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/structure/table/reinforced, +/obj/item/clothing/head/welding, +/obj/item/mmi/posibrain{ + pixel_x = 7; + pixel_y = 14 + }, +/obj/item/organ/tongue/robot{ + pixel_y = 6; + pixel_x = -4 + }, +/obj/item/mmi/posibrain{ + pixel_x = 9; + pixel_y = 10 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/steeldecal/steel_decals_central2{ + pixel_y = 2 + }, +/obj/item/robot_module/security{ + pixel_y = -6; + pixel_x = 1 + }, +/obj/item/robot_module/security{ + pixel_y = -3; + pixel_x = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"hH" = ( +/obj/structure/table/wood/reinforced, +/obj/item/flashlight/lamp{ + pixel_x = -5; + pixel_y = 10 + }, +/obj/item/modular_computer/laptop/preset/civilian{ + pixel_x = 12; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/mug{ + pixel_x = -6 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/crew/dorm) +"hJ" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = 13; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = 27 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/dorm/dormtwo) +"hM" = ( +/obj/structure/bed, +/obj/item/bedsheet/dorms, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/curtain/cloth/grey, +/obj/machinery/light/small/directional/east, +/turf/open/floor/wood/walnut, +/area/ship/crew/dorm) +"hO" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/machinery/door/airlock/security/glass{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/hangar) +"hP" = ( +/obj/structure/chair/office/light{ + dir = 1; + pixel_y = 3 + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/crew/dorm) +"hQ" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/power/emitter/welded{ + dir = 1 + }, +/obj/machinery/light/directional/south, +/obj/structure/cable{ + icon_state = "0-1" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"hR" = ( +/obj/machinery/door/airlock/atmos{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"hS" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"hU" = ( +/obj/item/virgin_mary{ + pixel_y = 25 + }, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/dorm) +"hY" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/dresser, +/obj/item/toy/figure/head_of_personnel{ + pixel_y = 14; + pixel_x = 1 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken2" + }, +/area/ship/crew/dorm/dormthree) +"hZ" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 10 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 7; + pixel_y = -21 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 7; + pixel_y = -21 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 7; + pixel_y = -21 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 7; + pixel_y = -21 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"ia" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/airlock/research{ + name = "Mech Bay" + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/science/robotics) +"ib" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/computer/secure_data{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) +"ie" = ( +/obj/structure/window/reinforced/spawner/north, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 8 + }, +/obj/item/clothing/neck/cloak/hos, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/shoes/cowboy/black, +/obj/item/clothing/under/rank/security/head_of_security/alt/skirt, +/obj/item/clothing/under/rank/security/head_of_security/alt, +/obj/item/clothing/under/rank/security/head_of_security/nt, +/obj/item/clothing/under/rank/security/head_of_security/nt/skirt, +/obj/item/clothing/head/HoS, +/obj/item/clothing/head/beret/sec/hos, +/obj/item/clothing/suit/armor/vest/leather, +/obj/item/clothing/suit/armor/hos/trenchcoat, +/obj/item/storage/belt/military, +/obj/item/reagent_containers/spray/pepper{ + pixel_x = 7; + pixel_y = -3 + }, +/obj/item/clothing/glasses/hud/security/sunglasses, +/obj/item/clothing/glasses/hud/security/sunglasses/eyepatch, +/obj/item/clothing/gloves/krav_maga/sec, +/obj/item/gun/energy/e_gun/hos, +/obj/structure/closet/secure_closet{ + icon_state = "hos"; + req_access = list(58) + }, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"if" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/atmos, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"ij" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{ + dir = 8 + }, +/turf/open/floor/engine, +/area/ship/engineering/engine) +"ik" = ( +/obj/machinery/vending/dinnerware, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"in" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/obj/machinery/telecomms/relay{ + freq_listening = list(1351); + id = "Nanotrasen Relay"; + name = "Nanotrasen relay"; + network = "nt_commnet"; + layer = 3.1 + }, +/turf/open/floor/circuit/green, +/area/ship/engineering/communications) +"io" = ( +/obj/machinery/door/airlock/hatch{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/science/robotics) +"iq" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"is" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/security) +"it" = ( +/obj/machinery/holopad/emergency/command, +/obj/effect/turf_decal/box, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/cargo) +"iA" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/garbage, +/obj/structure/sink{ + dir = 4; + pixel_x = -12; + pixel_y = 2 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/ship/maintenance/central) +"iC" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"iD" = ( +/obj/structure/table/wood/reinforced, +/obj/item/paicard{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/paicard{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/paper_bin{ + pixel_x = 7; + pixel_y = 4 + }, +/obj/item/clipboard{ + pixel_x = 9; + pixel_y = 3 + }, +/obj/item/pen{ + pixel_y = 4; + pixel_x = 6 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/pen/fountain{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 22; + pixel_y = 8 + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/crew/dorm) +"iI" = ( +/obj/effect/turf_decal/corner_techfloor_gray{ + dir = 5 + }, +/obj/effect/turf_decal/radiation, +/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"iL" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"iM" = ( +/obj/structure/table/wood/reinforced, +/obj/item/paper_bin{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_y = 4; + pixel_x = -8 + }, +/obj/item/pen/charcoal{ + pixel_y = 8; + pixel_x = -3 + }, +/obj/item/flashlight/lamp/green{ + pixel_y = 8; + pixel_x = 6 + }, +/obj/item/phone{ + pixel_x = 8; + pixel_y = -8 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/law_office) +"iP" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/hatch{ + name = "Captains Office" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/crew/law_office) +"iS" = ( +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/crew/office) +"iW" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/light_switch{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"iY" = ( +/obj/item/reagent_containers/food/snacks/canned/beans{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/snacks/canned/beans{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/obj/structure/closet/crate/large, +/obj/item/storage/box/donkpockets{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/snacks/canned/beans{ + pixel_x = 5 + }, +/obj/item/reagent_containers/food/snacks/canned/beans{ + pixel_x = 1; + pixel_y = -3 + }, +/obj/item/reagent_containers/food/snacks/canned/beans{ + pixel_x = 5 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/maintenance/central) +"ja" = ( +/obj/effect/turf_decal/trimline/opaque/bottlegreen/line{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"jb" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"jc" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/ship/security) +"je" = ( +/obj/structure/table/reinforced, +/obj/item/circuitboard/machine/circuit_imprinter{ + pixel_y = -6 + }, +/obj/item/circuitboard/machine/rdserver, +/obj/item/circuitboard/computer/rdconsole{ + pixel_y = 7 + }, +/obj/machinery/airalarm/directional/south, +/obj/machinery/camera{ + dir = 10 + }, +/obj/machinery/light_switch{ + pixel_x = -22; + dir = 4; + pixel_y = 8 + }, +/turf/open/floor/plating/catwalk_floor, +/area/ship/science/robotics) +"jh" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/crew/office) +"ji" = ( +/obj/machinery/door/airlock/grunge, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/tech, +/area/ship/crew/office) +"jm" = ( +/obj/machinery/shower{ + pixel_y = 19 + }, +/obj/structure/window/reinforced/tinted/frosted{ + dir = 8; + pixel_x = -4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/soap/deluxe, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"jo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/patterned, +/area/ship/crew/toilet) +"jr" = ( +/obj/effect/turf_decal/techfloor/orange/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"ju" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/engineering/atmospherics) +"jx" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 9 + }, +/obj/machinery/vending/snack/random, +/obj/machinery/light/directional/west, +/obj/machinery/light_switch{ + pixel_y = 22; + pixel_x = -9 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"jy" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"jC" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/engineering) +"jE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/ship/science/robotics) +"jO" = ( +/obj/structure/chair/comfy/brown{ + color = "#c45c57"; + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/law_office) +"jP" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/crew/office) +"jQ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/dresser, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/crew/dorm) +"jR" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals1, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"jT" = ( +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"jY" = ( +/obj/machinery/door/airlock{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"jZ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"kd" = ( +/obj/machinery/vending/games{ + pixel_x = 7 + }, +/obj/effect/turf_decal/siding/wood, +/obj/item/kirbyplants{ + icon_state = "plant-22"; + pixel_x = -10 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/sign/picture_frame{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"ki" = ( +/obj/structure/closet/wall/orange{ + dir = 4; + pixel_x = -28; + name = "Pilot's Locker" + }, +/obj/item/clothing/under/rank/security/officer/military/eng, +/obj/item/clothing/gloves/tackler/combat/insulated, +/obj/item/clothing/suit/det_suit/grey, +/obj/item/clothing/suit/jacket/miljacket, +/obj/item/clothing/shoes/cowboy, +/obj/item/clothing/shoes/combat/swat, +/obj/item/clothing/head/beret/sec/officer, +/obj/item/clothing/glasses/hud/diagnostic/night, +/obj/item/clothing/accessory/medal/gold/heroism, +/obj/item/clothing/accessory/holster/detective, +/obj/item/clothing/mask/bandana/skull, +/obj/item/clothing/mask/gas/sechailer, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/steeldecal/steel_decals10, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/tech, +/area/ship/science/robotics) +"kj" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/machinery/camera{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"kp" = ( +/obj/effect/turf_decal/borderfloorblack{ + dir = 9 + }, +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/desk_flag{ + pixel_x = 11; + pixel_y = 4; + layer = 4 + }, +/obj/item/radio/intercom/wideband/table{ + dir = 1; + pixel_x = -2 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/bridge) +"ku" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/hatch{ + name = "Captains Cabin" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/crew/dorm/dormtwo) +"kv" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/toilet) +"kA" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"kB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/fireplace, +/obj/item/toy/figure/captain{ + pixel_y = 37; + pixel_x = 11 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/ship/crew/law_office) +"kD" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/fulltile, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"kE" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"kH" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/arrows{ + dir = 1; + pixel_y = -12 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/science/robotics) +"kI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/effect/turf_decal/siding/white{ + dir = 6 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"kK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/storage/box/ingredients/wildcard{ + pixel_y = 9; + pixel_x = -7 + }, +/obj/item/storage/box/ingredients/wildcard{ + pixel_y = 9; + pixel_x = 8 + }, +/obj/item/storage/box/ingredients/wildcard{ + pixel_y = 3; + pixel_x = -1 + }, +/obj/item/storage/box/ingredients/wildcard{ + pixel_y = 6; + pixel_x = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/canteen/kitchen) +"kO" = ( +/obj/structure/sign/departments/cargo, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/cargo) +"kP" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_sm_lockdown"; + rad_insulation = 0.1; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/airlock/engineering{ + name = "Engineering"; + req_access_txt = "10"; + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"kQ" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"kR" = ( +/obj/machinery/door/airlock/grunge{ + name = "Bathroom" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"kS" = ( +/obj/machinery/telecomms/processor/preset_five{ + network = "nt_commnet" + }, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/circuit/green, +/area/ship/engineering/communications) +"kU" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"kV" = ( +/obj/effect/turf_decal/techfloor/orange/corner, +/obj/effect/turf_decal/techfloor/orange/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/oil{ + pixel_x = 4; + pixel_y = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"kW" = ( +/obj/machinery/button/door{ + id = "heron_outerbridge"; + name = "Bridge Blast Doors"; + pixel_y = 24; + req_access_txt = "3"; + pixel_x = 6 + }, +/obj/machinery/button/door{ + id = "heron_generalwindows"; + name = "Window Shutters"; + pixel_y = 24; + req_access_txt = "3"; + pixel_x = -6 + }, +/obj/machinery/computer/helm{ + dir = 8 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/bridge) +"la" = ( +/obj/effect/turf_decal/atmos/nitrogen, +/turf/open/floor/engine/n2, +/area/ship/engineering/atmospherics) +"le" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black/half{ + dir = 8 + }, +/obj/machinery/jukebox, +/obj/structure/railing/wood{ + layer = 3.1; + dir = 8 + }, +/obj/machinery/light_switch{ + pixel_x = -22; + dir = 4; + pixel_y = 8 + }, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"lg" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/security/glass{ + req_one_access_txt = "1" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"lh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"lj" = ( +/obj/structure/table/wood/reinforced, +/obj/structure/sign/plaques/kiddie/library{ + pixel_y = 30 + }, +/obj/item/toy/figure/curator{ + pixel_y = 12; + pixel_x = 9 + }, +/obj/item/pen{ + pixel_x = 8; + pixel_y = 5 + }, +/obj/item/pen/red{ + pixel_x = 5; + pixel_y = 1 + }, +/obj/item/newspaper{ + pixel_x = -10; + pixel_y = 7 + }, +/obj/item/newspaper{ + pixel_x = -10; + pixel_y = 10 + }, +/obj/item/newspaper{ + pixel_x = -10; + pixel_y = 13 + }, +/obj/effect/turf_decal/siding/wood, +/obj/item/storage/crayons{ + pixel_x = -17; + pixel_y = -1 + }, +/obj/item/storage/fancy/cigarettes, +/obj/item/storage/fancy/cigarettes{ + pixel_x = 2; + pixel_y = 1 + }, +/obj/item/lighter{ + pixel_x = 6; + pixel_y = -3 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"ll" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"lm" = ( +/obj/effect/turf_decal/trimline/opaque/red/filled/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/red/filled/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/red/arrow_ccw{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/red/arrow_ccw{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/stand_clear/white{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"ln" = ( +/obj/effect/turf_decal/techfloor/corner, +/obj/effect/turf_decal/techfloor/corner{ + dir = 4 + }, +/obj/effect/turf_decal/steeldecal/steel_decals2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"lo" = ( +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 10 + }, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 8 + }, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 9 + }, +/obj/machinery/power/terminal, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "6-8" + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/maintenance/central) +"lp" = ( +/obj/effect/turf_decal/techfloor/orange, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"lr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"lt" = ( +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/machinery/mech_bay_recharge_port, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/science/robotics) +"lv" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/paper_bin{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/stamp/qm{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/stamp{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/item/stamp/denied{ + pixel_x = 8; + pixel_y = -1 + }, +/obj/item/pen{ + pixel_y = 4; + pixel_x = -7 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"lH" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/portable_atmospherics/scrubber/huge, +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"lI" = ( +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 4 + }, +/area/ship/hangar) +"lJ" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/machinery/door/airlock/hatch{ + name = "Pilot Quarters" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel, +/area/ship/cargo/office) +"lK" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/engineering/communications) +"lL" = ( +/obj/effect/turf_decal/corner/opaque/yellow/full, +/obj/effect/turf_decal/corner/opaque/yellow/diagonal, +/obj/structure/table/reinforced, +/obj/item/toy/figure/cargotech{ + pixel_x = -1 + }, +/obj/item/storage/fancy/cigarettes/cigpack_robustgold{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/lighter{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/trash/boritos{ + pixel_x = 11; + pixel_y = -5 + }, +/obj/item/mining_scanner, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel, +/area/ship/cargo) +"lS" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_generalwindows"; + name = "Blast Shutters" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/shuttle, +/turf/open/floor/plating, +/area/ship/cargo) +"lU" = ( +/obj/structure/railing{ + dir = 9; + layer = 4.1 + }, +/obj/item/trash/sosjerky{ + anchored = 1; + color = "#808080"; + pixel_x = 8; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/glass{ + dir = 8; + pixel_y = 1; + color = "#808080" + }, +/obj/effect/decal/cleanable/garbage{ + color = "#808080" + }, +/obj/effect/decal/fakelattice{ + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080" + }, +/area/ship/crew/office) +"lX" = ( +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"lY" = ( +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/cargo) +"lZ" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/obj/structure/window/plasma/reinforced/spawner/west, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/item/tank/internals/plasma/full, +/obj/machinery/power/rad_collector/anchored, +/turf/open/floor/engine, +/area/ship/engineering/electrical) +"mc" = ( +/obj/machinery/door/airlock/freezer{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/ship/crew/canteen/kitchen) +"me" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"mf" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/decal/cleanable/dirt, +/obj/structure/reflector/box, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"mg" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Bay" + }, +/obj/effect/turf_decal/trimline/opaque/beige/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"mj" = ( +/obj/effect/turf_decal/trimline/opaque/bottlegreen/line{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"mk" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/flashlight/lamp{ + pixel_x = -8; + pixel_y = 11 + }, +/obj/item/gps{ + pixel_x = -9; + pixel_y = -7 + }, +/obj/item/gps{ + pixel_x = -7; + pixel_y = -11 + }, +/obj/item/holosign_creator/security{ + pixel_x = 7; + pixel_y = -14 + }, +/obj/machinery/light_switch{ + pixel_y = 23 + }, +/obj/item/storage/ration/lemon_pepper_chicken{ + pixel_x = 7; + pixel_y = 2 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"mm" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 + }, +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/clipboard{ + pixel_y = -1; + pixel_x = 3 + }, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/item/clothing/head/beret/black{ + pixel_x = 2 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 6 + }, +/obj/effect/turf_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/machinery/button/massdriver{ + id = "heron_mechlaunch"; + name = "Launch Control"; + pixel_x = -9; + pixel_y = 8; + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"mo" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 9 + }, +/obj/machinery/vending/cola/space_up, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"mq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/crew/office) +"mt" = ( +/obj/structure/window/reinforced/spawner, +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/smg/proto/unrestricted{ + pixel_y = 3 + }, +/obj/item/gun/ballistic/automatic/smg/proto/unrestricted{ + pixel_y = -2 + }, +/obj/item/gun/ballistic/automatic/smg/proto/unrestricted{ + pixel_y = -7 + }, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"my" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"mD" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/security/armory) +"mG" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_bridgeprivacy"; + name = "Blast Shutters"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/bridge) +"mI" = ( +/obj/effect/turf_decal/industrial/warning, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"mK" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/chair/office{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"mL" = ( +/obj/structure/flora/rock/pile{ + icon_state = "lavarocks2" + }, +/obj/structure/flora/grass/jungle{ + pixel_y = 4; + pixel_x = 6 + }, +/obj/structure/flora/ausbushes/sparsegrass{ + pixel_y = 7 + }, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/turf/open/floor/grass, +/area/ship/hallway/aft) +"mM" = ( +/obj/structure/chair/sofa{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/carpet/green, +/area/ship/crew/dorm) +"mN" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/engineering_welding{ + req_access = null; + anchored = 1 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 10 + }, +/obj/machinery/light/small/directional/north, +/obj/item/clothing/mask/rat/bee, +/obj/structure/sign/warning/vacuum{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"mO" = ( +/obj/effect/turf_decal/techfloor/orange, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"mQ" = ( +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/airlock/research{ + name = "Mech Bay" + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/science/robotics) +"mR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"mW" = ( +/obj/structure/guncase, +/obj/item/gun/ballistic/automatic/pistol/m1911/no_mag, +/obj/item/gun/ballistic/automatic/pistol/m1911/no_mag, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"mX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi' + }, +/area/ship/engineering) +"mY" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"mZ" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 4 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"na" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/security) +"ne" = ( +/obj/structure/window/reinforced/spawner/north, +/obj/machinery/computer/card/minor/hos{ + dir = 2 + }, +/obj/effect/turf_decal/siding/wideplating/dark, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"nf" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_sm_1"; + rad_insulation = 0.1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"ng" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"nh" = ( +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 1 + }, +/area/ship/bridge) +"nj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_sm_lockdown"; + rad_insulation = 0.1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/airlock/engineering{ + name = "Engineering"; + req_access_txt = "10" + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"np" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/dorm/dormthree) +"ns" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/ship/crew/dorm) +"nt" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"nu" = ( +/obj/effect/turf_decal/techfloor/orange, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/meter/atmos/layer2, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"nw" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/punch_shit{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"nB" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/arrow_ccw{ + dir = 8 + }, +/obj/structure/sign/poster/official/safety_internals{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"nD" = ( +/obj/structure/window/reinforced/spawner/north, +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = -6 + }, +/obj/machinery/recharger{ + pixel_x = 5 + }, +/obj/item/screwdriver, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security) +"nH" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"nK" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 1 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/engineering/communications) +"nL" = ( +/obj/structure/railing{ + dir = 6; + layer = 4.1 + }, +/obj/machinery/power/port_gen/pacman, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/central) +"nM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/storage) +"nQ" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/science/robotics) +"nR" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/obj/structure/tubes, +/obj/effect/turf_decal/steeldecal/steel_decals10, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/structure/closet/wall/blue{ + pixel_y = 28 + }, +/obj/item/aicard{ + pixel_x = -5 + }, +/obj/item/aiModule/toyAI, +/obj/item/borg/upgrade/ai, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/button/door{ + dir = 8; + id = "heron_ai_shutter"; + name = "AI Core Lockdown"; + pixel_y = -10; + pixel_x = 24 + }, +/obj/item/mmi/posibrain{ + pixel_x = 7; + pixel_y = 11 + }, +/turf/open/floor/plasteel/tech, +/area/ship/science/ai_chamber) +"nS" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/patterned, +/area/ship/crew/toilet) +"nT" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/ausbushes/reedbush{ + pixel_x = -6; + pixel_y = 18 + }, +/turf/open/water/jungle, +/area/ship/hallway/aft) +"nU" = ( +/obj/structure/chair/office, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/sign/plaques/kiddie/perfect_man{ + pixel_y = 32 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"nX" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/ship/engineering) +"nZ" = ( +/obj/structure/window/reinforced/fulltile/shuttle, +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_generalwindows"; + name = "Blast Shutters" + }, +/turf/open/floor/plating, +/area/ship/hangar) +"oa" = ( +/obj/item/multitool, +/obj/item/clothing/glasses/meson/engine/tray, +/obj/item/radio/off, +/obj/item/storage/belt/utility/atmostech, +/obj/item/holosign_creator/atmos, +/obj/item/analyzer, +/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, +/obj/item/extinguisher/advanced, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/suit/fire/atmos, +/obj/item/clothing/mask/gas/atmos, +/obj/item/clothing/head/hardhat/atmos, +/obj/structure/closet/wall{ + name = "Atmospheric locker"; + dir = 8; + pixel_x = 28 + }, +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"oe" = ( +/obj/structure/window/plasma/reinforced/spawner/west, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/item/tank/internals/plasma/full, +/obj/machinery/atmospherics/pipe/manifold4w/orange/visible, +/turf/open/floor/engine, +/area/ship/engineering/electrical) +"oh" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/clipboard{ + pixel_y = -2; + pixel_x = 3 + }, +/obj/item/pen{ + pixel_x = 2; + pixel_y = -1 + }, +/obj/item/storage/fancy/cigarettes/derringer{ + pixel_x = -6; + pixel_y = -4 + }, +/obj/item/lighter/greyscale{ + pixel_x = -3; + pixel_y = -10 + }, +/obj/item/photo/old{ + pixel_x = 6; + pixel_y = -14 + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/bridge) +"ol" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/reflector/box, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"oo" = ( +/obj/machinery/suit_storage_unit/inherit, +/obj/structure/railing{ + dir = 8; + layer = 3.1 + }, +/obj/item/clothing/suit/space/hardsuit/ert/lp/engi, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"oq" = ( +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"os" = ( +/obj/machinery/air_sensor/atmos/air_tank{ + id_tag = "hairon" + }, +/turf/open/floor/engine/air, +/area/ship/engineering/atmospherics) +"ot" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/west, +/obj/structure/closet/wall{ + dir = 1; + pixel_y = -28 + }, +/obj/item/clothing/under/rank/rnd/roboticist, +/obj/item/clothing/under/rank/rnd/research_director/turtleneck, +/obj/item/clothing/under/rank/rnd/roboticist/skirt, +/obj/item/clothing/suit/toggle/labcoat/science, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/toy/plush/knight{ + pixel_x = -8 + }, +/obj/item/toy/prize/seraph, +/turf/open/floor/wood, +/area/ship/science/robotics) +"ox" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"oz" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/security/armory) +"oA" = ( +/obj/effect/turf_decal/techfloor/orange, +/obj/effect/turf_decal/techfloor/orange{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"oF" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id = "heron_engineblast"; + name = "Engine Blast Door"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"oH" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/door/airlock/external, +/turf/open/floor/plating, +/area/ship/security) +"oJ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4 + }, +/turf/open/floor/engine, +/area/ship/engineering/engine) +"oL" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/obj/structure/sign/poster/official/moth/piping{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"oM" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"oN" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"oR" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black/three_quarters{ + dir = 8 + }, +/obj/structure/table, +/obj/item/paicard{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/paicard{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"oS" = ( +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/hangar) +"oU" = ( +/obj/machinery/atmospherics/pipe/manifold4w/green/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"oV" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/power/emitter/welded{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-1" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"oX" = ( +/obj/machinery/suit_storage_unit/inherit, +/obj/structure/railing{ + dir = 8; + layer = 3.1 + }, +/obj/item/clothing/suit/space/hardsuit/ert/lp/med, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"pb" = ( +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 10 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 10 + }, +/obj/structure/sign/departments/cargo{ + pixel_x = -32 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"pg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"pj" = ( +/obj/effect/turf_decal/industrial/loading, +/turf/open/floor/plasteel/elevatorshaft, +/area/ship/science/robotics) +"pk" = ( +/obj/structure/closet/secure_closet/freezer/wall{ + dir = 8; + pixel_x = 28 + }, +/obj/item/clothing/under/rank/civilian/cookjorts, +/obj/item/clothing/shoes/cookflops, +/obj/item/clothing/suit/toggle/chef, +/obj/item/clothing/under/rank/civilian/chef, +/obj/item/clothing/under/rank/civilian/chef/skirt, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/head/chefhat, +/obj/item/clothing/suit/apron/chef, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/canteen/kitchen) +"pl" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/effect/decal/cleanable/vomit/old, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/wall{ + dir = 4; + pixel_x = -28 + }, +/obj/item/reagent_containers/syringe/contraband/fentanyl{ + pixel_x = -3; + pixel_y = 4 + }, +/obj/item/reagent_containers/syringe/contraband/methamphetamine, +/obj/item/reagent_containers/syringe/charcoal{ + pixel_x = -3 + }, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = -4 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"po" = ( +/obj/machinery/telecomms/receiver/preset_right{ + freq_listening = list(1351); + network = "nt_commnet" + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/circuit/telecomms{ + initial_gas_mix = "o2=22;n2=82;TEMP=293.15" + }, +/area/ship/engineering/communications) +"pq" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"pt" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"pu" = ( +/obj/effect/turf_decal/atmos/oxygen, +/turf/open/floor/engine/o2, +/area/ship/engineering/atmospherics) +"pB" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"pE" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 1 + }, +/area/ship/maintenance/central) +"pF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"pI" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"pK" = ( +/obj/machinery/button/door{ + id = "heron_custo_shutter"; + name = "Custodial Bay Toggle"; + pixel_x = 22; + pixel_y = 10; + req_one_access_txt = "26"; + dir = 8 + }, +/obj/vehicle/ridden/janicart, +/obj/item/key/janitor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"pM" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/dorm/dormtwo) +"pN" = ( +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 8 + }, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/engineering) +"pQ" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_sm_lockdown"; + rad_insulation = 0.1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/airlock/engineering{ + name = "Engineering"; + req_access_txt = "10" + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"pR" = ( +/obj/effect/turf_decal/trimline/opaque/bottlegreen/line{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"pS" = ( +/obj/structure/closet/wall/orange{ + name = "Pilot's Locker"; + pixel_y = 28 + }, +/obj/item/clothing/under/rank/security/officer/military/eng, +/obj/item/clothing/suit/jacket/leather/duster, +/obj/item/clothing/suit/jacket/miljacket, +/obj/item/clothing/head/beret/lt, +/obj/item/clothing/mask/bandana/skull, +/obj/item/clothing/suit/armor/vest/marine, +/obj/item/instrument/piano_synth/headphones/spacepods{ + pixel_x = -5; + pixel_y = -1 + }, +/obj/item/clothing/neck/shemagh, +/obj/item/reagent_containers/spray/pepper{ + pixel_x = 7; + pixel_y = -6 + }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/hangar) +"pT" = ( +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 1 + }, +/obj/structure/catwalk/over, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plating, +/area/ship/engineering) +"qc" = ( +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plating, +/area/ship/hangar) +"qf" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/crew/office) +"qi" = ( +/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/effect/turf_decal/corner/opaque/brown/diagonal, +/obj/effect/turf_decal/industrial/loading{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"qj" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"qx" = ( +/obj/machinery/light_switch{ + pixel_x = -9; + pixel_y = 23 + }, +/obj/structure/extinguisher_cabinet/directional/north{ + pixel_x = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/bridge) +"qy" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"qz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/engineering/glass{ + req_access_txt = "10" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/central) +"qA" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black/three_quarters, +/obj/effect/decal/cleanable/robot_debris, +/obj/machinery/light/directional/south, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"qH" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/line, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 2 + }, +/obj/item/folder/yellow{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/item/pen{ + pixel_x = 5; + pixel_y = 1 + }, +/obj/machinery/light/small/directional/east, +/obj/item/storage/firstaid/toxin{ + pixel_x = -5; + pixel_y = -2 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"qJ" = ( +/obj/effect/turf_decal/trimline/opaque/red/line, +/obj/effect/turf_decal/siding/wideplating/dark, +/obj/machinery/light/directional/south, +/obj/structure/cable{ + icon_state = "4-8" + }, +/mob/living/simple_animal/bot/secbot/beepsky, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"qL" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1; + layer = 2.030 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6; + layer = 2.030 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"qM" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"qP" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"qY" = ( +/obj/effect/turf_decal/steeldecal/steel_decals9, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"qZ" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"ra" = ( +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 5 + }, +/obj/effect/turf_decal/siding/thinplating{ + layer = 2.040; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"rd" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"re" = ( +/turf/open/floor/plasteel/tech, +/area/ship/security) +"rg" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/fulltile, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"rh" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/decal/cleanable/plasma, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold4w/purple/hidden, +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"rj" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/turf/open/floor/engine/o2, +/area/ship/engineering/atmospherics) +"rp" = ( +/obj/machinery/power/shieldwallgen/atmos{ + anchored = 1; + dir = 4; + id = "heron_mechbayholo"; + locked = 1 + }, +/obj/structure/cable{ + icon_state = "0-1" + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/door/poddoor{ + id = "heron_mechbayshut"; + name = "Mechbay Shutters" + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/science/robotics) +"rs" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/directional/east, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"rt" = ( +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4; + name = "Shuttle Fuel Valve" + }, +/obj/effect/turf_decal/industrial/shutoff, +/obj/effect/turf_decal/industrial/caution/red{ + pixel_y = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"ru" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/light_switch{ + pixel_y = 22; + pixel_x = -9 + }, +/turf/open/floor/plasteel, +/area/ship/storage) +"rw" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/hangar) +"rB" = ( +/obj/structure/railing/corner, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/central) +"rJ" = ( +/obj/effect/turf_decal/techfloor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/light/directional/south, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"rL" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/plasma, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/airlock/engineering/glass{ + req_access_txt = "10" + }, +/turf/open/floor/plating, +/area/ship/engineering) +"rN" = ( +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/turf_decal/spline/fancy/opaque/blue/corner, +/obj/machinery/light/directional/west, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"rO" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/opaque/red/warning{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"rP" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"rR" = ( +/obj/structure/table/wood/reinforced, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_y = 9; + pixel_x = 4 + }, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_y = 13; + pixel_x = 4 + }, +/obj/item/lighter{ + pixel_x = 10 + }, +/obj/item/newspaper{ + pixel_x = 7; + pixel_y = -8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/crew/dorm) +"rT" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"rU" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"rV" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"rW" = ( +/obj/effect/decal/cleanable/garbage, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/canteen/kitchen) +"rZ" = ( +/obj/machinery/door/window/brigdoor/southright{ + req_access_txt = "1" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8; + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"sb" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen/kitchen) +"sc" = ( +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/hangar) +"se" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"sg" = ( +/obj/machinery/shower{ + pixel_y = 19 + }, +/obj/item/bikehorn/rubberducky, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"sn" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/window/plasma/reinforced/fulltile, +/obj/structure/grille, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"so" = ( +/obj/effect/turf_decal/trimline/opaque/bottlegreen/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"sr" = ( +/obj/structure/bed, +/obj/item/bedsheet/dorms, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/curtain/cloth/grey, +/obj/machinery/light/small/directional/west, +/turf/open/floor/wood/walnut, +/area/ship/crew/dorm) +"ss" = ( +/obj/item/kitchen/spoon/plastic, +/obj/item/kitchen/spoon/plastic{ + pixel_x = 1 + }, +/obj/item/kitchen/spoon/plastic{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/kitchen/knife/plastic{ + pixel_x = 2 + }, +/obj/item/kitchen/knife/plastic, +/obj/item/kitchen/knife/plastic{ + pixel_x = 5; + pixel_y = 2 + }, +/obj/item/kitchen/fork/plastic{ + pixel_x = 6 + }, +/obj/item/kitchen/fork/plastic{ + pixel_x = 6 + }, +/obj/item/kitchen/fork/plastic{ + pixel_x = 6 + }, +/obj/item/reagent_containers/glass/bowl{ + pixel_x = 2 + }, +/obj/item/reagent_containers/glass/bowl{ + pixel_x = 2 + }, +/obj/item/reagent_containers/glass/bowl{ + pixel_x = 2 + }, +/obj/item/trash/plate, +/obj/item/trash/plate, +/obj/structure/closet/crate/freezer{ + name = "kitchen supplies" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/maintenance/central) +"sv" = ( +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/turf_decal/steeldecal/steel_decals4, +/obj/effect/turf_decal/spline/fancy/opaque/blue, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"sw" = ( +/obj/machinery/door/airlock/external{ + dir = 4 + }, +/obj/structure/catwalk/over, +/turf/open/floor/plating, +/area/ship/engineering) +"sx" = ( +/obj/effect/turf_decal/techfloor{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/bridge) +"sy" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/cargo) +"sz" = ( +/obj/machinery/vending/security/marine/nanotrasen, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"sC" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_atmos"; + rad_insulation = 0.1; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"sD" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"sE" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/structure/closet/firecloset/wall{ + dir = 8; + pixel_x = 28 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"sF" = ( +/obj/machinery/mecha_part_fabricator{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/grille/broken, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/science/robotics) +"sI" = ( +/obj/effect/turf_decal/trimline/opaque/red/warning, +/obj/effect/turf_decal/siding/wideplating/dark/corner, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"sJ" = ( +/obj/machinery/requests_console{ + pixel_x = -31 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/law_office) +"sM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/central) +"sO" = ( +/obj/structure/table, +/obj/item/storage/box/mousetraps{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/box/mousetraps{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/toy/figure/janitor{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/restraints/legcuffs/beartrap{ + pixel_y = 8 + }, +/obj/item/restraints/legcuffs/beartrap{ + pixel_y = 8 + }, +/obj/item/reagent_containers/food/drinks/bottle/pineapplejuice{ + pixel_x = -7; + pixel_y = -3 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/item/reagent_containers/glass/rag{ + pixel_y = -8; + pixel_x = -2 + }, +/obj/structure/sign/poster/official/moth/boh{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"sP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"sQ" = ( +/obj/structure/closet/crate/engineering, +/obj/effect/decal/cleanable/oil, +/obj/item/rcl/pre_loaded, +/obj/item/reagent_containers/spray/weedspray, +/obj/item/sparkler{ + pixel_x = -9 + }, +/obj/item/stack/cable_coil, +/obj/item/stack/circuit_stack, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/effect/turf_decal/corner/opaque/brown/diagonal, +/obj/machinery/airalarm/directional/east, +/obj/machinery/button/door{ + id = "heron_innercargo"; + name = "Cargohold Shutters"; + pixel_y = 24; + pixel_x = -10 + }, +/obj/machinery/camera{ + dir = 9 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"sS" = ( +/obj/effect/turf_decal/techfloor/corner, +/obj/structure/bed/dogbed/cayenne, +/mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper{ + resize = 0.8; + name = "James"; + desc = "The captains , and guardian of the bridge. None shall tresspass within his domain."; + faction = list("neutral") + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) +"sV" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"sW" = ( +/obj/machinery/power/smes/engineering, +/obj/effect/turf_decal/industrial/warning{ + dir = 5; + color = "#808080" + }, +/obj/structure/sign/warning/electricshock{ + pixel_y = -30 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/central) +"sX" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"sZ" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/structure/sign/poster/contraband/missing_gloves{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"tc" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/structure/catwalk/over, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating, +/area/ship/engineering) +"td" = ( +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"tg" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"th" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/steeldecal/steel_decals_central6, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"tk" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"tn" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/official/here_for_your_safety{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"to" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"tt" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel, +/area/ship/cargo) +"tu" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating{ + layer = 2.040 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"tv" = ( +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 4 + }, +/obj/effect/decal/cleanable/robot_debris, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/button/door{ + id = "heron_engineblast"; + name = "Engine Shutters"; + pixel_x = -10; + pixel_y = -23; + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/central) +"tA" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/ship/hangar) +"tD" = ( +/obj/structure/sign/departments/mait{ + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/airlock/engineering/glass{ + req_access_txt = "10" + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"tF" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/tech, +/area/ship/science/ai_chamber) +"tG" = ( +/obj/machinery/deepfryer, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen/kitchen) +"tI" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"tJ" = ( +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"tL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/toy/figure/clown{ + pixel_x = -9 + }, +/obj/item/toy/figure/detective{ + pixel_y = 7; + pixel_x = 9 + }, +/obj/structure/closet/wall{ + name = "Toy Storage"; + pixel_y = 28 + }, +/obj/item/toy/figure/engineer{ + pixel_x = 7 + }, +/obj/item/toy/figure/head_of_personnel{ + pixel_x = 4 + }, +/obj/item/toy/figure/geneticist, +/obj/item/toy/figure/dsquad{ + pixel_x = -3 + }, +/obj/item/toy/figure{ + pixel_y = -5 + }, +/obj/item/toy/cattoy, +/obj/item/toy/figure/hos, +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/ship/crew/dorm) +"tN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 2 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"tO" = ( +/obj/machinery/door/airlock/grunge{ + name = "Bathroom"; + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"tP" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_sm_1"; + rad_insulation = 0.1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"tR" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 6 + }, +/obj/machinery/atmospherics/components/trinary/mixer/airmix, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"tS" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 10 + }, +/obj/structure/closet/secure_closet/security/sec, +/obj/item/ammo_box/magazine/co9mm, +/obj/machinery/camera{ + dir = 10 + }, +/obj/item/gun/energy/disabler{ + pixel_y = -2; + pixel_x = 3 + }, +/obj/item/storage/belt/security/webbing, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"tT" = ( +/obj/effect/turf_decal/trimline/opaque/beige/filled/line{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"tU" = ( +/obj/structure/sink{ + pixel_y = 20; + pixel_x = 1 + }, +/obj/structure/mirror{ + pixel_y = 32; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/radio/intercom/directional/east, +/obj/machinery/light_switch{ + pixel_x = 21; + dir = 8; + pixel_y = -13 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/crew/toilet) +"tV" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/industrial/outline/red, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"tY" = ( +/obj/effect/turf_decal/siding/wideplating/dark, +/obj/effect/turf_decal/trimline/opaque/red/warning, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"ub" = ( +/obj/effect/turf_decal/techfloor, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"uf" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"ug" = ( +/obj/effect/turf_decal/trimline/opaque/bottlegreen/line{ + dir = 1 + }, +/obj/item/storage/firstaid/regular{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/structure/rack, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/item/storage/firstaid/toxin{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/storage/firstaid/medical{ + pixel_x = -5; + pixel_y = -1 + }, +/obj/item/storage/firstaid/fire{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/structure/sign/poster/official/moth/epi{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"uj" = ( +/obj/effect/turf_decal/trimline/opaque/red/filled/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/red/filled/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/red/arrow_ccw{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/red/arrow_ccw{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/stand_clear/white{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"uk" = ( +/obj/structure/tank_dispenser, +/obj/structure/grille/broken, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-1" + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"un" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/bridge) +"uo" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/machinery/camera{ + dir = 5 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"up" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/fluff/big_chain{ + pixel_x = 18; + color = "#808080"; + density = 0 + }, +/obj/structure/railing{ + dir = 4; + layer = 4.1; + color = "#808080" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/elevatorshaft, +/area/ship/science/robotics) +"ur" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"uy" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/aft) +"uF" = ( +/obj/structure/bed, +/obj/item/bedsheet/head_of_personnel, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-1" + }, +/turf/open/floor/carpet/royalblue, +/area/ship/crew/dorm/dormthree) +"uG" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor/hole/right{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 5 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/light/small/directional/south{ + pixel_x = 14 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"uJ" = ( +/turf/open/floor/carpet/red, +/area/ship/security) +"uL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_ai_shutter"; + name = "AI Core Lockdown"; + dir = 4 + }, +/obj/machinery/door/airlock/command{ + req_access_txt = "29"; + name = "AI Core"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/science/ai_chamber) +"uO" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"uQ" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/medical) +"uW" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/effect/decal/cleanable/greenglow{ + pixel_y = -10 + }, +/obj/machinery/light/directional/east, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/item/kirbyplants{ + icon_state = "plant-21" + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"uX" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/computer/cryopod/directional/north{ + pixel_y = 26 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/crew/office) +"uY" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/structure/frame/machine, +/obj/effect/turf_decal/industrial/warning{ + dir = 4; + color = "#808080" + }, +/obj/structure/grille/broken, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"uZ" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1; + color = "#808080" + }, +/turf/open/floor/plasteel/elevatorshaft, +/area/ship/science/robotics) +"vg" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"vh" = ( +/obj/structure/sign/poster/official/moth/delam{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 10 + }, +/obj/machinery/light/directional/south, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"vi" = ( +/obj/effect/turf_decal/techfloor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/wallmed{ + pixel_y = -28 + }, +/obj/machinery/button/door{ + id = "armoury_heron"; + name = "Armoury Shutters"; + pixel_y = -24; + req_access_txt = "3"; + dir = 1; + pixel_x = -11 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"vl" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/structure/sign/poster/retro/science{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"vm" = ( +/obj/effect/turf_decal/siding/thinplating, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"vp" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_bridgeprivacy"; + name = "Blast Shutters" + }, +/obj/structure/window/reinforced/fulltile/shuttle, +/obj/structure/grille, +/turf/open/floor/plating, +/area/ship/bridge) +"vu" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/layer_manifold/visible, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"vv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/canteen/kitchen) +"vw" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/wood, +/area/ship/crew/dorm/dormtwo) +"vx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"vz" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "Helm" + }, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/bridge) +"vC" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/recharger{ + pixel_x = 8 + }, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/pen/red{ + pixel_x = -7; + pixel_y = 3 + }, +/obj/structure/sign/poster/retro/nanotrasen_logo_70s{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"vE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"vI" = ( +/obj/machinery/suit_storage_unit/inherit/industrial, +/obj/item/clothing/suit/space/hardsuit/engine/elite, +/obj/item/tank/jetpack/carbondioxide, +/obj/item/clothing/shoes/magboots, +/obj/machinery/light_switch{ + pixel_x = -12; + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"vL" = ( +/obj/machinery/air_sensor/atmos/toxin_tank{ + id_tag = "heron_plasm" + }, +/turf/open/floor/engine/plasma, +/area/ship/engineering/atmospherics) +"vO" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"vP" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/scrubber/huge/movable, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"vS" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/power/emitter/welded{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-1" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"vT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/button/door{ + dir = 4; + id = "heron_atmos"; + name = "Atmos Shutters"; + pixel_x = -24; + pixel_y = -10 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"vY" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 8 + }, +/obj/structure/sign/departments/restroom{ + pixel_x = -32 + }, +/obj/machinery/camera{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"wa" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"wc" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"wd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/door/airlock/external, +/turf/open/floor/plating, +/area/ship/security) +"wi" = ( +/obj/machinery/atmospherics/components/unary/thermomachine{ + dir = 1; + piping_layer = 2 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"wj" = ( +/obj/item/storage/pill_bottle/aranesp, +/obj/item/taperecorder, +/obj/item/t_scanner, +/obj/item/switchblade, +/obj/item/trash/candy, +/obj/structure/filingcabinet/double, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/law_office) +"wk" = ( +/obj/machinery/power/supermatter_crystal/engine, +/turf/open/floor/engine, +/area/ship/engineering/engine) +"wl" = ( +/obj/structure/table/optable{ + name = "Robotics Operating Table" + }, +/obj/machinery/defibrillator_mount/loaded{ + pixel_y = 24 + }, +/obj/effect/turf_decal/corner/opaque/blue/full, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/light_switch{ + pixel_y = 22; + pixel_x = -9 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"wo" = ( +/obj/structure/sign/poster/official/report_crimes{ + pixel_y = 32 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6; + layer = 2.030 + }, +/obj/effect/turf_decal/siding/thinplating{ + layer = 2.040; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"wp" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "Operations" + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"wq" = ( +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/effect/turf_decal/corner_techfloor_gray/diagonal{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/maintenance/five, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel/dark, +/area/ship/storage) +"wz" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"wD" = ( +/obj/item/trash/pistachios{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/item/trash/candy, +/turf/open/floor/plasteel/tech/grid, +/area/ship/bridge) +"wF" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black/half, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"wG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/structure/chair/office{ + dir = 1 + }, +/obj/item/radio/intercom/directional/east, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 7; + pixel_y = -21 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"wK" = ( +/obj/effect/turf_decal/trimline/opaque/blue/warning, +/obj/effect/turf_decal/siding/thinplating/corner, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 8 + }, +/obj/machinery/door/airlock/public/glass{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"wM" = ( +/obj/machinery/door/poddoor/shutters{ + id = "heron_custo_shutter" + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/maintenance/central) +"wO" = ( +/obj/structure/flora/junglebush/large, +/obj/structure/flora/rock/jungle{ + pixel_x = -11; + pixel_y = -10 + }, +/obj/structure/flora/ausbushes/fullgrass, +/turf/open/floor/grass, +/area/ship/hallway/aft) +"wP" = ( +/obj/machinery/atmospherics/components/binary/valve/digital/layer2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"wQ" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"wV" = ( +/obj/machinery/power/smes/engineering, +/obj/effect/turf_decal/industrial/warning{ + dir = 9; + color = "#808080" + }, +/obj/structure/sign/warning/electricshock{ + pixel_y = -30 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/light_switch{ + pixel_x = -12; + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/central) +"wW" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/gec{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"xb" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/blue/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"xd" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"xe" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/structure/closet/emcloset/wall{ + dir = 8; + pixel_x = 28 + }, +/obj/effect/turf_decal/techfloor/hole/right{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/crayon, +/obj/structure/sign/poster/official/wtf_is_co2{ + pixel_y = -32 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"xg" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/office) +"xh" = ( +/obj/structure/closet/secure_closet/head_of_personnel, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/carpet/royalblue, +/area/ship/crew/dorm/dormthree) +"xi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/loading{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"xr" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/blood/old{ + pixel_x = -2; + pixel_y = -3; + icon_state = "gib2-old" + }, +/turf/open/floor/plating, +/area/ship/hangar) +"xs" = ( +/obj/effect/turf_decal/trimline/opaque/blue/corner, +/obj/effect/turf_decal/siding/thinplating/corner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"xt" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 1 + }, +/area/ship/crew/office) +"xw" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"xx" = ( +/obj/effect/turf_decal/borderfloorblack{ + dir = 8 + }, +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/storage/fancy/cigarettes/cigars/cohiba{ + pixel_y = 5 + }, +/obj/item/storage/fancy/cigarettes/cigars/cohiba{ + pixel_y = 9 + }, +/obj/item/lighter/clockwork{ + pixel_x = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/bridge) +"xy" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/bookcase/random/fiction, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/ship/science/robotics) +"xA" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 6 + }, +/obj/machinery/light/directional/east, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 7; + pixel_y = -21 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"xB" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp{ + pixel_x = -4; + pixel_y = 10 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/item/clothing/glasses/hud/diagnostic{ + pixel_y = 5; + pixel_x = 5 + }, +/obj/item/survey_handheld{ + pixel_x = -2 + }, +/obj/item/book/manual/wiki/robotics_cyborgs{ + pixel_y = -1; + pixel_x = 5 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/ship/science/robotics) +"xC" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/item/kirbyplants{ + icon_state = "plant-25" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-1" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"xE" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"xG" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/crew/dorm/dormtwo) +"xO" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"xQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"xU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"xV" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 4 + }, +/area/ship/hangar) +"xW" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ship/hangar) +"xY" = ( +/turf/open/floor/engine/o2, +/area/ship/engineering/atmospherics) +"ya" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/closet/secure_closet{ + icon_state = "cap"; + name = "\proper captain's locker"; + req_access_txt = "20" + }, +/obj/item/clothing/neck/cloak/cap, +/obj/item/radio/headset/heads/captain/alt, +/obj/item/storage/backpack/captain, +/obj/item/clothing/under/rank/centcom/officer, +/obj/item/storage/belt/sabre, +/obj/item/gun/energy/e_gun/adv_stopping, +/obj/item/door_remote/captain, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 7; + pixel_y = -21 + }, +/obj/item/areaeditor/shuttle{ + pixel_x = -3 + }, +/obj/item/megaphone/command, +/obj/item/clothing/suit/toggle/armor/vest/centcom_formal, +/obj/item/clothing/under/rank/centcom/commander, +/obj/item/clothing/under/rank/centcom/centcom_skirt, +/obj/item/clothing/suit/hooded/wintercoat/centcom, +/obj/item/clothing/head/beret/centcom_formal, +/obj/item/stock_parts/cell/gun/upgraded, +/obj/item/clothing/head/centcom_cap, +/obj/item/clothing/gloves/combat, +/turf/open/floor/carpet/green, +/area/ship/crew/dorm/dormtwo) +"yc" = ( +/obj/machinery/atmospherics/components/unary/shuttle/heater{ + dir = 4 + }, +/obj/structure/window/plasma/reinforced/spawner/west, +/obj/structure/window/plasma/reinforced/spawner/east, +/turf/open/floor/plating, +/area/ship/maintenance/central) +"yd" = ( +/obj/structure/railing{ + dir = 1; + layer = 2.9 + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/airalarm/directional/west, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"yg" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/storage/wallet{ + pixel_y = 5; + pixel_x = 5 + }, +/obj/item/newspaper{ + pixel_x = -6 + }, +/obj/item/newspaper{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"ym" = ( +/obj/structure/chair/sofa/left, +/obj/effect/turf_decal/siding/thinplating{ + dir = 5 + }, +/obj/machinery/firealarm/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/structure/sign/poster/official/help_others{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"yn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on{ + dir = 1 + }, +/turf/open/floor/engine/air, +/area/ship/engineering/atmospherics) +"yr" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black/half, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"ys" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"yt" = ( +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/crew/office) +"yu" = ( +/obj/machinery/suit_storage_unit/inherit/industrial, +/obj/item/clothing/suit/space/hardsuit/engine, +/obj/item/tank/jetpack/carbondioxide, +/obj/machinery/light/small/directional/south, +/obj/item/clothing/shoes/magboots, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"yz" = ( +/obj/effect/turf_decal/techfloor/corner{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"yC" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1; + color = "#808080" + }, +/obj/machinery/mass_driver{ + id = "heron_mechlaunch" + }, +/turf/open/floor/plasteel/elevatorshaft, +/area/ship/science/robotics) +"yN" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/maintenance/central) +"yO" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"yP" = ( +/obj/structure/window/reinforced/spawner, +/obj/structure/railing{ + dir = 4; + layer = 3.1 + }, +/obj/machinery/suit_storage_unit/inherit, +/obj/item/clothing/suit/space/hardsuit/ert/sec, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"yQ" = ( +/obj/structure/bookcase/random/fiction, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable{ + icon_state = "0-1" + }, +/obj/machinery/light/directional/west, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/law_office) +"yR" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/science/ai_chamber) +"yS" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/machinery/door/airlock/freezer, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/canteen/kitchen) +"yU" = ( +/obj/effect/turf_decal/trimline/opaque/bottlegreen/line{ + dir = 9 + }, +/obj/machinery/sleeper, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"yV" = ( +/obj/machinery/suit_storage_unit/independent/pilot, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"yW" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"zc" = ( +/obj/effect/turf_decal/trimline/opaque/red/corner, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 2 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"ze" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"zf" = ( +/obj/machinery/computer/secure_data{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"zg" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"zl" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/law_office) +"zo" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"zp" = ( +/obj/effect/turf_decal/techfloor/orange, +/obj/effect/turf_decal/techfloor/orange{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"zu" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"zv" = ( +/obj/structure/rack, +/obj/item/gun/energy/e_gun/dragnet, +/obj/item/grenade/barrier{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/grenade/barrier{ + pixel_x = -6 + }, +/obj/item/deployable_turret_folded{ + pixel_x = 9 + }, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"zw" = ( +/obj/effect/turf_decal/corner_techfloor_gray/diagonal, +/obj/effect/turf_decal/industrial/warning{ + dir = 10 + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, +/obj/effect/spawner/lootdrop/gloves, +/obj/effect/spawner/lootdrop/minor/beret_or_rabbitears, +/obj/effect/decal/cleanable/vomit/old, +/turf/open/floor/plasteel/dark, +/area/ship/storage) +"zB" = ( +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 5 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 5 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"zC" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"zD" = ( +/obj/structure/closet/l3closet/janitor, +/obj/item/watertank/janitor, +/obj/effect/turf_decal/corner/transparent/mauve, +/obj/effect/turf_decal/corner/transparent/lime{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/lime{ + dir = 4 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"zF" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"zJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/table/wood/reinforced, +/obj/item/modular_computer/laptop/preset/civilian{ + pixel_x = -1; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/encryptionkey/nanotrasen{ + pixel_x = 8 + }, +/obj/item/encryptionkey/nanotrasen{ + pixel_x = 8; + pixel_y = 3 + }, +/obj/item/encryptionkey/nanotrasen{ + pixel_x = 8; + pixel_y = 6 + }, +/obj/machinery/light_switch{ + pixel_y = 23 + }, +/turf/open/floor/holofloor/wood, +/area/ship/crew/dorm/dormthree) +"zK" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/camera{ + dir = 5 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"zL" = ( +/obj/structure/closet/secure_closet/freezer/meat/open, +/obj/item/reagent_containers/food/snacks/meat/slab/monkey, +/obj/item/reagent_containers/food/snacks/meat/slab/monkey, +/obj/item/reagent_containers/food/snacks/meat/slab/monkey, +/obj/item/reagent_containers/food/snacks/meat/slab/monkey, +/obj/item/reagent_containers/food/snacks/meat/slab/monkey, +/obj/item/reagent_containers/food/snacks/meat/slab/monkey, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen/kitchen) +"zM" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"zN" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/item/reagent_containers/food/condiment/soysauce{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/condiment/mayonnaise, +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/effect/turf_decal/box/corners, +/obj/machinery/light/small/directional/south, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/crayon{ + icon_state = "Waffle"; + pixel_x = -12 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen/kitchen) +"zP" = ( +/obj/effect/turf_decal/techfloor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"zV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, +/turf/open/floor/engine/plasma, +/area/ship/engineering/atmospherics) +"zW" = ( +/obj/structure/table/wood/reinforced, +/obj/item/modular_computer/laptop/preset/civilian{ + pixel_x = -1; + pixel_y = 3 + }, +/obj/item/paper/fluff/stations/centcom/broken_evac{ + pixel_x = 12 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/law_office) +"zX" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/dorm) +"Ab" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_sm_1"; + rad_insulation = 0.1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"Ac" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"Ag" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating, +/area/ship/engineering) +"Ah" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/departments/cargo{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Aj" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "0-1" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"Ak" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/engineering/communications) +"Al" = ( +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/official/safety_report{ + pixel_y = 32; + pixel_x = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Am" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 9 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"Ao" = ( +/obj/machinery/photocopier{ + pixel_y = 3 + }, +/obj/machinery/camera, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"Ap" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Aq" = ( +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"As" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/cargo) +"Ax" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/light_switch{ + pixel_y = 23 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"Ay" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 22; + pixel_y = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"AA" = ( +/obj/effect/turf_decal/techfloor/orange, +/obj/effect/turf_decal/techfloor/orange{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"AC" = ( +/obj/machinery/door/poddoor{ + id = "heron_mechbayshut"; + name = "Mechbay Shutters" + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/science/robotics) +"AD" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/siding/white, +/turf/open/floor/plasteel/patterned, +/area/ship/bridge) +"AF" = ( +/obj/structure/table/wood/reinforced, +/obj/item/documents/nanotrasen, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/law_office) +"AG" = ( +/obj/machinery/advanced_airlock_controller{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security) +"AN" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/hyper{ + pixel_y = 4; + pixel_x = 5 + }, +/obj/structure/sign/poster/official/moth/hardhats{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"AW" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/walnut, +/area/ship/crew/dorm) +"Bc" = ( +/obj/effect/turf_decal/trimline/opaque/blue/corner, +/obj/effect/turf_decal/siding/thinplating/corner, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"Bg" = ( +/obj/effect/turf_decal/trimline/opaque/red/warning{ + dir = 6 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Bn" = ( +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) +"Bo" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/decal/cleanable/greenglow/ecto, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"Bp" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"Br" = ( +/obj/effect/turf_decal/techfloor/orange, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Bt" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-1" + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"Bu" = ( +/turf/closed/wall/r_wall, +/area/ship/engineering/engine) +"Bv" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/industrial/outline, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"Bx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"BB" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"BG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/airlock/engineering{ + name = "Engineering"; + req_access_txt = "10"; + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"BJ" = ( +/obj/structure/closet/emcloset/wall{ + dir = 4; + pixel_x = -28 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security) +"BL" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 4 + }, +/area/ship/hangar) +"BN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 4 + }, +/area/ship/crew/office) +"BO" = ( +/obj/structure/bookcase/random/fiction, +/obj/structure/noticeboard{ + pixel_y = 31 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"BP" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"BR" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"BT" = ( +/obj/effect/turf_decal/steeldecal/steel_decals10, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 10 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/maintenance/central) +"BV" = ( +/obj/item/kirbyplants{ + icon_state = "plant-10" + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/bridge) +"BW" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/science/robotics) +"Cd" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on, +/turf/open/floor/engine/o2, +/area/ship/engineering/atmospherics) +"Ck" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/communications) +"Cs" = ( +/obj/machinery/power/smes/shuttle/precharged{ + dir = 4 + }, +/obj/structure/window/plasma/reinforced/spawner/west, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/window/eastright{ + name = "Engine Access" + }, +/turf/open/floor/plating, +/area/ship/engineering) +"Cu" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Cv" = ( +/obj/structure/chair/office{ + dir = 4; + name = "tactical swivel chair" + }, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/bridge) +"Cx" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/blue/full, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"Cy" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"CB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_atmos"; + rad_insulation = 0.1; + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"CD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/holopad, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"CH" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"CI" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/corner, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"CK" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black/half{ + dir = 4 + }, +/obj/structure/chair, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"CP" = ( +/obj/structure/bed, +/obj/item/bedsheet/dorms, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/curtain/cloth/grey, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/walnut, +/area/ship/crew/dorm) +"CQ" = ( +/obj/machinery/gibber, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light_switch{ + pixel_x = -22; + dir = 4; + pixel_y = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/canteen/kitchen) +"CR" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"CU" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/canvas/twentythreeXtwentythree{ + desc = "Earnings chart your soul out on this whiteboard!"; + name = "whiteboard"; + pixel_x = 0; + pixel_y = -27 + }, +/obj/item/phone{ + pixel_x = 8; + pixel_y = 3 + }, +/obj/item/paper{ + pixel_x = -8; + pixel_y = -2 + }, +/obj/item/pen/charcoal{ + pixel_x = -7; + pixel_y = -3 + }, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_y = 1; + pixel_x = 5 + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/bridge) +"CW" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 9 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"CZ" = ( +/turf/open/floor/engine/n2, +/area/ship/engineering/atmospherics) +"Dd" = ( +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"De" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Dh" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/item/reagent_containers/food/snacks/pie/cream, +/turf/open/floor/plating, +/area/ship/crew/canteen) +"Dk" = ( +/obj/structure/catwalk/over, +/obj/machinery/advanced_airlock_controller{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/engineering) +"Dn" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/chair/office, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"Dq" = ( +/obj/structure/closet/cardboard/metal, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_x = 4; + pixel_y = -2 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 10 + }, +/obj/effect/turf_decal/arrows{ + dir = 8 + }, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/maintenance/central) +"Dr" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 4 + }, +/obj/machinery/light_switch{ + pixel_x = 22; + dir = 8; + pixel_y = 9 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Ds" = ( +/obj/machinery/recharge_station, +/obj/item/robot_suit/prebuilt, +/obj/effect/decal/cleanable/robot_debris/gib, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/industrial/hatch/yellow, +/turf/open/floor/plasteel/tech, +/area/ship/science/robotics) +"Du" = ( +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/obj/item/storage/box/rubbershot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/rack, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/light/directional/south, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"Dz" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "heron_mechbayshut"; + name = "Mechbay Shutters"; + pixel_x = -24; + pixel_y = -10; + dir = 4 + }, +/obj/machinery/button/shieldwallgen{ + id = "heron_mechbayholo"; + pixel_x = -22; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"DE" = ( +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/machinery/computer/rdconsole/robotics{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"DF" = ( +/obj/machinery/computer/security{ + dir = 4 + }, +/obj/machinery/light/directional/west{ + light_color = "#e8eaff" + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"DI" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor/hole{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"DM" = ( +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"DS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"DT" = ( +/obj/effect/turf_decal/trimline/opaque/blue/warning, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/corner, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"DW" = ( +/obj/structure/chair/comfy/black, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/carpet/red, +/area/ship/security) +"DX" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"DY" = ( +/obj/effect/turf_decal/siding/thinplating/corner, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/warning, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Ea" = ( +/obj/machinery/door/airlock{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/patterned, +/area/ship/crew/toilet) +"Ec" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Ed" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"Ee" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/steeldecal/steel_decals1{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/science/robotics) +"Ef" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/glass/bottle/dexalin{ + pixel_y = 3; + pixel_x = 8 + }, +/obj/item/reagent_containers/glass/bottle/epinephrine{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/item/storage/box/bodybags{ + pixel_x = -7; + pixel_y = 9 + }, +/obj/item/reagent_containers/syringe{ + pixel_x = 3 + }, +/obj/machinery/airalarm/directional/west, +/obj/item/reagent_containers/hypospray/combat{ + pixel_x = -4; + pixel_y = -5 + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/medical) +"Eg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm/dormthree) +"Ei" = ( +/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/effect/turf_decal/corner/opaque/brown/diagonal, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/cargo) +"Ej" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"Ek" = ( +/obj/effect/turf_decal/trimline/opaque/blue/warning, +/obj/effect/turf_decal/siding/thinplating/corner, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"El" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/storage) +"Em" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/obj/effect/turf_decal/industrial/outline/red, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"En" = ( +/obj/machinery/door/poddoor/multi_tile/three_tile_ver, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hangar) +"Ep" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/ship/crew/law_office) +"Er" = ( +/obj/structure/sink/kitchen{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "old sink"; + pixel_y = 28 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/canteen/kitchen) +"Es" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"Et" = ( +/obj/structure/chair/sofa/right, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"Ev" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/machinery/vending/tool, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"Ez" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black/three_quarters{ + dir = 1 + }, +/obj/item/kirbyplants/random, +/obj/effect/decal/cleanable/wrapping, +/obj/machinery/camera{ + dir = 10 + }, +/obj/structure/railing/wood{ + layer = 3.1; + dir = 8 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"ED" = ( +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"EF" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/fluff/big_chain{ + pixel_x = -18; + color = "#808080"; + density = 0 + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1; + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/elevatorshaft, +/area/ship/science/robotics) +"EI" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/power{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"EJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/bridge) +"EK" = ( +/obj/machinery/medical_kiosk, +/obj/machinery/vending/wallmed{ + pixel_x = -27 + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/mono/white, +/area/ship/medical) +"EO" = ( +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"EQ" = ( +/obj/machinery/autolathe, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 4 + }, +/obj/machinery/camera{ + dir = 10 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"EZ" = ( +/obj/machinery/button/door{ + dir = 8; + id = "heron_atmos"; + name = "Atmos Shutters"; + pixel_x = 23; + pixel_y = -10 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"Fj" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/patterned, +/area/ship/crew/toilet) +"Fk" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/airlock/security/glass{ + req_one_access_txt = "1" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Fm" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"Fn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/light/broken/directional/west, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/crew/office) +"Fp" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/machinery/door/airlock, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/crew/dorm) +"Ft" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Fu" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/line{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/sign/warning/nosmoking{ + pixel_y = 32 + }, +/obj/machinery/vending/wardrobe/engi_wardrobe, +/obj/effect/turf_decal/industrial/hatch/yellow, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"Fv" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/ship/security) +"Fy" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/decal/cleanable/robot_debris/gib{ + pixel_x = -4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"Fz" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/security) +"FG" = ( +/obj/machinery/power/smes/engineering, +/obj/effect/turf_decal/industrial/warning{ + dir = 10; + color = "#808080" + }, +/obj/item/toy/figure/engineer{ + pixel_x = 9; + pixel_y = 12 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/central) +"FH" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"FI" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"FJ" = ( +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 5 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"FL" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/ship/cargo) +"FM" = ( +/obj/effect/turf_decal/box, +/obj/structure/janitorialcart, +/obj/item/reagent_containers/glass/bucket{ + pixel_y = -5; + pixel_x = 5 + }, +/obj/item/mop, +/obj/item/pushbroom, +/obj/machinery/light_switch{ + pixel_x = -22; + dir = 4; + pixel_y = 8 + }, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"FP" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"FR" = ( +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"FS" = ( +/obj/machinery/door/airlock/engineering/glass{ + req_access_txt = "10" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"FT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/structure/closet/wall{ + name = "Utility Closet"; + dir = 4; + pixel_x = -28 + }, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/radio{ + desc = "An old handheld radio. You could use it, if you really wanted to."; + icon_state = "radio"; + name = "old radio"; + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/radio{ + desc = "An old handheld radio. You could use it, if you really wanted to."; + icon_state = "radio"; + name = "old radio"; + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/radio{ + desc = "An old handheld radio. You could use it, if you really wanted to."; + icon_state = "radio"; + name = "old radio"; + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/radio{ + desc = "An old handheld radio. You could use it, if you really wanted to."; + icon_state = "radio"; + name = "old radio"; + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/radio{ + desc = "An old handheld radio. You could use it, if you really wanted to."; + icon_state = "radio"; + name = "old radio"; + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/radio{ + desc = "An old handheld radio. You could use it, if you really wanted to."; + icon_state = "radio"; + name = "old radio"; + pixel_x = -5; + pixel_y = 2 + }, +/obj/item/radio{ + desc = "An old handheld radio. You could use it, if you really wanted to."; + icon_state = "radio"; + name = "old radio"; + pixel_x = -5; + pixel_y = 2 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"FY" = ( +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"Ga" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/steeldecal/steel_decals10, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/caution{ + dir = 1; + pixel_y = -5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, +/area/ship/science/robotics) +"Gc" = ( +/obj/effect/turf_decal/techfloor/corner{ + dir = 1 + }, +/obj/effect/turf_decal/steeldecal, +/obj/structure/table/reinforced, +/obj/item/aiModule/core/full/corp{ + pixel_y = -5; + pixel_x = -4 + }, +/obj/item/aiModule/core/full/peacekeeper{ + pixel_y = -2 + }, +/obj/item/aiModule/reset/purge{ + pixel_x = -3 + }, +/obj/item/aiModule/reset{ + pixel_y = 3 + }, +/obj/item/aiModule/core/freeformcore{ + pixel_y = 8; + pixel_x = 3 + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/machinery/light/dim/directional/south, +/obj/machinery/light_switch{ + pixel_x = 22; + dir = 8; + pixel_y = 9 + }, +/turf/open/floor/plasteel/tech, +/area/ship/science/ai_chamber) +"Ge" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/machinery/computer/secure_data/laptop{ + pixel_y = 8; + pixel_x = -2 + }, +/obj/item/spacecash/bundle/c100{ + pixel_x = -3; + pixel_y = -1 + }, +/obj/item/spacecash/bundle/c500{ + pixel_x = -1; + pixel_y = -8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) +"Gf" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/item/radio/intercom/directional/north, +/obj/machinery/camera{ + dir = 6 + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/central) +"Gg" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Gi" = ( +/obj/structure/table/wood/reinforced, +/obj/item/flashlight/lamp/green{ + pixel_x = -6; + pixel_y = 13 + }, +/obj/effect/turf_decal/siding/wood, +/obj/item/virgin_mary{ + pixel_y = 25; + pixel_x = 10 + }, +/obj/item/paper_bin{ + pixel_x = 7; + pixel_y = 4 + }, +/obj/item/storage/photo_album/library{ + pixel_x = -3; + pixel_y = -2 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"Gj" = ( +/obj/effect/turf_decal/siding/wideplating/dark, +/obj/effect/turf_decal/trimline/opaque/red/line, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Gk" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Gl" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"Gn" = ( +/obj/machinery/power/smes/engineering, +/obj/effect/turf_decal/industrial/warning{ + dir = 6; + color = "#808080" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/central) +"Gp" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning, +/obj/item/kirbyplants{ + icon_state = "plant-25"; + pixel_x = 11 + }, +/obj/effect/decal/cleanable/glass{ + pixel_x = 11; + pixel_y = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"Gq" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass{ + dir = 8; + pixel_y = -10; + color = "#808080" + }, +/turf/open/floor/plating, +/area/ship/hangar) +"Gr" = ( +/obj/structure/sink{ + pixel_y = 20; + pixel_x = 1 + }, +/obj/structure/mirror{ + pixel_y = 32; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/patterned, +/area/ship/crew/toilet) +"Gt" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1; + name = "Communications Chair" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/bridge) +"Gu" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_y = 3; + pixel_x = 5 + }, +/obj/item/pen{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/stamp/hos{ + pixel_y = 9; + pixel_x = -6 + }, +/obj/item/stamp/denied{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/stamp{ + pixel_x = -6; + pixel_y = -1 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"GF" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 10 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/crew/office) +"GJ" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"GL" = ( +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 9 + }, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 8 + }, +/obj/effect/turf_decal/steeldecal/steel_decals1{ + dir = 10 + }, +/obj/machinery/computer/aifixer{ + dir = 4; + pixel_x = -8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/camera/motion{ + dir = 10 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/science/ai_chamber) +"GM" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/stock_parts/cell/high, +/obj/effect/turf_decal/industrial/warning{ + dir = 4; + color = "#808080" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"GP" = ( +/obj/effect/turf_decal/corner/opaque/blue/full, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/smartfridge/organ{ + pixel_x = 32; + density = 0 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"GT" = ( +/obj/effect/turf_decal/trimline/opaque/beige/filled/line{ + dir = 10 + }, +/obj/effect/spawner/lootdrop/salvage_50, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"GZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/bridge) +"Hc" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"He" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/engineering/electrical) +"Hh" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/AIcore, +/obj/item/circuitboard/aicore, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/science/ai_chamber) +"Hi" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/walnut, +/area/ship/crew/dorm) +"Hl" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/ship/hallway/aft) +"Hm" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/soap, +/obj/structure/curtain/bounty, +/obj/machinery/shower{ + pixel_y = 19 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/catwalk_floor, +/area/ship/security) +"Hu" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"HA" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "0-1" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"HG" = ( +/obj/structure/closet/secure_closet/freezer/wall{ + dir = 4; + pixel_x = -28 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/holopad, +/obj/effect/turf_decal/siding/white{ + dir = 9 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/obj/item/reagent_containers/food/snacks/grown/corn{ + pixel_x = -2; + pixel_y = 11 + }, +/obj/item/reagent_containers/food/snacks/grown/corn{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/reagent_containers/food/snacks/grown/tomato{ + pixel_x = -9; + pixel_y = 2 + }, +/obj/item/reagent_containers/food/snacks/grown/tomato{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/reagent_containers/food/snacks/grown/soybeans{ + pixel_x = 4; + pixel_y = 1 + }, +/obj/item/reagent_containers/food/snacks/grown/soybeans{ + pixel_x = 4; + pixel_y = -1 + }, +/obj/item/reagent_containers/food/snacks/grown/onion{ + pixel_x = -8; + pixel_y = -6 + }, +/obj/item/reagent_containers/food/snacks/grown/onion{ + pixel_x = -4; + pixel_y = -8 + }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"HH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/wood/end, +/obj/machinery/airalarm/directional/west, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/wood, +/area/ship/crew/dorm/dormtwo) +"HO" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/stamp/head_of_personnel{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/stamp/captain{ + pixel_x = -7; + pixel_y = 4 + }, +/obj/item/folder/blue{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/pen/fountain/captain{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/reagent_containers/food/drinks/bottle/cognac{ + pixel_x = 6 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = 6; + pixel_y = -5 + }, +/obj/item/storage/pill_bottle/neurine{ + pixel_y = -10; + pixel_x = -5 + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) +"HP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/siding/white, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"HR" = ( +/obj/item/clothing/gloves/color/captain/nt, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/law_office) +"HT" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/item/reagent_containers/food/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/food/condiment/saltshaker{ + desc = "Salt. From space oceans, presumably. A staple of modern medicine."; + pixel_x = -8; + pixel_y = 12 + }, +/obj/item/toy/figure/chef, +/turf/open/floor/plating, +/area/ship/crew/canteen) +"HV" = ( +/obj/effect/turf_decal/siding/wideplating/dark, +/obj/effect/turf_decal/trimline/opaque/red/line, +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"HW" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"HY" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"Id" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/holopad/emergency/command, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/law_office) +"Ih" = ( +/obj/effect/turf_decal/techfloor, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 7; + pixel_y = -21 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/crew/office) +"Ij" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/techfloor, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"Ik" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/holopad, +/turf/open/floor/plating, +/area/ship/engineering) +"Im" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"Io" = ( +/obj/structure/closet/wall/orange{ + name = "Pilot's Locker"; + pixel_y = 28 + }, +/obj/item/clothing/under/rank/security/officer/military/eng, +/obj/item/clothing/suit/jacket/leather/duster, +/obj/item/clothing/suit/jacket/miljacket, +/obj/item/clothing/head/beret/lt, +/obj/item/clothing/suit/armor/vest/marine, +/obj/item/instrument/piano_synth/headphones/spacepods{ + pixel_x = -5; + pixel_y = -1 + }, +/obj/item/clothing/neck/shemagh, +/obj/item/reagent_containers/spray/pepper{ + pixel_x = 7; + pixel_y = -6 + }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/hangar) +"Ip" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/snacks/mint, +/obj/item/reagent_containers/food/condiment/enzyme{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/reagent_containers/food/condiment/sugar{ + pixel_x = 5; + pixel_y = 5 + }, +/obj/item/reagent_containers/glass/beaker, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen/kitchen) +"Ix" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) +"Iz" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"IA" = ( +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/effect/turf_decal/trimline/opaque/beige/filled/corner, +/obj/effect/turf_decal/corner/opaque/yellow/full, +/obj/effect/turf_decal/corner/opaque/yellow/diagonal, +/obj/item/radio/intercom/directional/south, +/obj/machinery/firealarm/directional/south, +/obj/structure/frame/computer{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"IC" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/foam_force_ad{ + pixel_y = 32 + }, +/obj/machinery/vending/clothing, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"IF" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4; + layer = 4.1; + color = "#808080" + }, +/turf/open/floor/plasteel/elevatorshaft, +/area/ship/science/robotics) +"II" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/canteen/kitchen) +"IP" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/light/directional/north, +/turf/open/floor/plating, +/area/ship/hangar) +"IS" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/carpet/red, +/area/ship/security) +"IT" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/structure/sign/departments/custodian{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"IY" = ( +/turf/closed/wall/r_wall, +/area/ship/engineering/electrical) +"Jf" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/techfloor/hole{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"Jh" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/camera{ + dir = 9 + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"Jm" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/borderfloor{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/blue/full, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/airlock/command/glass{ + req_access_txt = "19"; + name = "Bridge"; + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_bridgeprivacy"; + name = "Blast Shutters"; + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/bridge) +"Jp" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"Jq" = ( +/obj/machinery/vending/boozeomat, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/canteen) +"Jr" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Jv" = ( +/turf/open/floor/engine, +/area/ship/engineering/engine) +"Jw" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/machinery/fax, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"Jz" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/effect/decal/cleanable/shreds{ + pixel_y = -9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"JA" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/structure/chair/sofa/left, +/obj/structure/sign/poster/official/moth{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"JC" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"JE" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"JH" = ( +/obj/effect/turf_decal/steeldecal/steel_decals6{ + dir = 9 + }, +/obj/machinery/camera{ + dir = 6 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"JJ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6; + layer = 2.030 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"JN" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 9 + }, +/obj/machinery/computer/atmos_control/tank/toxin_tank{ + sensors = list("heron_plasm"="Heron Plasma Tank") + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"JO" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/modular_computer/laptop/preset/civilian{ + pixel_y = 2 + }, +/obj/item/desk_flag/trans{ + pixel_x = -16; + pixel_y = 8 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"JS" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/canteen) +"JU" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6 + }, +/obj/effect/turf_decal/siding/thinplating{ + layer = 2.040 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"JY" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"Kc" = ( +/obj/structure/window/reinforced/spawner, +/obj/structure/railing{ + dir = 8; + layer = 3.1 + }, +/obj/machinery/suit_storage_unit/inherit, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/suit/space/hardsuit/ert/sec, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"Kd" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/decal/cleanable/oil/streak, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"Ke" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"Ki" = ( +/obj/structure/window/plasma/reinforced/spawner/west, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/item/tank/internals/plasma/full, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 + }, +/turf/open/floor/engine, +/area/ship/engineering/electrical) +"Kj" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Ko" = ( +/obj/effect/turf_decal/techfloor/orange, +/obj/effect/turf_decal/techfloor/orange{ + dir = 1 + }, +/obj/structure/sign/poster/official/build{ + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"Kp" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"Kt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/crayon{ + icon_state = "engie"; + pixel_x = 2; + pixel_y = 1 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/ship/hangar) +"Kv" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/button/door{ + dir = 4; + id = "heron_sm_1"; + name = "Sm Access Shutters"; + pixel_x = -23 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"Kz" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"KC" = ( +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"KF" = ( +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 10 + }, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 8 + }, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 9 + }, +/obj/machinery/light/directional/east, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/machinery/power/terminal, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/camera{ + dir = 9 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/maintenance/central) +"KG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/chair/office/light{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"KH" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/opaque/red/warning{ + dir = 5 + }, +/obj/machinery/button/door{ + id = "armoury_heron"; + name = "Armoury Shutters"; + pixel_y = 24; + req_access_txt = "3" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"KK" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/blue, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"KN" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"KO" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_outerbridge"; + name = "Blast Shutters"; + dir = 4 + }, +/obj/structure/window/reinforced/fulltile/shuttle, +/obj/structure/grille, +/turf/open/floor/plating, +/area/ship/bridge) +"KQ" = ( +/obj/structure/chair/sofa/left, +/obj/effect/decal/cleanable/blood/old, +/obj/item/toy/plush/moth{ + pixel_x = 3 + }, +/turf/open/floor/carpet/green, +/area/ship/crew/dorm) +"KS" = ( +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/machinery/computer/mech_bay_power_console, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/science/robotics) +"KT" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"KZ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 5 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"Lf" = ( +/obj/machinery/telecomms/broadcaster/preset_right{ + network = "nt_commnet" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/power/apc/auto_name/directional/east, +/turf/open/floor/circuit/telecomms{ + initial_gas_mix = "o2=22;n2=82;TEMP=293.15" + }, +/area/ship/engineering/communications) +"Lh" = ( +/obj/structure/filingcabinet/double{ + pixel_x = 6 + }, +/obj/effect/turf_decal/spline/fancy/opaque/blue{ + dir = 8 + }, +/obj/item/storage/pill_bottle/mannitol{ + pixel_x = 14; + pixel_y = -6 + }, +/obj/item/storage/wallet/random, +/obj/item/survey_handheld, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"Ll" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Lo" = ( +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 1 + }, +/area/ship/bridge) +"Ly" = ( +/obj/structure/railing/corner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/siding/white, +/turf/open/floor/plasteel/patterned, +/area/ship/bridge) +"Lz" = ( +/obj/effect/turf_decal/techfloor/corner{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/plasma, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"LC" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"LE" = ( +/obj/effect/turf_decal/trimline/opaque/bottlegreen/line{ + dir = 4 + }, +/obj/structure/bed/roller, +/obj/item/bedsheet/medical, +/obj/machinery/iv_drip, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"LI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/button/door{ + dir = 8; + id = "heron_sm_1"; + name = "Sm Access Shutters"; + pixel_x = 23 + }, +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"LJ" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"LM" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"LN" = ( +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"LO" = ( +/obj/structure/chair/sofa{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/toy/plush/hornet/gay{ + layer = 2.1; + pixel_y = 12; + pixel_x = 4 + }, +/turf/open/floor/carpet/green, +/area/ship/crew/dorm) +"LP" = ( +/obj/item/inducer, +/obj/structure/rack, +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 3 + }, +/obj/item/storage/toolbox/electrical{ + pixel_y = -1; + pixel_x = 6 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"LS" = ( +/obj/machinery/computer/cargo/express{ + dir = 8 + }, +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/effect/turf_decal/corner/opaque/yellow/full, +/obj/effect/turf_decal/corner/opaque/yellow/diagonal, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/cargo) +"LT" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"LX" = ( +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/pistol/commander{ + pixel_y = -3; + pixel_x = -2 + }, +/obj/item/gun/ballistic/automatic/pistol/commander{ + pixel_x = -2 + }, +/obj/item/gun/ballistic/automatic/pistol/commander{ + pixel_y = 3; + pixel_x = -2 + }, +/obj/structure/window/reinforced/spawner, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"LY" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 4 + }, +/obj/machinery/camera{ + dir = 10 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"Mb" = ( +/obj/structure/railing, +/obj/structure/closet/crate/bin, +/obj/machinery/button/door{ + id = "heron_bridgeprivacy"; + name = "Privacy Shutters"; + pixel_y = 9; + req_access_txt = "3"; + pixel_x = 22; + dir = 8 + }, +/obj/effect/turf_decal/siding/white, +/turf/open/floor/plasteel/patterned, +/area/ship/bridge) +"Me" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"Mf" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/south, +/turf/open/floor/plating, +/area/ship/hangar) +"Mg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/wall{ + dir = 1; + icon_door = null; + name = "Office Supplies"; + pixel_y = -28 + }, +/obj/item/storage/briefcase, +/obj/item/storage/secure/briefcase{ + pixel_y = -3; + pixel_x = 3 + }, +/obj/item/paper_bin/bundlenatural{ + pixel_x = -8; + pixel_y = -4 + }, +/obj/item/storage/photo_album/Captain{ + pixel_y = -11; + pixel_x = 3 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"Mm" = ( +/turf/template_noop, +/area/template_noop) +"Mn" = ( +/obj/effect/turf_decal/corner/transparent/mauve, +/obj/effect/turf_decal/corner/transparent/lime{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"Mo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"Mp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"Mr" = ( +/obj/effect/turf_decal/techfloor/orange/corner{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor/orange/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Mt" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"Mu" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/steeldecal/steel_decals4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"Mv" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/line{ + dir = 10 + }, +/obj/structure/railing{ + dir = 10; + layer = 4.1 + }, +/obj/structure/rack, +/obj/item/circuitboard/machine/shuttle/engine/electric{ + pixel_x = -1; + pixel_y = -3 + }, +/obj/item/circuitboard/machine/shuttle/engine/electric{ + pixel_x = 1; + pixel_y = 1 + }, +/obj/item/circuitboard/machine/shuttle/engine/electric{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/item/circuitboard/machine/shuttle/smes, +/obj/item/circuitboard/machine/shuttle/smes, +/obj/item/circuitboard/machine/shuttle/smes, +/obj/item/circuitboard/machine/shuttle/smes, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"My" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/machinery/pipedispenser, +/obj/effect/turf_decal/industrial/warning{ + dir = 4; + color = "#808080" + }, +/obj/machinery/light/small/directional/west, +/obj/machinery/button/door{ + dir = 4; + id = "heron_engineblast"; + name = "Engine Shutters"; + pixel_x = -23; + pixel_y = 10 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"Mz" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/storage/belt/utility/atmostech{ + pixel_y = 6; + pixel_x = 4 + }, +/obj/item/pipe_dispenser, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"MA" = ( +/obj/structure/chair/office{ + dir = 4; + name = "tactical swivel chair" + }, +/obj/effect/turf_decal/steeldecal/steel_decals6, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/bridge) +"MB" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black/half{ + dir = 4 + }, +/obj/structure/table, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"MD" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/cargo) +"ME" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"MF" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"MI" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"MK" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/canvas/twentythreeXtwentythree{ + desc = "Earnings chart your soul out on this whiteboard!"; + name = "whiteboard"; + pixel_x = 7; + pixel_y = -27 + }, +/obj/item/documents/nanotrasen, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/bridge) +"ML" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/machinery/light/directional/west{ + light_color = "#e8eaff" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"MM" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/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"; + pixel_x = -5; + pixel_y = 10 + }, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = -9; + pixel_y = 2 + }, +/obj/item/trash/semki{ + pixel_y = 7; + pixel_x = 5 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"MN" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"MO" = ( +/obj/effect/turf_decal/corner_techfloor_gray/diagonal, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/get_your_legs{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/dark, +/area/ship/storage) +"MP" = ( +/obj/structure/closet/secure_closet{ + icon_door = "tac"; + icon_state = "tac"; + name = "boarding tools locker"; + req_access_txt = "3" + }, +/obj/item/storage/backpack/duffelbag/syndie/x4{ + icon_state = "duffel-sec"; + name = "breaching charges duffel bag" + }, +/obj/item/crowbar/power{ + pixel_y = -4 + }, +/obj/item/grenade/frag{ + pixel_x = 6; + pixel_y = -3 + }, +/obj/item/grenade/frag{ + pixel_x = 6; + pixel_y = -3 + }, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"MS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/purple/hidden{ + dir = 8 + }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating, +/area/ship/engineering) +"MT" = ( +/obj/structure/closet/wall{ + dir = 8; + icon_door = "red_wall"; + name = "Roboticists Locker"; + pixel_x = 28 + }, +/obj/item/clothing/suit/longcoat/roboblack, +/obj/item/clothing/suit/longcoat/robowhite, +/obj/item/clothing/head/beret/sci, +/obj/item/clothing/gloves/color/latex, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/turf_decal/arrows{ + dir = 1; + pixel_y = -12 + }, +/obj/effect/decal/cleanable/wrapping, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/science/robotics) +"MV" = ( +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/effect/turf_decal/techfloor{ + dir = 10 + }, +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/machinery/fax, +/obj/item/radio/intercom/wideband/directional/west{ + pixel_y = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) +"MZ" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/canteen/kitchen) +"Na" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"Nh" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Ni" = ( +/obj/effect/turf_decal/corner/opaque/yellow/full, +/obj/effect/turf_decal/corner/opaque/yellow/diagonal, +/turf/open/floor/plasteel, +/area/ship/cargo) +"Nj" = ( +/obj/effect/turf_decal/techfloor, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/bridge) +"Nm" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Nq" = ( +/obj/effect/turf_decal/trimline/opaque/beige/filled/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/cargo) +"Nr" = ( +/obj/effect/turf_decal/atmos/air, +/turf/open/floor/engine/air, +/area/ship/engineering/atmospherics) +"Nt" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"Nv" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"Nx" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/arrow_cw{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"Ny" = ( +/obj/item/clothing/shoes/workboots, +/obj/item/clothing/suit/hazardvest, +/obj/item/clothing/under/rank/engineering/engineer/nt, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/head/welding, +/obj/item/clothing/head/hardhat/weldhat, +/obj/item/clothing/suit/toggle/hazard, +/obj/item/storage/backpack/industrial, +/obj/item/clothing/head/beret/eng/hazard, +/obj/item/clothing/glasses/meson/engine, +/obj/structure/closet/wall/orange{ + name = "Engineering locker"; + pixel_y = 28 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/belt/utility/full/engi{ + pixel_y = -10; + pixel_x = 5 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"NC" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/steeldecal/steel_decals2, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/bridge) +"NE" = ( +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/corner_techfloor_gray/diagonal{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/ore_box, +/turf/open/floor/plasteel/dark, +/area/ship/storage) +"NF" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"NG" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"NI" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on, +/turf/open/floor/engine/plasma, +/area/ship/engineering/atmospherics) +"NK" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_generalwindows"; + name = "Blast Shutters" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile/shuttle, +/turf/open/floor/plating, +/area/ship/crew/canteen/kitchen) +"NM" = ( +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 4 + }, +/area/ship/hangar) +"NQ" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/item/toy/cards/deck{ + pixel_x = -4 + }, +/obj/item/toy/cards/deck/kotahi{ + pixel_x = 6 + }, +/obj/item/storage/pill_bottle/dice{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/storage/pill_bottle/neurine{ + pixel_x = -2; + pixel_y = 6 + }, +/turf/open/floor/carpet/green, +/area/ship/crew/dorm) +"NU" = ( +/obj/machinery/door/airlock/engineering, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"NV" = ( +/obj/structure/window/plasma/reinforced/spawner/east, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/item/tank/internals/plasma/full, +/obj/machinery/atmospherics/pipe/manifold4w/green/visible, +/turf/open/floor/engine, +/area/ship/engineering/electrical) +"NW" = ( +/obj/structure/closet/radiation{ + anchored = 1 + }, +/obj/effect/turf_decal/industrial/radiation{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/radiation{ + dir = 8 + }, +/obj/item/reagent_containers/hypospray/medipen/penacid, +/obj/item/reagent_containers/hypospray/medipen/penacid, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson/prescription, +/obj/item/geiger_counter{ + pixel_x = 1; + pixel_y = -3 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"NY" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/arrow_ccw{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"NZ" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/departments/engineering{ + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"Oa" = ( +/obj/structure/curtain/bounty, +/obj/machinery/shower{ + pixel_y = 13 + }, +/obj/item/soap/nanotrasen, +/turf/open/floor/plating/catwalk_floor, +/area/ship/crew/dorm/dormtwo) +"Ob" = ( +/obj/effect/turf_decal/siding/thinplating{ + layer = 2.040 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 9 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Of" = ( +/obj/structure/closet/wall{ + icon_door = "orange_wall"; + name = "Mining equipment"; + pixel_x = 29; + dir = 8 + }, +/obj/item/storage/bag/ore, +/obj/item/storage/bag/ore, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/clothing/glasses/meson, +/obj/item/gps/mining, +/obj/item/gps/mining, +/obj/effect/turf_decal/corner_techfloor_gray/diagonal{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 6 + }, +/obj/machinery/button/door{ + id = "heron_innercargo"; + name = "Cargohold Shutters"; + pixel_y = -23; + pixel_x = -10; + dir = 1 + }, +/obj/item/pickaxe, +/obj/item/pickaxe/drill, +/turf/open/floor/plasteel/dark, +/area/ship/storage) +"Ol" = ( +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"On" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/machinery/camera{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Oy" = ( +/obj/effect/turf_decal/industrial/outline/orange, +/obj/machinery/atmospherics/components/unary/thermomachine{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"Oz" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 10 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"OD" = ( +/obj/machinery/chem_master/condimaster, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/canteen/kitchen) +"OH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/engineering/communications) +"OJ" = ( +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/bridge) +"OK" = ( +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"OL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"OP" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/engineering/atmospherics) +"OR" = ( +/obj/structure/bed, +/obj/item/bedsheet/dorms, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/curtain/cloth/grey, +/obj/structure/sign/poster/official/help_others{ + pixel_x = -32 + }, +/turf/open/floor/wood/walnut, +/area/ship/crew/dorm) +"OS" = ( +/obj/effect/decal/cleanable/greenglow, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"OT" = ( +/obj/machinery/atmospherics/pipe/manifold/orange/visible/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"Pa" = ( +/obj/structure/curtain/bounty, +/obj/effect/turf_decal/siding/wood/end{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"Pe" = ( +/obj/effect/turf_decal/techfloor/orange, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Pj" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/paper_bin{ + pixel_x = -5; + pixel_y = -13 + }, +/obj/item/pen{ + pixel_x = -5; + pixel_y = -12 + }, +/obj/item/reagent_containers/food/drinks/britcup{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/newspaper{ + pixel_x = -8; + pixel_y = 5 + }, +/obj/item/table_bell{ + pixel_x = 8; + pixel_y = 8 + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/bridge) +"Pm" = ( +/obj/effect/decal/cleanable/robot_debris{ + color = "#808080" + }, +/obj/item/trash/energybar{ + color = "#808080"; + layer = 2; + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/cigbutt{ + anchored = 1; + color = "#808080"; + layer = 2; + pixel_x = -4; + pixel_y = 1 + }, +/obj/effect/decal/cleanable/greenglow{ + color = "#808080" + }, +/obj/item/trash/cheesie{ + color = "#808080"; + pixel_x = 21; + pixel_y = 1 + }, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/effect/decal/fakelattice{ + color = "#808080" + }, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080" + }, +/area/ship/crew/office) +"Pp" = ( +/obj/structure/chair/sofa, +/obj/item/toy/plush/spider, +/turf/open/floor/carpet/green, +/area/ship/crew/dorm) +"Ps" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/grass/jungle/b, +/obj/structure/flora/rock/jungle{ + pixel_x = 1; + pixel_y = 1 + }, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/turf/open/floor/grass, +/area/ship/hallway/aft) +"Pt" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Px" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 6 + }, +/obj/machinery/suit_storage_unit/atmos, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Pz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"PC" = ( +/obj/item/kirbyplants{ + icon_state = "plant-21" + }, +/obj/effect/turf_decal/borderfloorblack{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) +"PI" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/oil/streak, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"PJ" = ( +/obj/machinery/door/poddoor/multi_tile/two_tile_ver, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hangar) +"PK" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/machinery/pipedispenser, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"PO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"PP" = ( +/obj/machinery/computer/security{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) +"PR" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/machinery/light_switch{ + pixel_x = -12; + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"PS" = ( +/obj/machinery/suit_storage_unit/independent/pilot, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/tech, +/area/ship/cargo/office) +"PT" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/clown{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"PZ" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/airlock/security/glass{ + req_one_access_txt = "1" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Qb" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Qf" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/machinery/light/directional/south, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"Qg" = ( +/obj/machinery/processor, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen/kitchen) +"Qi" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"Qj" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 6; + layer = 2.030 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Qm" = ( +/obj/effect/turf_decal/siding/wideplating/dark, +/obj/effect/turf_decal/trimline/opaque/red/line, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Qq" = ( +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/sign/warning/electricshock{ + pixel_y = 31 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"Qr" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/structure/sign/departments/custodian{ + pixel_x = -32 + }, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"Qt" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"Qz" = ( +/obj/machinery/button/door{ + dir = 1; + id = "heron_sm_lockdown"; + name = "Supermatter Lockdown"; + pixel_y = -24 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"QB" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"QE" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/structure/sign/directions/command{ + dir = 4; + pixel_y = -21 + }, +/obj/structure/sign/directions/engineering{ + pixel_y = -33; + dir = 8 + }, +/obj/structure/sign/directions/medical{ + pixel_y = -39 + }, +/obj/structure/sign/directions/security{ + pixel_y = -27; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"QG" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/law_office) +"QJ" = ( +/obj/structure/table, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/clothing/gloves/color/orange, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/storage/box/lights/mixed{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/flashlight{ + pixel_y = 4 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = 10; + pixel_y = 6 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = 10; + pixel_y = 6 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = 10; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/corner/transparent/mauve, +/obj/effect/turf_decal/corner/transparent/lime{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/storage/belt/janitor/full{ + pixel_x = 6; + pixel_y = -2 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"QK" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"QO" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating, +/area/ship/hangar) +"QU" = ( +/obj/machinery/power/smes/shuttle/precharged{ + dir = 4 + }, +/obj/structure/window/plasma/reinforced/spawner/west, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/window/eastleft{ + name = "Engine Access" + }, +/turf/open/floor/plating, +/area/ship/engineering) +"QY" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp{ + pixel_x = -8; + pixel_y = 13 + }, +/obj/item/phone{ + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/areaeditor/shuttle{ + pixel_x = -6; + pixel_y = -2 + }, +/obj/item/trash/chips{ + pixel_x = -5; + pixel_y = -6 + }, +/obj/item/reagent_containers/food/drinks/mug{ + pixel_x = 1; + pixel_y = 4 + }, +/obj/item/clothing/neck/tie/genderfluid, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/sign/poster/official/get_your_legs{ + pixel_x = -32 + }, +/turf/open/floor/plating/catwalk_floor, +/area/ship/science/robotics) +"Ra" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/arrow_cw{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light_switch{ + pixel_x = 22; + dir = 8; + pixel_y = 9 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"Re" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/structure/chair/sofa/right, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Rf" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/airalarm/directional/north, +/obj/item/kirbyplants/random, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"Ru" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"Rv" = ( +/obj/structure/bookcase/random/fiction, +/obj/structure/sign/poster/retro/nanotrasen_logo_80s{ + pixel_y = -32 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"Rx" = ( +/obj/structure/bed, +/obj/item/bedsheet/nanotrasen, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/obj/item/toy/plush/flushed, +/turf/open/floor/carpet/green, +/area/ship/crew/dorm/dormtwo) +"RA" = ( +/obj/effect/turf_decal/corner_techfloor_gray/diagonal, +/obj/effect/turf_decal/industrial/warning{ + dir = 9 + }, +/obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ship/storage) +"RB" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel, +/area/ship/cargo) +"RC" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"RG" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/cargo) +"RH" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 9 + }, +/obj/structure/closet/secure_closet/security/sec, +/obj/item/ammo_box/magazine/co9mm, +/obj/item/gun/energy/disabler{ + pixel_y = -2; + pixel_x = 3 + }, +/obj/item/storage/belt/security/webbing, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"RK" = ( +/obj/structure/table/wood/reinforced, +/obj/item/table_bell{ + pixel_x = 9; + pixel_y = -1 + }, +/obj/item/trash/chips{ + pixel_x = -4; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = -8; + pixel_y = 3 + }, +/obj/item/folder/blue{ + pixel_x = 6; + pixel_y = 12 + }, +/obj/structure/sign/poster/official/work_for_a_future{ + pixel_y = -32 + }, +/obj/machinery/light/directional/south, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/law_office) +"RN" = ( +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"RO" = ( +/obj/machinery/power/smes/shuttle/precharged{ + dir = 4 + }, +/obj/structure/window/plasma/reinforced/spawner/west, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/window/eastleft{ + name = "Engine Access" + }, +/turf/open/floor/plating, +/area/ship/maintenance/central) +"RS" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/crew/canteen/kitchen) +"RU" = ( +/obj/effect/turf_decal/trimline/opaque/bottlegreen/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"RV" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/cargo) +"RX" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/light/directional/west{ + pixel_x = -25 + }, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/hangar) +"Sa" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"Sc" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"Se" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = 5; + pixel_y = 2 + }, +/obj/item/cigbutt/cigarbutt{ + pixel_x = 8; + pixel_y = -1 + }, +/obj/item/toy/plush/knight{ + pixel_x = -8 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"Sf" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"Si" = ( +/obj/effect/turf_decal/industrial/warning/cee{ + dir = 8 + }, +/obj/machinery/suit_storage_unit/inherit, +/obj/item/clothing/suit/space/orange, +/obj/item/clothing/head/helmet/space/orange, +/obj/structure/sign/poster/official/moth/meth{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering) +"Sj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 2 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"Sm" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/hatch{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/crew/dorm/dormthree) +"So" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"Sp" = ( +/obj/structure/chair/office{ + dir = 8; + name = "tactical swivel chair" + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/bridge) +"Sw" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/hangar) +"Sz" = ( +/obj/structure/bed, +/obj/item/bedsheet/dorms, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/curtain/cloth/grey, +/obj/machinery/light/small/directional/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood/walnut, +/area/ship/crew/dorm) +"SB" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/hangar) +"SF" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/ship/hangar) +"SG" = ( +/obj/machinery/power/shieldwallgen/atmos{ + anchored = 1; + dir = 8; + id = "heron_mechbayholo"; + locked = 1 + }, +/obj/structure/cable{ + icon_state = "0-1" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id = "heron_mechbayshut"; + name = "Mechbay Shutters" + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/science/robotics) +"SH" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"SI" = ( +/obj/effect/turf_decal/steeldecal/steel_decals2, +/obj/effect/turf_decal/spline/fancy/opaque/blue{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"SK" = ( +/obj/machinery/rnd/production/techfab/department/security, +/obj/structure/window/reinforced/spawner/north, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security) +"SM" = ( +/obj/structure/closet/cardboard, +/obj/effect/turf_decal/corner_techfloor_gray/diagonal{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 5 + }, +/obj/item/toy/plush/beeplushie, +/obj/effect/spawner/lootdrop/maintenance/four, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/sign/poster/contraband/space_cube{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/dark, +/area/ship/storage) +"SP" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/effect/turf_decal/corner/opaque/brown/diagonal, +/obj/structure/sign/poster/retro/we_watch{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"SQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 10 + }, +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/ship/engineering) +"SS" = ( +/obj/effect/turf_decal/trimline/opaque/red/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wideplating/dark/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"SW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"SX" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"SZ" = ( +/obj/structure/sign/warning/radiation{ + pixel_y = 32 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"Tc" = ( +/obj/structure/window/plasma/reinforced/spawner/east, +/obj/machinery/power/rad_collector/anchored, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/item/tank/internals/plasma/full, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 + }, +/turf/open/floor/engine, +/area/ship/engineering/electrical) +"Td" = ( +/obj/machinery/suit_storage_unit/inherit, +/obj/effect/turf_decal/industrial/warning{ + dir = 9 + }, +/obj/item/clothing/suit/space/orange, +/obj/item/clothing/head/helmet/space/orange, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security) +"Tf" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 10 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ + dir = 1 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Tg" = ( +/obj/effect/turf_decal/steeldecal/steel_decals10, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/effect/decal/cleanable/robot_debris, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "4-9" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/maintenance/central) +"Ti" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/decal/cleanable/glass{ + pixel_x = 13; + pixel_y = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"Tl" = ( +/obj/structure/bookcase/random/fiction, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"To" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/official/fruit_bowl{ + pixel_x = -32 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/crew/law_office) +"Tt" = ( +/obj/structure/rack, +/obj/item/gun/energy/temperature/security{ + pixel_y = 6 + }, +/obj/item/gun/energy/ionrifle, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"Tu" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor/corner, +/obj/effect/turf_decal/techfloor/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/engine) +"Tv" = ( +/obj/structure/closet/crate/freezer/blood, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/light/directional/west, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/medical) +"TB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"TD" = ( +/obj/effect/turf_decal/techfloor/corner, +/obj/effect/turf_decal/techfloor/corner{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor/corner{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/engine) +"TE" = ( +/obj/structure/table, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = -5; + pixel_y = 16 + }, +/obj/machinery/light/directional/west{ + light_color = "#e8eaff" + }, +/obj/item/gun_voucher/nanotrasen, +/obj/item/detective_scanner{ + pixel_y = -10 + }, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"TG" = ( +/obj/structure/table, +/obj/item/storage/bag/tray, +/obj/item/storage/box/donkpockets{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/reagent_containers/food/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/food/condiment/saltshaker{ + desc = "Salt. From space oceans, presumably. A staple of modern medicine."; + pixel_x = -8; + pixel_y = 12 + }, +/obj/machinery/reagentgrinder{ + pixel_y = 5 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen/kitchen) +"TI" = ( +/turf/closed/wall/mineral/titanium, +/area/ship/science/robotics) +"TN" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 + }, +/obj/machinery/power/shieldwallgen/atmos{ + anchored = 1; + dir = 8; + id = "heron_outercargoholo"; + locked = 1 + }, +/obj/machinery/door/poddoor{ + id = "heron_outercargo"; + name = "Cargo Hatch" + }, +/obj/structure/cable{ + icon_state = "0-1" + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/cargo) +"TO" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/plating, +/area/ship/hangar) +"TR" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/airlock/security/glass{ + req_one_access_txt = "1" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"TT" = ( +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"TV" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/official/the_owl{ + pixel_y = -32 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/ship/crew/dorm) +"TX" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/door/poddoor{ + id = "armoury_heron"; + name = "Armoury Shutters"; + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"TZ" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/machinery/atmospherics/components/binary/pump/layer2{ + dir = 1 + }, +/obj/machinery/light/directional/west{ + light_color = "#e8eaff" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Ub" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/bridge) +"Uc" = ( +/obj/machinery/atmospherics/components/trinary/filter/flipped{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/electrical) +"Uf" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/plaques/kiddie/perfect_man{ + pixel_y = 30; + icon = 'icons/obj/clothing/accessories.dmi'; + icon_state = "gold"; + pixel_x = 8; + name = "medal of exceptional heroism"; + desc = "An extremely rare golden medal awarded only by CentCom. To receive such a medal is the highest honor and as such, very few exist. This medal is almost never awarded to anybody but commanders." + }, +/obj/structure/sign/plaques/kiddie/perfect_man{ + pixel_y = 32; + icon = 'icons/obj/clothing/accessories.dmi'; + icon_state = "silver"; + pixel_x = -4; + name = "\improper Excellence in Bureaucracy Medal"; + desc = "Awarded for exemplary managerial services rendered while under contract with Nanotrasen." + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"Ug" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/grunge{ + name = "Bathroom" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/dorm/dormtwo) +"Ui" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Un" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering) +"Uq" = ( +/obj/machinery/power/shuttle/engine/electric{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/poddoor{ + id = "heron_engineblast"; + name = "Engine Blast Door"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"Uu" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/machinery/camera{ + dir = 6 + }, +/obj/machinery/light_switch{ + pixel_y = 22; + pixel_x = -9 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"Uv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"Uw" = ( +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/bridge) +"Ux" = ( +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"Uy" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/hangar) +"Uz" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"UC" = ( +/obj/machinery/autolathe, +/obj/item/stack/sheet/glass/fifty{ + pixel_x = 6 + }, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/plasteel/twenty{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"UD" = ( +/obj/structure/railing{ + dir = 4; + layer = 3.1 + }, +/obj/machinery/suit_storage_unit/inherit, +/obj/item/clothing/suit/space/hardsuit/ert/sec, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"UH" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -6 + }, +/obj/item/pen{ + pixel_x = -6 + }, +/obj/item/stamp/qm{ + pixel_x = 6; + pixel_y = 9 + }, +/obj/item/stamp{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/stamp/denied{ + pixel_x = 6; + pixel_y = -1 + }, +/obj/effect/turf_decal/corner/opaque/yellow/diagonal, +/obj/effect/turf_decal/corner/opaque/yellow/full, +/turf/open/floor/plasteel, +/area/ship/cargo) +"UI" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_y = 4; + pixel_x = 5 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/item/flashlight/lamp{ + pixel_y = 10; + pixel_x = -7 + }, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"UJ" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/maintenance/central) +"UK" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8; + layer = 2.030 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"UM" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 10 + }, +/obj/machinery/camera{ + dir = 10 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"UN" = ( +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"UO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"UP" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ship/engineering) +"UR" = ( +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"UT" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) +"UU" = ( +/obj/structure/closet/secure_closet/freezer/kitchen, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen/kitchen) +"UW" = ( +/obj/structure/chair/office{ + dir = 8; + name = "tactical swivel chair" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"UZ" = ( +/obj/effect/turf_decal/trimline/opaque/bottlegreen/line{ + dir = 5 + }, +/obj/structure/closet/wall/white/med{ + name = "medbay equipment locker"; + pixel_y = 28 + }, +/obj/item/clothing/suit/longcoat/brig_phys, +/obj/item/clothing/under/rank/medical/doctor/green, +/obj/item/clothing/head/beret/sec/brig_phys, +/obj/item/clothing/accessory/armband/medblue, +/obj/item/clothing/suit/apron/surgical, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/gloves/color/latex/nitrile/evil, +/obj/item/clothing/head/soft/paramedic, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/clothing/under/rank/medical/doctor/blue, +/obj/item/clothing/under/rank/medical/doctor/skirt, +/obj/item/storage/belt/medical/surgery, +/obj/item/holosign_creator/medical, +/obj/item/storage/backpack/ert/medical, +/obj/item/pinpointer/crew, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"Va" = ( +/obj/machinery/atmospherics/components/unary/shuttle/heater{ + dir = 4 + }, +/obj/structure/window/plasma/reinforced/spawner/west, +/obj/structure/window/plasma/reinforced/spawner/east, +/turf/open/floor/plating, +/area/ship/engineering) +"Vb" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/techfloor/orange{ + dir = 4 + }, +/obj/machinery/camera{ + dir = 9 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"Vc" = ( +/obj/machinery/atmospherics/pipe/simple/purple/hidden/layer1{ + dir = 10 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"Ve" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor/corner{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/engine) +"Vl" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/decal/cleanable/vomit/old, +/obj/structure/chair, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"Vm" = ( +/obj/effect/turf_decal/trimline/opaque/beige/filled/line{ + dir = 8 + }, +/obj/machinery/status_display/shuttle{ + pixel_y = 32; + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/cargo) +"Vo" = ( +/obj/structure/chair/sofa/corner{ + dir = 4 + }, +/obj/machinery/firealarm/directional/west, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/carpet/green, +/area/ship/crew/dorm) +"Vs" = ( +/obj/structure/bookcase/random/fiction, +/obj/structure/sign/poster/official/report_crimes{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"Vv" = ( +/obj/machinery/suit_storage_unit/independent/pilot, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/robot_debris/old, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"Vw" = ( +/obj/structure/closet/secure_closet{ + icon_state = "armory"; + name = "armor locker"; + req_access_txt = "1" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/suit/armor/vest/marine/heavy, +/obj/item/clothing/suit/armor/vest/marine/medium, +/obj/item/clothing/suit/armor/vest/marine/medium, +/obj/item/clothing/head/helmet/marine/security, +/obj/item/clothing/head/helmet/marine, +/obj/item/clothing/head/helmet/marine, +/obj/item/clothing/suit/armor/vest/bulletproof, +/obj/item/clothing/suit/armor/vest/bulletproof, +/obj/item/clothing/head/helmet/plate, +/obj/item/clothing/head/helmet/plate, +/obj/item/clothing/suit/armor/vest/security/officer, +/obj/item/clothing/suit/armor/vest/security/officer, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/swat/nanotrasen, +/obj/item/clothing/head/helmet/swat/nanotrasen, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = 7; + pixel_y = -21 + }, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"VH" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + layer = 2.040; + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"VI" = ( +/obj/effect/decal/cleanable/leaper_sludge{ + color = "#808080" + }, +/obj/item/trash/sosjerky{ + anchored = 1; + color = "#808080"; + pixel_x = 8; + pixel_y = 8 + }, +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/effect/decal/fakelattice{ + color = "#808080" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/elevatorshaft{ + color = "#808080" + }, +/area/ship/crew/office) +"VK" = ( +/obj/structure/table, +/obj/machinery/computer/secure_data/laptop{ + dir = 4; + pixel_x = -8; + pixel_y = 5 + }, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"VN" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"VS" = ( +/obj/structure/toilet{ + pixel_y = 13 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/dorm/dormtwo) +"VT" = ( +/obj/machinery/light/floor, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/hangar) +"VU" = ( +/obj/effect/turf_decal/trimline/opaque/blue/corner, +/obj/effect/turf_decal/siding/thinplating/corner, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"VV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/door/airlock/command{ + req_access_txt = "19"; + name = "T-comms"; + dir = 4 + }, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/engineering/communications) +"Wc" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + id = "heron_engineblast"; + name = "Engine Blast Door"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"Wg" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/siding/white, +/turf/open/floor/plasteel/patterned, +/area/ship/bridge) +"Wk" = ( +/obj/structure/table/reinforced, +/obj/item/mecha_parts/mecha_equipment/repair_droid, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack, +/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"Wm" = ( +/obj/machinery/power/shuttle/engine/fueled/plasma{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id = "heron_engineblast"; + name = "Engine Blast Door"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/maintenance/central) +"Wo" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/machinery/light/small/directional/east, +/obj/structure/sign/poster/official/safety_internals{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security) +"Wr" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Ww" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/obj/effect/turf_decal/industrial/warning{ + dir = 10 + }, +/obj/structure/railing{ + dir = 10; + layer = 4.1 + }, +/obj/effect/turf_decal/corner/opaque/blue/full, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"WH" = ( +/obj/effect/turf_decal/borderfloorblack{ + dir = 1 + }, +/obj/machinery/computer/telecomms/monitor, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/tech/grid, +/area/ship/bridge) +"WK" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"WL" = ( +/obj/effect/turf_decal/industrial/warning/cee, +/obj/machinery/suit_storage_unit/inherit, +/obj/item/clothing/suit/space/hardsuit/swat/captain, +/obj/machinery/newscaster/directional/north, +/obj/structure/sign/poster/official/no_erp{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/crew/dorm/dormtwo) +"WM" = ( +/obj/structure/sign/poster/retro/smile{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 1 + }, +/area/ship/bridge) +"WO" = ( +/obj/structure/closet/crate/bin, +/obj/item/trash/syndi_cakes, +/obj/item/toy/crayon/orange{ + pixel_x = 1; + pixel_y = -5 + }, +/obj/item/flashlight/flare, +/obj/effect/decal/cleanable/wrapping, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/airalarm/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/patterned, +/area/ship/crew/toilet) +"WP" = ( +/obj/machinery/power/shuttle/engine/electric{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/poddoor{ + id = "heron_engineblast"; + name = "Engine Blast Door"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/maintenance/central) +"WS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/crew/dorm) +"WU" = ( +/obj/structure/chair/sofa/corner{ + dir = 1 + }, +/obj/machinery/newscaster/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm/directional/west, +/obj/effect/decal/cleanable/vomit/old{ + pixel_x = 9; + pixel_y = 18 + }, +/obj/machinery/camera{ + dir = 10 + }, +/turf/open/floor/carpet/green, +/area/ship/crew/dorm) +"WV" = ( +/obj/machinery/door/window/northright{ + dir = 2 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"WW" = ( +/obj/effect/turf_decal/trimline/opaque/yellow/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/structure/chair/office{ + dir = 4; + name = "tactical swivel chair" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) +"WX" = ( +/obj/structure/table, +/obj/item/book/manual/chef_recipes{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/reagent_containers/food/snacks/dough, +/obj/item/reagent_containers/food/snacks/dough, +/obj/item/kitchen/rollingpin, +/obj/item/kitchen/knife/butcher{ + pixel_x = 13 + }, +/obj/item/kitchen/knife, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen/kitchen) +"WY" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/closet/wall/red{ + name = "Ammo locker"; + pixel_y = 28 + }, +/obj/item/ammo_box/magazine/co9mm{ + pixel_x = -7 + }, +/obj/item/ammo_box/magazine/co9mm{ + pixel_x = -3 + }, +/obj/item/ammo_box/magazine/co9mm{ + pixel_x = -7 + }, +/obj/item/storage/box/lethalshot{ + pixel_y = 5 + }, +/obj/item/storage/box/lethalshot{ + pixel_y = 5 + }, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm{ + pixel_y = 1; + pixel_x = 2 + }, +/obj/item/ammo_box/magazine/smgm9mm{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/ammo_box/magazine/smgm9mm{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/ammo_box/magazine/smgm9mm{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/ammo_box/magazine/smgm9mm{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/ammo_box/c9mm{ + pixel_x = 4; + pixel_y = -6 + }, +/obj/item/ammo_box/c9mm{ + pixel_x = 4; + pixel_y = 1 + }, +/obj/item/ammo_box/c9mm{ + pixel_x = 4; + pixel_y = 9 + }, +/obj/item/ammo_box/c9mm/ap{ + pixel_y = 17; + pixel_x = 4 + }, +/obj/item/stock_parts/cell/gun{ + pixel_x = -3; + pixel_y = -5 + }, +/obj/item/stock_parts/cell/gun{ + pixel_x = 1; + pixel_y = -5 + }, +/obj/item/stock_parts/cell/gun{ + pixel_x = 5; + pixel_y = -5 + }, +/turf/open/floor/plasteel/tech, +/area/ship/security/armory) +"Xb" = ( +/obj/effect/turf_decal/techfloor/corner{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"Xe" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/computer/med_data{ + dir = 8 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) +"Xf" = ( +/obj/effect/landmark/subship{ + subship_template = /datum/map_template/shuttle/subshuttles/heron + }, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/hangar) +"Xg" = ( +/obj/effect/turf_decal/techfloor/orange/corner{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor/orange/corner, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "engine fuel pump" + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"Xi" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"Xk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/ship/crew/dorm/dormthree) +"Xl" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Xo" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 1 + }, +/turf/open/floor/engine/n2, +/area/ship/engineering/atmospherics) +"Xr" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black/half{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"Xu" = ( +/obj/structure/table/wood/reinforced, +/obj/item/clipboard{ + pixel_y = 7 + }, +/obj/item/paper{ + pixel_x = 3; + pixel_y = 7 + }, +/obj/item/pen/charcoal{ + pixel_y = 8 + }, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_x = -8; + pixel_y = 3 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"Xv" = ( +/obj/machinery/power/shuttle/engine/fueled/plasma{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id = "heron_engineblast"; + name = "Engine Blast Door"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"Xy" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"Xz" = ( +/obj/structure/toilet{ + dir = 4; + pixel_x = -1; + pixel_y = 5 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating/catwalk_floor, +/area/ship/security) +"XB" = ( +/obj/effect/turf_decal/techfloor/corner, +/obj/effect/turf_decal/techfloor/corner{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/industrial/caution, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/science/robotics) +"XF" = ( +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"XH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock{ + name = "Service Hallway" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"XJ" = ( +/obj/effect/turf_decal/techfloor, +/obj/machinery/computer/crew{ + dir = 8 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/bridge) +"XK" = ( +/obj/effect/turf_decal/atmos/plasma, +/turf/open/floor/engine/plasma, +/area/ship/engineering/atmospherics) +"XL" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "heron_sm_1"; + rad_insulation = 0.1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"XR" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/camera{ + dir = 6 + }, +/obj/machinery/light_switch{ + pixel_y = 22; + pixel_x = -9 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/communications) +"XT" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/computer/telecomms/monitor{ + network = "nt_commnet" + }, +/obj/structure/sign/poster/official/moth/piping{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/communications) +"XX" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/red/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"XY" = ( +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/public/glass{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"XZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 + }, +/turf/open/floor/engine/n2, +/area/ship/engineering/atmospherics) +"Yb" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"Yc" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/structure/window/plasma/reinforced/fulltile, +/obj/structure/grille, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"Yd" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/communications) +"Yh" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/cans/sixbeer, +/turf/open/floor/carpet/green, +/area/ship/crew/dorm) +"Yl" = ( +/obj/structure/railing{ + dir = 2; + layer = 4.1 + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/reagent_dispensers, +/obj/structure/sign/warning/explosives/alt{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"Yn" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/item/weldingtool{ + pixel_x = -5; + pixel_y = -6 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"Yq" = ( +/obj/effect/turf_decal/corner/opaque/yellow/full, +/obj/effect/turf_decal/corner/opaque/yellow/diagonal, +/obj/item/kirbyplants/random, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -22; + pixel_y = 21 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"Yr" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"Yx" = ( +/obj/effect/turf_decal/siding/wood/end{ + dir = 1 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm/dormtwo) +"YA" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/item/storage/backpack/ert/janitor{ + pixel_x = 6 + }, +/obj/structure/closet/wall/blue{ + dir = 8; + name = "Janitorial Closet"; + pixel_x = 28 + }, +/obj/item/clothing/suit/longcoat/science{ + name = "janitor longcoat" + }, +/obj/item/clothing/shoes/galoshes{ + pixel_x = 7; + pixel_y = -8 + }, +/obj/item/clothing/head/soft/purple{ + pixel_x = 5 + }, +/obj/item/clothing/gloves/color/latex{ + pixel_y = -5 + }, +/turf/open/floor/plasteel, +/area/ship/maintenance/central) +"YD" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/space_cops{ + pixel_y = -32 + }, +/turf/open/floor/plating, +/area/ship/hangar) +"YE" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/yellow/full, +/obj/effect/turf_decal/corner/opaque/yellow/diagonal, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/cargo) +"YG" = ( +/obj/structure/catwalk/over, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/gasmask{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ship/engineering) +"YI" = ( +/obj/structure/bed, +/obj/item/bedsheet/rd, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/vomit/old, +/obj/item/clothing/accessory/medal/plasma/nobel_science{ + pixel_y = -2; + pixel_x = 8 + }, +/obj/item/toy/plush/beeplushie{ + pixel_y = 7 + }, +/turf/open/floor/carpet, +/area/ship/science/robotics) +"YP" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"YT" = ( +/obj/effect/turf_decal/techfloor, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security/armory) +"YV" = ( +/obj/effect/turf_decal/trimline/opaque/blue/warning, +/obj/effect/turf_decal/siding/thinplating/corner, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"YZ" = ( +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/structure/fireaxecabinet{ + pixel_y = 27 + }, +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/plating, +/area/ship/engineering) +"Zb" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 10 + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"Zc" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/decal/cleanable/chem_pile{ + pixel_x = 17; + pixel_y = -6 + }, +/obj/effect/turf_decal/steeldecal/steel_decals_central2{ + pixel_y = 2 + }, +/obj/effect/turf_decal/steeldecal/steel_decals9, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) +"Zd" = ( +/obj/effect/turf_decal/spline/fancy/opaque/blue{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"Zf" = ( +/obj/effect/turf_decal/trimline/opaque/beige/filled/line{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"Zg" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/cargo/office) +"Zh" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/turf_decal/corner/opaque/brown/full, +/obj/effect/turf_decal/corner/opaque/brown/diagonal, +/obj/machinery/light/directional/south, +/obj/machinery/button/shieldwallgen{ + id = "heron_outercargoholo"; + pixel_x = -9; + pixel_y = -22; + dir = 1 + }, +/obj/machinery/button/door{ + dir = 1; + id = "heron_outercargo"; + name = "Cargo Shutters"; + pixel_x = -1; + pixel_y = -23 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"Zo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"Zp" = ( +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/hangar) +"Zq" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/canteen/kitchen) +"Zr" = ( +/obj/machinery/door/window/brigdoor/southright{ + dir = 1; + req_access_txt = "1" + }, +/obj/effect/turf_decal/siding/wideplating/dark, +/turf/open/floor/plasteel/tech, +/area/ship/security) +"Zv" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/electrical) +"Zz" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ship/engineering/electrical) +"ZC" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/white/diagonal, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"ZD" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/ship/hallway/fore) +"ZE" = ( +/obj/docking_port/stationary{ + height = 15; + width = 30; + dwidth = 7; + name = "heron exterior dock" + }, +/turf/template_noop, +/area/template_noop) +"ZG" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"ZH" = ( +/obj/effect/turf_decal/trimline/opaque/blue/warning{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"ZJ" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/effect/turf_decal/industrial/outline/orange, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/techfloor/hole/right{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"ZO" = ( +/obj/effect/turf_decal/siding/thinplating, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/aft) +"ZQ" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ship/storage) +"ZT" = ( +/obj/effect/turf_decal/corner/transparent/beige/full, +/obj/effect/turf_decal/corner/transparent/black/half{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/trimline/opaque/blue/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/corner{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plastic, +/area/ship/crew/canteen) +"ZX" = ( +/obj/structure/table/reinforced, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/machinery/door/window/brigdoor/southright, +/obj/machinery/door/window/brigdoor/southright{ + dir = 1; + req_one_access_txt = "1" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/ship/security) +"ZY" = ( +/obj/effect/turf_decal/techfloor/orange{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/effect/turf_decal/industrial/outline/orange, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"ZZ" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/robotics) + +(1,1,1) = {" +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +hr +Xv +Xv +Uq +Uq +hr +VN +Nt +Mm +Mm +Mm +Mm +UJ +WP +WP +Wm +Wm +UJ +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +"} +(2,1,1) = {" +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +hr +Va +Va +QU +Cs +hr +oF +Wc +hr +hr +hr +hr +UJ +RO +cY +yc +yc +UJ +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +"} +(3,1,1) = {" +Mm +Mm +Mm +Mm +Mm +Mm +hr +sw +hr +hr +mN +rh +Yn +uG +hr +uY +GM +My +yd +Yl +EQ +UJ +Gf +rB +gd +tv +UJ +UJ +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +"} +(4,1,1) = {" +Mm +Mm +Mm +Mm +Mm +Mm +hr +YG +Dk +hr +YZ +Ag +nX +SQ +rL +Cy +hn +Ik +MS +UP +mX +qz +sM +nL +Gn +lo +sW +UJ +nQ +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +"} +(5,1,1) = {" +Mm +Mm +Mm +Mm +Mm +Mm +hr +pT +tc +fE +aG +Xg +sE +xe +jC +Ev +Jz +eu +kV +uW +LP +yN +eV +pE +BT +ci +Tg +UJ +nQ +nQ +nQ +Mm +Mm +Mm +Mm +Mm +Mm +"} +(6,1,1) = {" +Mm +Mm +Mm +Mm +ju +He +hr +Si +hr +hr +pN +kP +hr +hr +hr +Fu +WW +Mv +Ko +hr +hr +UJ +UJ +UJ +FG +KF +wV +UJ +xB +ot +nQ +nQ +Mm +Mm +Mm +Mm +Mm +"} +(7,1,1) = {" +OP +ju +ju +ju +ju +He +He +He +He +Ax +Ru +Vc +FJ +LY +He +hr +Ny +ht +AA +vI +hr +GL +Hh +yR +UJ +UJ +UJ +UJ +xy +jE +YI +nQ +nQ +nQ +TI +Mm +Mm +"} +(8,1,1) = {" +ju +mI +RN +wW +ju +xE +Sc +PT +XL +Ej +Bx +cp +eA +RC +Oy +hr +gb +Gp +oA +yu +hr +nR +tF +Gc +nQ +QY +je +nQ +nQ +io +nQ +nQ +nQ +nQ +nQ +nQ +TI +"} +(9,1,1) = {" +ju +dh +wQ +vS +ju +kU +Yr +Zz +Ab +LI +me +Ol +oU +gv +Oy +hr +fD +qH +zp +uk +hr +yR +uL +yR +nQ +cK +bb +nQ +ki +Ga +as +Ux +ln +hx +Dz +Fy +BW +"} +(10,1,1) = {" +ju +dh +SH +bS +ju +Tc +NV +dB +IY +IY +IY +jb +iC +vh +He +hr +hr +hr +BG +hr +hr +Rf +vx +DT +mQ +Kp +ZZ +bj +LT +Mu +ah +lt +cB +yC +uZ +EF +rp +"} +(11,1,1) = {" +ju +Qt +SH +Aj +ju +ij +ij +ij +Bu +Tu +Bu +NG +Im +Ij +nj +dL +ed +tD +Un +xU +hr +NZ +vx +fq +nQ +JH +vE +Uv +cq +se +DE +gY +hp +pj +dp +dN +AC +"} +(12,1,1) = {" +ju +ol +Yb +Kz +sn +Jv +wk +Jv +fR +TD +fR +qM +DS +cX +He +NW +ac +hr +SZ +Fm +NU +ZH +vg +gz +ia +Kd +th +xC +gL +Ti +mm +KS +XB +dS +IF +up +SG +"} +(13,1,1) = {" +ju +EI +Xy +HA +ju +oJ +oJ +oJ +Bu +Ve +Bu +eK +Mp +mR +pQ +iI +eG +FS +TB +Qz +hr +Iz +UO +vl +nQ +cF +Vv +nQ +aC +Ds +bu +Wk +Lz +KN +Sf +Bo +BW +"} +(14,1,1) = {" +ju +mf +SH +hQ +ju +lZ +oe +Ki +IY +IY +IY +Es +KZ +dI +He +lK +lK +lK +VV +lK +lK +tn +ur +Sa +UJ +UJ +UJ +UJ +UJ +UJ +nQ +Qq +Jf +kH +bd +nQ +nQ +"} +(15,1,1) = {" +ju +dh +Xy +oV +ju +FI +DX +ze +nf +Kv +pF +HW +at +Nv +gw +lK +kS +XT +Ck +aV +lK +Iz +ur +IT +UJ +FM +iA +sO +QJ +UJ +UC +Zc +lr +Ee +cj +nQ +nQ +"} +(16,1,1) = {" +ju +kj +LM +bI +ju +Jh +Zb +MN +tP +Uc +vu +fb +wP +OT +wi +lK +XR +nK +OH +aN +lK +Uz +CH +fn +wM +pK +YA +Mn +zD +UJ +AN +hF +bF +MT +sF +nQ +Mm +"} +(17,1,1) = {" +ju +ju +ju +hR +ju +He +He +He +He +db +So +EZ +bM +Zv +He +lK +ag +nK +Ak +Yd +lK +iL +Hu +ZO +UJ +UJ +UJ +jY +UJ +UJ +MZ +MZ +MZ +MZ +MZ +MZ +Mm +"} +(18,1,1) = {" +ju +JN +ML +dF +uo +De +TZ +Tf +ju +ju +ju +ju +sC +CB +ju +lK +ej +po +Lf +in +lK +ak +zF +Ek +XH +Gl +zK +sD +Qr +lh +MZ +OD +CQ +II +zL +MZ +Mm +"} +(19,1,1) = {" +ju +Ll +du +Nh +BR +sV +oN +jr +nH +yW +if +vT +Am +xO +ju +ju +kv +kv +kv +uy +uy +sZ +Hu +zu +UJ +ss +iY +Dq +OS +JY +yS +vv +Zq +rW +UU +NK +Mm +"} +(20,1,1) = {" +ju +de +LJ +LJ +Mr +dt +PK +Mz +oa +Px +ju +lH +xi +ZJ +ZY +ju +sg +oM +kv +nT +mL +FP +Hu +bH +JS +JS +JS +JS +JS +ik +MZ +Er +pk +kK +zN +MZ +Mm +"} +(21,1,1) = {" +ju +kD +kD +ju +oL +nu +ju +ju +ju +ju +ju +vP +ox +Em +tV +ju +jm +Ac +kv +wO +Ps +fT +Bp +rU +JS +aQ +le +Ez +JS +JS +MZ +mc +MZ +MZ +MZ +RS +Mm +"} +(22,1,1) = {" +ju +XK +NI +rg +CW +lp +Yc +Xo +la +ju +ju +Vb +DI +Bv +Bv +ju +kv +tO +kv +kv +kv +ao +Sj +UR +Xr +Me +HY +eq +bn +HT +HG +Oz +TG +MZ +RS +Mm +Mm +"} +(23,1,1) = {" +ju +vL +zV +Yc +Xl +Pe +Yc +XZ +CZ +ju +ju +ju +ju +ju +ju +ju +WO +Fj +kR +pl +kv +Uu +sX +OL +WK +qj +yO +bK +wF +Dh +ZC +HP +WX +NK +Mm +Mm +Mm +"} +(24,1,1) = {" +ju +ju +ju +ju +pt +mO +ju +ju +ju +ju +kd +Vo +mM +WU +zX +zX +Gr +jo +kv +kv +kv +ng +wa +Bc +ZT +BP +Vl +MM +yr +Jq +ev +kI +Ip +NK +Mm +Mm +Mm +"} +(25,1,1) = {" +ju +xY +Cd +Yc +Xl +Br +Yc +yn +os +ju +Gi +Pp +NQ +LO +Tl +zX +tU +nS +fP +ll +kv +mY +Jp +Qf +JS +oR +CK +MB +qA +JS +tG +Qg +sb +MZ +Mm +Mm +Mm +"} +(26,1,1) = {" +ju +pu +rj +Yc +Ay +tR +Yc +fe +Nr +ju +lj +KQ +Yh +bE +Rv +zX +kv +Ea +kv +kv +kv +XY +Hl +wK +JS +JS +JS +As +As +As +As +As +As +As +As +RG +Mm +"} +(27,1,1) = {" +OP +ju +ju +ju +ju +ju +ju +ju +ju +ju +zX +tL +Mo +hj +zX +zX +jx +oq +vY +vO +to +Al +PO +tJ +ME +aw +pb +As +gG +xw +tt +cv +Yq +br +lL +lS +Mm +"} +(28,1,1) = {" +Mm +Mm +jh +xg +xg +Pm +Fn +xt +ji +FT +JC +wz +pg +TV +zX +mo +Aq +QB +fZ +zg +zg +QK +Gg +kA +ew +bl +DY +MD +lY +it +sy +aO +YE +Ni +UH +lS +Mm +"} +(29,1,1) = {" +Mm +Mm +Mm +jh +xg +VI +BN +lU +xg +IC +jy +ns +uO +rs +Fp +FR +pq +Ap +xs +Ec +Dr +zo +mZ +Ec +DM +CR +ED +bG +Et +SW +rV +FL +LS +Ni +IA +As +RG +"} +(30,1,1) = {" +Mm +Mm +Mm +Mm +xg +xg +BN +xg +xg +zX +Pa +zX +zX +zX +zX +yg +nt +VU +Qb +uQ +uQ +uQ +uQ +uQ +dM +ZD +Kj +As +ym +RV +RB +mg +cd +Vm +GT +bm +kO +"} +(31,1,1) = {" +Mm +Mm +Mm +Mm +xg +jP +qf +GF +xg +jQ +WS +sr +OR +dq +hU +Re +nt +QE +uQ +uQ +Tv +Ef +EK +uQ +rP +ZD +Ah +El +El +El +El +El +El +SW +Nq +qi +fa +"} +(32,1,1) = {" +Mm +Mm +Mm +Mm +xg +uX +mq +Ih +xg +hH +hP +fr +AW +Hi +zX +JA +tg +Gk +uQ +yU +ja +RU +so +mj +NF +YP +PR +El +RA +MO +cE +zw +ef +aa +fg +Ei +cO +"} +(33,1,1) = {" +Mm +Mm +Mm +Mm +xg +iS +eI +yt +xg +rR +iD +Sz +CP +hM +zX +gD +Qj +tu +uQ +ug +Ke +Ed +sP +eU +uf +tN +zM +El +ru +nM +nM +ZQ +hw +Zf +tT +aU +TN +"} +(34,1,1) = {" +Mm +Mm +Mm +Mm +jh +xg +xg +xg +xg +zX +zX +zX +zX +zX +zX +UK +qL +vm +uQ +UZ +pR +LE +LE +dJ +Jr +Ui +pB +El +SM +NE +wq +Of +El +sQ +SP +Zh +As +"} +(35,1,1) = {" +Mm +Mm +Mm +Mm +Mm +is +Hm +Xz +RH +bD +tS +is +zf +DF +is +wo +JJ +JU +uQ +az +Cx +Ww +hb +uQ +gB +fv +hO +El +El +El +El +El +El +As +As +As +RG +"} +(36,1,1) = {" +Mm +Mm +Mm +Mm +Mm +bN +fW +rZ +dU +Pt +Gj +ne +uJ +IS +Fv +KT +Zo +Ft +uQ +wl +GP +gx +uQ +uQ +Qi +KC +jT +nB +fM +NY +kE +PI +UM +fv +fv +fQ +Mm +"} +(37,1,1) = {" +Mm +Mm +Mm +Mm +Mm +bN +rT +aj +zB +gI +tY +Zr +IS +DW +ZX +cm +co +cr +uQ +uQ +uQ +uQ +uQ +pS +JE +gN +MI +Ra +Bt +Nx +Mt +TT +LN +hZ +fv +Mm +Mm +"} +(38,1,1) = {" +Mm +Mm +Mm +Mm +Fz +is +is +is +is +tI +Qm +ie +Se +Gu +Fv +ra +qy +Ob +Zg +mk +lv +mW +Zg +Io +zC +EO +fv +fv +fv +fv +fv +fp +SX +tk +fv +Mm +Mm +"} +(39,1,1) = {" +Mm +Mm +Mm +Mm +is +UI +TE +VK +SK +jR +HV +is +is +Fv +Fv +VH +dG +CI +Zg +JO +bc +jZ +fm +iq +UN +VT +RX +SB +ei +SB +RX +VT +dj +er +nZ +Mm +Mm +"} +(40,1,1) = {" +Mm +Fz +is +is +is +fJ +UW +re +nD +hS +sI +TR +pI +pI +PZ +td +Nm +YV +lJ +Pz +xQ +LC +Zg +Na +Dd +sc +sc +sc +sc +sc +sc +Xf +dj +er +nZ +Mm +Mm +"} +(41,1,1) = {" +Mm +is +AG +BJ +is +Ao +qP +Cu +et +fI +qJ +is +uj +lm +is +eP +co +Wr +Zg +yV +PS +GJ +Zg +iW +rt +sc +sc +sc +sc +sc +sc +sc +dj +nw +fv +Mm +Mm +"} +(42,1,1) = {" +ZE +oH +na +jc +wd +rO +SS +zc +XX +kQ +Bg +lg +rd +rd +Fk +OK +dQ +Gk +np +np +np +np +np +hD +XF +sc +sc +sc +sc +sc +sc +sc +BB +Zp +fv +Mm +Mm +"} +(43,1,1) = {" +Mm +is +Wo +Td +is +KH +bC +xA +is +is +is +is +is +is +is +xd +fB +MF +np +zJ +Eg +xh +np +NM +BL +sc +sc +sc +sc +sc +sc +sc +xV +lI +fv +Mm +Mm +"} +(44,1,1) = {" +Mm +is +is +is +is +TX +am +oz +is +ct +To +zl +sJ +yQ +QG +Hc +co +On +np +hY +Xk +uF +np +Sw +SF +sc +sc +sc +sc +sc +sc +sc +QO +Sw +nZ +Mm +Mm +"} +(45,1,1) = {" +Mm +oz +oo +oX +Kc +Xi +rJ +oz +BO +wc +zW +jO +Id +wj +QG +mG +Jm +mG +np +np +Sm +np +np +Sw +Uy +sc +sc +sc +sc +sc +sc +sc +Sw +Sw +nZ +Mm +Mm +"} +(46,1,1) = {" +Mm +oz +fk +FH +ck +Xb +zP +oz +Vs +wc +iM +AF +RK +QG +QG +qx +Wg +OJ +WM +rN +Zd +dr +vp +xr +Sw +sc +sc +sc +sc +sc +sc +sc +Sw +Sw +nZ +Mm +Mm +"} +(47,1,1) = {" +Mm +oz +UD +UD +yP +ys +vi +oz +QG +Uf +CD +KG +Mg +QG +BV +un +AD +GZ +ez +hm +MA +Cv +Ub +IP +Sw +sc +sc +sc +sc +sc +sc +sc +Sw +Gq +fv +Mm +Mm +"} +(48,1,1) = {" +Mm +oz +oz +oz +oz +ys +ub +MP +QG +kB +eT +Ep +ZG +iP +GZ +EJ +Ly +Uw +nh +sv +oh +MK +Ub +Sw +Sw +sc +sc +sc +sc +sc +sc +sc +Sw +Mf +fv +Mm +Mm +"} +(49,1,1) = {" +Mm +oz +Tt +zv +mt +ys +YT +Vw +QG +dn +Dn +hk +mK +QG +bL +ae +Mb +kp +xx +KK +Pj +CU +Ub +Sw +dY +sc +sc +sc +sc +sc +sc +sc +Sw +TO +fv +Mm +Mm +"} +(50,1,1) = {" +Mm +oz +WY +my +WV +yz +Du +oz +QG +QG +nU +Xu +wG +QG +Ub +Ub +Ub +WH +Gt +KK +Sp +Sp +vp +Sw +gZ +sc +sc +sc +sc +sc +sc +sc +rw +YD +fv +Mm +Mm +"} +(51,1,1) = {" +Mm +mD +oz +ek +LX +sz +oz +oz +Oa +QG +QG +HR +QG +QG +Ge +HO +MV +eW +wD +xb +SI +Lh +vp +tA +qc +sc +sc +sc +sc +sc +sc +sc +xW +Sw +nZ +Mm +Mm +"} +(52,1,1) = {" +Mm +Mm +mD +oz +oz +oz +oz +VS +hJ +Ug +Yx +vw +HH +ku +NC +sx +Ix +Lo +aK +lX +qY +Jw +Ub +gP +oS +sc +sc +sc +sc +sc +sc +sc +xW +Mf +fv +Mm +Mm +"} +(53,1,1) = {" +Mm +Mm +Mm +Mm +Mm +Mm +xG +pM +pM +pM +WL +Rx +ya +pM +vz +Nj +UT +nh +FY +qZ +wp +vC +Ub +Kt +qc +VT +sc +sc +sc +sc +sc +VT +xW +Sw +fv +Mm +Mm +"} +(54,1,1) = {" +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +xG +pM +pM +pM +pM +kW +XJ +Bn +PC +sS +ib +PP +Xe +Ub +fv +fv +fv +PJ +fv +fv +En +fv +PJ +fv +fv +fQ +Mm +Mm +"} +(55,1,1) = {" +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +ec +eX +eX +Ub +KO +KO +KO +KO +KO +ec +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +Mm +"} diff --git a/_maps/shuttles/shiptest/radio_funny.dmm b/_maps/shuttles/independent/radio_funny.dmm similarity index 100% rename from _maps/shuttles/shiptest/radio_funny.dmm rename to _maps/shuttles/independent/radio_funny.dmm diff --git a/_maps/shuttles/shiptest/inteq_colossus.dmm b/_maps/shuttles/inteq/inteq_colossus.dmm similarity index 95% rename from _maps/shuttles/shiptest/inteq_colossus.dmm rename to _maps/shuttles/inteq/inteq_colossus.dmm index 17bdf1f38f25..9aec48334728 100644 --- a/_maps/shuttles/shiptest/inteq_colossus.dmm +++ b/_maps/shuttles/inteq/inteq_colossus.dmm @@ -4,6 +4,10 @@ dir = 1 }, /obj/item/trash/raisins, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20 + }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "ai" = ( @@ -110,24 +114,26 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/fore) "bJ" = ( +/obj/structure/table/reinforced, +/obj/machinery/fax, +/obj/machinery/light/directional/north, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "4-8" }, /obj/effect/turf_decal/borderfloor{ - dir = 5 + dir = 4 }, -/obj/item/radio/intercom/directional/north{ - freerange = 1; - freqlock = 1; - frequency = 1347; - name = "IRMG shortwave intercom" +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 }, -/obj/machinery/telecomms/relay/preset/mining{ - autolinkers = list("relay","hub"); - freq_listening = list(1347); - id = "IRMG Relay"; - name = "IRMG Relay"; - network = "irmg_commnet" +/obj/machinery/button/door{ + id = "colossus_windows"; + name = "Window Lockdown"; + pixel_x = -4; + pixel_y = 21 }, /turf/open/floor/plasteel/dark, /area/ship/bridge) @@ -167,21 +173,12 @@ /obj/machinery/atmospherics/components/unary/shuttle/heater{ dir = 4 }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, /obj/machinery/door/poddoor{ dir = 4; id = "colossus_thrusters" }, -/turf/open/floor/plating, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/engine/hull/reinforced/interior, /area/ship/maintenance/starboard) "cd" = ( /obj/item/storage/backpack/messenger/inteq, @@ -199,7 +196,7 @@ pixel_y = 28 }, /obj/machinery/firealarm/directional/east, -/turf/open/floor/carpet/black, +/turf/open/floor/plasteel/grimy, /area/ship/crew) "cq" = ( /obj/structure/cable{ @@ -208,7 +205,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/item/radio/intercom/directional/west, -/turf/open/floor/carpet/black, +/turf/open/floor/plasteel/grimy, /area/ship/crew) "ct" = ( /obj/structure/cable{ @@ -222,11 +219,25 @@ /obj/structure/cable{ icon_state = "1-8" }, -/obj/effect/turf_decal/borderfloor{ +/obj/structure/table/reinforced, +/obj/item/gps{ + pixel_x = 12 + }, +/obj/item/paper_bin, +/obj/item/pen/fountain, +/obj/item/toy/figure/vanguard{ + pixel_x = -10; + pixel_y = 5 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 }, -/obj/structure/table/reinforced, -/obj/machinery/fax, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, /turf/open/floor/plasteel/dark, /area/ship/bridge) "cM" = ( @@ -235,8 +246,8 @@ locked = 0; name = "fridge" }, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/storage/cans/sixbeer, /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 @@ -379,6 +390,13 @@ /obj/machinery/vending/cigarette, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"eC" = ( +/obj/structure/marker_beacon{ + picked_color = "Lime" + }, +/obj/structure/catwalk, +/turf/open/floor/engine/hull/reinforced, +/area/ship/external/dark) "eI" = ( /obj/effect/turf_decal/box/corners, /obj/structure/cable{ @@ -556,6 +574,10 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering) +"fU" = ( +/obj/structure/catwalk, +/turf/open/floor/engine/hull/reinforced, +/area/ship/external/dark) "fW" = ( /obj/effect/turf_decal/siding/thinplating/corner, /obj/effect/turf_decal/siding/thinplating/corner{ @@ -622,15 +644,8 @@ /obj/machinery/modular_computer/console/preset/command{ dir = 8 }, -/obj/machinery/button/door{ - dir = 1; - id = "colossus_windows"; - name = "Window Lockdown"; - pixel_x = -4; - pixel_y = -21 - }, /obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "gJ" = ( /obj/effect/turf_decal/siding/thinplating/corner{ @@ -707,13 +722,13 @@ /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/hallway/port) "hO" = ( -/obj/machinery/door/airlock/external, -/obj/effect/turf_decal/borderfloor{ +/obj/effect/turf_decal/techfloor{ dir = 1 }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech, +/obj/structure/sign/warning/vacuum/external{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/tech/grid, /area/ship/hallway/port) "hQ" = ( /obj/machinery/power/shuttle/engine/electric{ @@ -722,7 +737,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/turf/open/floor/plating, +/turf/open/floor/engine/hull/reinforced, /area/ship/maintenance/port) "hU" = ( /obj/item/radio/intercom/directional/east, @@ -737,13 +752,11 @@ /obj/effect/turf_decal/box/corners{ dir = 8 }, -/obj/machinery/status_display/shuttle{ - pixel_x = -32 - }, /obj/structure/sign/poster/official/no_erp{ pixel_y = -32 }, /obj/machinery/light/directional/south, +/obj/machinery/computer/helm/viewscreen/directional/west, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "ie" = ( @@ -829,6 +842,7 @@ }, /obj/item/storage/belt/security/webbing/inteq, /obj/item/storage/belt/military/assault, +/obj/item/reagent_containers/spray/pepper, /turf/open/floor/plasteel/dark, /area/ship/security) "iT" = ( @@ -844,7 +858,17 @@ /obj/machinery/computer/cargo/express{ dir = 1 }, -/turf/open/floor/plasteel/tech, +/obj/effect/turf_decal/borderfloor, +/obj/item/radio/intercom/directional/north{ + dir = 4; + freerange = 1; + freqlock = 1; + frequency = 1347; + name = "IRMG shortwave intercom"; + pixel_x = 31; + pixel_y = 0 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "iY" = ( /obj/machinery/power/apc/auto_name/directional/east, @@ -861,8 +885,8 @@ /obj/item/stack/sheet/mineral/plasma/twenty, /obj/structure/catwalk/over/plated_catwalk/dark, /obj/machinery/light_switch{ - pixel_x = 20; dir = 8; + pixel_x = 20; pixel_y = 11 }, /turf/open/floor/plating, @@ -1128,7 +1152,6 @@ dir = 4 }, /obj/item/clothing/suit/space/hardsuit/security/independent/inteq, -/obj/item/clothing/head/helmet/space/inteq, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "mY" = ( @@ -1150,32 +1173,37 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/cable{ - icon_state = "2-4" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, /turf/open/floor/plasteel/dark, /area/ship/bridge) "nm" = ( /obj/machinery/atmospherics/pipe/layer_manifold, -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 - }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, /turf/open/floor/plasteel/tech/grid, /area/ship/hallway/port) "ny" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, /turf/open/floor/plasteel/dark, /area/ship/bridge) "ob" = ( @@ -1191,7 +1219,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/carpet/black, +/turf/open/floor/plasteel/grimy, /area/ship/crew) "og" = ( /obj/effect/turf_decal/corner/opaque/yellow{ @@ -1230,7 +1258,6 @@ /turf/open/floor/plasteel/patterned, /area/ship/cargo) "on" = ( -/obj/effect/turf_decal/industrial/warning, /obj/effect/decal/cleanable/dirt, /obj/machinery/power/shieldwallgen/atmos{ anchored = 1; @@ -1241,10 +1268,11 @@ /obj/structure/cable{ icon_state = "0-2" }, +/obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/poddoor{ id = "colossus_port" }, -/turf/open/floor/engine/hull, +/turf/open/floor/engine/hull/reinforced/interior, /area/ship/cargo) "oq" = ( /obj/effect/turf_decal/borderfloorblack{ @@ -1261,7 +1289,7 @@ /obj/machinery/power/shuttle/engine/fueled/plasma{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/engine/hull/reinforced, /area/ship/maintenance/port) "oY" = ( /obj/machinery/suit_storage_unit/inherit{ @@ -1277,7 +1305,6 @@ pixel_x = 32 }, /obj/item/clothing/suit/space/hardsuit/security/independent/inteq, -/obj/item/clothing/head/helmet/space/inteq, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "pa" = ( @@ -1380,13 +1407,11 @@ /turf/open/floor/plating, /area/ship/maintenance/port) "pX" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, +/obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/poddoor{ id = "colossus_starboard" }, -/turf/open/floor/engine/hull, +/turf/open/floor/engine/hull/reinforced/interior, /area/ship/cargo) "qu" = ( /obj/machinery/cryopod{ @@ -1435,7 +1460,7 @@ /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, /obj/machinery/airalarm/directional/south, -/turf/open/floor/carpet/black, +/turf/open/floor/plasteel/grimy, /area/ship/crew) "qX" = ( /obj/structure/rack, @@ -1461,7 +1486,6 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "rb" = ( -/obj/effect/turf_decal/industrial/warning, /obj/machinery/power/shieldwallgen/atmos{ anchored = 1; dir = 8; @@ -1471,30 +1495,12 @@ /obj/structure/cable{ icon_state = "0-2" }, +/obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/poddoor{ id = "colossus_port" }, -/turf/open/floor/engine/hull, +/turf/open/floor/engine/hull/reinforced/interior, /area/ship/cargo) -"re" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/window/eastleft{ - name = "Engine Access" - }, -/obj/machinery/door/poddoor{ - dir = 4; - id = "colossus_thrusters" - }, -/turf/open/floor/plating, -/area/ship/maintenance/starboard) "rh" = ( /turf/closed/wall/mineral/plastitanium, /area/ship/cargo) @@ -1556,8 +1562,13 @@ }, /obj/machinery/light/small/directional/north, /obj/machinery/door/window/brigdoor/eastright{ + name = "Weapons Lockup"; req_access_txt = "3" }, +/obj/machinery/light_switch{ + pixel_x = -12; + pixel_y = 23 + }, /turf/open/floor/plasteel/tech, /area/ship/security/armory) "rS" = ( @@ -1591,26 +1602,24 @@ dir = 1 }, /obj/structure/closet/crate, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/machinery/status_display/shuttle{ - pixel_x = -32 - }, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/directional/north, +/obj/machinery/computer/helm/viewscreen/directional/west, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "sc" = ( @@ -1621,25 +1630,6 @@ /obj/item/toy/figure/inteq, /turf/open/floor/plasteel/dark, /area/ship/crew/office) -"sj" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/window/eastright{ - name = "Engine Access" - }, -/obj/machinery/door/poddoor{ - dir = 4; - id = "colossus_thrusters" - }, -/turf/open/floor/plating, -/area/ship/maintenance/port) "sp" = ( /obj/effect/turf_decal/box/corners{ dir = 1 @@ -1659,12 +1649,14 @@ dir = 6 }, /obj/item/radio/intercom/directional/east, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -5; + pixel_y = -19 + }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/fore) "sD" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/power/shieldwallgen/atmos{ anchored = 1; @@ -1673,10 +1665,11 @@ locked = 1 }, /obj/structure/cable, +/obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/poddoor{ id = "colossus_starboard" }, -/turf/open/floor/engine/hull, +/turf/open/floor/engine/hull/reinforced/interior, /area/ship/cargo) "sF" = ( /obj/structure/cable{ @@ -1685,17 +1678,12 @@ /obj/machinery/power/smes/shuttle/precharged{ dir = 4 }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/window/eastleft{ - name = "Engine Access" - }, /obj/machinery/door/poddoor{ dir = 4; id = "colossus_thrusters" }, -/turf/open/floor/plating, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/engine/hull/reinforced/interior, /area/ship/maintenance/port) "sP" = ( /obj/structure/chair{ @@ -1752,17 +1740,12 @@ /obj/machinery/power/smes/shuttle/precharged{ dir = 4 }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/window/eastright{ - name = "Engine Access" - }, /obj/machinery/door/poddoor{ dir = 4; id = "colossus_thrusters" }, -/turf/open/floor/plating, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/engine/hull/reinforced/interior, /area/ship/maintenance/starboard) "tt" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -1802,12 +1785,6 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/hallway/port) "tI" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/holopad/emergency/command, /turf/open/floor/carpet/orange, /area/ship/bridge) @@ -1869,9 +1846,6 @@ dir = 4; name = "Helm" }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/effect/landmark/start/head_of_security, /turf/open/floor/carpet/orange, /area/ship/bridge) @@ -1914,22 +1888,19 @@ /turf/open/floor/plasteel/tech, /area/ship/hallway/central) "uy" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, /obj/effect/turf_decal/borderfloor{ dir = 4 }, /obj/machinery/computer/helm{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "uE" = ( /obj/structure/cable{ @@ -1987,8 +1958,10 @@ /turf/open/floor/plasteel/dark, /area/ship/security) "va" = ( -/obj/machinery/computer/rdconsole/core{ - dir = 4 +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp{ + pixel_x = -5; + pixel_y = 13 }, /turf/open/floor/plasteel/dark, /area/ship/crew/office) @@ -2059,11 +2032,11 @@ /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/cargo) "vZ" = ( -/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/poddoor{ id = "colossus_port" }, -/turf/open/floor/engine/hull, +/turf/open/floor/engine/hull/reinforced/interior, /area/ship/cargo) "wb" = ( /obj/structure/table, @@ -2179,8 +2152,8 @@ }, /obj/effect/turf_decal/steeldecal/steel_decals_central7, /obj/machinery/light_switch{ - pixel_y = 23; - pixel_x = 11 + pixel_x = 11; + pixel_y = 23 }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) @@ -2230,9 +2203,7 @@ /obj/effect/turf_decal/corner/opaque/brown{ dir = 4 }, -/obj/machinery/status_display/shuttle{ - pixel_x = 32 - }, +/obj/machinery/computer/helm/viewscreen/directional/east, /turf/open/floor/plasteel/dark, /area/ship/crew/office) "xO" = ( @@ -2329,7 +2300,7 @@ name = "uniform closet"; pixel_y = 28 }, -/turf/open/floor/carpet/black, +/turf/open/floor/plasteel/grimy, /area/ship/crew) "zW" = ( /obj/structure/cable{ @@ -2373,9 +2344,6 @@ /turf/open/floor/carpet/black, /area/ship/crew) "Ae" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, @@ -2446,6 +2414,15 @@ }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"Bn" = ( +/obj/docking_port/stationary{ + dir = 2; + dwidth = 15; + height = 15; + width = 30 + }, +/turf/template_noop, +/area/template_noop) "Br" = ( /obj/structure/cable{ icon_state = "1-8" @@ -2469,7 +2446,6 @@ }, /obj/machinery/airalarm/directional/west, /obj/item/clothing/suit/space/hardsuit/security/independent/inteq, -/obj/item/clothing/head/helmet/space/inteq, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "BA" = ( @@ -2503,7 +2479,7 @@ pixel_y = -5 }, /obj/machinery/light/small/directional/west, -/turf/open/floor/carpet/black, +/turf/open/floor/plasteel/grimy, /area/ship/crew) "BK" = ( /obj/effect/turf_decal/box/corners{ @@ -2520,7 +2496,6 @@ }, /obj/structure/closet/cardboard, /obj/item/radio/intercom/directional/south, -/obj/item/storage/box/inteqmaid, /obj/effect/spawner/lootdrop/maintenance/seven, /obj/effect/turf_decal/corner_techfloor_gray{ dir = 4 @@ -2566,6 +2541,11 @@ /obj/effect/turf_decal/siding/thinplating{ dir = 9 }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20; + pixel_y = -5 + }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "Ck" = ( @@ -2621,10 +2601,10 @@ /turf/open/floor/plating, /area/ship/crew/office) "CA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/carpet/orange, /area/ship/bridge) "CG" = ( @@ -2639,7 +2619,6 @@ }, /obj/machinery/light/directional/west, /obj/item/clothing/suit/space/hardsuit/security/independent/inteq, -/obj/item/clothing/head/helmet/space/inteq, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "Da" = ( @@ -2663,7 +2642,6 @@ /obj/item/clothing/under/syndicate/inteq, /obj/item/clothing/suit/armor/hos/inteq, /obj/item/clothing/head/beret/sec/hos/inteq, -/obj/item/radio/headset/inteq/alt/captain, /obj/item/areaeditor/shuttle, /obj/item/shield/riot/tele, /obj/structure/cable{ @@ -2737,6 +2715,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 23 + }, /turf/open/floor/plasteel/tech, /area/ship/security/armory) "DW" = ( @@ -2854,13 +2836,16 @@ /obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1{ dir = 9 }, -/obj/structure/table/rolling, -/obj/item/reagent_containers/glass/bucket, -/obj/item/mop, /obj/structure/sign/warning/nosmoking/circle{ pixel_x = 32 }, -/obj/item/pushbroom, +/obj/machinery/telecomms/relay/preset/mining{ + autolinkers = list("relay","hub"); + freq_listening = list(1347); + id = "IRMG Relay"; + name = "IRMG Relay"; + network = "irmg_commnet" + }, /turf/open/floor/plasteel/tech, /area/ship/maintenance/port) "FR" = ( @@ -2906,8 +2891,8 @@ /obj/machinery/light/small/directional/east, /obj/machinery/airalarm/directional/south, /obj/machinery/light_switch{ - pixel_y = 23; - pixel_x = 11 + pixel_x = 11; + pixel_y = 23 }, /turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) @@ -2995,8 +2980,8 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/item/trash/sosjerky, /obj/machinery/light_switch{ - pixel_y = 23; - pixel_x = -12 + pixel_x = -12; + pixel_y = 23 }, /turf/open/floor/plating, /area/ship/maintenance/starboard) @@ -3110,23 +3095,29 @@ /obj/item/clothing/head/helmet/space/inteq, /obj/machinery/suit_storage_unit/inherit, /obj/machinery/light_switch{ - pixel_x = 20; dir = 8; + pixel_x = 20; pixel_y = 11 }, /turf/open/floor/plasteel/tech, /area/ship/hallway/port) +"Ii" = ( +/turf/closed/wall/mineral/plastitanium, +/area/ship/hallway/port) "Il" = ( -/obj/machinery/power/apc/auto_name/directional/west, /obj/effect/turf_decal/steeldecal/steel_decals_central7{ dir = 4 }, -/obj/structure/cable{ - icon_state = "0-4" - }, /obj/machinery/suit_storage_unit/inherit, /obj/item/clothing/suit/space/hardsuit/security/independent/inteq, /obj/item/tank/jetpack/oxygen, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, /turf/open/floor/plasteel/dark, /area/ship/hallway/port) "It" = ( @@ -3245,8 +3236,8 @@ }, /obj/effect/turf_decal/steeldecal/steel_decals_central7, /obj/machinery/light_switch{ - pixel_y = 23; - pixel_x = 11 + pixel_x = 11; + pixel_y = 23 }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/fore) @@ -3256,10 +3247,20 @@ name = "vanguard's bedsheet" }, /obj/structure/curtain/bounty, -/obj/effect/turf_decal/borderfloor{ +/obj/machinery/airalarm/directional/north, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/brown{ dir = 8 }, -/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, /turf/open/floor/plasteel/dark, /area/ship/bridge) "KM" = ( @@ -3318,21 +3319,12 @@ /obj/machinery/atmospherics/components/unary/shuttle/heater{ dir = 4 }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, /obj/machinery/door/poddoor{ dir = 4; id = "colossus_thrusters" }, -/turf/open/floor/plating, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/engine/hull/reinforced/interior, /area/ship/maintenance/port) "Lx" = ( /obj/structure/closet/crate, @@ -3377,7 +3369,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/turf/open/floor/plating, +/turf/open/floor/engine/hull/reinforced, /area/ship/maintenance/starboard) "Mg" = ( /obj/effect/turf_decal/corner/opaque/yellow, @@ -3499,32 +3491,20 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/office) "NH" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, -/obj/machinery/light/directional/north, -/obj/item/storage/fancy/cigarettes/cigars/havana, -/obj/item/lighter{ - pixel_y = 5 +/obj/machinery/turretid/lethal{ + pixel_y = 22 }, -/obj/item/toy/figure/vanguard{ - pixel_x = -10; - pixel_y = 5 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/turretid/lethal{ - pixel_y = 32 +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 }, -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen/fountain, -/obj/item/gps{ - pixel_x = 12 +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 }, /turf/open/floor/plasteel/dark, /area/ship/bridge) @@ -3608,9 +3588,12 @@ /turf/open/floor/carpet/black, /area/ship/crew) "Ou" = ( -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plasteel/tech/grid, -/area/ship/external/dark) +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/plasteel/tech, +/area/ship/hallway/port) "Ow" = ( /obj/structure/sign/number/nine{ dir = 1 @@ -3624,13 +3607,13 @@ /obj/machinery/atmospherics/pipe/simple/dark/visible/layer5{ dir = 5 }, -/turf/open/floor/engine/hull, +/turf/open/floor/engine/hull/reinforced, /area/ship/engineering) "OG" = ( /obj/machinery/power/shuttle/engine/fueled/plasma{ dir = 4 }, -/turf/open/floor/plating, +/turf/open/floor/engine/hull/reinforced, /area/ship/maintenance/starboard) "OV" = ( /obj/structure/cable{ @@ -3641,10 +3624,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 8 - }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, /turf/open/floor/plasteel/dark, /area/ship/crew/office) "Pb" = ( @@ -3706,8 +3686,12 @@ /obj/machinery/light_switch{ dir = 1; pixel_x = 11; - pixel_y = -17 + pixel_y = -19 }, +/obj/item/pushbroom, +/obj/item/mop, +/obj/item/reagent_containers/glass/bucket, +/obj/structure/table, /turf/open/floor/plating, /area/ship/maintenance/port) "Pq" = ( @@ -3744,7 +3728,7 @@ /obj/machinery/light_switch{ dir = 1; pixel_x = 5; - pixel_y = -20 + pixel_y = -19 }, /obj/effect/turf_decal/corner/opaque/yellow, /obj/effect/turf_decal/corner/opaque/brown{ @@ -3798,7 +3782,6 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/turf_decal/borderfloor, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -3808,12 +3791,13 @@ dir = 1 }, /obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/industrial/warning/fulltile, /turf/open/floor/plasteel/tech, /area/ship/hallway/port) "QL" = ( /obj/machinery/door/airlock/command/glass{ name = "Bridge"; - req_access_txt = "58" + req_access_txt = "20" }, /obj/structure/cable{ icon_state = "1-2" @@ -3850,7 +3834,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/on{ name = "exhaust injector" }, -/turf/open/floor/engine/hull, +/turf/open/floor/engine/hull/reinforced, /area/ship/engineering) "Rq" = ( /obj/structure/cable{ @@ -3884,14 +3868,12 @@ /turf/open/floor/plating, /area/ship/engineering) "RH" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/poddoor{ id = "colossus_starboard" }, -/turf/open/floor/engine/hull, +/turf/open/floor/engine/hull/reinforced/interior, /area/ship/cargo) "RI" = ( /obj/effect/turf_decal/siding/thinplating/dark{ @@ -3983,9 +3965,6 @@ /area/ship/cargo) "Sj" = ( /obj/structure/table/reinforced, -/obj/structure/cable{ - icon_state = "1-8" - }, /obj/machinery/light/directional/south, /obj/item/radio/intercom/directional/south, /obj/item/storage/lockbox/medal/sec{ @@ -3996,6 +3975,10 @@ /obj/item/spacecash/bundle/c1000, /obj/item/spacecash/bundle/c1000, /obj/item/spacecash/bundle/c1000, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/yellow, /turf/open/floor/plasteel/tech, /area/ship/bridge) "Sp" = ( @@ -4005,9 +3988,7 @@ /obj/effect/turf_decal/siding/thinplating{ dir = 1 }, -/obj/machinery/status_display/shuttle{ - pixel_y = 32 - }, +/obj/machinery/computer/helm/viewscreen/directional/north, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "Ss" = ( @@ -4094,7 +4075,7 @@ dir = 8 }, /obj/effect/turf_decal/corner/opaque/yellow, -/obj/machinery/rnd/production/techfab/department/security, +/obj/machinery/autolathe, /turf/open/floor/plasteel/dark, /area/ship/security) "TF" = ( @@ -4102,7 +4083,7 @@ dir = 1; name = "environmental siphon" }, -/turf/open/floor/engine/hull, +/turf/open/floor/engine/hull/reinforced, /area/ship/engineering) "TZ" = ( /obj/effect/turf_decal/siding/thinplating/dark{ @@ -4221,17 +4202,14 @@ /turf/open/floor/plasteel/dark, /area/ship/security) "Wb" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/warning{ - dir = 1 - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 1 - }, /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/fore) "Wl" = ( @@ -4245,8 +4223,8 @@ }, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light_switch{ - pixel_x = 20; dir = 8; + pixel_x = 20; pixel_y = 11 }, /turf/open/floor/plasteel/patterned/cargo_one, @@ -4328,13 +4306,13 @@ /obj/item/storage/belt/security/webbing/inteq/alt, /obj/item/storage/belt/security/webbing/inteq/alt, /obj/item/storage/belt/security/webbing/inteq/alt, +/obj/item/reagent_containers/spray/pepper, +/obj/item/reagent_containers/spray/pepper, +/obj/item/reagent_containers/spray/pepper, /turf/open/floor/plasteel/tech/grid, /area/ship/security/armory) "WG" = ( /obj/effect/turf_decal/box/corners, -/obj/machinery/status_display/shuttle{ - pixel_x = 32 - }, /obj/effect/decal/cleanable/dirt/dust, /obj/item/storage/firstaid/regular{ pixel_x = 5 @@ -4344,6 +4322,7 @@ }, /obj/structure/table/rolling, /obj/machinery/light/directional/south, +/obj/machinery/computer/helm/viewscreen/directional/east, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "WS" = ( @@ -4445,9 +4424,6 @@ /turf/open/floor/plasteel/tech, /area/ship/engineering) "XF" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, /obj/effect/decal/cleanable/dirt, /obj/machinery/power/shieldwallgen/atmos{ anchored = 1; @@ -4456,10 +4432,11 @@ locked = 1 }, /obj/structure/cable, +/obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/poddoor{ id = "colossus_starboard" }, -/turf/open/floor/engine/hull, +/turf/open/floor/engine/hull/reinforced/interior, /area/ship/cargo) "XJ" = ( /turf/template_noop, @@ -4505,7 +4482,7 @@ /area/ship/security/armory) "Yx" = ( /obj/machinery/atmospherics/pipe/layer_manifold/visible, -/turf/open/floor/engine/hull, +/turf/open/floor/engine/hull/reinforced, /area/ship/engineering) "Yy" = ( /obj/docking_port/stationary{ @@ -4655,7 +4632,7 @@ XJ bo sF Ls -sj +sF bo XJ XJ @@ -4665,7 +4642,7 @@ XJ XJ XJ rl -re +tp bS tp rl @@ -4805,7 +4782,7 @@ XJ "} (9,1,1) = {" XJ -XJ +Yy XJ XJ rh @@ -4823,7 +4800,7 @@ vH rh XJ XJ -XJ +Bn "} (10,1,1) = {" XJ @@ -5201,7 +5178,7 @@ XA "} (27,1,1) = {" XJ -xh +Ii hD hD hD @@ -5245,7 +5222,7 @@ XJ "} (29,1,1) = {" XJ -XJ +Ll hD hD hD @@ -5397,3 +5374,91 @@ xT Hu XJ "} +(36,1,1) = {" +XJ +XJ +XJ +fU +XJ +fU +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +"} +(37,1,1) = {" +XJ +XJ +XJ +fU +XJ +fU +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +"} +(38,1,1) = {" +XJ +XJ +XJ +eC +XJ +fU +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +"} +(39,1,1) = {" +XJ +XJ +XJ +XJ +XJ +eC +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +XJ +"} diff --git a/_maps/shuttles/shiptest/inteq_hound.dmm b/_maps/shuttles/inteq/inteq_hound.dmm similarity index 99% rename from _maps/shuttles/shiptest/inteq_hound.dmm rename to _maps/shuttles/inteq/inteq_hound.dmm index 5df3e85787e5..2fc73b689d88 100644 --- a/_maps/shuttles/shiptest/inteq_hound.dmm +++ b/_maps/shuttles/inteq/inteq_hound.dmm @@ -27,8 +27,8 @@ locked = 0; name = "fridge" }, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/storage/cans/sixbeer, /obj/item/reagent_containers/food/snacks/icecreamsandwich, /obj/machinery/light/directional/south, @@ -586,7 +586,7 @@ /obj/item/ammo_box/magazine/ak47{ pixel_x = 7 }, -/obj/item/gun/ballistic/automatic/assualt/ak47/inteq{ +/obj/item/gun/ballistic/automatic/assault/ak47/inteq{ pixel_x = -5 }, /obj/structure/closet/secure_closet/wall{ @@ -2038,11 +2038,11 @@ dir = 4 }, /obj/structure/closet/crate, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /turf/open/floor/plasteel/patterned/cargo_one, diff --git a/_maps/shuttles/shiptest/inteq_talos.dmm b/_maps/shuttles/inteq/inteq_talos.dmm similarity index 99% rename from _maps/shuttles/shiptest/inteq_talos.dmm rename to _maps/shuttles/inteq/inteq_talos.dmm index 052d1010728b..3bd00f00ed9a 100644 --- a/_maps/shuttles/shiptest/inteq_talos.dmm +++ b/_maps/shuttles/inteq/inteq_talos.dmm @@ -553,6 +553,17 @@ /obj/effect/landmark/start/head_of_security, /turf/open/floor/plasteel/dark, /area/ship/bridge) +"dW" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable, +/obj/structure/railing/corner, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 5 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) "dZ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -783,26 +794,6 @@ /obj/item/cigbutt, /turf/open/floor/plating/airless, /area/ship/maintenance/port) -"ft" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/fireaxecabinet{ - dir = 1; - pixel_y = -32 - }, -/obj/item/paper/fluff{ - default_raw_text = "Artificer team: The AAC is finicky and has a habit of malfunctioning over time. If this happens, remember how to reset it. Swipe your ID card on the control unit and make sure all settings are correct. One airlock should be set to internal, one to external. Once this is done, cycle the airlock to re-enable automatic mode and lift any stuck bolts. If you aren't an artificer, don't mess with it. You shouldn't have access anyway." - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering) "fC" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/opaque/yellow/warning{ @@ -1167,6 +1158,29 @@ }, /turf/open/floor/plasteel/elevatorshaft, /area/ship/hallway/central) +"hK" = ( +/obj/structure/table/reinforced, +/obj/machinery/fax, +/obj/machinery/button/door{ + id = "talos_bridge"; + name = "Bridge Shutters"; + pixel_x = 6; + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "talos_windows"; + name = "Window Lockdown"; + pixel_x = -6; + pixel_y = 23 + }, +/obj/effect/turf_decal/corner/opaque/brown{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/yellow{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) "hL" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ dir = 4 @@ -1178,18 +1192,6 @@ /obj/effect/decal/cleanable/oil/streak, /turf/open/floor/plasteel/patterned, /area/ship/cargo) -"hO" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/railing, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering) "hQ" = ( /obj/structure/table/reinforced, /obj/item/storage/box/drinkingglasses{ @@ -1248,6 +1250,18 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/ship/maintenance/starboard) +"im" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) "iu" = ( /obj/machinery/door/airlock/hatch{ dir = 4 @@ -1299,6 +1313,22 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) +"iD" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/item/analyzer{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering) "iE" = ( /obj/item/storage/backpack/industrial, /obj/item/clothing/suit/hazardvest, @@ -2093,6 +2123,26 @@ }, /turf/open/floor/plasteel/dark, /area/ship/bridge) +"ny" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/fireaxecabinet{ + dir = 1; + pixel_y = -32 + }, +/obj/item/paper/fluff{ + default_raw_text = "Artificer team: The AAC is finicky and has a habit of malfunctioning over time. If this happens, remember how to reset it. Swipe your ID card on the control unit and make sure all settings are correct. One airlock should be set to internal, one to external. Once this is done, cycle the airlock to re-enable automatic mode and lift any stuck bolts. If you aren't an artificer, don't mess with it. You shouldn't have access anyway." + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) "nz" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2489,8 +2539,8 @@ name = "fridge" }, /obj/item/storage/cans/sixbeer, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/snacks/popsicle/creamsicle_orange, /obj/item/reagent_containers/food/snacks/popsicle/creamsicle_orange, /obj/item/radio/intercom/directional/north, @@ -3177,20 +3227,6 @@ /obj/item/trash/popcorn, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/port) -"tb" = ( -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/railing/corner, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 5 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering) "te" = ( /obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output{ dir = 8 @@ -4999,19 +5035,6 @@ /obj/effect/turf_decal/industrial/warning, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) -"Fu" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/item/analyzer{ - pixel_x = 6; - pixel_y = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/engineering) "Fx" = ( /obj/structure/chair{ dir = 8 @@ -5712,18 +5735,6 @@ dir = 4 }, /area/ship/cargo) -"KI" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering) "KQ" = ( /obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/airlock/hatch{ @@ -6230,6 +6241,18 @@ "OF" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/engineering) +"OG" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/railing, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/catwalk/over, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/turf/open/floor/plating, +/area/ship/engineering) "OK" = ( /obj/machinery/cryopod{ dir = 8 @@ -6253,29 +6276,6 @@ }, /turf/open/floor/plasteel/dark, /area/ship/security) -"ON" = ( -/obj/structure/table/reinforced, -/obj/machinery/fax, -/obj/machinery/button/door{ - id = "talos_bridge"; - name = "Bridge Shutters"; - pixel_x = 6; - pixel_y = 23 - }, -/obj/machinery/button/door{ - id = "talos_windows"; - name = "Window Lockdown"; - pixel_x = -6; - pixel_y = 23 - }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) "OP" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, @@ -6455,19 +6455,6 @@ }, /turf/open/floor/plasteel/tech, /area/ship/engineering) -"Qt" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "burn chamber input pump" - }, -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer1{ - dir = 5 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/engine) "Qu" = ( /obj/effect/turf_decal/industrial/warning{ dir = 4 @@ -7074,11 +7061,11 @@ /obj/structure/closet/crate{ name = "food crate" }, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, @@ -7324,6 +7311,22 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/airless, /area/ship/cargo/port) +"We" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "burn chamber input pump" + }, +/obj/machinery/atmospherics/pipe/simple/dark/visible/layer1{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/engine) "Wf" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /obj/structure/cable, @@ -7877,8 +7880,8 @@ bM UG UM lO -tb -KI +dW +im cn pU pU @@ -7887,7 +7890,7 @@ pU pU pU Vk -Qt +We dl pm iA @@ -7911,8 +7914,8 @@ OF jf ak Uc -hO -Fu +OG +iD Lo dw ge @@ -8185,7 +8188,7 @@ Xg Ps sW eT -ft +ny xI Oq kD @@ -8624,7 +8627,7 @@ lC wE qW mX -ON +hK qM cf Lc diff --git a/_maps/shuttles/shiptest/inteq_vaquero.dmm b/_maps/shuttles/inteq/inteq_vaquero.dmm similarity index 99% rename from _maps/shuttles/shiptest/inteq_vaquero.dmm rename to _maps/shuttles/inteq/inteq_vaquero.dmm index 6e380f8b0bf1..2e8d626d4e5a 100644 --- a/_maps/shuttles/shiptest/inteq_vaquero.dmm +++ b/_maps/shuttles/inteq/inteq_vaquero.dmm @@ -1513,16 +1513,16 @@ dir = 1 }, /obj/structure/closet/crate, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, /obj/item/reagent_containers/food/drinks/waterbottle/large, @@ -1677,7 +1677,6 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/office) "Ax" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 }, diff --git a/_maps/shuttles/shiptest/minutemen_asclepius.dmm b/_maps/shuttles/minutemen/minutemen_asclepius.dmm similarity index 99% rename from _maps/shuttles/shiptest/minutemen_asclepius.dmm rename to _maps/shuttles/minutemen/minutemen_asclepius.dmm index 787be58f3cd0..b2b8bf8786f2 100644 --- a/_maps/shuttles/shiptest/minutemen_asclepius.dmm +++ b/_maps/shuttles/minutemen/minutemen_asclepius.dmm @@ -2707,8 +2707,8 @@ /obj/machinery/microwave{ pixel_y = 2 }, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/wood, /area/ship/hallway/central) "AY" = ( @@ -4069,8 +4069,8 @@ /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch, /obj/item/storage/belt/security, /obj/item/gun/ballistic/automatic/pistol/m1911, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot{ +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber{ pixel_x = 3 }, /obj/structure/railing{ diff --git a/_maps/shuttles/shiptest/minutemen_cepheus.dmm b/_maps/shuttles/minutemen/minutemen_cepheus.dmm similarity index 99% rename from _maps/shuttles/shiptest/minutemen_cepheus.dmm rename to _maps/shuttles/minutemen/minutemen_cepheus.dmm index 1dccb53e3a46..c41e3b74aad8 100644 --- a/_maps/shuttles/shiptest/minutemen_cepheus.dmm +++ b/_maps/shuttles/minutemen/minutemen_cepheus.dmm @@ -97,11 +97,11 @@ /area/ship/engineering/electrical) "bn" = ( /obj/item/storage/bag/tray, -/obj/item/storage/box/donkpockets{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = 8; pixel_y = 8 }, -/obj/item/storage/box/donkpockets{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = 6; pixel_y = 6 }, @@ -368,7 +368,10 @@ }, /obj/effect/turf_decal/techfloor/corner, /mob/living/simple_animal/bot/secbot/beepsky/jr, -/obj/machinery/firealarm/directional/west, +/obj/machinery/firealarm/directional/west{ + pixel_y = 1; + pixel_x = -34 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/button/door{ dir = 4; @@ -498,6 +501,10 @@ pixel_y = 11 }, /obj/machinery/light/small/directional/south, +/obj/machinery/advanced_airlock_controller{ + pixel_y = 10; + pixel_x = -25 + }, /turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "fJ" = ( @@ -1121,14 +1128,14 @@ dir = 1 }, /obj/structure/rack, -/obj/item/circuitboard/machine/circuit_imprinter{ - pixel_y = -6 - }, /obj/item/circuitboard/machine/rdserver, /obj/item/circuitboard/computer/rdconsole{ pixel_y = 7 }, /obj/effect/decal/cleanable/dirt, +/obj/item/circuitboard/machine/circuit_imprinter/department/basic{ + pixel_y = -10 + }, /turf/open/floor/plasteel/tech/techmaint, /area/ship/science/robotics) "mK" = ( @@ -1460,6 +1467,9 @@ /obj/structure/sign/poster/official/moth/hardhats{ pixel_x = 32 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, /turf/open/floor/plasteel/dark, /area/ship/science/robotics) "qI" = ( @@ -1911,7 +1921,6 @@ /obj/item/gun/ballistic/automatic/pistol/m1911{ pixel_y = 3 }, -/obj/structure/extinguisher_cabinet/directional/north, /obj/machinery/light/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/item/gun/ballistic/automatic/pistol/m1911{ @@ -1920,7 +1929,7 @@ /obj/structure/sign/poster/contraband/twelve_gauge{ pixel_y = 32 }, -/obj/item/gun/ballistic/shotgun/bulldog/minutemen, +/obj/item/gun/ballistic/shotgun/riot, /turf/open/floor/plasteel/tech, /area/ship/security) "tX" = ( @@ -2062,9 +2071,6 @@ }, /obj/machinery/firealarm/directional/south, /obj/item/radio/intercom/directional/south, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, /turf/open/floor/plasteel/dark, /area/ship/science/robotics) "vQ" = ( @@ -2155,14 +2161,13 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/science/robotics) "wC" = ( -/obj/machinery/rnd/production/circuit_imprinter/department/science, /obj/structure/sign/poster/contraband/free_drone{ pixel_y = -32 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, /obj/machinery/airalarm/directional/east, +/obj/structure/frame/machine{ + anchored = 1 + }, /turf/open/floor/plasteel/dark, /area/ship/science/robotics) "wF" = ( @@ -3674,9 +3679,6 @@ /turf/open/floor/plasteel, /area/ship/hallway/central) "Nr" = ( -/obj/machinery/advanced_airlock_controller{ - pixel_y = 26 - }, /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer4{ dir = 4 }, @@ -4049,9 +4051,6 @@ /obj/machinery/light/directional/west{ light_color = "#e8eaff" }, -/obj/structure/sign/poster/official/obey{ - pixel_x = -31 - }, /obj/structure/sign/departments/security{ pixel_y = -32 }, @@ -4146,11 +4145,11 @@ pixel_x = 3; pixel_y = -3 }, -/obj/item/storage/box/lethalshot{ - pixel_x = 4; - pixel_y = -7 - }, /obj/item/ammo_box/magazine/cm15_mag, +/obj/item/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 + }, /turf/open/floor/plasteel/tech/grid, /area/ship/security) "RN" = ( @@ -4182,10 +4181,10 @@ pixel_y = 28 }, /obj/item/clothing/glasses/meson, -/obj/item/gps/mining, /obj/item/pickaxe, /obj/item/pickaxe, /obj/item/circuitboard/machine/ore_redemption, +/obj/item/gps/mining, /turf/open/floor/plasteel/dark, /area/ship/cargo) "SE" = ( @@ -4244,7 +4243,9 @@ name = "tactical swivel chair" }, /obj/effect/decal/cleanable/vomit/old, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, /turf/open/floor/plasteel/dark, /area/ship/science/robotics) "Tz" = ( @@ -4359,6 +4360,7 @@ /obj/structure/sign/poster/contraband/stechkin{ pixel_y = -32 }, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/plasteel/tech, /area/ship/security) "Up" = ( diff --git a/_maps/shuttles/shiptest/minutemen_corvus.dmm b/_maps/shuttles/minutemen/minutemen_corvus.dmm similarity index 99% rename from _maps/shuttles/shiptest/minutemen_corvus.dmm rename to _maps/shuttles/minutemen/minutemen_corvus.dmm index edcdbd0fe6ea..36e4581f8dcd 100644 --- a/_maps/shuttles/shiptest/minutemen_corvus.dmm +++ b/_maps/shuttles/minutemen/minutemen_corvus.dmm @@ -525,13 +525,12 @@ }, /obj/effect/turf_decal/box, /obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/railing{ - dir = 1; - layer = 3.1 - }, /obj/item/tank/jetpack/carbondioxide, /obj/item/clothing/suit/space/hardsuit/swat, /obj/machinery/suit_storage_unit/inherit/industrial, +/obj/structure/railing{ + dir = 8 + }, /turf/open/floor/plasteel/tech/grid, /area/ship/hallway/central) "ka" = ( @@ -1166,7 +1165,6 @@ /obj/effect/turf_decal/techfloor/orange, /obj/structure/railing/corner, /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/extinguisher_cabinet/directional/north, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, @@ -1179,6 +1177,7 @@ /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 4 }, +/obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/plasteel/tech/techmaint, /area/ship/engineering) "xL" = ( @@ -1400,9 +1399,9 @@ name = "equipment locker"; req_access_txt = "1" }, -/obj/item/storage/belt/military, -/obj/item/storage/belt/military, -/obj/item/storage/belt/military, +/obj/item/storage/belt/military/minutemen, +/obj/item/storage/belt/military/minutemen, +/obj/item/storage/belt/military/minutemen, /obj/item/clothing/gloves/combat, /obj/item/clothing/gloves/combat, /obj/item/clothing/gloves/combat, @@ -1527,8 +1526,8 @@ }, /obj/item/reagent_containers/food/snacks/hotdog, /obj/item/storage/cans/sixbeer, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plastic, /area/ship/hallway/central) "Eo" = ( @@ -2148,13 +2147,12 @@ }, /obj/effect/turf_decal/box, /obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/railing{ - dir = 1; - layer = 3.1 - }, /obj/item/tank/jetpack/carbondioxide, /obj/machinery/suit_storage_unit/inherit/industrial, /obj/item/clothing/suit/space/hardsuit/security/independent/minutemen, +/obj/structure/railing{ + dir = 4 + }, /turf/open/floor/plasteel/tech/grid, /area/ship/hallway/central) "PA" = ( @@ -2327,18 +2325,18 @@ /obj/item/ammo_box/magazine/m45{ pixel_x = 5 }, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, /obj/effect/turf_decal/corner/opaque/red/border{ dir = 1 }, -/obj/item/ammo_box/magazine/m45/rubbershot, +/obj/item/ammo_box/magazine/m45/rubber, /obj/item/ammo_box/magazine/smgm9mm{ pixel_x = 2; pixel_y = 1 }, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot{ +/obj/item/ammo_box/magazine/smgm9mm/rubber{ pixel_x = -5; pixel_y = -2 }, diff --git a/_maps/shuttles/shiptest/minutemen_vela.dmm b/_maps/shuttles/minutemen/minutemen_vela.dmm similarity index 98% rename from _maps/shuttles/shiptest/minutemen_vela.dmm rename to _maps/shuttles/minutemen/minutemen_vela.dmm index 037e1d33c1bb..3cc71e593ecb 100644 --- a/_maps/shuttles/shiptest/minutemen_vela.dmm +++ b/_maps/shuttles/minutemen/minutemen_vela.dmm @@ -28,9 +28,9 @@ /obj/item/ammo_box/magazine/m45, /obj/item/ammo_box/magazine/m45, /obj/item/ammo_box/magazine/m45, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, -/obj/item/ammo_box/magazine/smgm9mm/rubbershot, +/obj/item/ammo_box/magazine/smgm9mm/rubber, +/obj/item/ammo_box/magazine/smgm9mm/rubber, +/obj/item/ammo_box/magazine/smgm9mm/rubber, /obj/item/ammo_box/c9mm/rubbershot, /obj/structure/cable{ icon_state = "0-6" @@ -43,8 +43,8 @@ }, /obj/structure/table/glass, /obj/item/flashlight/lamp{ - pixel_y = 1; - pixel_x = -7 + pixel_x = -7; + pixel_y = 1 }, /obj/item/paicard{ pixel_x = 6; @@ -62,11 +62,11 @@ /area/ship/engineering) "aq" = ( /obj/machinery/button/door{ - pixel_y = 14; - pixel_x = 22; + dir = 8; id = "obai2"; name = "AI core blast door button"; - dir = 8 + pixel_x = 22; + pixel_y = 14 }, /obj/structure/AIcore, /obj/machinery/power/apc/auto_name/directional/east, @@ -74,11 +74,11 @@ icon_state = "0-8" }, /obj/machinery/button/door{ - pixel_y = -15; - pixel_x = 22; + dir = 8; id = "obai"; name = "AI core window shutters button"; - dir = 8 + pixel_x = 22; + pixel_y = -15 }, /turf/open/floor/plasteel/telecomms_floor, /area/ship/science/ai_chamber) @@ -111,8 +111,8 @@ dir = 8 }, /obj/item/cardboard_cutout{ - name = "John"; - desc = "Guardian of the engines." + desc = "Guardian of the engines."; + name = "John" }, /turf/open/floor/engine/hull/reinforced, /area/ship/external) @@ -216,8 +216,8 @@ "bZ" = ( /obj/effect/turf_decal/industrial/hatch/yellow, /obj/machinery/atmospherics/components/unary/thermomachine{ - piping_layer = 2; - dir = 8 + dir = 8; + piping_layer = 2 }, /obj/machinery/camera/autoname{ dir = 8 @@ -341,10 +341,10 @@ "cI" = ( /obj/machinery/button/door{ dir = 4; + id = "obengi"; name = "Engineering Storage Lock"; - pixel_y = -7; pixel_x = -21; - id = "obengi" + pixel_y = -7 }, /obj/structure/closet/crate/engineering/electrical, /obj/item/storage/box/lights/mixed, @@ -547,15 +547,15 @@ }, /obj/machinery/door/firedoor/window, /obj/machinery/door/poddoor/shutters/preopen{ - id = "vela_lablock"; - dir = 4 + dir = 4; + id = "vela_lablock" }, /turf/open/floor/plating, /area/ship/science/xenobiology) "dC" = ( /obj/structure/closet/secure_closet{ - name = "captain's locker"; icon_state = "cap"; + name = "captain's locker"; req_access_txt = "20" }, /obj/item/clothing/under/rank/command/minutemen, @@ -686,14 +686,14 @@ /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, /obj/effect/turf_decal/steeldecal/steel_decals_central7{ - pixel_y = 0; dir = 8; - pixel_x = 1 + pixel_x = 1; + pixel_y = 0 }, /obj/machinery/light_switch{ dir = 1; - pixel_y = -16; - pixel_x = -13 + pixel_x = -13; + pixel_y = -16 }, /turf/open/floor/plasteel/dark, /area/ship/hallway/central) @@ -776,9 +776,9 @@ dir = 8 }, /obj/machinery/door/poddoor/shutters{ - name = "Engine Shutters"; + dir = 4; id = "obengines"; - dir = 4 + name = "Engine Shutters" }, /turf/open/floor/engine, /area/ship/engineering) @@ -885,8 +885,8 @@ dir = 10 }, /obj/item/kirbyplants/random{ - pixel_y = 5; - pixel_x = 2 + pixel_x = 2; + pixel_y = 5 }, /turf/open/floor/mineral/plastitanium, /area/ship/bridge) @@ -942,8 +942,8 @@ /area/ship/bridge) "fH" = ( /obj/machinery/door/window/brigdoor/westleft{ - req_access_txt = list("2"); - id = "vela" + id = "vela"; + req_access = list(2) }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -965,8 +965,8 @@ /obj/effect/turf_decal/industrial/caution, /obj/machinery/light/small/directional/east, /obj/structure/sign/warning/vacuum/external{ - pixel_y = 11; - pixel_x = 28 + pixel_x = 28; + pixel_y = 11 }, /obj/effect/turf_decal/steeldecal/steel_decals10, /turf/open/floor/plasteel/tech, @@ -1256,10 +1256,10 @@ }, /obj/effect/turf_decal/industrial/traffic, /obj/docking_port/mobile{ - preferred_direction = 4; dheight = 1; dir = 2; - port_direction = 8 + port_direction = 8; + preferred_direction = 4 }, /turf/open/floor/engine, /area/ship/external) @@ -1624,8 +1624,8 @@ dir = 4 }, /obj/machinery/light_switch{ - pixel_y = 23; - pixel_x = -9 + pixel_x = -9; + pixel_y = 23 }, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) @@ -2012,8 +2012,8 @@ dir = 5 }, /obj/structure/sign/poster/contraband/power{ - pixel_y = 32; - pixel_x = 32 + pixel_x = 32; + pixel_y = 32 }, /obj/effect/turf_decal/corner_techfloor_gray{ dir = 8 @@ -2201,9 +2201,9 @@ "mS" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /obj/machinery/door/poddoor/shutters{ + dir = 4; id = "obfront"; - name = "Window Shutters"; - dir = 4 + name = "Window Shutters" }, /turf/open/floor/plating, /area/ship/bridge) @@ -2211,8 +2211,8 @@ /obj/structure/table/reinforced, /obj/machinery/light/small/directional/south, /obj/item/reagent_containers/glass/maunamug{ - pixel_y = 6; - pixel_x = 8 + pixel_x = 8; + pixel_y = 6 }, /obj/item/paper_bin{ pixel_x = -6; @@ -2387,8 +2387,8 @@ dir = 8 }, /obj/machinery/door/airlock{ - name = "Showers"; - dir = 4 + dir = 4; + name = "Showers" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -2456,9 +2456,9 @@ icon_state = "0-8" }, /obj/machinery/door/poddoor/shutters{ - name = "Engine Shutters"; + dir = 4; id = "obengines"; - dir = 4 + name = "Engine Shutters" }, /turf/open/floor/engine, /area/ship/engineering/atmospherics) @@ -2477,10 +2477,10 @@ }, /obj/machinery/button/door{ dir = 8; - pixel_x = 22; - pixel_y = -16; id = "vela_labeva"; name = "airlock shutters"; + pixel_x = 22; + pixel_y = -16; req_access = list(1) }, /turf/open/floor/plasteel/dark, @@ -2619,8 +2619,8 @@ /obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/meson/prescription, /obj/structure/closet/secure_closet/miner{ - populate = 0; - name = "pilot's equipment" + name = "pilot's equipment"; + populate = 0 }, /obj/item/clothing/gloves/explorer, /obj/item/gps/mining, @@ -2666,8 +2666,8 @@ /area/ship/security/armory) "pC" = ( /obj/structure/noticeboard/qm{ - name = "Supply Officer's Notice Board"; desc = "Important notices from the Supply Officer"; + name = "Supply Officer's Notice Board"; pixel_y = 28 }, /obj/structure/reagent_dispensers/fueltank, @@ -2808,9 +2808,9 @@ /obj/effect/turf_decal/spline/fancy/opaque/black, /obj/structure/closet/wall{ dir = 4; - pixel_y = 0; + name = "spare uniforms"; pixel_x = -28; - name = "spare uniforms" + pixel_y = 0 }, /obj/item/clothing/under/rank/security/officer/minutemen, /obj/item/clothing/under/rank/security/officer/minutemen, @@ -2859,8 +2859,8 @@ /obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/meson/prescription, /obj/structure/closet/secure_closet/miner{ - populate = 0; - name = "pilot's equipment" + name = "pilot's equipment"; + populate = 0 }, /obj/item/clothing/gloves/explorer, /obj/item/gps/mining, @@ -2906,16 +2906,16 @@ "qJ" = ( /obj/structure/table/reinforced, /obj/item/gps{ - pixel_y = -2; + gpstag = "GOLD-VHEV"; pixel_x = -5; - gpstag = "GOLD-VHEV" + pixel_y = -2 }, /obj/machinery/button/door{ dir = 8; - pixel_y = 4; - pixel_x = 8; id = "obfront"; - name = "Window Shutters" + name = "Window Shutters"; + pixel_x = 8; + pixel_y = 4 }, /obj/machinery/light/directional/north, /turf/open/floor/plasteel/tech, @@ -2970,8 +2970,8 @@ /obj/item/clothing/head/helmet/space/pilot/random, /obj/item/reagent_containers/food/drinks/bottle/trappist, /obj/structure/sign/warning/nosmoking/burnt{ - pixel_y = -28; - pixel_x = -4 + pixel_x = -4; + pixel_y = -28 }, /turf/open/floor/plasteel/tech/grid, /area/ship/hangar/port) @@ -2997,8 +2997,8 @@ dir = 1 }, /obj/structure/closet/secure_closet{ - name = "bridge officer's locker"; icon_state = "cap"; + name = "bridge officer's locker"; req_access_txt = "19" }, /obj/effect/turf_decal/box, @@ -3056,8 +3056,8 @@ /obj/item/clothing/head/helmet/bulletproof/minutemen, /obj/item/storage/belt/security/full, /obj/item/restraints/handcuffs, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, /obj/effect/turf_decal/industrial/hatch/yellow, /obj/structure/extinguisher_cabinet/directional/east, /obj/item/clothing/suit/armor/vest/marine, @@ -3196,8 +3196,8 @@ dir = 4 }, /obj/machinery/door/airlock/research{ - name = "Science Lab"; - dir = 4 + dir = 4; + name = "Science Lab" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -3314,8 +3314,8 @@ icon_state = "4-8" }, /obj/structure/sign/warning/fire{ - pixel_y = 24; - pixel_x = 8 + pixel_x = 8; + pixel_y = 24 }, /turf/open/floor/plasteel/tech, /area/ship/engineering/engine) @@ -3343,8 +3343,8 @@ /area/ship/engineering) "sA" = ( /obj/machinery/atmospherics/components/binary/pump/layer4{ - name = "Waste to Environment"; - dir = 8 + dir = 8; + name = "Waste to Environment" }, /turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) @@ -3396,8 +3396,8 @@ dir = 8 }, /obj/machinery/door/airlock{ - name = "Airlock Access"; - dir = 4 + dir = 4; + name = "Airlock Access" }, /turf/open/floor/plasteel/tech, /area/ship/hallway/fore) @@ -3479,7 +3479,7 @@ /obj/item/pizzabox/pineapple, /obj/item/pizzabox/pineapple, /obj/item/pizzabox/pineapple, -/obj/item/storage/box/donkpockets, +/obj/effect/spawner/lootdrop/ration, /obj/item/reagent_containers/glass/mortar/metal, /obj/item/pestle, /obj/item/reagent_containers/food/condiment/saltshaker, @@ -3542,9 +3542,9 @@ /obj/structure/rack, /obj/machinery/door/window/brigdoor/eastleft, /obj/item/gps{ - pixel_y = -2; + gpstag = "GOLD-VHEV"; pixel_x = -5; - gpstag = "GOLD-VHEV" + pixel_y = -2 }, /obj/structure/window/reinforced{ dir = 1 @@ -3639,16 +3639,16 @@ dir = 4 }, /obj/machinery/button/door{ - pixel_y = 23; - pixel_x = -7; + id = "obmine11"; name = "Bay 1 Doors"; - id = "obmine11" + pixel_x = -7; + pixel_y = 23 }, /obj/machinery/button/shieldwallgen{ id = "obhang21"; name = "Bay 1 Air Shield"; - pixel_y = 22; - pixel_x = 5 + pixel_x = 5; + pixel_y = 22 }, /turf/open/floor/plasteel/tech, /area/ship/hangar/port) @@ -3697,8 +3697,8 @@ "uo" = ( /obj/structure/table, /obj/item/clipboard{ - pixel_y = 8; - pixel_x = -3 + pixel_x = -3; + pixel_y = 8 }, /obj/item/paper/crumpled{ pixel_x = 9; @@ -3727,17 +3727,17 @@ dir = 8 }, /obj/machinery/button/shieldwallgen{ - id = "obcargos"; dir = 8; + id = "obcargos"; pixel_x = 23; pixel_y = 5 }, /obj/machinery/button/door{ dir = 8; - pixel_y = -5; - pixel_x = 25; id = "obcargo"; - name = "Cargo Shutters" + name = "Cargo Shutters"; + pixel_x = 25; + pixel_y = -5 }, /turf/open/floor/plasteel/dark, /area/ship/cargo) @@ -3816,8 +3816,8 @@ /obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/meson/prescription, /obj/structure/closet/secure_closet/miner{ - populate = 0; - name = "pilot's equipment" + name = "pilot's equipment"; + populate = 0 }, /obj/item/clothing/gloves/explorer, /obj/item/gps/mining, @@ -3876,16 +3876,16 @@ dir = 8 }, /obj/machinery/button/door{ - pixel_y = 23; - pixel_x = 7; + id = "obmine11"; name = "Bay 1 Doors"; - id = "obmine11" + pixel_x = 7; + pixel_y = 23 }, /obj/machinery/button/shieldwallgen{ id = "obhang21"; name = "Bay 1 Air Shield"; - pixel_y = 22; - pixel_x = -5 + pixel_x = -5; + pixel_y = 22 }, /turf/open/floor/plasteel/tech, /area/ship/hangar/port) @@ -3988,16 +3988,16 @@ "wh" = ( /obj/structure/table, /obj/item/clothing/mask/cigarette/cigar/havana{ - pixel_y = -1; - pixel_x = 8 + pixel_x = 8; + pixel_y = -1 }, /obj/item/lighter, /obj/machinery/button/door{ - name = "Engine Shutters"; - id = "obengines"; dir = 4; - pixel_y = 7; - pixel_x = -24 + id = "obengines"; + name = "Engine Shutters"; + pixel_x = -24; + pixel_y = 7 }, /obj/structure/sign/poster/contraband/hacking_guide{ pixel_y = -30 @@ -4134,8 +4134,8 @@ dir = 8 }, /obj/machinery/light_switch{ - pixel_y = 23; - pixel_x = -5 + pixel_x = -5; + pixel_y = 23 }, /obj/machinery/firealarm/directional/north{ pixel_x = 6 @@ -4173,9 +4173,9 @@ /area/ship/engineering) "wZ" = ( /obj/machinery/door/airlock/command{ + dir = 4; name = "Bridge"; - req_access_txt = "19"; - dir = 4 + req_access_txt = "19" }, /obj/machinery/door/firedoor/border_only{ dir = 8 @@ -4343,8 +4343,8 @@ "xH" = ( /obj/structure/sink{ dir = 8; - pixel_y = 0; - pixel_x = 13 + pixel_x = 13; + pixel_y = 0 }, /obj/structure/mirror{ pixel_x = 28 @@ -4359,10 +4359,10 @@ dir = 1 }, /obj/machinery/button/door{ - pixel_y = 24; - pixel_x = 8; id = "obai2"; name = "AI core blast door button"; + pixel_x = 8; + pixel_y = 24; req_access = list(19) }, /obj/structure/cable{ @@ -4404,8 +4404,8 @@ "xT" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /obj/machinery/door/poddoor/preopen{ - id = "obhangarent21"; - dir = 4 + dir = 4; + id = "obhangarent21" }, /turf/open/floor/plating, /area/ship/hallway/central) @@ -4441,18 +4441,18 @@ dir = 1 }, /obj/machinery/button/door{ - pixel_y = -22; - pixel_x = -4; - name = "umbilical window shutters"; + dir = 1; id = "obhangarent11"; - dir = 1 + name = "umbilical window shutters"; + pixel_x = -4; + pixel_y = -22 }, /obj/machinery/button/door{ - pixel_y = -22; - pixel_x = 9; - name = "pod lockdown"; - id = "obhangarent1"; dir = 1; + id = "obhangarent1"; + name = "pod lockdown"; + pixel_x = 9; + pixel_y = -22; req_access_txt = list(1) }, /turf/open/floor/plasteel/dark, @@ -4615,9 +4615,9 @@ icon_state = "0-8" }, /obj/machinery/door/poddoor/shutters{ - name = "Engine Shutters"; + dir = 4; id = "obengines"; - dir = 4 + name = "Engine Shutters" }, /turf/open/floor/engine, /area/ship/engineering/engine) @@ -4641,8 +4641,8 @@ "zk" = ( /obj/item/kirbyplants/random, /obj/structure/sign/warning/securearea{ - pixel_y = 8; - pixel_x = -26 + pixel_x = -26; + pixel_y = 8 }, /obj/machinery/light/small/directional/south, /turf/open/floor/plasteel/dark, @@ -4812,8 +4812,8 @@ pixel_y = 7 }, /obj/machinery/light_switch{ - pixel_x = 11; dir = 1; + pixel_x = 11; pixel_y = -16 }, /turf/open/floor/plasteel/tech, @@ -5042,9 +5042,9 @@ "Bu" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/effect/turf_decal/steeldecal/steel_decals_central7{ - pixel_y = 0; dir = 8; - pixel_x = 1 + pixel_x = 1; + pixel_y = 0 }, /obj/effect/turf_decal/steeldecal/steel_decals7{ dir = 4 @@ -5052,8 +5052,8 @@ /obj/effect/turf_decal/steeldecal/steel_decals7, /obj/structure/cable, /obj/machinery/light_switch{ - pixel_x = 11; dir = 1; + pixel_x = 11; pixel_y = -16 }, /turf/open/floor/plasteel/dark, @@ -5320,9 +5320,9 @@ /obj/effect/turf_decal/techfloor, /obj/machinery/button/door{ dir = 8; + id = "vela_lablock"; pixel_x = 22; - pixel_y = 7; - id = "vela_lablock" + pixel_y = 7 }, /obj/item/radio/intercom/directional/south, /turf/open/floor/plasteel/tech, @@ -5358,8 +5358,8 @@ pixel_y = 32 }, /obj/item/spacecash/bundle/pocketchange{ - pixel_y = 9; - pixel_x = 8 + pixel_x = 8; + pixel_y = 9 }, /obj/machinery/light/small/directional/east, /turf/open/floor/plasteel/tech, @@ -5415,17 +5415,17 @@ }, /obj/structure/sign/directions/engineering{ dir = 8; - pixel_y = 7; - pixel_x = -32 + pixel_x = -32; + pixel_y = 7 }, /obj/structure/sign/directions/command{ dir = 4; pixel_x = -32 }, /obj/structure/sign/directions/supply{ - pixel_y = -7; + dir = 4; pixel_x = -32; - dir = 4 + pixel_y = -7 }, /turf/open/floor/plasteel/tech/grid, /area/ship/hallway/central) @@ -5864,8 +5864,8 @@ /area/ship/hangar/port) "FS" = ( /obj/structure/closet/secure_closet{ - name = "foreman's locker"; icon_state = "cap"; + name = "foreman's locker"; req_access = list(56) }, /obj/item/clothing/head/cowboy/sec/minutemen, @@ -5902,8 +5902,8 @@ pixel_y = 4 }, /obj/item/flashlight/lamp{ - pixel_y = 4; - pixel_x = -7 + pixel_x = -7; + pixel_y = 4 }, /obj/item/storage/fancy/donut_box{ pixel_x = 1; @@ -5993,8 +5993,8 @@ pixel_y = 9 }, /obj/item/desk_flag/trans{ - pixel_y = 4; - pixel_x = -5 + pixel_x = -5; + pixel_y = 4 }, /obj/effect/turf_decal/corner/opaque/black/diagonal, /turf/open/floor/plasteel/white, @@ -6058,8 +6058,8 @@ "GH" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /obj/machinery/door/poddoor/preopen{ - id = "obhangarent11"; - dir = 4 + dir = 4; + id = "obhangarent11" }, /turf/open/floor/plating, /area/ship/hallway/central) @@ -6266,8 +6266,8 @@ /obj/item/clothing/head/helmet/bulletproof/minutemen, /obj/item/storage/belt/security/full, /obj/item/restraints/handcuffs, -/obj/item/ammo_box/magazine/m45/rubbershot, -/obj/item/ammo_box/magazine/m45/rubbershot, +/obj/item/ammo_box/magazine/m45/rubber, +/obj/item/ammo_box/magazine/m45/rubber, /obj/effect/turf_decal/industrial/hatch/yellow, /obj/structure/sign/poster/official/focus{ pixel_y = 32 @@ -6347,8 +6347,8 @@ pixel_x = -5 }, /obj/item/flashlight/lamp/green{ - pixel_y = 9; - pixel_x = 6 + pixel_x = 6; + pixel_y = 9 }, /turf/open/floor/wood, /area/ship/crew/office) @@ -6401,10 +6401,10 @@ }, /obj/machinery/button/door{ dir = 8; - pixel_y = 5; - pixel_x = -6; id = "obendo"; - name = "Office Shutters" + name = "Office Shutters"; + pixel_x = -6; + pixel_y = 5 }, /obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 @@ -6514,12 +6514,12 @@ pixel_y = 4 }, /obj/item/pen{ - pixel_y = 4; - pixel_x = 5 + pixel_x = 5; + pixel_y = 4 }, /obj/item/stamp/hos{ - pixel_y = 9; - pixel_x = 8 + pixel_x = 8; + pixel_y = 9 }, /obj/machinery/recharger{ pixel_x = -8 @@ -6616,8 +6616,8 @@ /obj/effect/turf_decal/industrial/caution, /obj/machinery/light/small/directional/west, /obj/structure/sign/warning/vacuum/external{ - pixel_y = 11; - pixel_x = -28 + pixel_x = -28; + pixel_y = 11 }, /obj/effect/turf_decal/steeldecal/steel_decals10{ dir = 8 @@ -6632,16 +6632,16 @@ dir = 1 }, /obj/machinery/button/door{ - pixel_y = 25; - pixel_x = 7; + id = "obmine12"; name = "Bay Doors"; - id = "obmine12" + pixel_x = 7; + pixel_y = 25 }, /obj/machinery/button/shieldwallgen{ id = "obhang22"; name = "Air Shield Switch"; - pixel_y = 25; - pixel_x = -5 + pixel_x = -5; + pixel_y = 25 }, /turf/open/floor/plasteel/tech, /area/ship/hangar/port) @@ -6938,10 +6938,10 @@ }, /obj/machinery/button/door{ dir = 8; - pixel_y = -2; - pixel_x = 22; id = "obair"; - name = "Blast Door Controller" + name = "Blast Door Controller"; + pixel_x = 22; + pixel_y = -2 }, /obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ dir = 9 @@ -7101,10 +7101,10 @@ "Nf" = ( /obj/machinery/button/door{ dir = 8; + id = "obengi"; name = "Engineering Storage Lock"; - pixel_y = -7; pixel_x = 22; - id = "obengi" + pixel_y = -7 }, /obj/item/decal_painter{ pixel_x = -4; @@ -7116,8 +7116,8 @@ }, /obj/structure/table, /obj/machinery/light_switch{ - pixel_y = 23; - pixel_x = -9 + pixel_x = -9; + pixel_y = 23 }, /turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) @@ -7145,8 +7145,8 @@ id = "vela" }, /obj/machinery/door_timer{ - pixel_y = 28; - id = "vela" + id = "vela"; + pixel_y = 28 }, /turf/open/floor/plasteel/dark, /area/ship/security/armory) @@ -7322,8 +7322,8 @@ /obj/machinery/light/small/directional/west, /obj/machinery/light_switch{ dir = 4; - pixel_y = -10; - pixel_x = -21 + pixel_x = -21; + pixel_y = -10 }, /turf/open/floor/plasteel/dark, /area/ship/science/xenobiology) @@ -7349,10 +7349,10 @@ }, /obj/structure/bookcase/manuals, /obj/machinery/button/door{ - pixel_y = 23; - pixel_x = 8; id = "vela_cap"; - name = "window shutters" + name = "window shutters"; + pixel_x = 8; + pixel_y = 23 }, /turf/open/floor/wood, /area/ship/crew/office) @@ -7364,8 +7364,8 @@ dir = 4 }, /obj/structure/sign/warning/fire{ - pixel_y = 24; - pixel_x = -8 + pixel_x = -8; + pixel_y = 24 }, /obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 8 @@ -7411,9 +7411,9 @@ /area/ship/hangar/port) "Om" = ( /obj/machinery/door/airlock/command{ + dir = 4; name = "Bridge"; - req_access_txt = "19"; - dir = 4 + req_access_txt = "19" }, /obj/machinery/door/firedoor/border_only{ dir = 8 @@ -7454,8 +7454,8 @@ name = "science pen" }, /obj/item/clipboard{ - pixel_y = 3; - pixel_x = 7 + pixel_x = 7; + pixel_y = 3 }, /turf/open/floor/plasteel/dark, /area/ship/science/xenobiology) @@ -7495,8 +7495,8 @@ /area/ship/security/armory) "OM" = ( /obj/machinery/door/poddoor/shutters/preopen{ - id = "obendo"; - dir = 4 + dir = 4; + id = "obendo" }, /obj/machinery/door/airlock/engineering{ dir = 4; @@ -7747,8 +7747,8 @@ /area/ship/engineering/atmospherics) "PT" = ( /obj/machinery/door/airlock{ - id_tag = "obt"; - dir = 4 + dir = 4; + id_tag = "obt" }, /obj/effect/turf_decal/trimline/opaque/green/filled/warning{ dir = 4 @@ -7958,8 +7958,8 @@ dir = 4 }, /obj/machinery/door/airlock/research{ - name = "Breakroom"; - dir = 4 + dir = 4; + name = "Breakroom" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -8097,16 +8097,16 @@ dir = 4 }, /obj/machinery/button/door{ - pixel_y = 25; - pixel_x = -7; + id = "obmine12"; name = "Bay Doors"; - id = "obmine12" + pixel_x = -7; + pixel_y = 25 }, /obj/machinery/button/shieldwallgen{ id = "obhang22"; name = "Air Shield Switch"; - pixel_y = 25; - pixel_x = 5 + pixel_x = 5; + pixel_y = 25 }, /turf/open/floor/plasteel/tech, /area/ship/hangar/port) @@ -8248,8 +8248,8 @@ /obj/structure/table/reinforced, /obj/item/radio/intercom/directional/north, /obj/item/reagent_containers/glass/maunamug{ - pixel_y = 5; - pixel_x = 5 + pixel_x = 5; + pixel_y = 5 }, /turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) @@ -8269,8 +8269,8 @@ }, /obj/machinery/light_switch{ dir = 1; - pixel_y = -21; - pixel_x = 2 + pixel_x = 2; + pixel_y = -21 }, /turf/open/floor/plating, /area/ship/engineering/atmospherics) @@ -8574,8 +8574,8 @@ dir = 4 }, /obj/machinery/door/airlock/security{ - req_access = list(1); - dir = 4 + dir = 4; + req_access = list(1) }, /turf/open/floor/plasteel/tech, /area/ship/security/armory) @@ -8672,16 +8672,16 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/item/kirbyplants/random, /obj/machinery/button/door{ - pixel_y = 24; - pixel_x = -4; + id = "obhangarent21"; name = "umbilical window shutters"; - id = "obhangarent21" + pixel_x = -4; + pixel_y = 24 }, /obj/machinery/button/door{ - pixel_y = 24; - pixel_x = 9; - name = "pod lockdown"; id = "obhangarent2"; + name = "pod lockdown"; + pixel_x = 9; + pixel_y = 24; req_access = list(1) }, /turf/open/floor/plasteel/dark, @@ -8912,9 +8912,9 @@ /area/ship/hangar/port) "Wz" = ( /obj/machinery/door/poddoor{ + dir = 4; id = "obengi"; - name = "Engineering Storage"; - dir = 4 + name = "Engineering Storage" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -8944,16 +8944,16 @@ "WP" = ( /obj/structure/table/chem, /obj/item/reagent_containers/food/drinks/bottle/orangejuice{ - pixel_y = 12; - pixel_x = 5 + pixel_x = 5; + pixel_y = 12 }, /obj/item/reagent_containers/food/drinks/bottle/limejuice{ - pixel_y = 15; - pixel_x = -8 + pixel_x = -8; + pixel_y = 15 }, /obj/item/reagent_containers/food/snacks/pizzaslice/pineapple{ - pixel_y = 2; - pixel_x = -7 + pixel_x = -7; + pixel_y = 2 }, /obj/effect/turf_decal/techfloor{ dir = 1 @@ -9085,8 +9085,8 @@ dir = 1 }, /obj/item/reagent_containers/food/drinks/soda_cans/cola{ - pixel_y = 8; - pixel_x = 8 + pixel_x = 8; + pixel_y = 8 }, /obj/item/paper/crumpled, /obj/item/pen/charcoal, @@ -9179,8 +9179,8 @@ "XY" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /obj/machinery/door/poddoor/shutters{ - id = "vela_cap"; - dir = 4 + dir = 4; + id = "vela_cap" }, /turf/open/floor/plating, /area/ship/crew/office) @@ -9221,8 +9221,8 @@ pixel_x = -6 }, /obj/item/clothing/glasses/science{ - pixel_y = 10; - pixel_x = 2 + pixel_x = 2; + pixel_y = 10 }, /obj/item/assembly/igniter{ pixel_x = 9; @@ -9254,8 +9254,8 @@ dir = 4 }, /obj/machinery/door/poddoor{ - id = "obai2"; - dir = 4 + dir = 4; + id = "obai2" }, /obj/structure/cable{ icon_state = "4-8" @@ -9405,9 +9405,9 @@ /area/ship/bridge) "YY" = ( /obj/machinery/door/poddoor{ + dir = 4; id = "obengi"; - name = "Engineering Storage"; - dir = 4 + name = "Engineering Storage" }, /obj/effect/turf_decal/trimline/transparent/red/filled/warning{ dir = 8 diff --git a/_maps/shuttles/misc/hunter_bounty.dmm b/_maps/shuttles/misc/hunter_bounty.dmm deleted file mode 100644 index b25215cfbcd8..000000000000 --- a/_maps/shuttles/misc/hunter_bounty.dmm +++ /dev/null @@ -1,479 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/hunter) -"c" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external, -/turf/open/floor/plating, -/area/shuttle/hunter) -"d" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/hunter) -"e" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/hunter) -"f" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater"; - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/hunter) -"g" = ( -/obj/structure/sign/warning/vacuum/external, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/hunter) -"h" = ( -/turf/open/floor/plating, -/area/shuttle/hunter) -"i" = ( -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/plastitanium, -/turf/open/floor/plating, -/area/shuttle/hunter) -"j" = ( -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plating, -/area/shuttle/hunter) -"k" = ( -/obj/structure/sign/poster/contraband/inteq, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/hunter) -"l" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external, -/turf/open/floor/plating, -/area/shuttle/hunter) -"m" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/turf/open/floor/pod/light, -/area/shuttle/hunter) -"n" = ( -/obj/structure/table, -/turf/open/floor/pod/light, -/area/shuttle/hunter) -"o" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/pod/light, -/area/shuttle/hunter) -"p" = ( -/obj/effect/mob_spawn/human/fugitive/bounty/hook, -/turf/open/floor/pod/light, -/area/shuttle/hunter) -"q" = ( -/obj/structure/shuttle/engine/heater{ - icon_state = "heater"; - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/hunter) -"r" = ( -/obj/machinery/computer/launchpad{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"s" = ( -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"t" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 9 - }, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"u" = ( -/obj/structure/curtain/bounty, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"v" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"w" = ( -/obj/structure/table, -/obj/item/phone, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"x" = ( -/obj/structure/table, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"y" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"z" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"A" = ( -/obj/machinery/computer/helm{ - icon_state = "computer"; - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"B" = ( -/obj/machinery/launchpad, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"C" = ( -/obj/item/multitool, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"D" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"E" = ( -/obj/structure/table, -/obj/item/binoculars, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"F" = ( -/obj/machinery/power/smes, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"G" = ( -/obj/machinery/fugitive_capture, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"H" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 10 - }, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"I" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/shuttle/hunter) -"J" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/turf/open/floor/pod/light, -/area/shuttle/hunter) -"K" = ( -/obj/machinery/suit_storage_unit/open, -/turf/open/floor/pod/light, -/area/shuttle/hunter) -"M" = ( -/obj/effect/mob_spawn/human/fugitive/bounty/armor{ - icon_state = "sleeper"; - dir = 1 - }, -/turf/open/floor/pod/light, -/area/shuttle/hunter) -"N" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external, -/obj/docking_port/mobile{ - dheight = 3; - dwidth = 3; - height = 13; - movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); - name = "hunter shuttle"; - rechargeTime = 1800; - width = 15 - }, -/turf/open/floor/plating, -/area/shuttle/hunter) -"P" = ( -/obj/structure/fluff/empty_sleeper{ - icon_state = "sleeper-open"; - dir = 1 - }, -/turf/open/floor/pod/light, -/area/shuttle/hunter) -"Z" = ( -/obj/effect/mob_spawn/human/fugitive/bounty/synth, -/turf/open/floor/pod/light, -/area/shuttle/hunter) - -(1,1,1) = {" -a -a -a -b -a -a -a -a -a -b -a -a -a -"} -(2,1,1) = {" -a -a -a -b -a -a -a -a -a -b -a -a -a -"} -(3,1,1) = {" -b -a -a -b -a -e -a -e -a -b -a -a -b -"} -(4,1,1) = {" -b -a -e -b -b -q -i -q -b -b -e -a -b -"} -(5,1,1) = {" -b -b -f -b -b -r -B -F -b -b -f -b -b -"} -(6,1,1) = {" -b -b -g -b -b -s -C -G -b -b -g -b -b -"} -(7,1,1) = {" -c -d -h -j -l -t -D -H -c -d -h -j -N -"} -(8,1,1) = {" -b -b -i -b -b -u -u -u -b -b -i -b -b -"} -(9,1,1) = {" -a -b -i -b -m -v -s -s -J -b -i -b -a -"} -(10,1,1) = {" -a -a -i -k -n -w -x -s -J -b -i -a -a -"} -(11,1,1) = {" -a -a -a -b -n -x -E -s -K -b -a -a -a -"} -(12,1,1) = {" -a -a -a -b -o -y -s -s -J -b -a -a -a -"} -(13,1,1) = {" -a -a -a -i -b -u -u -u -b -i -a -a -a -"} -(14,1,1) = {" -a -a -a -i -p -s -s -s -P -i -a -a -a -"} -(15,1,1) = {" -a -a -a -i -Z -z -s -z -M -i -a -a -a -"} -(16,1,1) = {" -a -a -a -b -i -A -n -I -i -b -a -a -a -"} -(17,1,1) = {" -a -a -a -a -i -i -i -i -i -a -a -a -a -"} diff --git a/_maps/shuttles/misc/hunter_russian.dmm b/_maps/shuttles/misc/hunter_russian.dmm deleted file mode 100644 index 6ac6c73929ee..000000000000 --- a/_maps/shuttles/misc/hunter_russian.dmm +++ /dev/null @@ -1,493 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/turf/closed/wall, -/area/shuttle/hunter) -"c" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/shuttle/hunter) -"d" = ( -/obj/structure/shuttle/engine/heater{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/shuttle/hunter) -"e" = ( -/obj/machinery/portable_atmospherics/scrubber/huge, -/turf/open/floor/plating, -/area/shuttle/hunter) -"f" = ( -/obj/machinery/power/smes, -/turf/open/floor/plating, -/area/shuttle/hunter) -"g" = ( -/turf/open/floor/plating, -/area/shuttle/hunter) -"h" = ( -/obj/machinery/door/airlock/security/glass, -/turf/open/floor/mineral/plastitanium/red, -/area/shuttle/hunter) -"i" = ( -/obj/machinery/door/airlock/security/glass, -/obj/structure/fans/tiny, -/turf/open/floor/mineral/plastitanium/red, -/area/shuttle/hunter) -"j" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/hunter) -"k" = ( -/turf/open/floor/mineral/plastitanium/red, -/area/shuttle/hunter) -"m" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/item/weldingtool/largetank, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/hunter) -"n" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/reagent_dispensers/watertank, -/obj/item/reagent_containers/glass/bucket, -/obj/item/mop, -/obj/item/storage/bag/trash{ - pixel_x = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/hunter) -"o" = ( -/obj/effect/mob_spawn/human/fugitive/russian{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/shuttle/hunter) -"p" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/turf/open/floor/plating, -/area/shuttle/hunter) -"q" = ( -/turf/open/floor/mineral/plastitanium, -/area/shuttle/hunter) -"r" = ( -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/shuttle/hunter) -"s" = ( -/obj/structure/table, -/obj/item/storage/fancy/cigarettes/cigars/cohiba{ - pixel_y = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/hunter) -"t" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/large{ - icon_state = "crittercrate" - }, -/turf/open/floor/plating, -/area/shuttle/hunter) -"u" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/hunter) -"v" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/shuttle/hunter) -"w" = ( -/obj/machinery/fugitive_capture, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/hunter) -"x" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plating, -/area/shuttle/hunter) -"y" = ( -/turf/template_noop, -/area/shuttle/hunter) -"z" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/shuttle/hunter) -"A" = ( -/obj/machinery/computer/helm{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/shuttle/hunter) -"B" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/turf/open/floor/plating, -/area/shuttle/hunter) -"C" = ( -/obj/machinery/computer/camera_advanced{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/shuttle/hunter) -"D" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/mineral/plastitanium/red, -/area/shuttle/hunter) -"E" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/hunter) -"F" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/engineering{ - icon_state = "engi_crateopen" - }, -/turf/open/floor/plating, -/area/shuttle/hunter) -"G" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/bottle/vodka, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/hunter) -"H" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/closet/crate/coffin{ - icon_state = "coffinopen" - }, -/turf/open/floor/plating, -/area/shuttle/hunter) -"I" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/mecha_wreckage/ripley, -/turf/open/floor/plating, -/area/shuttle/hunter) -"J" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/hunter) -"K" = ( -/obj/machinery/door/airlock/security/glass, -/obj/structure/fans/tiny, -/obj/docking_port/mobile{ - dheight = 3; - dwidth = 3; - height = 13; - movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); - name = "hunter shuttle"; - rechargeTime = 1800; - width = 15 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/shuttle/hunter) -"L" = ( -/obj/effect/mob_spawn/human/fugitive/russian{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/hunter) -"N" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/industrial/warning{ - dir = 2 - }, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/hunter) -"Q" = ( -/obj/item/book/manual/ripley_build_and_repair, -/turf/open/floor/mineral/plastitanium/red, -/area/shuttle/hunter) -"Y" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/turf/open/floor/mineral/plastitanium, -/area/shuttle/hunter) - -(1,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -a -a -a -a -a -b -c -c -b -a -a -a -a -a -a -"} -(3,1,1) = {" -a -c -c -a -b -b -b -d -d -b -b -b -a -c -c -a -"} -(4,1,1) = {" -b -d -d -b -b -p -t -x -B -B -F -b -b -d -d -b -"} -(5,1,1) = {" -b -e -g -b -j -q -u -q -q -u -u -H -b -g -L -b -"} -(6,1,1) = {" -b -e -g -h -k -k -k -k -k -D -k -k -h -g -L -b -"} -(7,1,1) = {" -b -f -g -b -x -k -Y -Y -Y -Y -Q -I -b -g -L -b -"} -(8,1,1) = {" -b -b -b -b -b -h -b -b -b -b -h -b -b -b -b -b -"} -(9,1,1) = {" -a -b -b -b -m -k -b -y -y -b -k -N -b -b -b -a -"} -(10,1,1) = {" -a -a -a -i -k -k -v -y -y -v -k -k -K -a -a -a -"} -(11,1,1) = {" -a -a -a -b -n -r -b -y -y -b -r -J -b -a -a -a -"} -(12,1,1) = {" -a -a -a -b -b -h -b -b -b -b -h -b -b -a -a -a -"} -(13,1,1) = {" -a -a -a -b -o -k -r -z -z -k -k -o -b -a -a -a -"} -(14,1,1) = {" -a -a -a -b -b -s -w -A -C -E -G -b -b -a -a -a -"} -(15,1,1) = {" -a -a -a -a -b -b -v -v -v -v -b -b -a -a -a -a -"} diff --git a/_maps/shuttles/misc/pirate_default.dmm b/_maps/shuttles/misc/pirate_default.dmm deleted file mode 100644 index e24ae5d92697..000000000000 --- a/_maps/shuttles/misc/pirate_default.dmm +++ /dev/null @@ -1,1521 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/obj/machinery/light/small/directional/west, -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"ab" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/recharger, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"ac" = ( -/obj/machinery/computer/helm, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"ad" = ( -/obj/structure/table, -/obj/machinery/button/door{ - id = "piratebridge"; - name = "Bridge Shutters Control"; - pixel_y = -5 - }, -/obj/item/radio/intercom/directional/north{ - pixel_y = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"ae" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"af" = ( -/turf/template_noop, -/area/template_noop) -"ag" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"ah" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"ai" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/south, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"aj" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/pirate) -"ak" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/west, -/obj/structure/closet/secure_closet/freezer{ - locked = 0; - name = "fridge" - }, -/obj/item/storage/box/donkpockets{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/storage/box/donkpockets, -/obj/item/storage/fancy/donut_box, -/obj/item/reagent_containers/food/snacks/cookie, -/obj/item/reagent_containers/food/snacks/cookie{ - pixel_x = -6; - pixel_y = -6 - }, -/obj/item/reagent_containers/food/snacks/chocolatebar, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/milk, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"al" = ( -/obj/machinery/loot_locator, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"am" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"an" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "piratebridgebolt"; - name = "Bridge Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -25; - specialfunctions = 4 - }, -/obj/effect/turf_decal/corner/opaque/red, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"ao" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/obj/machinery/light/small/directional/east, -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"ap" = ( -/obj/machinery/door/airlock/hatch{ - name = "Port Gun Battery" - }, -/obj/structure/barricade/wooden/crude, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"aq" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"ar" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/storage/fancy/cigarettes{ - pixel_x = 2; - pixel_y = 6 - }, -/obj/item/storage/fancy/cigarettes/cigpack_carp{ - pixel_x = 10; - pixel_y = 6 - }, -/obj/item/storage/fancy/cigarettes/cigpack_robust{ - pixel_x = 2 - }, -/obj/item/storage/fancy/cigarettes/cigpack_midori{ - pixel_x = 10 - }, -/obj/item/storage/fancy/cigarettes/cigpack_shadyjims{ - pixel_x = 2; - pixel_y = -6 - }, -/obj/item/storage/fancy/cigarettes/cigpack_uplift{ - pixel_x = 10; - pixel_y = -6 - }, -/obj/item/lighter{ - pixel_x = -10; - pixel_y = -2 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"au" = ( -/obj/machinery/door/airlock/hatch{ - id_tag = "piratebridgebolt"; - name = "Bridge" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"av" = ( -/obj/machinery/door/airlock/hatch{ - name = "Starboard Gun Battery" - }, -/obj/structure/barricade/wooden/crude, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"aw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"ax" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"ay" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/vomit/old, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"az" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"aB" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/computer/monitor/secret{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"aC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/structure/frame/computer{ - anchored = 1; - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"aD" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"aF" = ( -/obj/machinery/door/airlock/external/glass{ - id_tag = "pirateportexternal" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/shuttle/pirate) -"aG" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/power/port_gen/pacman{ - anchored = 1 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"aH" = ( -/obj/structure/shuttle/engine/propulsion/left, -/turf/open/floor/plating/airless, -/area/shuttle/pirate) -"aI" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = -32 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"aJ" = ( -/obj/machinery/door/airlock/external/glass{ - id_tag = "pirateportexternal" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/shuttle/pirate) -"aK" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/open/floor/plating/airless, -/area/shuttle/pirate) -"aL" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"aM" = ( -/obj/structure/closet/secure_closet/personal, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/wood, -/area/shuttle/pirate) -"aN" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/button/door{ - id = "pirateportexternal"; - name = "External Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -4; - pixel_y = -25; - specialfunctions = 4 - }, -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"aO" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/button/door{ - id = "piratestarboardexternal"; - name = "External Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 4; - pixel_y = -25; - specialfunctions = 4 - }, -/obj/effect/turf_decal/industrial/warning/corner, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"aQ" = ( -/obj/machinery/porta_turret/syndicate/energy{ - dir = 1; - faction = list("pirate") - }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/pirate) -"aR" = ( -/obj/machinery/porta_turret/syndicate/energy{ - faction = list("pirate") - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/pirate) -"aS" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"aU" = ( -/obj/structure/sign/departments/engineering, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/shuttle/pirate) -"aV" = ( -/obj/effect/mob_spawn/human/pirate{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"aW" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/frame/computer{ - anchored = 1; - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/firealarm/directional/south, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"be" = ( -/obj/machinery/space_heater, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating, -/area/shuttle/pirate) -"bf" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/turretid{ - icon_state = "control_kill"; - lethal = 1; - locked = 0; - pixel_y = -25; - req_access = null - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"bg" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/gun/energy/laser{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/item/gun/energy/laser{ - pixel_y = 3 - }, -/obj/machinery/recharger, -/turf/open/floor/pod/light, -/area/shuttle/pirate) -"bk" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/power/smes/engineering{ - charge = 1e+006 - }, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"bl" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 6 - }, -/obj/machinery/light/small/directional/north, -/obj/machinery/airalarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/gun/energy/laser{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/item/gun/energy/laser{ - pixel_y = 3 - }, -/turf/open/floor/pod/light, -/area/shuttle/pirate) -"bm" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"bo" = ( -/obj/machinery/light/small/directional/east, -/obj/structure/sign/warning/vacuum/external{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/shuttle/pirate) -"br" = ( -/obj/structure/table/wood, -/obj/item/storage/box/matches, -/obj/item/reagent_containers/food/drinks/bottle/rum{ - name = "Captain Pete's Private Reserve Cuban Spaced Rum"; - pixel_x = -6; - pixel_y = 8 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ - pixel_x = 6; - pixel_y = 12 - }, -/obj/item/clothing/mask/cigarette/cigar, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/wood, -/area/shuttle/pirate) -"bu" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"bv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"bx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"by" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/piratepad, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"bA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"bB" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"bC" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/neutral, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"bF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 5 - }, -/obj/item/book/manual/wiki/barman_recipes{ - pixel_x = -8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"bH" = ( -/obj/machinery/vending/boozeomat/all_access{ - all_items_free = 1 - }, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"bI" = ( -/obj/machinery/light/small/directional/south, -/obj/machinery/computer/piratepad_control{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"bJ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"bK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sink{ - pixel_y = 25 - }, -/obj/structure/toilet{ - dir = 8 - }, -/obj/machinery/light/small/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/shuttle/pirate) -"bM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock{ - name = "Crew Cabin" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"bO" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - aidisabled = 1; - dir = 1; - name = "Pirate Corvette APC"; - pixel_y = 25; - req_access = null - }, -/obj/structure/reagent_dispensers/watertank, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"bP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"bQ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"bX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical{ - pixel_y = 4 - }, -/obj/item/flashlight{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/lights/bulbs, -/obj/item/stack/sheet/mineral/plasma{ - amount = 10 - }, -/obj/item/multitool, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/turf/open/floor/plating, -/area/shuttle/pirate) -"bZ" = ( -/obj/machinery/door/airlock/external/glass{ - id_tag = "piratestarboardexternal" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/shuttle/pirate) -"df" = ( -/obj/machinery/porta_turret/syndicate/energy{ - dir = 4; - faction = list("pirate") - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/pirate) -"dy" = ( -/obj/structure/chair/wood, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/shuttle/pirate) -"dU" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"ek" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/structure/sign/poster/contraband/peacemaker{ - pixel_x = 32 - }, -/obj/item/storage/backpack/duffelbag/syndie/x4{ - pixel_y = 8 - }, -/obj/item/grenade/smokebomb{ - pixel_x = -5 - }, -/obj/item/grenade/smokebomb{ - pixel_x = 5 - }, -/turf/open/floor/pod/light, -/area/shuttle/pirate) -"ep" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/structure/shuttle/engine/heater, -/turf/open/floor/plating/airless, -/area/shuttle/pirate) -"er" = ( -/obj/structure/shuttle/engine/propulsion/right, -/turf/open/floor/plating/airless, -/area/shuttle/pirate) -"et" = ( -/obj/structure/grille, -/turf/open/floor/plating/airless, -/area/shuttle/pirate) -"eu" = ( -/obj/structure/girder, -/obj/item/stack/rods{ - amount = 3 - }, -/turf/open/floor/plating/airless, -/area/shuttle/pirate) -"ew" = ( -/obj/structure/girder, -/obj/item/stack/rods{ - amount = 5 - }, -/turf/open/floor/plating/airless, -/area/shuttle/pirate) -"ex" = ( -/obj/structure/window/reinforced, -/obj/structure/frame/machine, -/obj/item/wrench, -/turf/open/floor/plating/airless, -/area/shuttle/pirate) -"ey" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "piratebridge" - }, -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/plastitanium, -/turf/open/floor/plating, -/area/shuttle/pirate) -"ez" = ( -/obj/structure/window/reinforced, -/obj/structure/frame/machine, -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/plating/airless, -/area/shuttle/pirate) -"eA" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 1 - }, -/obj/structure/frame/computer{ - anchored = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"eE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"fW" = ( -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/pirate) -"fY" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"gY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"jv" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "piratebridge" - }, -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/plastitanium, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/shuttle/pirate) -"km" = ( -/obj/machinery/atmospherics/components/unary/tank/air, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/firealarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"mD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/structure/closet/secure_closet/personal, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"mU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock/engineering{ - name = "Engineering" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"np" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/airalarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"vB" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/storage/box/lethalshot, -/obj/item/gun/ballistic/shotgun/automatic/combat{ - pixel_x = -2; - pixel_y = 2 - }, -/turf/open/floor/pod/light, -/area/shuttle/pirate) -"wf" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/shuttle/pirate) -"wR" = ( -/obj/machinery/porta_turret/syndicate/energy{ - dir = 8; - faction = list("pirate") - }, -/turf/closed/wall/mineral/plastitanium, -/area/shuttle/pirate) -"yi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/hatch{ - name = "Armory Access" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/pod/dark, -/area/shuttle/pirate) -"yv" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "piratebridge" - }, -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/plastitanium, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/pirate) -"zw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/airlock{ - name = "Captain's Quarters" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/wood, -/area/shuttle/pirate) -"DZ" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "piratebridge" - }, -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/plastitanium, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/pirate) -"Gk" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/machinery/suit_storage_unit/pirate, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/shuttle/pirate) -"IC" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "piratebridge" - }, -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/plastitanium, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plating, -/area/shuttle/pirate) -"JT" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/obj/item/storage/bag/money/vault, -/obj/item/stack/sheet/mineral/gold{ - amount = 3; - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/stack/sheet/mineral/silver{ - amount = 8; - pixel_x = 2; - pixel_y = -1 - }, -/turf/open/floor/pod/light, -/area/shuttle/pirate) -"Oe" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"OD" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/sign/poster/contraband/random{ - pixel_x = 32 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/shuttle/pirate) -"OL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/bar, -/obj/effect/turf_decal/corner/transparent/bar{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"RY" = ( -/obj/effect/mob_spawn/human/pirate/captain{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/poster/contraband/random{ - pixel_x = -32 - }, -/turf/open/floor/wood, -/area/shuttle/pirate) -"SE" = ( -/obj/machinery/door/airlock/external/glass{ - id_tag = "piratestarboardexternal" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/docking_port/mobile/pirate{ - dwidth = 11; - height = 16; - launch_status = 0; - name = "Pirate Ship"; - port_direction = 2; - width = 17 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/shuttle/pirate) -"Ur" = ( -/obj/structure/closet/secure_closet/personal, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/shuttle/pirate) -"UL" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 10 - }, -/obj/machinery/light/small/directional/north, -/obj/machinery/firealarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/melee/transforming/energy/sword/saber/pirate{ - pixel_x = -1; - pixel_y = 6 - }, -/obj/item/melee/transforming/energy/sword/saber/pirate{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/melee/transforming/energy/sword/saber/pirate{ - pixel_x = 13; - pixel_y = 6 - }, -/turf/open/floor/pod/light, -/area/shuttle/pirate) -"Xk" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "piratebridge" - }, -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/plastitanium, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plating, -/area/shuttle/pirate) - -(1,1,1) = {" -af -af -af -fW -aj -aj -aj -aj -aj -aj -aj -wR -af -af -af -af -"} -(2,1,1) = {" -af -et -eu -ex -eA -aa -ap -aw -ak -bF -aj -aj -aj -fW -af -af -"} -(3,1,1) = {" -aQ -aj -aj -aj -aj -aj -aj -ax -aq -ar -aj -RY -aM -ep -aH -af -"} -(4,1,1) = {" -af -af -af -af -af -af -jv -ay -Oe -OL -zw -dy -br -ep -er -af -"} -(5,1,1) = {" -af -af -af -af -af -af -aj -az -bx -bH -aj -aj -aj -aj -aj -aR -"} -(6,1,1) = {" -af -af -af -ey -IC -aj -aj -aj -yi -aj -aj -Gk -aS -aF -aI -aJ -"} -(7,1,1) = {" -af -af -ey -DZ -aC -aW -aj -bg -gY -JT -aj -km -aN -aj -aj -aj -"} -(8,1,1) = {" -af -af -jv -ab -ae -bf -aj -bl -fY -ai -aU -be -aD -aG -ep -aH -"} -(9,1,1) = {" -af -af -jv -ac -ag -am -au -bm -by -bm -mU -aL -bP -bX -ep -aK -"} -(10,1,1) = {" -af -af -jv -ad -ah -an -aj -UL -gY -bI -aj -bO -bQ -bk -ep -er -"} -(11,1,1) = {" -af -af -ey -yv -al -aB -aj -ek -bA -vB -aj -np -aO -aj -aj -aj -"} -(12,1,1) = {" -af -af -af -ey -Xk -aj -aj -aj -yi -aj -aj -Gk -aS -bZ -bo -SE -"} -(13,1,1) = {" -af -af -af -af -af -af -aj -mD -bB -Ur -aj -aj -aj -aj -aj -aR -"} -(14,1,1) = {" -af -af -af -af -af -af -jv -eE -bC -bJ -bM -dU -aV -ep -aH -af -"} -(15,1,1) = {" -aQ -aj -aj -aj -aj -aj -aj -bu -aj -wf -aj -OD -aV -ep -er -af -"} -(16,1,1) = {" -af -et -ew -ez -eA -ao -av -bv -aj -bK -aj -aj -aj -fW -af -af -"} -(17,1,1) = {" -af -af -af -fW -aj -aj -aj -aj -aj -aj -aj -df -af -af -af -af -"} diff --git a/_maps/shuttles/shiptest/nanotrasen_delta.dmm b/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm similarity index 99% rename from _maps/shuttles/shiptest/nanotrasen_delta.dmm rename to _maps/shuttles/nanotrasen/nanotrasen_delta.dmm index 1acaef15ba66..5a3333eb73e5 100644 --- a/_maps/shuttles/shiptest/nanotrasen_delta.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm @@ -260,11 +260,11 @@ }, /obj/structure/closet/crate, /obj/effect/turf_decal/industrial/outline/yellow, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel/patterned, /area/ship/cargo) "bd" = ( @@ -1046,8 +1046,8 @@ dir = 1; pixel_y = -32 }, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/storage/cans/sixbeer, /turf/open/floor/plasteel, /area/ship/crew) @@ -1130,6 +1130,8 @@ /obj/item/gun/energy/laser, /obj/item/megaphone/command, /obj/machinery/light/small/directional/east, +/obj/item/clothing/head/caphat/parade, +/obj/item/clothing/suit/armor/vest/capcarapace, /turf/open/floor/plasteel/dark, /area/ship/bridge) "fy" = ( diff --git a/_maps/shuttles/shiptest/nanotrasen_gecko.dmm b/_maps/shuttles/nanotrasen/nanotrasen_gecko.dmm similarity index 99% rename from _maps/shuttles/shiptest/nanotrasen_gecko.dmm rename to _maps/shuttles/nanotrasen/nanotrasen_gecko.dmm index bba93f324f62..1f0322ae6a5c 100644 --- a/_maps/shuttles/shiptest/nanotrasen_gecko.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_gecko.dmm @@ -950,9 +950,9 @@ /area/ship/bridge) "jc" = ( /obj/structure/table/reinforced, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/radio/intercom/directional/east, /turf/open/floor/plasteel/grimy, /area/ship/crew) @@ -1421,10 +1421,10 @@ /obj/item/reagent_containers/food/snacks/canned/beans, /obj/item/reagent_containers/food/snacks/canned/beans, /obj/structure/closet/crate, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel/patterned, /area/ship/storage) "oR" = ( @@ -1934,7 +1934,7 @@ /obj/structure/railing, /obj/machinery/computer/atmos_control/incinerator{ dir = 4; - sensors = list("gecko_burn_sensor"="Combustion Chamber") + sensors = list("gecko_burn_sensor"="Combustion Chamber") }, /turf/open/floor/plasteel/tech/techmaint, /area/ship/engineering/engine) @@ -3399,6 +3399,8 @@ /obj/effect/turf_decal/borderfloor{ dir = 1 }, +/obj/item/clothing/head/caphat/parade, +/obj/item/clothing/suit/armor/vest/capcarapace, /turf/open/floor/plasteel/dark, /area/ship/bridge) "Ij" = ( diff --git a/_maps/shuttles/shiptest/nanotrasen_mimir.dmm b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm similarity index 99% rename from _maps/shuttles/shiptest/nanotrasen_mimir.dmm rename to _maps/shuttles/nanotrasen/nanotrasen_mimir.dmm index a7e2a5042350..5e8f8530b1cd 100644 --- a/_maps/shuttles/shiptest/nanotrasen_mimir.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm @@ -881,7 +881,7 @@ /area/ship/engineering) "fd" = ( /obj/structure/table/wood/reinforced, -/obj/item/storage/box/donkpockets/donkpocketteriyaki{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = 5; pixel_y = 5 }, @@ -913,7 +913,7 @@ pixel_x = -5; pixel_y = -7 }, -/obj/item/storage/box/donkpockets{ +/obj/effect/spawner/lootdrop/ration{ pixel_x = 6; pixel_y = 11 }, @@ -4933,7 +4933,7 @@ /area/ship/crew/canteen) "Dh" = ( /obj/structure/table/wood, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel, /area/ship/security/prison) "Dm" = ( @@ -8572,7 +8572,7 @@ /area/ship/engineering/atmospherics) "XY" = ( /obj/structure/table/wood, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, /obj/effect/turf_decal/spline/plain/opaque/blue, /turf/open/floor/plasteel, /area/ship/security/prison) diff --git a/_maps/shuttles/shiptest/nanotrasen_osprey.dmm b/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm similarity index 99% rename from _maps/shuttles/shiptest/nanotrasen_osprey.dmm rename to _maps/shuttles/nanotrasen/nanotrasen_osprey.dmm index 27564870d7a9..238992831180 100644 --- a/_maps/shuttles/shiptest/nanotrasen_osprey.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm @@ -1035,7 +1035,6 @@ /obj/item/clothing/under/rank/command/captain/nt/skirt, /obj/item/clothing/under/rank/command/captain/nt, /obj/item/clothing/suit/armor/vest/capcarapace/alt, -/obj/item/clothing/gloves/color/captain, /obj/item/clothing/glasses/sunglasses, /obj/item/clothing/head/caphat/nt, /obj/item/storage/belt/sabre, @@ -1044,6 +1043,9 @@ desc = "An ICW-era self-destruct authorization disk. The codes on this are long past obsolete, but it's still a flagrant violation of company policy."; name = "outdated nuclear authentication disk" }, +/obj/item/clothing/head/caphat/parade, +/obj/item/clothing/suit/armor/vest/capcarapace, +/obj/item/clothing/gloves/color/captain/nt, /turf/open/floor/carpet/royalblue, /area/ship/bridge) "hv" = ( @@ -2897,12 +2899,12 @@ name = "food crate" }, /obj/item/storage/cans/sixbeer, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, diff --git a/_maps/shuttles/shiptest/nanotrasen_ranger.dmm b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm similarity index 100% rename from _maps/shuttles/shiptest/nanotrasen_ranger.dmm rename to _maps/shuttles/nanotrasen/nanotrasen_ranger.dmm diff --git a/_maps/shuttles/shiptest/nanotrasen_skipper.dmm b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm similarity index 62% rename from _maps/shuttles/shiptest/nanotrasen_skipper.dmm rename to _maps/shuttles/nanotrasen/nanotrasen_skipper.dmm index 29f6ee5dfbdb..e763b1fd0765 100644 --- a/_maps/shuttles/shiptest/nanotrasen_skipper.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm @@ -1,122 +1,101 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ah" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/computer/atmos_control/tank/oxygen_tank{ - dir = 1 - }, -/turf/open/floor/plasteel/mono, -/area/ship/engineering/atmospherics) "ai" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/effect/turf_decal/industrial/warning{ + dir = 9 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/obj/structure/closet/firecloset/wall{ - dir = 1; - pixel_y = -32 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 }, /turf/open/floor/plasteel, -/area/ship/engineering) +/area/ship/engineering/atmospherics) "al" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 +/turf/open/floor/wood, +/area/ship/hallway/central) +"ao" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/cryo) -"as" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input, -/turf/open/floor/engine/n2, -/area/ship/engineering/atmospherics) -"aF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/carpet/royalblue, +/area/ship/crew/crewtwo) +"aA" = ( +/obj/structure/railing/corner{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"aI" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/bridge) +"aF" = ( +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/closed/wall, -/area/ship/crew/cryo) -"aL" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/sign/poster/official/random{ + pixel_y = -32 }, -/obj/machinery/button/door{ - dir = 1; - id = "coolingshutdown"; - name = "Shutdown Cooling"; - pixel_y = -22 +/obj/structure/chair{ + dir = 8 }, -/obj/machinery/atmospherics/components/binary/pump{ +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/central) +"aL" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ dir = 4 }, +/obj/item/radio/intercom/directional/east, /turf/open/floor/engine, /area/ship/engineering/engine) -"aZ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"ba" = ( -/obj/structure/table, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 10 - }, -/obj/item/folder/yellow, -/obj/item/stamp/qm, -/obj/machinery/button/shieldwallgen{ - dir = 1; - id = "skippyshieldywalle"; - pixel_y = -24 - }, +"aN" = ( +/obj/structure/catwalk/over, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/ship/crew/toilet) +"aQ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plasteel, -/area/ship/cargo/office) -"bd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, +/area/ship/cargo) +"aR" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"aZ" = ( +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"bd" = ( +/obj/item/kirbyplants/random, /turf/open/floor/carpet/nanoweave/blue, /area/ship/medical) "bf" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 10 }, -/turf/open/floor/plating, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "bk" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ @@ -124,485 +103,609 @@ }, /turf/open/floor/engine/airless, /area/ship/engineering/engine) +"bo" = ( +/obj/structure/dresser, +/obj/item/flashlight/lamp{ + pixel_x = -5; + pixel_y = 9 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/ship/crew/dorm) "bq" = ( -/obj/structure/railing{ - dir = 4 +/obj/structure/dresser, +/obj/item/storage/lockbox/medal{ + pixel_y = 13 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/light/small/directional/north, +/turf/open/floor/wood, +/area/ship/crew/crewtwo) +"bs" = ( +/obj/structure/holosign/barrier/engineering/infinite{ + name = "maintenance barrier" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 +/obj/structure/catwalk/over, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel/stairs, -/area/ship/bridge) -"bz" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/rust, +/area/ship/crew/toilet) +"bw" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/techfloor{ - dir = 8 - }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"bA" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"bD" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, -/obj/structure/cable{ - icon_state = "1-4" +/obj/structure/sign/poster/retro/nanotrasen_logo_80s{ + pixel_y = 32 }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"bE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"bz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"bA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 6 + }, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"bI" = ( -/obj/effect/turf_decal/techfloor{ - dir = 8 +/turf/open/floor/engine, +/area/ship/engineering/atmospherics) +"bG" = ( +/obj/machinery/atmospherics/components/unary/shuttle/heater{ + dir = 4 }, -/obj/effect/turf_decal/techfloor/hole/right, -/obj/machinery/light/directional/south, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"bO" = ( -/obj/machinery/light_switch{ - dir = 1; - pixel_x = 25; - pixel_y = -25 +/obj/structure/window/reinforced/spawner/west, +/obj/machinery/door/poddoor{ + dir = 4; + id = "enginelockdown" }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/door/window/eastleft{ + name = "Engine Access" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"bI" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/fulltile, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"bO" = ( +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp{ + pixel_x = -9; + pixel_y = 13 }, +/obj/machinery/recharger, /turf/open/floor/carpet/nanoweave/red, /area/ship/crew/crewthree) +"bR" = ( +/obj/structure/catwalk/over, +/obj/machinery/firealarm/directional/west, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/garbage, +/turf/open/floor/plating, +/area/ship/crew/toilet) "bW" = ( -/obj/effect/turf_decal/corner/opaque/white/mono, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) -"ca" = ( -/obj/effect/turf_decal/corner/opaque/red/mono, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/displaycase/captain{ + req_access = null; + req_access_txt = "20" }, +/turf/open/floor/wood, +/area/ship/crew/crewtwo) +"bY" = ( +/obj/machinery/vending/cola/space_up, +/turf/open/floor/wood, +/area/ship/hallway/central) +"bZ" = ( /obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) -"cp" = ( -/obj/structure/sign/directions/medical{ - dir = 4 + icon_state = "1-2" }, -/obj/structure/sign/directions/command{ - dir = 4; - pixel_y = -6 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 }, -/turf/closed/wall, -/area/ship/crew/cryo) -"cC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel, +/area/ship/cargo) +"cd" = ( +/obj/machinery/light/dim/directional/south, +/obj/structure/chair{ + dir = 1 + }, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) -"cF" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 +"cp" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/closed/wall/r_wall, -/area/ship/crew/cryo) -"cL" = ( -/obj/machinery/atmospherics/components/binary/valve/digital{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/turf/open/floor/wood, +/area/ship/hallway/central) +"cq" = ( +/obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"cF" = ( +/obj/structure/chair/comfy/black{ + dir = 4 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"cQ" = ( -/obj/effect/turf_decal/corner/opaque/black{ - dir = 9 +/turf/open/floor/wood, +/area/ship/hallway/central) +"cJ" = ( +/obj/structure/sign/nanotrasen{ + pixel_y = -30 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"cL" = ( +/obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/effect/turf_decal/techfloor/corner, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"cQ" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"cY" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/item/pipe_dispenser, -/obj/structure/closet/crate{ - name = "Atmospherics Equipment Crate" +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ + dir = 1 }, -/obj/item/extinguisher/advanced, -/obj/item/holosign_creator/atmos, -/obj/item/storage/toolbox/mechanical, -/obj/effect/turf_decal/techfloor{ - dir = 4 +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/tech/techmaint, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/tech/grid, /area/ship/engineering/atmospherics) +"cS" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "de" = ( -/obj/structure/chair/comfy/black{ - dir = 4 +/obj/machinery/light/dim/directional/north, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"dj" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/fulltile, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"dl" = ( +/obj/structure/sign/poster/official/obey{ + pixel_x = -30 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/carpet, -/area/ship/crew/office) -"di" = ( -/obj/structure/table/wood, -/obj/item/phone{ - desc = "Supposedly a direct line to Nanotrasen Central Command. It's not even plugged in."; - pixel_x = -3; - pixel_y = 3 +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/obj/item/cigbutt/cigarbutt{ - pixel_x = 7 +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 2 }, -/turf/open/floor/carpet, -/area/ship/crew/office) -"dl" = ( -/obj/machinery/door/airlock/command{ - name = "Requests Office"; - req_one_access_txt = "57, 41" +/obj/item/pen{ + pixel_y = 4; + pixel_x = 5 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/item/folder/blue{ + pixel_x = -8; + pixel_y = 7 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 +/obj/item/stamp/head_of_personnel{ + pixel_x = -7; + pixel_y = -3 }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/item/folder/red{ + pixel_x = -8; + pixel_y = 11 }, -/obj/machinery/door/firedoor/border_only, /turf/open/floor/wood, /area/ship/crew/crewthree) "dp" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2{ - dir = 8 +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/corner/opaque/green/mono, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"dq" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"dt" = ( -/obj/effect/turf_decal/corner/opaque/yellow/border{ - dir = 1 +/turf/open/floor/wood, +/area/ship/crew/dorm) +"du" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/yellow/half, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plasteel, -/area/ship/cargo) +/obj/machinery/holopad/emergency/command, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) "dy" = ( /turf/open/floor/carpet/nanoweave/blue, /area/ship/medical) "dB" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ dir = 4 }, -/obj/effect/turf_decal/techfloor{ +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"dG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, -/turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) -"dJ" = ( -/obj/machinery/power/terminal{ - dir = 8 +/obj/machinery/light/small/directional/east, +/obj/machinery/firealarm/directional/south, +/obj/item/gun/energy/laser{ + pixel_y = -6 }, -/obj/structure/cable{ - icon_state = "0-4" +/obj/item/gun/energy/e_gun/mini{ + pixel_y = -2; + pixel_x = 6 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4{ - dir = 1 +/obj/item/gun/energy/e_gun/mini{ + pixel_x = -8; + pixel_y = -2 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 6 +/obj/structure/closet/secure_closet{ + anchored = 1; + can_be_unanchored = 1; + icon_state = "sec"; + name = "firearm locker"; + req_access_txt = "1" + }, +/obj/item/gun/ballistic/automatic/pistol/commander, +/obj/item/gun/ballistic/automatic/pistol/commander, +/turf/open/floor/wood, +/area/ship/crew/crewthree) +"dJ" = ( +/obj/machinery/button/door{ + dir = 4; + pixel_x = -24; + id = "enginelockdown"; + name = "Lockdown Engines" + }, +/obj/machinery/atmospherics/components/binary/volume_pump{ + dir = 8; + name = "Activate Exhaust" }, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating, /area/ship/engineering/atmospherics) "dM" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/office) +/obj/machinery/firealarm/directional/south, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "dO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ + dir = 4 }, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 10 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) "dS" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 5 +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"dW" = ( +/obj/structure/filingcabinet/employment, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/crew/office) +"dX" = ( +/obj/structure/table/chem, +/obj/item/clothing/glasses/hud/health, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/corner/opaque/blue/mono, +/obj/item/reagent_containers/glass/beaker{ + pixel_y = 12; + pixel_x = -9 }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/sink/chem{ + pixel_x = 2; + pixel_y = 3 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) +/turf/open/floor/plasteel/white, +/area/ship/medical) "dZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 1 +/obj/structure/fireaxecabinet{ + pixel_y = -29 }, -/obj/structure/catwalk/over, +/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating, /area/ship/engineering/atmospherics) "ed" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/west, -/obj/machinery/door/window/eastleft, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor{ - id = "windowlockdown"; - dir = 4 +/obj/structure/table, +/obj/machinery/fax, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 }, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/crew/office) +"eg" = ( +/obj/machinery/vending/cigarette, /obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"ek" = ( +/obj/effect/turf_decal/techfloor{ dir = 8 }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"em" = ( -/obj/machinery/suit_storage_unit/cmo{ - suit_type = /obj/item/clothing/suit/space/hardsuit/medical +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/machinery/light/small/directional/south, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) +/obj/machinery/light_switch{ + pixel_x = -14; + pixel_y = 24 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/cryo) "er" = ( /obj/machinery/door/airlock/engineering{ dir = 4; name = "Engineering" }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/dark, -/area/ship/engineering) -"eu" = ( -/obj/structure/sign/departments/cargo{ - pixel_y = -32 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ dir = 8 }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"eu" = ( /obj/structure/cable{ icon_state = "4-8" }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 6 + }, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) -"ex" = ( -/obj/structure/table/wood, -/obj/item/folder/red, -/obj/item/folder/red, -/obj/item/lighter, -/obj/item/pen, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/carpet, -/area/ship/crew/office) "eB" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner/opaque/red/mono, -/obj/machinery/reagentgrinder{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/light_switch{ + dir = 1; pixel_x = 6; - pixel_y = 13 + pixel_y = -24 }, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/ship/crew/dorm) "eC" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor/southright{ - name = "Requests Desk"; - req_one_access_txt = "57, 41" - }, -/obj/machinery/door/window/northleft{ - name = "Requests Desk" - }, -/obj/machinery/door/poddoor/shutters{ - id = "noiwillnotgiveyouaa"; - name = "Closing Shutters" - }, +/obj/structure/window/reinforced/fulltile, +/obj/structure/grille, /turf/open/floor/plating, /area/ship/crew/crewthree) -"eL" = ( -/obj/effect/turf_decal/corner/opaque/red/mono, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = 25; - pixel_y = -25 +"eD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/sign/poster/contraband/syndicate_recruitment{ + pixel_x = 30 + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/rust, +/area/ship/crew/toilet) +"eL" = ( +/obj/machinery/door/airlock/command{ + name = "Internal Affairs Office" }, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "1-2" }, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/crew/office) "eP" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"eQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"eY" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"eQ" = ( -/obj/item/storage/box/ingredients/carnivore, -/obj/item/storage/box/ingredients/delights, -/obj/item/storage/box/ingredients/grains, -/obj/item/storage/box/ingredients/vegetarian, -/obj/structure/closet/secure_closet/freezer/fridge, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/canteen/kitchen) -"eT" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/spawner/xmastree, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"ff" = ( -/obj/effect/turf_decal/corner/opaque/blue/bordercorner, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"fa" = ( +/obj/structure/table, +/obj/item/storage/pill_bottle/dice{ + pixel_x = 5; + pixel_y = 6 }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/item/spacecash/bundle/c5, +/turf/open/floor/carpet/red, +/area/ship/hallway/central) +"fc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/engine, /area/ship/engineering/atmospherics) "fg" = ( -/obj/machinery/shower{ - pixel_y = 18 +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 10 }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/noslip, -/area/ship/engineering) +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + dir = 4; + id = "coolingshutdown" + }, +/turf/open/floor/engine/airless, +/area/ship/external) "fi" = ( -/obj/machinery/door/poddoor{ +/obj/machinery/door/airlock/command{ dir = 4; - id = "bridgelockdown" + name = "Personal Quarters"; + req_one_access_txt = "57" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/spawner/structure/window/reinforced/shutters, -/turf/open/floor/plating, -/area/ship/bridge) -"fo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/carpet/blue, +/area/ship/crew/crewthree) +"fl" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 9 + }, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"fn" = ( +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/wood, +/area/ship/hallway/central) +"fo" = ( +/obj/structure/cable{ + icon_state = "4-8" }, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 }, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) @@ -630,592 +733,618 @@ /area/ship/cargo) "ft" = ( /obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "2-4" + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 8 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "TEG to Exhaust" }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering) +/turf/open/floor/engine, +/area/ship/engineering/engine) "fu" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/sign/poster/official/random{ + pixel_x = 30 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "fw" = ( -/obj/machinery/atmospherics/components/unary/tank/toxins{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ dir = 8 }, -/obj/effect/turf_decal/industrial/warning/full, -/obj/structure/cable{ - icon_state = "1-2" +/obj/item/paper{ + default_raw_text = "The igniter in the chamber does not work very well. I suggest throwing lit welders down the disposal chute over there to ignite the chamber." }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/light/directional/east, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering) +/obj/item/weldingtool, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"fx" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/closed/wall, +/area/ship/hallway/central) "fz" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 9 +/obj/machinery/shower{ + pixel_y = 18 }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -25; - pixel_y = 25 +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/corner_techfloor_grid{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/ship/engineering) +/turf/open/floor/noslip, +/area/ship/engineering/atmospherics) "fD" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, /turf/open/floor/engine, /area/ship/engineering/engine) "fG" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = 25; - pixel_y = -25 +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"fI" = ( -/obj/structure/closet/secure_closet/wall{ - dir = 4; - icon_state = "sec_wall"; - name = "firearms locker"; - pixel_x = -28; - req_one_access_txt = "57, 41" - }, -/obj/item/gun/energy/e_gun/mini{ - pixel_x = -8; - pixel_y = 8 - }, -/obj/item/gun/energy/e_gun/mini{ - pixel_y = 8 - }, -/obj/item/gun/energy/e_gun/mini{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/item/gun/energy/laser, -/obj/item/gun/energy/laser, -/obj/item/gun/ballistic/automatic/pistol/commander/no_mag, -/obj/item/gun/ballistic/automatic/pistol/commander/no_mag, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/plasteel/dark, -/area/ship/crew/crewthree) -"fJ" = ( -/obj/effect/turf_decal/corner/opaque/blue/half, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/techfloor/hole/right{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering/atmospherics) -"fS" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/canteen/kitchen) -"fT" = ( -/obj/effect/turf_decal/industrial/warning{ +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"fI" = ( +/obj/structure/chair/sofa/left{ dir = 8 }, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/carpet/red, +/area/ship/hallway/central) +"fT" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 8 + dir = 9 }, /turf/open/floor/engine, /area/ship/engineering/engine) +"fU" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/crew/cryo) "fW" = ( /turf/template_noop, /area/template_noop) "fY" = ( -/obj/machinery/door/window/brigdoor/southright{ - name = "The Captain's Personal Lavatory"; - opacity = 1 - }, -/obj/structure/toilet{ - dir = 8; - pixel_x = 4; - pixel_y = 16 - }, -/obj/structure/sink{ - dir = 8; - pixel_x = 12 - }, -/obj/structure/mirror{ - pixel_x = 25 - }, -/obj/item/soap/nanotrasen, -/obj/item/stack/medical/bruise_pack{ - amount = 3 - }, -/obj/item/stack/medical/ointment{ - amount = 5; - desc = "Used to treat...... well, it's topical, and it's clearly been used....." - }, -/obj/item/storage/pill_bottle/psicodine, -/obj/item/storage/pill_bottle/stimulant, -/obj/item/storage/pill_bottle/neurine, -/obj/item/storage/pill_bottle/charcoal/less, -/obj/item/razor, -/obj/item/lipstick/random, -/obj/structure/closet/secure_closet/wall{ - dir = 4; - name = "The Captain's Personal Medicine Cabinet And Soap Holder"; - pixel_x = -32; - req_access_txt = "20" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/crewtwo) +/obj/structure/table, +/obj/item/trash/raisins, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/wood, +/area/ship/hallway/central) "ga" = ( -/obj/effect/spawner/structure/window, +/obj/structure/grille, +/obj/structure/window/fulltile, /turf/open/floor/plating, /area/ship/medical) -"gb" = ( -/obj/machinery/power/shuttle/engine/electric{ +"gc" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"gh" = ( +/obj/machinery/power/smes/shuttle/precharged{ dir = 4 }, /obj/structure/cable{ - icon_state = "0-4" + icon_state = "0-8" }, -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ +/obj/structure/window/reinforced/spawner/west, +/obj/machinery/door/poddoor{ dir = 4; - name = "atmos waste outlet injector" + id = "enginelockdown" }, -/turf/open/floor/plating/airless, -/area/ship/external) -"gh" = ( -/turf/closed/wall/r_wall, -/area/ship/engineering) +/obj/machinery/door/window/eastleft{ + name = "Engine Access" + }, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) "gi" = ( -/obj/structure/sign/warning/chemdiamond{ - pixel_x = 32 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/obj/structure/closet/firecloset/full{ - anchored = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/tech/grid, +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"gk" = ( +/obj/structure/sign/poster/official/safety_internals{ + pixel_x = -32 + }, +/obj/structure/tank_dispenser, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "gm" = ( -/obj/structure/closet/secure_closet/wall{ - dir = 1; - icon_state = "sec_wall"; - name = "ammunition locker"; - pixel_y = -28; - req_one_access_txt = "57, 41" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/item/ammo_box/magazine/co9mm, -/obj/item/ammo_box/magazine/co9mm, -/obj/item/stock_parts/cell/gun, -/obj/item/stock_parts/cell/gun, -/obj/item/stock_parts/cell/gun/mini, -/obj/item/stock_parts/cell/gun/mini, -/obj/item/stock_parts/cell/gun/mini, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/cargo/office) +"gr" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "2-4" }, -/turf/open/floor/carpet/nanoweave/red, -/area/ship/crew/crewthree) +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/ship/hallway/central) "gu" = ( -/obj/structure/closet/secure_closet/freezer/kitchen{ - name = "kitchen freezer" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/sign/poster/contraband/random{ - pixel_x = 32 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/canteen/kitchen) +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/ship/crew/dorm) "gx" = ( -/obj/machinery/door/firedoor/window, -/obj/structure/window/plasma/reinforced/fulltile, -/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer4, /turf/open/floor/plating, -/area/ship/engineering/atmospherics) +/area/ship/hallway/central) "gB" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 6 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Cooling to TEG" }, /turf/open/floor/engine, /area/ship/engineering/engine) "gM" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/item/radio/intercom/directional/north, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) "gN" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 8; - name = "Air to Holding Tank"; - target_pressure = 1000 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/catwalk/over, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plating, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "gO" = ( -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "engine fuel pump" }, -/obj/machinery/light/small/directional/north, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating, /area/ship/engineering/atmospherics) "gP" = ( -/obj/machinery/cryopod{ - dir = 8 +/obj/effect/landmark/observer_start, +/obj/machinery/holopad, +/turf/open/floor/wood, +/area/ship/hallway/central) +"gQ" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/light/directional/east, -/obj/structure/sign/nanotrasen{ - pixel_x = 32 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) -"gQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/central) +"hb" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/turf/open/floor/carpet/nanoweave, +/turf/open/floor/wood, /area/ship/hallway/central) -"gR" = ( -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 +"hc" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/structure/chair{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) -"hb" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_x = -1; - pixel_y = 8 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable{ - icon_state = "0-4" +/obj/effect/turf_decal/techfloor{ + dir = 5 }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) "hi" = ( -/obj/machinery/computer/communications{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/purple, -/obj/effect/turf_decal/corner/opaque/purple{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/carpet/royalblue, +/area/ship/crew/crewtwo) "hr" = ( /turf/closed/wall/r_wall, /area/ship/hallway/central) -"ht" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 +"hz" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plasteel, +/area/ship/cargo) +"hA" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/siding/wood{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/siding/wood/corner{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/obj/effect/turf_decal/siding/wood/corner{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"hC" = ( /obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"hG" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/structure/sign/poster/retro/nanotrasen_logo_70s{ - pixel_x = -32 - }, -/turf/open/floor/goonplaque{ - desc = "\"This is a plaque in honour of our comrades on the TG4407 Stations. It is our hope that the crews of these ST13XX-class ships can live up to your fame and fortune.\" Scratched in beneath that is a crude image of two spacemen. One of them is missing their top half." - }, -/area/ship/bridge) -"hw" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Canteen" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/corner/opaque/black/full, /turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) -"hA" = ( -/obj/machinery/door/airlock/command/glass{ - dir = 4; - name = "Office" +/area/ship/cargo/office) +"hJ" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor{ + id = "windowlockdown" }, -/obj/effect/turf_decal/corner/opaque/black/full, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating, +/area/ship/medical) +"hM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/effect/turf_decal/siding/wood, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"hP" = ( +/obj/machinery/computer/helm{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/ntblue/half{ dir = 4 }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"hT" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/office) -"hJ" = ( -/obj/effect/spawner/structure/window/reinforced/shutters, -/obj/machinery/door/poddoor{ - id = "windowlockdown" - }, -/turf/open/floor/plating, -/area/ship/medical) -"hP" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/door/poddoor/preopen{ - dir = 4; - id = "coolingshutdown" +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 }, -/turf/open/floor/engine/airless, -/area/ship/external) +/obj/item/radio/intercom/directional/north, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "hZ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 +/obj/item/extinguisher/advanced, +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/item/clothing/under/rank/engineering/engineer/hazard, +/obj/item/clothing/under/rank/engineering/engineer/nt, +/obj/item/clothing/under/rank/engineering/engineer/nt/skirt, +/obj/item/clothing/under/rank/engineering/atmospheric_technician, +/obj/item/clothing/under/rank/engineering/atmospheric_technician/skirt, +/obj/item/clothing/head/beret/atmos, +/obj/item/clothing/head/beret/eng, +/obj/item/analyzer, +/obj/item/storage/belt/utility, +/obj/item/storage/belt/utility, +/obj/structure/closet/secure_closet{ + icon_state = "eng_secure"; + name = "engineer's locker"; + req_access = list(11); + anchored = 1 }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 1 +/obj/item/pipe_dispenser, +/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, +/turf/open/floor/engine, +/area/ship/engineering/engine) +"ib" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering) +/obj/item/kirbyplants/random, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"ic" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, +/area/ship/cargo/office) "id" = ( -/obj/machinery/door/airlock/command{ - name = "Captain's Quarters"; - req_access_txt = "20" +/obj/machinery/shower{ + dir = 4; + pixel_y = 8 + }, +/obj/structure/curtain, +/obj/item/bikehorn/rubberducky/plasticducky, +/obj/effect/turf_decal/techfloor/hole{ + dir = 8 }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/crewtwo) +"ie" = ( /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 1 }, /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 - }, /turf/open/floor/wood, -/area/ship/crew/crewtwo) -"ie" = ( +/area/ship/hallway/central) +"if" = ( /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 + dir = 4 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/dorm) -"if" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/carpet/nanoweave, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) -"im" = ( -/obj/structure/lattice, -/turf/template_noop, -/area/ship/external) -"ip" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/siding/wood{ +"ih" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ dir = 4 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/office) -"ix" = ( -/obj/effect/turf_decal/corner/opaque/blue/mono, -/turf/open/floor/plasteel/mono/white, -/area/ship/medical) -"iB" = ( -/obj/effect/spawner/structure/window/reinforced/shutters, -/obj/machinery/door/poddoor{ +/obj/machinery/door/poddoor/preopen{ dir = 4; id = "bridgelockdown" }, -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 4 - }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/firedoor/window, /turf/open/floor/plating, /area/ship/bridge) -"iI" = ( -/obj/machinery/suit_storage_unit/mining/eva, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 6 +"ik" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 9 }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"iP" = ( +/obj/machinery/light/broken/directional/south, +/turf/open/floor/engine, +/area/ship/engineering/engine) +"il" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"im" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ship/external) +"ir" = ( /obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 + icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"iY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"is" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/airlock/mining/glass, +/obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ - dir = 8 + dir = 1 }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/turf/open/floor/plasteel, +/area/ship/cargo) +"iv" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/door/airlock/medical{ - dir = 4; - name = "Infirmary" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel/stairs{ + dir = 1 }, -/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"ix" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/carpet/nanoweave/blue, /area/ship/medical) -"jc" = ( -/obj/machinery/air_sensor/atmos/nitrogen_tank, -/turf/open/floor/engine/n2, -/area/ship/engineering/atmospherics) +"iB" = ( +/obj/machinery/door/airlock/command{ + dir = 4; + name = "Personal Quarters"; + req_one_access_txt = "20" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/carpet/royalblue, +/area/ship/crew/crewtwo) +"iI" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/autolathe, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/plasteel/mono/dark, +/area/ship/cargo/office) +"iP" = ( +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/wood, +/area/ship/crew/crewtwo) +"iY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/medical) +"ja" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/item/soap/nanotrasen, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"jf" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/wrapping, +/obj/item/storage/fancy/donut_box, +/turf/open/floor/plasteel/mono/dark, +/area/ship/cargo/office) "ji" = ( /turf/closed/wall/r_wall, /area/ship/crew/crewthree) +"jq" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor{ + id = "windowlockdown" + }, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating, +/area/ship/crew/dorm) "jr" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/mug/tea{ - pixel_x = 9; - pixel_y = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 }, -/obj/item/reagent_containers/food/drinks/dry_ramen{ - pixel_x = -3 +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24; + pixel_y = -5 }, +/obj/effect/turf_decal/corner/opaque/green/mono, /turf/open/floor/plasteel, -/area/ship/crew/canteen) +/area/ship/crew/canteen/kitchen) "js" = ( -/obj/structure/closet/secure_closet/wall{ - dir = 4; - name = "medicine cabinet"; - pixel_x = -28 +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/closet/cardboard{ + name = "janitorial supplies" }, -/obj/item/storage/firstaid/regular, -/obj/item/stack/medical/gauze, -/obj/item/reagent_containers/hypospray/medipen/salbutamol, -/obj/item/storage/pill_bottle/charcoal/less, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) +/obj/item/mop, +/obj/item/reagent_containers/glass/bucket, +/obj/item/soap, +/obj/item/storage/bag/trash, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel/mono/dark, +/area/ship/cargo/office) "jv" = ( /obj/effect/turf_decal/industrial/warning{ dir = 1 @@ -1225,44 +1354,26 @@ }, /turf/open/floor/plasteel/mono/dark, /area/ship/cargo) -"jD" = ( -/obj/effect/turf_decal/corner/opaque/yellow/bordercorner{ - dir = 8 - }, -/obj/structure/sign/warning/nosmoking{ - pixel_x = 32 +"jK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/techfloor/hole{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/item/radio/intercom/directional/south, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering/atmospherics) +/obj/machinery/light/small/directional/south, +/turf/open/floor/wood, +/area/ship/crew/dorm) "jM" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/obj/machinery/atmospherics/components/trinary/mixer/flipped{ - dir = 1; - name = "Chamber Mixer" - }, -/obj/item/paper/crumpled{ - default_raw_text = "A mix of 67/33 ratio of oxygen (node 2) and plasma (node 1) works very well, even at 500 kPa." - }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"jP" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "Nitrogen to Air" +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "Helm" }, /obj/effect/turf_decal/techfloor{ - dir = 1 + dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/bridge) "jS" = ( /turf/closed/wall, /area/ship/crew/dorm) @@ -1282,207 +1393,251 @@ /turf/open/floor/plating, /area/ship/cargo) "jZ" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/structure/closet/radiation, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24; + pixel_y = 5 }, -/turf/open/floor/plasteel, -/area/ship/engineering) -"ka" = ( -/obj/structure/sign/poster/official/random{ +/obj/structure/sign/warning/incident{ pixel_y = 32 }, -/obj/machinery/vending/cola/random, +/turf/open/floor/noslip, +/area/ship/engineering/atmospherics) +"kn" = ( +/obj/machinery/button/door/incinerator_vent_atmos_aux{ + dir = 4; + pixel_x = -23; + pixel_y = 8 + }, +/obj/machinery/button/ignition/incinerator/atmos{ + dir = 4; + pixel_x = -23; + pixel_y = -3 + }, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "2-4" }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 5 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/engine) "kp" = ( /obj/structure/cable{ - icon_state = "1-8" + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 + dir = 4 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"kr" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output, -/turf/open/floor/engine/plasma, -/area/ship/engineering/atmospherics) +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/ship/crew/crewthree) +"ky" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/layer2, +/turf/open/floor/plating, +/area/ship/hallway/central) "kz" = ( /turf/closed/wall/r_wall, /area/ship/engineering/atmospherics) "kB" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Oxygen to Mix" + dir = 10 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) -"kM" = ( -/obj/machinery/suit_storage_unit/mining/eva, -/obj/effect/turf_decal/corner/opaque/black/three_quarters{ - dir = 8 +"kE" = ( +/obj/machinery/newscaster/directional/west, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/medical) +"kL" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/corner/opaque/green/mono, +/obj/machinery/reagentgrinder{ + pixel_y = 11 }, /turf/open/floor/plasteel, -/area/ship/cargo/office) -"kU" = ( +/area/ship/crew/canteen/kitchen) +"kM" = ( /obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/corner/transparent/grey/half{ - dir = 1 +/obj/item/storage/pill_bottle/charcoal/less{ + pixel_x = -9 }, -/obj/item/kitchen/knife/letter_opener{ - desc = "A military combat utility survival knife, imported from Earth. An expensive paperweight indeed." +/obj/item/reagent_containers/glass/bottle{ + list_reagents = list(/datum/reagent/medicine/thializid=30); + name = "thializid bottle" }, -/obj/item/pen/fourcolor{ - pixel_x = 3 +/obj/item/reagent_containers/glass/bottle/formaldehyde{ + pixel_x = 6; + pixel_y = 8 }, -/obj/item/pen/fountain{ - pixel_x = -3 +/obj/item/reagent_containers/syringe{ + pixel_x = 7 + }, +/obj/effect/turf_decal/borderfloorwhite{ + dir = 4 }, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/medical) +"kO" = ( +/obj/item/radio/intercom/directional/north, /turf/open/floor/plasteel/dark, -/area/ship/crew/office) +/area/ship/hallway/central) +"kU" = ( +/turf/closed/wall, +/area/ship/crew/toilet) +"kW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"lf" = ( +/obj/structure/closet/secure_closet{ + icon_state = "hop"; + name = "\proper first officer's locker"; + req_access_txt = "57" + }, +/obj/item/storage/backpack/satchel/leather, +/obj/item/clothing/shoes/laceup, +/obj/item/clothing/suit/armor/vest/hop, +/obj/item/clothing/head/hopcap/nt, +/obj/item/storage/box/ids, +/obj/item/storage/box/PDAs, +/obj/item/assembly/flash/handheld, +/obj/item/clothing/head/beret/command, +/obj/item/door_remote/captain, +/obj/structure/sign/poster/official/ian{ + pixel_y = 32 + }, +/obj/effect/turf_decal/siding/wood, +/obj/item/clothing/under/rank/command/head_of_personnel/nt, +/obj/item/clothing/under/rank/command/head_of_personnel/nt/skirt, +/turf/open/floor/wood, +/area/ship/crew/crewthree) "lg" = ( -/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 1 }, /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 10 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ + dir = 1 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/techfloor{ dir = 4 }, -/turf/open/floor/engine, -/area/ship/engineering/engine) +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) "lh" = ( -/obj/structure/table, -/obj/item/modular_computer/laptop/preset/civilian{ - pixel_y = 4 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/structure/bedsheetbin, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) -"lj" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight/lamp{ - pixel_x = -8; - pixel_y = 10 +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/obj/item/paper_bin, -/obj/item/pen, -/obj/item/folder/blue{ - pixel_x = -6; - pixel_y = -3 - }, -/obj/item/stamp/captain{ - pixel_x = -6; - pixel_y = 2 - }, -/obj/item/stamp/head_of_personnel{ - pixel_x = -5; - pixel_y = -1 - }, -/turf/open/floor/carpet/nanoweave/red, -/area/ship/crew/crewthree) +/turf/open/floor/wood, +/area/ship/hallway/central) "lk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 +/obj/structure/table/wood/reinforced, +/obj/item/flashlight/lamp/green{ + pixel_y = 10; + pixel_x = -6 }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 +/obj/item/pen/fountain/captain{ + pixel_x = -10 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"lr" = ( -/obj/structure/closet/radiation, -/obj/machinery/light/small/directional/east, -/turf/open/floor/noslip, -/area/ship/engineering) +/obj/item/paper{ + pixel_x = 10; + pixel_y = -2 + }, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/wood, +/area/ship/crew/crewtwo) "ls" = ( /turf/closed/wall/r_wall, /area/ship/medical) "lw" = ( /turf/closed/wall/r_wall, /area/ship/crew/canteen/kitchen) +"lA" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/light/broken/directional/east, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "lE" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/west, -/obj/machinery/door/window/eastright, -/obj/machinery/door/poddoor{ - dir = 4; - id = "windowlockdown" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/machinery/suit_storage_unit/industrial/atmos_firesuit, +/obj/structure/sign/warning/hottemp{ + pixel_x = -29 }, -/turf/open/floor/plating, -/area/ship/engineering) +/obj/machinery/light/small/directional/north, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/engine) "lR" = ( -/obj/machinery/atmospherics/pipe/layer_manifold{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) +"lU" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plasteel/dark, +/area/ship/cargo/office) "lV" = ( -/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior{ - dir = 4 - }, /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/engine, +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/fulltile, +/turf/open/floor/plating, /area/ship/engineering/engine) "lW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/effect/turf_decal/corner_techfloor_grid{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/obj/effect/turf_decal/techfloor/corner{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) "lY" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 8 + dir = 4 }, -/turf/closed/wall/r_wall, +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/fulltile, +/turf/open/floor/plating, /area/ship/engineering/engine) +"mc" = ( +/obj/machinery/atmospherics/pipe/manifold/yellow/visible, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/engine, +/area/ship/engineering/engine) +"mf" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/closed/wall, +/area/ship/hallway/central) "mg" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 6 @@ -1490,131 +1645,179 @@ /turf/open/floor/engine/airless, /area/ship/external) "mi" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 +/obj/structure/window/reinforced/tinted, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/turf_decal/steeldecal/steel_decals_central7{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "1-8" +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"mw" = ( +/obj/machinery/door/window/southright, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/office) -"mA" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"mD" = ( -/obj/item/gun/energy/e_gun/mini, -/turf/closed/wall/r_wall, -/area/ship/crew/crewtwo) +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) "mF" = ( /obj/machinery/power/shuttle/engine/fueled/plasma{ dir = 4 }, /turf/open/floor/plating/airless, /area/ship/external) +"mI" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/obj/structure/curtain/cloth/grey, +/obj/structure/sign/poster/official/random{ + pixel_x = -30 + }, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) "mL" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/airalarm/directional/west, -/obj/item/clothing/shoes/magboots, -/obj/machinery/suit_storage_unit/inherit/industrial, -/obj/item/clothing/suit/space/hardsuit/engine, -/obj/item/clothing/mask/breath, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) +/obj/structure/table, +/obj/item/storage/toolbox/electrical{ + pixel_y = 8 + }, +/obj/item/storage/toolbox/mechanical, +/obj/structure/sign/warning/nosmoking/burnt{ + pixel_y = -30 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) "mM" = ( -/turf/open/floor/carpet/nanoweave/blue, +/turf/open/floor/wood, /area/ship/crew/office) +"mN" = ( +/obj/structure/catwalk/over, +/obj/machinery/light/small/directional/west, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/rust, +/area/ship/crew/toilet) +"mQ" = ( +/obj/machinery/firealarm/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/ship/crew/dorm) "mS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/corner_techfloor_grid{ - dir = 8 - }, -/obj/effect/turf_decal/techfloor/corner{ +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ dir = 8 }, -/turf/open/floor/plasteel/tech/techmaint, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/ship/engineering/atmospherics) "mT" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 4; + pixel_y = 5 }, -/obj/structure/sign/painting{ - pixel_y = 32 +/obj/item/pen{ + pixel_x = 4; + pixel_y = 5 }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/item/pen/fourcolor{ + pixel_x = 7; + pixel_y = 5 }, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"mU" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = 32 +/obj/item/pen/fountain{ + pixel_x = 1; + pixel_y = 5 }, -/obj/effect/turf_decal/corner/transparent/grey/half{ - dir = 8 +/obj/item/kitchen/knife/letter_opener{ + desc = "A military combat utility survival knife, imported from Earth. An expensive paperweight indeed."; + pixel_x = 4; + pixel_y = 5 }, -/obj/machinery/fax, -/obj/structure/table, -/turf/open/floor/plasteel/dark, +/obj/item/stamp/centcom{ + pixel_x = -10; + pixel_y = 13 + }, +/obj/item/stamp/law{ + pixel_x = -10; + pixel_y = 7 + }, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/wood, /area/ship/crew/office) +"mU" = ( +/obj/structure/urinal{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/light/small/directional/east, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24; + pixel_y = -11 + }, +/obj/effect/decal/cleanable/chem_pile, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) "mX" = ( /obj/machinery/door/poddoor/incinerator_atmos_aux{ dir = 4 }, +/obj/structure/sign/warning{ + pixel_y = 28 + }, /turf/open/floor/engine/airless, /area/ship/engineering/engine) "nd" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 +/obj/machinery/light_switch{ + pixel_x = -5; + pixel_y = 24 + }, +/obj/structure/railing{ + dir = 4 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/dark, /area/ship/cargo/office) "ne" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ + dir = 9 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 6 +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"ng" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom/wideband/table{ + dir = 4 }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/machinery/atmospherics/pipe/layer_manifold{ + dir = 4 }, -/obj/structure/catwalk/over, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) "nj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ +/obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 }, -/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 1 + }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/obj/structure/catwalk/over, +/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating, /area/ship/engineering/atmospherics) "np" = ( @@ -1627,55 +1830,29 @@ /turf/closed/wall/r_wall, /area/ship/crew/office) "nu" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, /obj/machinery/computer/atmos_control/incinerator{ dir = 4; - sensors = list("nemo_incinerator_sensor"="Incinerator Chamber") + sensors = list("nemo_incinerator_sensor"="Incinerator Chamber") + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" }, /turf/open/floor/engine, /area/ship/engineering/engine) "nv" = ( -/obj/structure/table, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/item/flashlight/lamp{ - pixel_x = -8; - pixel_y = 10 + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/structure/railing{ + dir = 4 }, -/obj/item/storage/fancy/donut_box, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/dark, /area/ship/cargo/office) "nB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/tech/techmaint, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/bed/roller, +/turf/open/floor/plasteel/mono/dark, /area/ship/cargo/office) -"nE" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) "nF" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ dir = 4 @@ -1683,28 +1860,44 @@ /turf/open/floor/engine/airless, /area/ship/engineering/engine) "nX" = ( -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/techfloor{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) -"of" = ( -/obj/item/bedsheet/dorms, -/obj/structure/bed, -/obj/structure/curtain/bounty, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 +/obj/machinery/firealarm/directional/north, +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/central) +"og" = ( +/obj/machinery/door/airlock/engineering{ + dir = 4; + name = "Engineering" }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"ok" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"ok" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/wood, +/area/ship/crew/crewtwo) "om" = ( /obj/item/kirbyplants/random, /turf/open/floor/carpet/nanoweave, @@ -1716,142 +1909,93 @@ /turf/open/floor/carpet/nanoweave/blue, /area/ship/medical) "oD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) +/obj/effect/turf_decal/corner/opaque/blue/mono, +/turf/open/floor/plasteel/white, +/area/ship/medical) "oE" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/effect/turf_decal/techfloor{ +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 8 }, -/turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) -"oG" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/turf/open/floor/engine, -/area/ship/engineering/engine) +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) "oN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 +/obj/structure/bed/dogbed/ian, +/mob/living/simple_animal/pet/dog/corgi/Lisa, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -24; + pixel_y = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) +/obj/machinery/firealarm/directional/south, +/turf/open/floor/carpet/blue, +/area/ship/crew/crewthree) "oT" = ( -/obj/machinery/door/airlock{ - name = "Kitchen" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/black/full, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/carpet/nanoweave, -/area/ship/crew/canteen/kitchen) +/area/ship/hallway/central) "oU" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 - }, -/obj/structure/chair/stool/bar{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"pc" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 + dir = 4 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering) -"pf" = ( -/obj/structure/chair{ +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) +/turf/open/floor/wood, +/area/ship/crew/office) +"pf" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/mono/dark, +/area/ship/cargo/office) "ph" = ( -/obj/effect/spawner/structure/window/reinforced/shutters, -/obj/structure/curtain/bounty, -/obj/machinery/door/poddoor{ - id = "windowlockdown" - }, -/turf/open/floor/plating, -/area/ship/crew/dorm) -"pm" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/techfloor{ dir = 4 }, -/obj/machinery/holopad/emergency/command, -/obj/machinery/light_switch{ - pixel_x = -25; +/obj/machinery/button/door{ + id = "bridgelockdown"; + name = "Bridge Lockdown"; + pixel_x = 8; pixel_y = 25 }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 +/obj/machinery/button/door{ + id = "coolingshutdown"; + name = "Shutdown Cooling"; + pixel_x = -5; + pixel_y = 25 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 +/obj/machinery/button/door{ + pixel_y = 25; + pixel_x = 21; + id = "windowlockdown"; + name = "Window Lockdown" }, -/turf/open/floor/plasteel/mono/dark, +/obj/item/cigbutt/cigarbutt, +/turf/open/floor/carpet/nanoweave/beige, /area/ship/bridge) -"pq" = ( -/obj/machinery/suit_storage_unit/mining, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/black/three_quarters{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/sign/departments/drop{ - pixel_y = -32 +"pn" = ( +/obj/structure/sign/nanotrasen{ + pixel_y = 30 }, -/turf/open/floor/plasteel, +/obj/item/kirbyplants/random, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"pq" = ( +/turf/open/floor/plasteel/dark, /area/ship/cargo/office) "pr" = ( /obj/effect/turf_decal/industrial/warning{ @@ -1860,97 +2004,87 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/plasteel/mono/dark, /area/ship/cargo) "ps" = ( -/obj/machinery/photocopier, -/obj/structure/sign/nanotrasen{ - pixel_y = 32 - }, -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/office) -"pt" = ( -/obj/effect/turf_decal/corner/opaque/yellow/border{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, -/obj/effect/turf_decal/corner/opaque/yellow/half{ - dir = 8 +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"pz" = ( +/turf/open/floor/wood, +/area/ship/crew/crewthree) +"pt" = ( /obj/structure/table/reinforced, -/obj/item/radio/intercom/wideband/table{ - dir = 4 - }, +/obj/machinery/door/window/westleft, +/obj/machinery/door/window/eastright, +/obj/item/paper_bin, +/obj/item/pen, /turf/open/floor/plasteel/dark, -/area/ship/bridge) -"pB" = ( +/area/ship/cargo/office) +"pz" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"pB" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering) +/obj/machinery/portable_atmospherics/canister/toxins, +/turf/open/floor/engine, +/area/ship/engineering/engine) "pD" = ( /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) "pI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/table, +/obj/item/trash/candle{ + pixel_y = 12 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/carpet/nanoweave, +/obj/machinery/light/directional/south, +/obj/item/trash/plate, +/turf/open/floor/plasteel/tech/grid, /area/ship/hallway/central) -"pT" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 6 +"pM" = ( +/obj/machinery/door/airlock/engineering{ + dir = 4; + name = "Engineering" }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 }, -/obj/effect/turf_decal/ntspaceworks_small/right, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"pW" = ( -/obj/machinery/atmospherics/pipe/layer_manifold, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ +/obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, +/area/ship/engineering/atmospherics) +"pT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output, +/turf/open/floor/engine/o2, /area/ship/engineering/atmospherics) "pZ" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input, -/turf/open/floor/engine/plasma, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/fulltile, +/turf/open/floor/plating, /area/ship/engineering/atmospherics) "qa" = ( /turf/closed/wall/r_wall, @@ -1961,136 +2095,112 @@ }, /turf/open/floor/engine/airless, /area/ship/external) -"qm" = ( -/obj/effect/turf_decal/corner/opaque/black{ - dir = 5 +"qg" = ( +/obj/structure/toilet{ + pixel_y = 10 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/airalarm/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"qp" = ( +/obj/effect/turf_decal/techfloor/corner{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/decal/cleanable/vomit/old, +/obj/effect/turf_decal/techfloor/corner{ dir = 1 }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"qq" = ( -/obj/machinery/shower{ - dir = 4; - pixel_y = 8 - }, -/obj/structure/curtain{ - pixel_y = 4 +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/crewtwo) -"qs" = ( -/obj/structure/bed, -/obj/item/bedsheet/captain, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 +/turf/open/floor/wood, +/area/ship/crew/cryo) +"qq" = ( +/obj/structure/table, +/obj/item/newspaper, +/turf/open/floor/wood, +/area/ship/hallway/central) +"qr" = ( +/obj/structure/sign/poster/official/random{ + pixel_y = 32 }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/carpet/royalblue, -/area/ship/crew/crewtwo) +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "qy" = ( -/obj/effect/turf_decal/corner/opaque/yellow/half{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/yellow/border{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, /obj/machinery/light/directional/west, +/obj/machinery/mineral/ore_redemption, /turf/open/floor/plasteel, /area/ship/cargo) -"qz" = ( -/obj/structure/cable{ - icon_state = "4-8" +"qF" = ( +/obj/machinery/power/shuttle/engine/fueled/plasma{ + dir = 4 }, -/obj/machinery/airalarm/directional/south, -/obj/structure/bed/dogbed/ian, -/mob/living/simple_animal/pet/dog/corgi/Ian, -/turf/open/floor/carpet/royalblue, -/area/ship/crew/crewtwo) +/turf/open/floor/plating, +/area/ship/external) "qK" = ( -/obj/effect/turf_decal/techfloor{ - dir = 8 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "Plasma to Engines and Mix" }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"qQ" = ( -/obj/effect/turf_decal/corner/opaque/yellow/border{ - dir = 9 +/obj/effect/turf_decal/atmos/plasma{ + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/yellow/bordercorner, -/turf/open/floor/plasteel, -/area/ship/cargo) +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) "qR" = ( -/obj/effect/turf_decal/corner/opaque/black{ - dir = 5 - }, -/obj/machinery/button/door{ - id = "sorrywejustclosed"; - name = "Cargo Hallway Shutters Control"; - pixel_x = -24; - pixel_y = 24 - }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"qS" = ( -/obj/machinery/light_switch{ - pixel_x = -25; - pixel_y = 25 +/obj/machinery/door/airlock/mining{ + name = "Cargo Office" }, /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/turf/open/floor/carpet/royalblue, -/area/ship/crew/crewtwo) -"qY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 +/turf/open/floor/plasteel/dark, +/area/ship/cargo/office) +"qS" = ( +/obj/structure/closet/secure_closet/wall{ + dir = 4; + name = "The Captain's Personal Medicine Cabinet And Soap Holder"; + pixel_x = -28; + req_access_txt = "20" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 +/obj/item/soap/nanotrasen, +/obj/item/razor, +/obj/item/storage/pill_bottle/psicodine, +/obj/item/storage/pill_bottle/charcoal/less, +/obj/item/lipstick/random, +/obj/item/stack/medical/bruise_pack{ + amount = 3 }, -/obj/structure/cable{ - icon_state = "2-4" +/obj/item/stack/medical/ointment{ + amount = 5; + desc = "Used to treat...... well, it's topical, and it's clearly been used....." }, -/turf/open/floor/carpet/nanoweave, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/crewtwo) +"qY" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/plasteel/tech/grid, /area/ship/hallway/central) "ra" = ( -/obj/machinery/atmospherics/components/unary/tank/toxins{ +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Air to Distro"; + target_pressure = 1000; dir = 8 }, -/obj/effect/turf_decal/industrial/warning/full, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ +/obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/machinery/light/directional/east, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering) +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/techfloor, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) "rb" = ( /obj/machinery/door/poddoor{ id = "amogusdoors"; @@ -2104,275 +2214,255 @@ }, /turf/open/floor/plating, /area/ship/cargo) +"rc" = ( +/obj/machinery/firealarm/directional/south, +/obj/machinery/vending/cigarette, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "re" = ( -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/cryo) -"rq" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 +/obj/effect/turf_decal/siding/wood{ + dir = 4 }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/carpet/royalblue, -/area/ship/crew/crewtwo) +/turf/open/floor/wood, +/area/ship/hallway/central) +"rq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) "rw" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4; - name = "Operations" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) +/turf/open/floor/carpet/blue, +/area/ship/crew/crewthree) "rx" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/dark/visible{ + dir = 10 }, -/obj/machinery/airalarm/directional/north, -/obj/structure/closet/radiation, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/turf_decal/industrial/warning{ - dir = 9 +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/light_switch{ + pixel_x = 13; + pixel_y = 24 }, -/turf/open/floor/engine, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, /area/ship/engineering/engine) "rz" = ( -/obj/structure/toilet{ - dir = 8; - pixel_x = 4; - pixel_y = 16 +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/power/terminal{ + dir = 1 }, -/obj/structure/sink{ - dir = 8; - pixel_x = 12 +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/obj/structure/mirror{ - pixel_x = 25 +/obj/structure/sign/warning/electricshock{ + pixel_x = 24 }, -/obj/structure/sign/poster/contraband/random{ - pixel_y = -32 +/turf/open/floor/plating, +/area/ship/engineering/engine) +"rF" = ( +/obj/effect/turf_decal/corner/opaque/white/mono, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"rK" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ + dir = 4 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"rM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output, +/turf/open/floor/engine/n2, +/area/ship/engineering/atmospherics) +"rW" = ( +/obj/structure/table, +/obj/item/cigbutt, +/obj/item/cigbutt{ + pixel_x = -10; + pixel_y = 12 }, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/dorm) -"rB" = ( -/obj/item/radio/intercom/directional/north, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) -"rF" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Infirmary" +"sc" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "Operations" }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/effect/turf_decal/techfloor{ + dir = 4 }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/bridge) +"sd" = ( +/obj/effect/turf_decal/siding/wood/corner, /obj/machinery/door/firedoor/border_only, +/turf/open/floor/wood, +/area/ship/hallway/central) +"sh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/effect/decal/cleanable/ash, +/turf/open/floor/plasteel, +/area/ship/cargo) +"si" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"sk" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/engine/air, +/area/ship/engineering/atmospherics) +"sn" = ( +/obj/structure/curtain, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"sz" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/dark, -/area/ship/medical) -"rK" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ + dir = 6 }, -/obj/effect/turf_decal/ntspaceworks_small/left, +/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating, /area/ship/engineering/atmospherics) -"rM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output, -/turf/open/floor/engine/n2, -/area/ship/engineering/atmospherics) -"rN" = ( +"sA" = ( /obj/structure/cable{ icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"sC" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/airlock/command{ - dir = 4; - name = "Personal Quarters" - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"rW" = ( -/obj/structure/chair{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, -/obj/structure/sign/departments/engineering{ - pixel_x = -32 +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/plasteel, +/area/ship/engineering/atmospherics) +"sD" = ( +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/carpet/nanoweave/orange, -/area/ship/hallway/central) -"sc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/effect/turf_decal/techfloor/hole/right{ - dir = 1 - }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"sh" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/closet/crate, -/obj/item/storage/belt/utility, -/obj/item/storage/belt/utility, -/obj/item/storage/belt/utility, -/obj/item/clothing/gloves/color/yellow, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = 6 - }, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = 6 - }, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/box/lights/mixed, -/obj/item/storage/box/lights/mixed, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/mono, -/area/ship/cargo) -"sj" = ( -/obj/structure/table/reinforced, -/obj/machinery/chem_dispenser/drinks/beer, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen/kitchen) -"sk" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/computer/atmos_control/tank/toxin_tank{ - dir = 1 - }, -/turf/open/floor/plasteel/mono, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) -"sz" = ( -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/techfloor{ - dir = 10 +"sJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 5 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) -"sD" = ( -/obj/item/chair, -/obj/item/chair{ - pixel_x = 6; - pixel_y = 14 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) -"sG" = ( -/obj/structure/closet/firecloset/wall{ - dir = 1; - pixel_y = -32 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) "sK" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2, +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/structure/disposalpipe/segment{ dir = 8 }, -/turf/open/floor/engine, +/turf/open/floor/plasteel/tech/grid, /area/ship/engineering/engine) -"sO" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, +"sU" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 }, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) "sY" = ( -/obj/effect/spawner/structure/window/reinforced/shutters, +/obj/structure/grille, /obj/machinery/door/poddoor{ id = "windowlockdown" }, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/firedoor/window, /turf/open/floor/plating, /area/ship/crew/office) "ta" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) "tf" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/west, -/obj/machinery/door/window/eastright, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 4 - }, -/obj/machinery/door/poddoor{ - id = "windowlockdown"; +/obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/turf/closed/wall/r_wall, +/area/ship/engineering/atmospherics) +"tk" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + target_temperature = 73 }, -/obj/machinery/door/firedoor/border_only{ +/turf/open/floor/engine, +/area/ship/engineering/engine) +"tm" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"tm" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ dir = 4 }, -/obj/effect/turf_decal/number/zero, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) +/turf/open/floor/plasteel, +/area/ship/hallway/central) "tp" = ( /obj/machinery/atmospherics/components/binary/circulator/cold{ dir = 1 @@ -2380,169 +2470,180 @@ /turf/open/floor/engine, /area/ship/engineering/engine) "tr" = ( -/obj/machinery/computer/operating{ - dir = 1 - }, -/obj/effect/turf_decal/borderfloor{ - dir = 4 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/tech/techmaint, +/obj/machinery/door/window/westright, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/corner/opaque/blue/mono, +/turf/open/floor/plasteel/white, /area/ship/medical) "ts" = ( -/obj/machinery/newscaster/directional/north, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/item/radio/intercom/directional/north, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) "tx" = ( /turf/closed/wall/r_wall, /area/ship/cargo) "tz" = ( -/obj/effect/turf_decal/corner/opaque/yellow/half{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/effect/turf_decal/corner/opaque/yellow/border{ - dir = 8 +/obj/effect/turf_decal/industrial/loading{ + dir = 1 }, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -20; - pixel_y = 13 +/obj/structure/ore_box, +/obj/structure/sign/warning/fire{ + pixel_x = -23 }, /turf/open/floor/plasteel, /area/ship/cargo) "tB" = ( -/obj/effect/turf_decal/corner/opaque/white/mono, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) +/turf/closed/wall, +/area/ship/crew/office) "tF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/atmospherics/components/binary/pump/layer4{ + dir = 1; + name = "Emergency Recycling Override" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ dir = 4 }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/structure/catwalk/over, +/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating, /area/ship/engineering/atmospherics) -"tH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +"tI" = ( +/obj/structure/table, +/obj/machinery/light/dim/directional/north, +/obj/item/reagent_containers/food/drinks/mug/tea, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"tR" = ( +/obj/machinery/door/airlock/external, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/ship/hallway/central) +"tX" = ( +/obj/machinery/door/airlock{ + name = "Kitchen" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/corner/opaque/white/mono, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/machinery/light/directional/south, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/office) -"tI" = ( -/obj/structure/table, -/obj/item/toy/cards/deck{ - pixel_y = 1 - }, -/obj/item/reagent_containers/food/drinks/mug/tea{ - pixel_x = 9; - pixel_y = 8 - }, -/turf/open/floor/carpet/nanoweave/orange, -/area/ship/hallway/central) +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) "tZ" = ( -/obj/structure/table, -/obj/item/book/manual/wiki/surgery, -/obj/item/storage/box/gloves, -/obj/item/storage/backpack/duffelbag/med/surgery, -/obj/item/storage/belt/medical, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/blue/half{ - dir = 8 - }, -/obj/item/clothing/glasses/hud/health, -/turf/open/floor/plasteel/tech/techmaint, +/obj/effect/turf_decal/borderfloorwhite/full, +/turf/open/floor/plasteel/white, /area/ship/medical) "ub" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/purple/visible{ + dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/structure/disposalpipe/segment{ + dir = 2 }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ dir = 1 }, -/turf/open/floor/plating, -/area/ship/engineering) +/obj/effect/turf_decal/techfloor/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) "ug" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/machinery/space_heater, -/turf/open/floor/plasteel/mono, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, /area/ship/cargo) +"uh" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm) "ul" = ( /turf/closed/wall/r_wall, /area/ship/engineering/engine) "um" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ dir = 4 }, -/obj/effect/turf_decal/number/five, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) +/turf/open/floor/plasteel, +/area/ship/hallway/central) "uq" = ( -/obj/structure/sink/kitchen{ - dir = 4; - pixel_x = -12 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/crew/canteen/kitchen) +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/wood, +/area/ship/crew/dorm) "us" = ( -/obj/machinery/modular_computer/console/preset/command{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/effect/turf_decal/siding/wood{ + dir = 9 }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/dark, +/turf/open/floor/wood, /area/ship/crew/crewthree) -"uw" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ +"ut" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ship/crew/toilet) +"uv" = ( +/obj/structure/fluff/hedge, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, -/obj/structure/chair, -/obj/item/radio/intercom/directional/west, +/turf/open/floor/wood, +/area/ship/crew/office) +"uw" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/structure/table/reinforced, +/obj/item/kitchen/knife, +/obj/item/cutting_board, +/obj/effect/turf_decal/corner/opaque/green/mono, /turf/open/floor/plasteel, -/area/ship/crew/canteen) +/area/ship/crew/canteen/kitchen) "uD" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 +/obj/machinery/airalarm/directional/east, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/beer{ - pixel_x = 6; - pixel_y = 2 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/corner/opaque/white/mono, +/obj/structure/table/reinforced, +/obj/item/kitchen/rollingpin, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = -2; + pixel_y = 11 }, -/obj/item/reagent_containers/food/drinks/beer{ - pixel_x = -7; - pixel_y = 6 +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_y = 6; + pixel_x = -8 }, /turf/open/floor/plasteel, -/area/ship/crew/canteen) +/area/ship/crew/canteen/kitchen) "uG" = ( /obj/machinery/power/shieldwallgen/atmos/roundstart{ dir = 4; @@ -2562,969 +2663,1150 @@ }, /turf/open/floor/plating, /area/ship/cargo) +"uL" = ( +/obj/structure/table/wood, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/wood, +/area/ship/crew/dorm) "uM" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 5 }, -/obj/machinery/light_switch{ - pixel_y = 21; - pixel_x = 7 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plating, -/area/ship/engineering) +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/engine) "uQ" = ( -/obj/effect/turf_decal/corner/opaque/yellow/border{ +/obj/machinery/door/poddoor/shutters{ + id = "hallwindows"; + name = "Cargo Shutters"; dir = 4 }, -/obj/effect/turf_decal/corner/opaque/yellow/half{ +/obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/machinery/light/small/directional/south, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, /turf/open/floor/plasteel, -/area/ship/cargo) +/area/ship/cargo/office) +"uS" = ( +/obj/structure/table/wood, +/obj/machinery/light/small/directional/west, +/obj/item/reagent_containers/food/snacks/grown/harebell, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) "uT" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "engine fuel pump" - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 6 - }, -/turf/open/floor/plating, -/area/ship/engineering) -"uX" = ( +/obj/machinery/light/directional/west, +/obj/structure/reagent_dispensers/watertank, /obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/turf/open/floor/plating, -/area/ship/engineering) -"uY" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"va" = ( -/obj/effect/turf_decal/corner/opaque/yellow/half, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/tech/grid, /area/ship/engineering/atmospherics) -"vc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 +"uX" = ( +/obj/item/reagent_containers/food/snacks/chips{ + pixel_x = 10; + pixel_y = 15 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/light/directional/south, +/obj/structure/chair/plastic{ + dir = 4 }, -/obj/machinery/light/directional/east, -/turf/open/floor/carpet/nanoweave, +/turf/open/floor/wood, /area/ship/hallway/central) -"vo" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 1 +"uY" = ( +/obj/machinery/computer/communications{ + dir = 8 }, -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/corner/opaque/ntblue/half{ dir = 4 }, -/obj/machinery/door/poddoor/preopen{ - dir = 4; - id = "coolingshutdown" - }, -/turf/open/floor/engine/airless, -/area/ship/external) -"vp" = ( -/obj/machinery/door/airlock/command{ - name = "Bridge" - }, -/obj/effect/turf_decal/corner/opaque/black/full, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"va" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/fulltile, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"vc" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 + dir = 4 + }, +/turf/open/floor/wood, +/area/ship/crew/cryo) +"ve" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Infirmary" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"vq" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/medical) +"vf" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/office) -"vB" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"vD" = ( -/obj/machinery/power/shuttle/engine/electric{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating/airless, -/area/ship/external) -"vG" = ( -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"vo" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/obj/item/megaphone/command, +/obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -8; - pixel_y = 5 +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"vp" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/siding/wood{ + dir = 9 }, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = -8 +/turf/open/floor/carpet/royalblue, +/area/ship/crew/crewtwo) +"vB" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 6 }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) -"vH" = ( -/obj/machinery/ore_silo, -/obj/structure/window/reinforced{ +/turf/open/floor/engine, +/area/ship/engineering/engine) +"vI" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/corner/opaque/neutral{ dir = 8 }, -/obj/item/multitool, -/obj/effect/turf_decal/corner/opaque/black/three_quarters{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +/obj/effect/turf_decal/corner/opaque/ntblue, +/obj/item/trash/plate, +/obj/effect/turf_decal/corner/opaque/green/half{ + dir = 1 }, /turf/open/floor/plasteel, -/area/ship/cargo/office) +/area/ship/crew/canteen/kitchen) "vO" = ( -/obj/effect/turf_decal/corner/opaque/blue/half, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering/atmospherics) -"vP" = ( -/obj/structure/sign/warning/nosmoking{ - pixel_y = 36 - }, -/obj/structure/sink{ - pixel_y = 22 - }, -/obj/effect/turf_decal/corner/opaque/blue/mono, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/mono/white, -/area/ship/medical) -"vR" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ dir = 4 }, -/obj/structure/chair{ - dir = 4 +/obj/structure/sign/poster/official/random{ + pixel_x = -30 }, +/obj/structure/table, +/obj/item/trash/cheesie, /turf/open/floor/plasteel, -/area/ship/crew/canteen) -"vW" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4{ +/area/ship/hallway/central) +"vP" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/borderfloorwhite{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/medical) +"vR" = ( +/obj/structure/chair/office, +/turf/open/floor/wood, +/area/ship/crew/office) +"vW" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ dir = 4 }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ + dir = 1 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "vY" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 10 - }, -/obj/structure/fireaxecabinet{ - dir = 8; - pixel_x = 28 +/obj/effect/turf_decal/corner/opaque/white/mono, +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"vZ" = ( +/obj/structure/bed, +/obj/item/bedsheet/captain, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 }, +/turf/open/floor/carpet/royalblue, +/area/ship/crew/crewtwo) +"wb" = ( /obj/effect/turf_decal/techfloor{ dir = 4 }, -/obj/machinery/suit_storage_unit/industrial/atmos_firesuit, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering/atmospherics) +/obj/item/radio/intercom/directional/south, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/bridge) "wd" = ( +/obj/structure/table, +/obj/item/stack/medical/gauze, +/obj/item/storage/firstaid/regular, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/medical) +"we" = ( /obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 + icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -25; - pixel_y = 25 +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"wg" = ( +/obj/machinery/door/airlock/external, +/obj/docking_port/mobile{ + dir = 2; + launch_status = 0; + port_direction = 8; + preferred_direction = 4 }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/dorm) -"we" = ( -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) +/turf/open/floor/plating, +/area/ship/hallway/central) "wp" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4; - name = "Helm" +/obj/structure/table/wood/reinforced, +/obj/item/hand_tele{ + pixel_x = 4; + pixel_y = 8 }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 +/obj/item/coin/adamantine{ + pixel_x = -12; + pixel_y = -3 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) +/obj/item/stamp/captain{ + pixel_y = 13; + pixel_x = -8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/wood, +/area/ship/crew/crewtwo) "wt" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/machinery/door/firedoor/window, -/obj/structure/window/plasma/reinforced/fulltile, -/obj/structure/grille, -/turf/open/floor/plating, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "ww" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ - icon_state = "1-4" + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 5 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/catwalk/over, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) "wA" = ( -/obj/structure/chair/office{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, -/turf/open/floor/plasteel/tech/techmaint, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/closet/crate/engineering, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass/twenty, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen, +/turf/open/floor/plasteel/mono/dark, /area/ship/cargo/office) "wB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/effect/turf_decal/industrial/warning{ + dir = 5 }, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/ship/engineering) -"wC" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/vending/cigarette, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) -"wG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/cargo/office) -"wH" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ +/turf/open/floor/plasteel, +/area/ship/engineering/atmospherics) +"wC" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input{ dir = 1 }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"wU" = ( -/obj/machinery/door/firedoor, -/obj/machinery/mineral/ore_redemption{ - dir = 1; - input_dir = 2; - output_dir = 1 +/turf/open/floor/engine/plasma, +/area/ship/engineering/atmospherics) +"wG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/ship/cargo/office) +"wH" = ( +/turf/closed/wall/r_wall, +/area/ship/crew/toilet) +"wO" = ( +/obj/structure/table/wood, +/obj/item/instrument/piano_synth, +/obj/machinery/light/small/directional/north, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"wT" = ( +/obj/effect/turf_decal/corner/opaque/white/mono, +/obj/structure/closet/secure_closet/freezer{ + anchored = 1 + }, +/obj/item/reagent_containers/food/snacks/meat/slab, +/obj/item/reagent_containers/food/snacks/meat/slab, +/obj/item/reagent_containers/food/snacks/meat/slab, +/obj/item/storage/box/ingredients/vegetarian, +/obj/item/storage/fancy/egg_box, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) "wX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/sign/warning/deathsposal{ - pixel_x = -28 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) +/obj/effect/turf_decal/corner/opaque/green/mono, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) "wZ" = ( -/obj/effect/spawner/structure/window/reinforced/shutters, -/obj/machinery/door/poddoor/shutters{ - id = "hallwindows"; - name = "Cargo Shutters" +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 }, -/turf/open/floor/plating, -/area/ship/cargo) +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"xb" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "xf" = ( /turf/closed/wall, /area/ship/crew/canteen/kitchen) "xi" = ( -/obj/machinery/modular_computer/console/preset/command{ - dir = 8 +/obj/structure/bed, +/obj/item/bedsheet/head_of_personnel, +/obj/machinery/light/small/directional/east, +/turf/open/floor/carpet/blue, +/area/ship/crew/crewthree) +"xo" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/yellow{ +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/ship/bridge) +/area/ship/hallway/central) "xs" = ( -/turf/closed/wall/r_wall, -/area/ship/crew/cryo) +/obj/structure/chair/sofa, +/obj/machinery/light/directional/north, +/turf/open/floor/carpet/red, +/area/ship/hallway/central) +"xu" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor{ + id = "windowlockdown" + }, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating, +/area/ship/crew/toilet) "xA" = ( -/obj/structure/chair/office{ - dir = 1; - name = "Requests" +/obj/machinery/computer/secure_data{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/light/small/directional/west, /turf/open/floor/carpet/nanoweave/red, /area/ship/crew/crewthree) "xE" = ( -/turf/closed/wall/r_wall, -/area/ship/crew/canteen) +/obj/machinery/photocopier, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 23 + }, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/crew/office) "xK" = ( -/obj/item/radio/intercom/directional/west, -/obj/effect/landmark/observer_start, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"xO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering/atmospherics) -"xW" = ( -/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/wood, +/area/ship/crew/cryo) +"xO" = ( /obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 + icon_state = "2-8" }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"xW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/chair/comfy/black{ dir = 4 }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) +/turf/open/floor/wood, +/area/ship/crew/cryo) "yf" = ( -/obj/structure/sign/poster/official/high_class_martini{ - pixel_y = 32 - }, -/obj/machinery/vending/snack/random, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable{ - icon_state = "0-4" +/obj/effect/turf_decal/corner/opaque/white/mono, +/obj/structure/table/reinforced, +/obj/machinery/microwave{ + pixel_x = -1; + pixel_y = 8 }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -20; - pixel_y = 13 +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"yh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel, +/area/ship/cargo) "yj" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 6 +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2{ + dir = 8 }, -/obj/machinery/door/firedoor/window, -/obj/structure/window/plasma/reinforced/fulltile, -/obj/structure/grille, +/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating, /area/ship/engineering/atmospherics) +"yo" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/external) "ys" = ( /turf/closed/wall, /area/ship/cargo/office) -"yu" = ( -/obj/structure/chair/comfy/black, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/turf/open/floor/carpet, -/area/ship/crew/office) -"yD" = ( -/obj/item/kirbyplants/random, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) +"yB" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/under/suit/dresssuit/skirt, +/obj/item/clothing/under/color/grey, +/obj/item/clothing/under/suit/charcoal, +/obj/item/clothing/shoes/laceup, +/obj/item/clothing/shoes/sneakers/black, +/obj/item/clothing/shoes/workboots/mining, +/obj/item/clothing/suit/hooded/hoodie/black, +/turf/open/floor/wood, +/area/ship/crew/dorm) "yF" = ( -/obj/effect/turf_decal/techfloor{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"yG" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ + dir = 1 }, -/turf/open/floor/plating, -/area/ship/engineering) -"yU" = ( +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"yG" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/obj/machinery/door/airlock/freezer{ - dir = 4; - name = "Cold Room" +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen/kitchen) -"zu" = ( -/obj/machinery/door/airlock{ - desc = "Throne of kings."; - dir = 4; - name = "Bathroom" +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"yM" = ( +/obj/structure/table/wood/reinforced, +/obj/item/storage/fancy/cigarettes/cigars{ + pixel_y = 12 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/item/lighter{ + pixel_x = -6; + pixel_y = -3 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/item/coin/titanium{ + pixel_x = 7; + pixel_y = -3 }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/floor/wood, +/area/ship/crew/crewthree) +"yU" = ( +/obj/machinery/door/airlock{ + name = "Crew Quarters" + }, +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ - dir = 8 + dir = 1 }, /turf/open/floor/plasteel/dark, /area/ship/crew/dorm) -"zy" = ( -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4" +"ze" = ( +/obj/structure/sink{ + pixel_y = 22 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/obj/structure/mirror{ + pixel_y = 32 }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/ship/engineering) -"zG" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 +/obj/structure/toilet{ + dir = 8; + name = "The Throne"; + desc = "Man, its good to be king." }, -/obj/machinery/newscaster/security_unit/directional/west, -/turf/open/floor/wood, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/showroomfloor, /area/ship/crew/crewtwo) -"zK" = ( +"zi" = ( +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable{ - icon_state = "1-8" + icon_state = "2-4" }, /obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/structure/closet/secure_closet/engineering_electrical{ - anchored = 1 - }, -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) -"zM" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"zR" = ( -/turf/open/floor/plasteel/stairs{ - dir = 8 - }, -/area/ship/cargo) -"Aa" = ( -/obj/machinery/door/airlock/command{ - name = "Bridge" + icon_state = "1-4" }, -/obj/effect/turf_decal/corner/opaque/black/full, /obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 + icon_state = "0-4" }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"Ak" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 }, -/obj/structure/window/reinforced/spawner/west, -/obj/machinery/door/window/eastleft, -/obj/structure/cable{ - icon_state = "0-8" +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/machinery/door/poddoor{ +/obj/machinery/light_switch{ dir = 4; - id = "windowlockdown" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 + pixel_x = -24; + pixel_y = -14 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/steeldecal/steel_decals_central6{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering) -"Ao" = ( -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"zu" = ( +/obj/effect/turf_decal/industrial/loading{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/red/diagonal, +/turf/open/floor/plasteel, +/area/ship/cargo) +"zy" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "engine fuel pump" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"zC" = ( +/obj/machinery/suit_storage_unit/cmo, +/obj/effect/turf_decal/borderfloorwhite/full, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"zG" = ( +/obj/structure/bookcase/manuals/engineering, +/turf/open/floor/wood, +/area/ship/hallway/central) +"zJ" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = 12 + }, +/obj/structure/mirror{ + pixel_x = 25 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) +"zK" = ( +/obj/machinery/light/directional/east, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/empty, +/obj/item/stock_parts/cell/high/empty, +/obj/item/stock_parts/cell/high/empty, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"zM" = ( /obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/wood, +/area/ship/crew/office) +"zO" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"zP" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ + dir = 4; + id = "coolingshutdown" + }, +/turf/open/floor/engine/airless, +/area/ship/external) +"zS" = ( +/obj/structure/table/optable, +/obj/effect/turf_decal/corner/opaque/blue/mono, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"Aa" = ( +/obj/structure/chair/comfy/brown{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/wood, +/area/ship/crew/crewthree) +"Ao" = ( /turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) +/area/ship/hallway/central) "As" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) +/obj/structure/closet/cabinet, +/obj/item/clothing/suit/toggle/lawyer/burgundy, +/obj/item/clothing/suit/toggle/lawyer/charcoal, +/obj/item/clothing/suit/toggle/lawyer/navy, +/obj/item/clothing/under/rank/security/detective, +/obj/item/clothing/under/rank/security/detective/skirt, +/obj/item/clothing/under/suit/black, +/obj/item/clothing/under/suit/black/skirt, +/obj/item/clothing/under/suit/black_really, +/obj/item/clothing/under/suit/black_really/skirt, +/obj/item/clothing/glasses/sunglasses, +/obj/item/clothing/neck/tie, +/obj/item/clothing/glasses/regular, +/obj/machinery/light/small/directional/west, +/turf/open/floor/wood, +/area/ship/crew/office) "At" = ( -/obj/effect/turf_decal/atmos/air, -/obj/machinery/air_sensor/atmos/air_tank, -/turf/open/floor/engine/air, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/fulltile, +/turf/open/floor/plating, /area/ship/engineering/atmospherics) "Au" = ( -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/cargo/office) -"Az" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, +/area/ship/cargo/office) +"Az" = ( +/obj/structure/railing/corner{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, /turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/dorm) +/area/ship/bridge) "AB" = ( -/obj/structure/rack, -/obj/item/storage/bag/ore, -/obj/item/storage/bag/ore, -/obj/item/pickaxe/silver, -/obj/item/pickaxe/mini, -/obj/item/pickaxe/mini, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 6 - }, -/turf/open/floor/plasteel, +/obj/effect/decal/cleanable/wrapping, +/turf/open/floor/plasteel/dark, /area/ship/cargo/office) "AE" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) "AG" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "engine fuel pump" +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/sign/warning/fire{ - pixel_y = -20 +/obj/machinery/atmospherics/components/trinary/mixer/flipped{ + dir = 4; + name = "Chamber Mixer" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/button/door/incinerator_vent_atmos_aux{ - pixel_x = -28; - pixel_y = 8 +/obj/item/paper/crumpled{ + default_raw_text = "66% Oxy (Node 1) to 34% Plasma (Node 2) works great at 500 kPa." }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/engine, +/turf/open/floor/plasteel/tech/grid, /area/ship/engineering/engine) -"AJ" = ( -/obj/machinery/door/airlock/external, -/obj/docking_port/mobile{ - dir = 2; - launch_status = 0; - port_direction = 8; - preferred_direction = 4 +"AP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, +/obj/machinery/computer/helm/viewscreen/directional/south, +/obj/effect/turf_decal/number/right_eight, +/obj/effect/turf_decal/number/left_nine, /turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"AM" = ( -/obj/effect/turf_decal/atmos/oxygen, -/turf/open/floor/engine/o2, -/area/ship/engineering/atmospherics) +/area/ship/cargo/office) "AT" = ( /turf/closed/wall, /area/ship/medical) "Bc" = ( -/obj/machinery/power/smes/engineering, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 10 - }, -/obj/structure/sign/warning/electricshock{ - pixel_x = 32 +/obj/machinery/cryopod{ + dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering/engine) +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/crew/cryo) "Bd" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) "Bg" = ( -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/structure/table, -/obj/item/trash/can, -/obj/item/trash/candle{ - pixel_y = 12 +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) +/area/ship/hallway/central) "Bh" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 +/obj/structure/table, +/obj/item/flashlight/lamp/green{ + pixel_x = -6; + pixel_y = 13 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_x = -30 }, +/obj/item/spacecash/bundle/c50, +/turf/open/floor/wood, +/area/ship/crew/office) +"Bq" = ( +/obj/machinery/airalarm/directional/north, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"Br" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "1-2" + dir = 4 }, +/obj/effect/turf_decal/corner/opaque/white/mono, /turf/open/floor/plasteel, -/area/ship/crew/canteen) -"Br" = ( -/obj/structure/curtain/bounty, -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/ship/crew/canteen) +/area/ship/crew/canteen/kitchen) "Bw" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ + dir = 4 }, -/obj/effect/turf_decal/ntspaceworks_small, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) +/obj/effect/decal/cleanable/food/tomato_smudge, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"BE" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "BH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/table/wood, +/obj/machinery/light/small/directional/east, +/obj/machinery/light_switch{ + pixel_x = -5; + pixel_y = 24 + }, +/obj/item/paicard, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"BI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 + dir = 9 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 }, +/obj/effect/turf_decal/ntspaceworks_small, +/turf/open/floor/plasteel/dark, +/area/ship/cargo/office) +"BJ" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/cable{ - icon_state = "1-4" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel/stairs, +/area/ship/bridge) +"BK" = ( +/obj/structure/catwalk/over, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/robot_debris/gib, +/turf/open/floor/plating, +/area/ship/crew/toilet) +"BS" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plasteel/dark, +/area/ship/crew/cryo) +"BW" = ( +/obj/machinery/airalarm/directional/west, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"Ca" = ( +/obj/machinery/suit_storage_unit/mining/eva, +/turf/open/floor/plasteel, +/area/ship/cargo) +"Cl" = ( +/obj/machinery/door/airlock{ + dir = 4; + name = "Bathroom" }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"BJ" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 + dir = 4 }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"BW" = ( -/obj/effect/turf_decal/corner/opaque/white/mono, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) -"Ca" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/item/defibrillator/loaded, -/obj/item/storage/box/bodybags{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/item/storage/firstaid/fire{ - pixel_x = -6 - }, -/obj/item/reagent_containers/glass/bottle/formaldehyde{ - pixel_x = 5; - pixel_y = 8 +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/item/reagent_containers/syringe, -/obj/item/reagent_containers/glass/bottle{ - list_reagents = list(/datum/reagent/medicine/thializid=30); - name = "thializid bottle" +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/structure/closet/crate/medical, -/turf/open/floor/plasteel/mono, -/area/ship/cargo) -"Cl" = ( -/obj/structure/table, -/obj/item/folder/blue{ - pixel_x = 6; - pixel_y = -3 +/turf/open/floor/plasteel/dark, +/area/ship/crew/toilet) +"Co" = ( +/obj/structure/spirit_board, +/obj/structure/catwalk/over, +/obj/item/toy/plush/moth/firewatch{ + pixel_y = 14; + name = "soot-covered moth plushie" }, -/obj/item/stamp/law{ - pixel_x = 7 +/obj/structure/sign/poster/contraband/stechkin{ + pixel_x = 32 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating/rust, +/area/ship/crew/toilet) +"Cr" = ( +/obj/structure/chair/office/light{ dir = 4 }, -/obj/item/folder/red{ - pixel_x = -8 +/obj/effect/turf_decal/corner/opaque/blue/mono, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"Cs" = ( +/obj/structure/chair{ + dir = 8 }, -/obj/item/stamp/centcom{ - pixel_x = -7; - pixel_y = 4 +/obj/effect/turf_decal/techfloor{ + dir = 4 }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/central) "Cu" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/door/firedoor/window, -/obj/structure/window/plasma/reinforced/fulltile, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, /obj/structure/grille, +/obj/structure/window/plasma/reinforced/fulltile, /turf/open/floor/plating, /area/ship/engineering/atmospherics) -"CA" = ( -/obj/effect/turf_decal/corner/opaque/yellow/border{ +"Cy" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/crew/office) +"Cz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/yellow/half, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel, -/area/ship/cargo) -"CB" = ( -/obj/machinery/smartfridge/bloodbank/preloaded, -/turf/closed/wall, -/area/ship/medical) -"CC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"CA" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/effect/turf_decal/techfloor{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 }, +/obj/machinery/light/directional/south, /turf/open/floor/plasteel, /area/ship/engineering/atmospherics) -"CE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ +"CB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/effect/turf_decal/techfloor{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/medical) +"CE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 8 + }, +/turf/open/floor/engine, +/area/ship/engineering/atmospherics) "CH" = ( -/obj/machinery/medical_kiosk, +/obj/structure/chair/sofa/right{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, /turf/open/floor/carpet/nanoweave/blue, /area/ship/medical) "CM" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor/corner{ dir = 4 }, -/turf/closed/wall/r_wall, -/area/ship/engineering/engine) +/turf/open/floor/plasteel/dark, +/area/ship/crew/cryo) "CR" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) -"CV" = ( -/obj/machinery/vending/cigarette, -/obj/structure/sign/nanotrasen{ - pixel_y = 32 +/obj/machinery/atmospherics/pipe/manifold/purple/visible{ + dir = 4 }, -/obj/structure/sign/poster/official/random{ - pixel_x = -32 +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ + dir = 1 }, -/turf/open/floor/wood, -/area/ship/crew/office) +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"CV" = ( +/obj/effect/turf_decal/ntspaceworks_small/right, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/dark, +/area/ship/cargo/office) "Da" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" +/obj/effect/turf_decal/techfloor, +/obj/machinery/computer/cryopod/directional/west, +/obj/effect/turf_decal/techfloor{ + dir = 1 }, -/obj/structure/cable/yellow{ - icon_state = "2-8" +/turf/open/floor/plasteel/dark, +/area/ship/crew/cryo) +"Dc" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"Dd" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/door/firedoor/window, -/obj/structure/window/plasma/reinforced/fulltile, -/obj/structure/grille, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"Dp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"Dv" = ( -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ +/obj/effect/turf_decal/techfloor{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/structure/chair{ - dir = 8 +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/central) +"Dd" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Nitrogen to Air"; + dir = 8; + target_pressure = 1000 }, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) -"DN" = ( -/obj/structure/window/reinforced/spawner/east, -/obj/structure/chair/comfy/black{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/green/visible, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"Dp" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/carpet, -/area/ship/crew/office) -"DR" = ( -/obj/structure/sign/departments/medbay/alt{ - pixel_y = -32 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/closet/emcloset/wall{ + dir = 1; + pixel_y = -28 }, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) -"DV" = ( -/obj/structure/filingcabinet{ - pixel_x = 8 +"Dy" = ( +/obj/structure/closet/cardboard{ + name = "pranking materials" + }, +/obj/item/storage/box/maid, +/obj/item/toy/katana, +/obj/item/bikehorn, +/obj/item/grown/bananapeel, +/obj/item/gun/ballistic/automatic/toy/pistol, +/obj/item/restraints/legcuffs/beartrap, +/obj/item/poster/random_contraband, +/obj/item/poster/random_contraband, +/obj/item/poster/random_contraband, +/turf/open/floor/plating/rust, +/area/ship/crew/toilet) +"Dz" = ( +/obj/machinery/modular_computer/console/preset/command{ + dir = 8 }, -/obj/machinery/airalarm/directional/north, -/obj/machinery/newscaster/security_unit/directional/west, -/turf/open/floor/plasteel/dark, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24; + pixel_y = -5 + }, +/turf/open/floor/carpet/nanoweave/red, /area/ship/crew/crewthree) -"Ea" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +"DF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output{ + dir = 1 }, +/turf/open/floor/engine/plasma, +/area/ship/engineering/atmospherics) +"DL" = ( +/obj/effect/decal/cleanable/food/flour, +/obj/effect/turf_decal/corner/opaque/green/mono, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"DN" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/airalarm/directional/south, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) -"Eb" = ( -/turf/closed/wall, -/area/ship/engineering) -"Ek" = ( -/obj/effect/turf_decal/atmos/nitrogen, -/turf/open/floor/engine/n2, -/area/ship/engineering/atmospherics) -"En" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +"DV" = ( +/obj/structure/chair/sofa/corner, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/computer/helm/viewscreen/directional/east, +/turf/open/floor/carpet/red, +/area/ship/hallway/central) +"DZ" = ( +/obj/effect/turf_decal/corner/opaque/white/mono, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/decal/cleanable/food/flour, +/obj/structure/sink/kitchen{ + dir = 4; + pixel_x = -11 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"Eb" = ( +/obj/structure/cable{ + icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 + dir = 10 }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/plasteel/mono/dark, /area/ship/bridge) +"Ek" = ( +/obj/machinery/advanced_airlock_controller{ + pixel_x = 25 + }, +/turf/open/floor/plating, +/area/ship/hallway/central) "Eu" = ( /obj/docking_port/stationary{ dwidth = 15; @@ -3535,978 +3817,998 @@ /turf/template_noop, /area/template_noop) "Ev" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = 6 }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 +/obj/item/pen{ + pixel_x = 5; + pixel_y = 2 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 +/obj/item/reagent_containers/food/snacks/fortunecookie{ + pixel_y = 7; + pixel_x = -7 }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) +/obj/machinery/newscaster/directional/east, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/wood, +/area/ship/crew/cryo) "Ew" = ( -/obj/effect/turf_decal/techfloor{ - dir = 4 +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"Ex" = ( +/obj/structure/railing{ + dir = 1 }, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) +/obj/item/kirbyplants/random, +/obj/machinery/light/dim/directional/west, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/bridge) "EE" = ( -/obj/machinery/power/smes/shuttle/precharged{ +/obj/machinery/atmospherics/components/unary/shuttle/heater{ dir = 4 }, /obj/structure/window/reinforced/spawner/west, -/obj/machinery/door/window/eastright, -/obj/structure/cable{ - icon_state = "0-8" - }, /obj/machinery/door/poddoor{ dir = 4; - id = "windowlockdown" + id = "enginelockdown" }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/door/window/eastright{ + name = "Engine Access" + }, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"EF" = ( +/obj/machinery/modular_computer/console/preset/command{ dir = 8 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/corner/opaque/bar/half{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering) +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"EG" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/wood, +/area/ship/hallway/central) "EJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/effect/turf_decal/techfloor{ - dir = 8 + dir = 6 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"ES" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"EP" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 9 }, -/obj/effect/turf_decal/techfloor{ - dir = 1 +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"ES" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/light/broken/directional/east, +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ + dir = 4 }, /turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) +/area/ship/hallway/central) "Fc" = ( -/obj/machinery/atmospherics/pipe/layer_manifold{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"Fj" = ( +/obj/machinery/door/airlock/command{ + name = "Bridge"; + req_access_txt = "19" }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"Ff" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Fj" = ( -/obj/structure/window/reinforced/spawner/east, -/obj/item/kirbyplants/random, +/obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/ship/crew/office) -"Fq" = ( -/obj/effect/turf_decal/corner/opaque/yellow/half{ - dir = 4 + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/yellow/border{ - dir = 8 +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/bridge) +"Fn" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"Fq" = ( /obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/generic, /turf/open/floor/plasteel, /area/ship/cargo) "Fu" = ( /turf/closed/wall, /area/ship/cargo) "Fv" = ( -/obj/machinery/vending/coffee, -/obj/structure/sign/poster/official/get_your_legs{ - pixel_y = -32 +/obj/machinery/fax, +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"Fx" = ( +/obj/machinery/light/dim/directional/south, +/obj/structure/chair{ + dir = 4 }, +/obj/effect/decal/cleanable/food/egg_smudge, /turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) +/area/ship/hallway/central) "FB" = ( -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave, +/obj/structure/flora/bigplant, +/turf/open/floor/wood, /area/ship/hallway/central) "FC" = ( -/obj/effect/turf_decal/corner/opaque/yellow/half{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/yellow/border{ - dir = 8 - }, -/obj/item/radio/intercom/directional/west, +/obj/structure/rack, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/item/shovel, +/obj/item/kinetic_crusher, /turf/open/floor/plasteel, /area/ship/cargo) -"FN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -22; - pixel_y = 9 - }, +"FO" = ( /obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/firealarm/directional/west{ - pixel_y = -12 + icon_state = "4-8" }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plasteel, +/area/ship/cargo) "FW" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/machinery/portable_atmospherics/pump, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 }, -/turf/open/floor/plasteel/mono, -/area/ship/cargo) -"Gb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/structure/cable{ - icon_state = "2-8" +/obj/effect/turf_decal/techfloor{ + dir = 6 }, /turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/cryo) -"Gc" = ( -/obj/machinery/door/window/westleft, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/blue/half{ - dir = 8 +/area/ship/bridge) +"Gb" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/wood, +/area/ship/hallway/central) +"Gc" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/obj/machinery/iv_drip, +/obj/effect/turf_decal/borderfloorwhite/full, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel/white, /area/ship/medical) "Gh" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Activate Cooling" + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/cyan/visible, -/obj/machinery/light/directional/south, /turf/open/floor/engine, /area/ship/engineering/engine) "Gi" = ( +/turf/open/floor/engine, +/area/ship/engineering/engine) +"Gm" = ( +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/crew/office) +"Gp" = ( /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering) -"Gm" = ( -/obj/structure/table/reinforced, -/obj/machinery/chem_dispenser/drinks, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen/kitchen) -"Go" = ( -/obj/machinery/door/airlock{ - dir = 4; - name = "Dormitory" - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/black/full, -/turf/open/floor/carpet/nanoweave, -/area/ship/crew/dorm) -"Gp" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/spawner/lootdrop/maintenance/five, -/obj/structure/closet/crate/internals, -/turf/open/floor/plasteel/mono, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, /area/ship/cargo) "Gq" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 - }, +/obj/structure/table, +/obj/item/folder/blue, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"Gs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"Gx" = ( -/obj/machinery/atmospherics/components/trinary/mixer/airmix{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"GA" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible{ dir = 4 }, -/obj/machinery/door/firedoor/window, -/obj/structure/window/plasma/reinforced/fulltile, -/obj/structure/grille, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"GF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output, -/turf/open/floor/engine/o2, -/area/ship/engineering/atmospherics) -"GL" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, +/obj/item/clipboard, +/turf/open/floor/wood, +/area/ship/crew/office) +"Gs" = ( +/obj/machinery/door/window/westleft, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 + dir = 9 }, -/obj/machinery/light/directional/south, -/obj/item/radio/intercom/directional/west, -/obj/structure/railing/corner{ - dir = 4 +/obj/structure/sign/poster/official/cleanliness{ + pixel_y = -33 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) +/turf/open/floor/plasteel/white, +/area/ship/medical) +"GL" = ( +/turf/open/floor/wood, +/area/ship/crew/crewtwo) "GQ" = ( -/obj/effect/spawner/structure/window/reinforced/shutters, -/obj/machinery/door/poddoor{ - id = "windowlockdown" - }, -/turf/open/floor/plating, -/area/ship/crew/canteen) -"Hd" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, +/obj/structure/fluff/hedge, +/turf/open/floor/wood, +/area/ship/crew/office) +"GW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel/stairs{ +/turf/open/floor/plasteel/dark, +/area/ship/hallway/central) +"Hb" = ( +/obj/machinery/vending/cola/random, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"Hd" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/corner/opaque/neutral{ dir = 8 }, -/area/ship/crew/cryo) +/obj/effect/turf_decal/corner/opaque/ntblue, +/obj/effect/turf_decal/corner/opaque/neutral/half{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) "Hm" = ( -/obj/machinery/atmospherics/components/binary/pump/layer4{ - dir = 8; - name = "Emergency Recycling Override" +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ + dir = 6 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "Hq" = ( -/obj/machinery/door/window/brigdoor/southright{ - desc = "A strong door. A robust looking stainless steel plate with 'INTERNAL AFFAIRS' is written on it."; - dir = 4; - name = "Internal Affairs" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 9 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/office) +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "Hu" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/item/clothing/shoes/magboots, -/obj/machinery/suit_storage_unit/inherit/industrial, -/obj/item/clothing/suit/space/hardsuit/engine, -/obj/item/clothing/mask/breath, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) -"HA" = ( -/obj/effect/turf_decal/corner/opaque/black{ +/obj/machinery/atmospherics/pipe/manifold/purple/visible, +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ dir = 5 }, -/obj/machinery/light_switch{ - pixel_x = 25; - pixel_y = 25 +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"HA" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"HE" = ( -/obj/machinery/power/smes/engineering, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable{ - icon_state = "0-8" +/obj/effect/turf_decal/techfloor{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, -/obj/structure/sign/warning/electricshock{ - pixel_x = 32 - }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/bridge) +"HE" = ( +/obj/structure/catwalk/over, +/obj/structure/closet/emcloset, /turf/open/floor/plating, -/area/ship/engineering/engine) +/area/ship/crew/toilet) "HL" = ( +/obj/machinery/igniter/incinerator_atmos, /obj/machinery/air_sensor/atmos/incinerator_tank{ id_tag = "nemo_incinerator_sensor" }, -/obj/machinery/igniter/incinerator_atmos, /obj/structure/disposalpipe/trunk{ dir = 4 }, /turf/open/floor/engine/airless, /area/ship/engineering/engine) "HO" = ( -/obj/structure/table/optable, -/obj/effect/turf_decal/borderfloor{ - dir = 4 +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/table/glass, +/obj/item/storage/backpack/duffelbag/med/surgery{ + pixel_y = 11 + }, +/obj/machinery/light_switch{ + pixel_x = -5; + pixel_y = 24 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/white, /area/ship/medical) "HR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/dark/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/button/door/incinerator_vent_atmos_aux{ - dir = 4; - pixel_x = -23; - pixel_y = 8 +/turf/open/floor/engine, +/area/ship/engineering/atmospherics) +"HW" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/turf/open/floor/wood, +/area/ship/hallway/central) +"HZ" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"Ir" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"Ic" = ( -/obj/machinery/cryopod{ +/obj/machinery/airalarm/directional/south, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"IA" = ( +/obj/machinery/power/terminal{ dir = 8 }, -/obj/structure/window/reinforced/tinted, -/obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ - dir = 1 +/obj/structure/cable{ + icon_state = "0-4" }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) -"Id" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"IB" = ( +/obj/structure/bookcase/random/fiction, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"IV" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible{ dir = 1 }, -/obj/machinery/door/firedoor/border_only{ +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ dir = 1 }, -/obj/machinery/door/firedoor/border_only, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "1-4" }, -/obj/effect/turf_decal/corner/opaque/black/full, -/obj/machinery/door/airlock/public/glass{ - name = "Canteen" +/obj/effect/turf_decal/techfloor{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) -"Ir" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Jj" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"Jk" = ( +/obj/machinery/atmospherics/pipe/manifold/purple/visible{ dir = 4 }, -/obj/structure/chair{ - dir = 8 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"Iy" = ( -/obj/machinery/power/apc/auto_name/directional/south, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"Jm" = ( /obj/structure/cable{ - icon_state = "0-8" + icon_state = "1-2" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/machinery/airalarm/directional/west, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 1 }, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/dorm) -"IA" = ( -/obj/structure/tank_dispenser, -/obj/machinery/light/directional/west, /turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) -"IB" = ( -/obj/structure/chair{ - dir = 4 +/area/ship/engineering/engine) +"Jn" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Infirmary" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/effect/turf_decal/corner/transparent/grey/half{ +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/medical) +"JA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/computer/cargo/express{ dir = 1 }, /turf/open/floor/plasteel/dark, -/area/ship/crew/office) -"II" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 +/area/ship/cargo/office) +"JE" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/obj/structure/window/reinforced/spawner/west, -/obj/machinery/door/window/eastleft, -/obj/machinery/door/poddoor{ - dir = 4; - id = "windowlockdown" +/turf/open/floor/plasteel/mono/dark, +/area/ship/cargo) +"JJ" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/wood, +/area/ship/hallway/central) +"JM" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plating, -/area/ship/engineering) -"IP" = ( -/obj/structure/railing{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/stairs{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/area/ship/bridge) -"IV" = ( -/turf/closed/wall, -/area/ship/engineering/engine) -"Ja" = ( -/obj/structure/sign/nanotrasen{ - pixel_x = 32 +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/machinery/light/small/directional/east, -/obj/machinery/vending/cola/random, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) -"Jj" = ( -/obj/structure/chair{ - dir = 8 +"JQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/plasteel, +/area/ship/cargo) +"JS" = ( +/obj/machinery/cryopod{ + dir = 4 }, -/turf/open/floor/carpet/nanoweave/orange, -/area/ship/hallway/central) -"Jk" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "Air to Distro"; - target_pressure = 1000 +/obj/structure/sign/poster/official/nanotrasen_logo{ + pixel_x = -30 }, -/obj/structure/cable{ - icon_state = "4-8" +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/crew/cryo) +"JT" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 }, -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"JX" = ( +/obj/effect/turf_decal/radiation/white, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/engine) +"JY" = ( +/obj/structure/closet/emcloset/anchored, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/ship/hallway/central) +"Ka" = ( +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"Jm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 5 - }, -/turf/closed/wall, -/area/ship/engineering/engine) -"Jn" = ( -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 +/obj/machinery/airalarm/directional/east, +/turf/open/floor/wood, +/area/ship/hallway/central) +"Kb" = ( +/obj/machinery/firealarm/directional/south, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"Kd" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 10 }, -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-2" }, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"Kf" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) -"JA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/cargo/office) -"JE" = ( -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo) -"JQ" = ( -/turf/open/floor/plasteel/mono, -/area/ship/cargo) -"JY" = ( -/obj/machinery/air_sensor/atmos/oxygen_tank, -/turf/open/floor/engine/o2, -/area/ship/engineering/atmospherics) -"Ka" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/obj/effect/turf_decal/corner/transparent/grey/half{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 +/turf/open/floor/wood, +/area/ship/crew/dorm) +"Kh" = ( +/obj/machinery/button/door{ + dir = 1; + pixel_y = -24; + id = "privacyshutters" }, -/turf/open/floor/plasteel/dark, +/obj/item/kirbyplants/random, +/turf/open/floor/carpet/nanoweave/blue, /area/ship/crew/office) -"Kh" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +"Ki" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/door/firedoor/border_only{ +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/item/reagent_containers/food/drinks/shaker, -/obj/item/reagent_containers/glass/rag, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "sorrywejustclosed"; - name = "Closing Shutters" +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = 8; - pixel_y = -25 +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) -"Ki" = ( -/obj/machinery/vending/clothing, -/obj/machinery/computer/cryopod/directional/west, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) +/turf/open/floor/wood, +/area/ship/hallway/central) "Kn" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 8 }, /turf/open/floor/engine/airless, /area/ship/external) -"Kp" = ( +"Kv" = ( /obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"Kz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Kv" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/machinery/portable_atmospherics/canister/air, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/turf/open/floor/plasteel/mono, -/area/ship/cargo) -"Kz" = ( -/obj/machinery/atmospherics/components/binary/valve/digital{ +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor/corner{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering) +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) "KH" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ +/obj/structure/punching_bag, +/obj/machinery/light_switch{ dir = 1; - name = "cryogenic freezer"; - target_temperature = 73 + pixel_x = 6; + pixel_y = -24 }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) -"KI" = ( -/obj/structure/dresser, -/obj/item/radio/intercom/directional/north, /turf/open/floor/wood, -/area/ship/crew/dorm) -"KL" = ( -/obj/machinery/door/airlock/external, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/dark, /area/ship/hallway/central) -"KQ" = ( -/obj/structure/closet/firecloset/wall{ - pixel_y = 32 +"KI" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + dir = 4 }, -/obj/structure/sign/nanotrasen{ - pixel_x = -32 +/obj/effect/mapping_helpers/airlock/locked, +/obj/structure/barricade/wooden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ - dir = 1 + dir = 8 }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"KU" = ( -/obj/structure/closet/secure_closet/captains, -/obj/item/stock_parts/cell/gun, -/obj/structure/cable{ - icon_state = "0-4" +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/wood, -/area/ship/crew/crewtwo) -"KY" = ( -/obj/machinery/advanced_airlock_controller{ - dir = 4; - pixel_x = -25 +/turf/open/floor/plating, +/area/ship/crew/toilet) +"KL" = ( +/obj/effect/turf_decal/corner/opaque/green/mono, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"KU" = ( +/obj/machinery/computer/arcade/orion_trail{ + dir = 8; + pixel_x = 5 }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 9 +/obj/item/reagent_containers/food/drinks/waterbottle{ + pixel_x = -15; + pixel_y = 10 }, -/turf/open/floor/plasteel, +/turf/open/floor/wood, /area/ship/hallway/central) +"La" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/effect/turf_decal/siding/wood, +/obj/structure/table/wood, +/obj/structure/bedsheetbin, +/turf/open/floor/wood, +/area/ship/crew/dorm) "Lm" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input, /turf/open/floor/engine/o2, /area/ship/engineering/atmospherics) "Lq" = ( -/obj/effect/spawner/structure/window/reinforced/shutters, -/obj/machinery/door/poddoor{ +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/door/poddoor/preopen{ dir = 4; - id = "bridgelockdown" + id = "coolingshutdown" }, -/turf/open/floor/plating, -/area/ship/bridge) +/turf/open/floor/engine/airless, +/area/ship/external) "Ls" = ( -/obj/effect/turf_decal/corner/opaque/yellow/border{ +/obj/machinery/door/airlock/mining/glass, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/yellow/half, /turf/open/floor/plasteel, /area/ship/cargo) "Lv" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/machinery/power/smes/engineering, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable{ + icon_state = "0-8" }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 8 - }, -/obj/machinery/light/broken/directional/north, -/turf/open/floor/engine, +/obj/machinery/light/directional/north, +/turf/open/floor/plating, /area/ship/engineering/engine) "Lz" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible{ +/obj/machinery/atmospherics/pipe/simple/purple/visible{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/turf/open/floor/plating, -/area/ship/engineering) -"LA" = ( -/obj/structure/bookcase/random{ - desc = "A great place for storing knowledge, if it weren't for the 'FOR DISPLAY ONLY' placard sitting on one of the shelves." - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/office) -"LD" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ dir = 1 }, -/obj/effect/decal/cleanable/vomit, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"LV" = ( -/obj/machinery/washing_machine, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/dorm) -"LX" = ( -/obj/machinery/autolathe, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 9 +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"LA" = ( +/obj/structure/frame/computer{ dir = 8 }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"Mh" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/turf/open/floor/plasteel/white, +/area/ship/medical) +"LD" = ( +/obj/structure/chair{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/airalarm/directional/west, +/turf/open/floor/wood, +/area/ship/crew/office) +"LX" = ( +/obj/structure/chair/office{ + dir = 8 }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/machinery/button/door{ + id = "hallwindows"; + name = "Shutters Control"; + pixel_y = 24 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/office) +/turf/open/floor/plasteel/dark, +/area/ship/cargo/office) "Mi" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-8" - }, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Mk" = ( -/obj/effect/turf_decal/corner/opaque/black{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/table, -/obj/structure/cable, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"Mn" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) -"Mq" = ( -/obj/structure/cable{ - icon_state = "1-2" +"Mk" = ( +/obj/machinery/door/airlock{ + dir = 4; + name = "Dormitory" }, /obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/sign/warning/enginesafety{ - pixel_x = 32 + icon_state = "4-8" }, -/obj/machinery/light/small/directional/east, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/techfloor{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) -"Ms" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"MA" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/window/reinforced/spawner/west, -/obj/machinery/door/window/eastright, -/obj/machinery/door/poddoor{ - dir = 4; - id = "windowlockdown" +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, /obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/machinery/door/firedoor/border_only{ +/turf/open/floor/wood, +/area/ship/crew/cryo) +"Mn" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/under/color/grey, +/obj/item/clothing/under/color/grey, +/obj/item/clothing/under/color/grey, +/obj/item/clothing/shoes/sneakers/black, +/obj/item/clothing/shoes/sneakers/black, +/obj/item/clothing/shoes/sneakers/black, +/obj/item/storage/backpack, +/obj/item/radio, +/obj/item/radio, +/obj/item/radio, +/obj/item/radio, +/obj/item/radio, +/obj/item/storage/backpack/satchel, +/obj/item/radio, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/wood, +/area/ship/crew/cryo) +"Mq" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering) +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"Mr" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/bridge) "ME" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 1 }, /turf/open/floor/engine/airless, /area/ship/external) +"MG" = ( +/obj/effect/turf_decal/borderfloorwhite/full, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/pen{ + pixel_y = 4; + pixel_x = 5 + }, +/obj/item/folder/blue{ + pixel_y = 11; + pixel_x = -8 + }, +/obj/item/stamp/cmo{ + pixel_x = -7 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) "MH" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/spawner/lootdrop/maintenance/five, -/obj/structure/closet/cardboard, -/obj/effect/spawner/lootdrop/donkpockets, -/turf/open/floor/plasteel/mono, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/steeldecal/steel_decals_central7{ + dir = 8 + }, +/turf/open/floor/plasteel, /area/ship/cargo) "MI" = ( -/obj/structure/table/reinforced{ - color = "#363636" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters{ - id = "noiwillnotgiveyouaa"; - name = "Closing Shutters" +/obj/structure/table/reinforced, +/obj/machinery/door/window/northright, +/obj/machinery/door/window/southright{ + req_one_access_txt = "57" }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/dark, /area/ship/crew/crewthree) "MJ" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 9 - }, -/turf/open/floor/plating, -/area/ship/engineering) -"MP" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/obj/machinery/atmospherics/components/binary/pump{ +/obj/machinery/atmospherics/pipe/simple/purple/visible{ dir = 1 }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"MQ" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "Oxygen to Air" - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/obj/effect/turf_decal/techfloor{ +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ dir = 1 }, -/turf/open/floor/plasteel, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/techfloor/corner, +/turf/open/floor/plasteel/tech/grid, /area/ship/engineering/atmospherics) +"MP" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 10 + }, +/turf/open/floor/engine, +/area/ship/engineering/engine) "MS" = ( /obj/machinery/atmospherics/components/binary/circulator, /turf/open/floor/engine, /area/ship/engineering/engine) "MT" = ( -/turf/open/floor/plasteel/stairs{ +/obj/structure/railing{ dir = 8 }, -/area/ship/crew/cryo) -"MV" = ( -/obj/machinery/advanced_airlock_controller/mix_chamber{ - pixel_y = 26 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/obj/machinery/button/ignition/incinerator/atmos{ +/obj/effect/turf_decal/techfloor, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 + }, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/bridge) +"MV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/pump{ dir = 4; - pixel_x = -26; - pixel_y = -3 + name = "Mix Extract to TEG" }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/engine, +/turf/open/floor/plasteel/tech/grid, /area/ship/engineering/engine) -"Nh" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +"MZ" = ( +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) +/turf/open/floor/wood, +/area/ship/crew/office) +"Nh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/wood, +/area/ship/crew/cryo) "Ni" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible, -/obj/effect/turf_decal/techfloor{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 9 }, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "Nm" = ( -/obj/effect/turf_decal/corner/opaque/black{ - dir = 9 +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 8 }, -/turf/open/floor/plasteel, +/obj/structure/table, +/obj/item/clipboard{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/stamp{ + pixel_x = 10 + }, +/obj/item/stamp/denied{ + pixel_x = 2 + }, +/obj/item/flashlight/lamp{ + pixel_x = -8; + pixel_y = 10 + }, +/obj/item/folder{ + pixel_x = -10 + }, +/turf/open/floor/plasteel/dark, /area/ship/cargo/office) "Np" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output, -/turf/open/floor/engine/air, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light_switch{ + pixel_x = -14; + pixel_y = 24 + }, +/obj/effect/turf_decal/steeldecal/steel_decals_central6, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) +"Ny" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/newscaster/directional/south, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "NB" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 9 @@ -4514,433 +4816,389 @@ /turf/open/floor/engine/airless, /area/ship/external) "NC" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plasteel/mono, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, /area/ship/cargo) "NH" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 1 }, -/turf/closed/wall, -/area/ship/engineering/engine) -"NI" = ( -/obj/structure/ore_box, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/mono, -/area/ship/cargo) -"NK" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "engine fuel pump" +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ + dir = 1 }, -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/techfloor{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering) +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"NK" = ( +/obj/machinery/light_switch{ + pixel_x = -5; + pixel_y = 24 + }, +/obj/effect/turf_decal/radiation/white, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/engine) "NL" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"NT" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/turf_decal/techfloor, -/turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) +/turf/open/floor/wood, +/area/ship/crew/office) "Oi" = ( -/obj/machinery/cryopod{ - dir = 8 +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) +/turf/open/floor/wood, +/area/ship/hallway/central) "Om" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/closet/crate/engineering, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/turf/open/floor/plasteel/mono, +/obj/machinery/suit_storage_unit/mining/eva, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel, /area/ship/cargo) "Oo" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible, -/turf/open/floor/plating, -/area/ship/engineering) -"Op" = ( -/obj/machinery/iv_drip, -/obj/structure/bed, -/obj/item/bedsheet/medical, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ +/obj/machinery/atmospherics/pipe/simple/purple/visible{ dir = 1 }, -/obj/machinery/light/directional/south, -/turf/open/floor/plasteel/mono/dark, -/area/ship/medical) -"OF" = ( -/obj/machinery/door/airlock/medical{ - dir = 4; - name = "Infirmary" +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ + dir = 1 }, +/obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Op" = ( +/obj/effect/turf_decal/borderfloorwhite{ dir = 4 }, -/turf/open/floor/plasteel/dark, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/carpet/nanoweave/blue, /area/ship/medical) -"OG" = ( -/obj/effect/turf_decal/corner/opaque/red/mono, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) -"ON" = ( -/obj/effect/turf_decal/corner/opaque/red/mono, +"OF" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-8" }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) -"OT" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/medical) +"OG" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/item/storage/fancy/cigarettes/cigpack_robust{ + pixel_y = 9; + pixel_x = -1 }, -/obj/effect/turf_decal/techfloor{ - dir = 5 +/obj/item/lighter{ + pixel_y = 7; + pixel_x = 4 }, -/turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) -"Pf" = ( -/obj/structure/sign/warning/fire{ - pixel_y = 32 +/obj/machinery/firealarm/directional/south, +/obj/machinery/light/small/directional/east, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/crew/office) +"OH" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-8" }, -/obj/machinery/air_sensor/atmos/toxin_tank, -/turf/open/floor/engine/plasma, -/area/ship/engineering/atmospherics) -"Pk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/machinery/space_heater, +/turf/open/floor/plasteel/mono/dark, +/area/ship/cargo/office) +"OJ" = ( +/obj/machinery/power/smes/shuttle/precharged{ + dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable{ icon_state = "0-8" }, -/obj/effect/turf_decal/corner/opaque/white/mono, -/turf/open/floor/plasteel/mono/white, -/area/ship/medical) -"Pl" = ( -/obj/item/kirbyplants/random, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Pm" = ( -/obj/effect/turf_decal/corner/opaque/yellow/half, -/turf/open/floor/plasteel/tech/techmaint, +/obj/structure/window/reinforced/spawner/west, +/obj/machinery/door/poddoor{ + dir = 4; + id = "enginelockdown" + }, +/obj/machinery/door/window/eastright{ + name = "Engine Access" + }, +/turf/open/floor/plating, /area/ship/engineering/atmospherics) -"Pn" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ +"OT" = ( +/obj/effect/turf_decal/corner/opaque/white/mono, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"Pb" = ( +/obj/machinery/power/shuttle/engine/electric{ dir = 4 }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/ship/external) +"Pf" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input, +/turf/open/floor/engine/n2, +/area/ship/engineering/atmospherics) +"Pk" = ( +/obj/effect/turf_decal/borderfloorwhite/full, +/obj/machinery/sleeper, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"Pl" = ( /obj/structure/chair/stool/bar{ - dir = 4 + dir = 1; + pixel_y = 10 }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = -32 +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ + dir = 4 }, /turf/open/floor/plasteel, -/area/ship/crew/canteen) +/area/ship/hallway/central) "Pq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel/mono, -/area/ship/cargo) -"Pr" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 - }, -/obj/structure/table, -/obj/item/trash/plate{ - pixel_x = 2; - pixel_y = 9 - }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -8; - pixel_y = 5 +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = -8 +/obj/structure/cable{ + icon_state = "1-4" }, /turf/open/floor/plasteel, -/area/ship/crew/canteen) +/area/ship/cargo) "Px" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 9 - }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Phoron to Mix" - }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) -"Pz" = ( -/obj/structure/table, -/obj/item/crowbar/large, -/obj/item/flashlight/glowstick{ - pixel_x = 5 - }, -/obj/item/flashlight/glowstick, -/obj/item/flashlight/glowstick{ - pixel_x = -5 - }, -/obj/structure/sign/poster/official/work_for_a_future{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) "PI" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/turf/open/floor/plasteel/mono, +/turf/open/floor/plasteel, /area/ship/cargo) -"Qe" = ( -/obj/machinery/door/airlock/mining{ - name = "Cargo Office" +"PJ" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/corner/opaque/neutral{ + dir = 8 }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/corner/opaque/ntblue, +/obj/effect/turf_decal/corner/opaque/neutral/half{ dir = 1 }, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_y = 6; + pixel_x = -8 + }, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = -2; + pixel_y = 11 + }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"Qo" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-8" }, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"Qi" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/obj/structure/curtain/bounty, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"Ql" = ( -/obj/structure/sign/directions/command{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 9 }, -/turf/closed/wall, -/area/ship/crew/cryo) +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "Qp" = ( /turf/closed/wall/r_wall, /area/ship/bridge) "Qs" = ( -/obj/machinery/button/door{ - id = "sorrywejustclosed"; - name = "Canteen Shutters Control"; - pixel_x = -5; - pixel_y = 24 - }, -/obj/machinery/button/door{ - id = "amogusdoors"; - name = "Cargo Blast Door Control"; - pixel_x = 6; - pixel_y = 24 - }, -/obj/machinery/button/door{ - id = "noiwillnotgiveyouaa"; - name = "Requests Desk Shutters Control"; - pixel_x = 17; - pixel_y = 24 - }, -/obj/machinery/button/door{ - id = "hallwindows"; - name = "Cargo Bay Hallway Shutters Control"; - pixel_y = 32 - }, -/obj/machinery/button/door{ - id = "bridgelockdown"; - name = "Bridge Lockdown"; - pixel_x = 11; - pixel_y = 32 - }, -/obj/machinery/button/door{ - id = "windowlockdown"; - name = "Close Ship Window Blast Doors"; - pixel_x = 5; - pixel_y = 40 - }, -/obj/machinery/button/door{ - id = "coolingshutdown"; - name = "Shutdown Cooling"; - pixel_x = 16; - pixel_y = 40 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"QJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/effect/turf_decal/siding/wood{ + dir = 6 }, +/turf/open/floor/wood, +/area/ship/crew/crewthree) +"QK" = ( /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/stairs{ - dir = 8 - }, -/area/ship/cargo) -"QK" = ( -/obj/machinery/light_switch{ - dir = 1; - pixel_x = -10; - pixel_y = -20 +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/effect/turf_decal/siding/wood{ +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/office) +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "QM" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/structure/closet/crate/freezer/blood, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"QQ" = ( +/obj/item/cigbutt, +/obj/item/cigbutt{ + pixel_x = -10; + pixel_y = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/turf/open/floor/wood, +/area/ship/crew/office) +"QU" = ( +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/corner/opaque/white/mono, -/turf/open/floor/plasteel/mono/white, -/area/ship/medical) -"QU" = ( -/obj/effect/turf_decal/techfloor, +/obj/machinery/newscaster/directional/west, +/obj/structure/chair, /turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) +/area/ship/hallway/central) "QY" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/computer/atmos_control/tank/nitrogen_tank{ - dir = 1 +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ + dir = 4 }, -/turf/open/floor/plasteel/mono, -/area/ship/engineering/atmospherics) +/obj/structure/closet/crate/bin, +/obj/item/trash/plate, +/turf/open/floor/plasteel, +/area/ship/hallway/central) "Ra" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ +/obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/atmospherics/components/binary/pump{ + name = "Oxygen to Mix" }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ + dir = 4 }, -/obj/structure/catwalk/over, +/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating, /area/ship/engineering/atmospherics) "Re" = ( -/obj/effect/turf_decal/corner/opaque/red/mono, -/obj/structure/table/reinforced, -/obj/item/kitchen/knife{ - pixel_x = 15 - }, -/obj/item/reagent_containers/food/snacks/dough, -/obj/item/kitchen/rollingpin, -/obj/item/reagent_containers/food/condiment/enzyme{ - pixel_x = -5; - pixel_y = 18 +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable{ + icon_state = "0-4" }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) +/turf/open/floor/wood, +/area/ship/crew/dorm) "Ri" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma{ +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2{ dir = 8 }, -/obj/structure/catwalk/over, +/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating, /area/ship/engineering/atmospherics) "Rv" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel/mono, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, /area/ship/cargo) "Rw" = ( -/obj/structure/chair/comfy/black, -/turf/open/floor/carpet, -/area/ship/crew/office) -"Rx" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"RB" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 1 }, -/obj/effect/turf_decal/techfloor, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/bridge) +"RB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ + dir = 8 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/ship/engineering/atmospherics) "RK" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input, -/turf/open/floor/engine/air, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Oxygen to Air and Mix"; + target_pressure = 1000 + }, +/obj/effect/turf_decal/atmos/oxygen, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "RL" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 9 +/obj/structure/closet/secure_closet/freezer{ + anchored = 1 }, -/obj/machinery/light/small/directional/west, +/obj/item/reagent_containers/food/condiment/enzyme, +/obj/item/reagent_containers/food/condiment/sugar, +/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/food/condiment/flour, +/obj/item/reagent_containers/food/condiment/milk, +/obj/item/reagent_containers/food/condiment/soymilk, +/obj/effect/turf_decal/corner/opaque/green/mono, /turf/open/floor/plasteel, -/area/ship/hallway/central) +/area/ship/crew/canteen/kitchen) "RO" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/computer/atmos_control/tank/air_tank{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output{ + dir = 8 }, -/turf/open/floor/plasteel/mono, +/turf/open/floor/engine/air, /area/ship/engineering/atmospherics) "RQ" = ( /obj/machinery/power/generator{ @@ -4952,718 +5210,676 @@ /turf/open/floor/engine, /area/ship/engineering/engine) "RR" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/corner/opaque/white/mono, -/turf/open/floor/plasteel/mono/white, -/area/ship/medical) -"RV" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ +/obj/effect/turf_decal/borderfloorwhite{ dir = 4 }, -/turf/open/floor/carpet/royalblue, -/area/ship/crew/crewtwo) +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/medical) "Sc" = ( -/obj/machinery/computer/cargo/express{ - dir = 8 - }, -/obj/machinery/button/door{ - id = "noiwillnotgiveyouaa"; - name = "Requests Desk Shutters Control"; - pixel_x = 25; - pixel_y = 24 +/obj/structure/chair/office{ + dir = 1; + name = "Requests" }, -/obj/item/radio/intercom/directional/east, -/obj/item/spacecash/bundle/loadsamoney, -/turf/open/floor/plasteel/dark, +/turf/open/floor/carpet/nanoweave/red, /area/ship/crew/crewthree) "Ss" = ( -/obj/structure/table, -/obj/item/flashlight/lamp{ - pixel_x = -8; - pixel_y = 10 - }, -/obj/item/areaeditor/shuttle, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"Su" = ( -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 9 - }, -/turf/open/floor/plating, -/area/ship/engineering/engine) +/obj/machinery/vending/boozeomat, +/obj/effect/turf_decal/corner/opaque/green/mono, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) "Sv" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"Sz" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/shieldgen, -/obj/machinery/shieldgen, -/obj/machinery/shieldgen, -/obj/machinery/shieldgen, -/obj/structure/closet/crate{ - name = "Anti-breach shield projectors crate" - }, -/turf/open/floor/plasteel/mono, -/area/ship/cargo) +/obj/machinery/vending/cola/shamblers, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "SA" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/light/directional/north, -/obj/structure/railing/corner, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -20; - pixel_y = 13 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"SO" = ( -/obj/item/storage/lockbox/medal{ - pixel_y = 5 - }, -/obj/item/hand_tele, -/obj/item/coin/adamantine{ - pixel_x = -4; - pixel_y = 4 +/obj/machinery/door/airlock/command{ + name = "Requests Office"; + req_one_access_txt = "57"; + dir = 4 }, -/obj/item/melee/chainofcommand, -/obj/structure/table/wood/reinforced, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/carpet/royalblue, -/area/ship/crew/crewtwo) -"SX" = ( -/obj/effect/turf_decal/corner/opaque/white/mono, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) -"SY" = ( -/obj/structure/table/reinforced, /obj/machinery/door/firedoor/border_only{ dir = 4 }, /obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -8; - pixel_y = 5 - }, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = -8 - }, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "sorrywejustclosed"; - name = "Closing Shutters" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) -"Ta" = ( -/obj/machinery/processor, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/obj/machinery/button/door{ - id = "sorrywejustclosed"; - name = "Shutters Control"; - pixel_x = -24; - pixel_y = 24 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen/kitchen) -"Tc" = ( -/obj/machinery/door/airlock/engineering{ - dir = 4; - name = "Engineering" +/turf/open/floor/wood, +/area/ship/crew/crewthree) +"SE" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/atmos/air{ + dir = 1 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"SG" = ( +/obj/effect/decal/cleanable/food/egg_smudge, +/obj/effect/turf_decal/corner/opaque/green/mono, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"SK" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating, +/area/ship/hallway/central) +"SO" = ( +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/crewtwo) +"SY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/ship/engineering) -"Tf" = ( +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/crew/office) +"Ta" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 }, -/obj/structure/catwalk/over, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"Tr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/crew/office) +"Tc" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_y = 10; + pixel_x = 9 + }, +/obj/item/trash/popcorn, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/central) +"Tf" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden, +/obj/effect/turf_decal/techfloor/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"Th" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/chair/sofa/left{ dir = 4 }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "0-4" }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -24; + pixel_y = 14 + }, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/medical) +"Tm" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/office) -"Tz" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/closed/wall/r_wall, -/area/ship/crew/crewtwo) -"TF" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/closed/wall, -/area/ship/engineering/atmospherics) -"TG" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 + }, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"Tz" = ( +/obj/machinery/vending/snack/random, +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"TF" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 6 }, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"TG" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "TH" = ( -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4" +/obj/machinery/button/door{ + dir = 4; + pixel_x = -24; + id = "enginelockdown"; + name = "Lockdown Engines" }, -/obj/effect/turf_decal/industrial/warning{ - dir = 5 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/turf/open/floor/plating, -/area/ship/engineering) +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) "TI" = ( -/obj/structure/rack, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/t_scanner/adv_mining_scanner/lesser, -/obj/item/kinetic_crusher, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 6 +/obj/effect/decal/cleanable/ash, +/turf/open/floor/plasteel, +/area/ship/cargo) +"TJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/sign/poster/official/random{ - pixel_x = 32 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) +/obj/effect/turf_decal/siding/wood/corner, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/wood, +/area/ship/crew/dorm) +"TL" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "TN" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 }, -/obj/machinery/door/firedoor/window, -/obj/structure/window/plasma/reinforced/fulltile, -/obj/structure/grille, -/turf/open/floor/plating, +/obj/effect/turf_decal/atmos/nitrogen, +/obj/structure/sign/warning/gasmask{ + pixel_x = 31 + }, +/turf/open/floor/plasteel/tech, /area/ship/engineering/atmospherics) "TO" = ( -/turf/closed/wall, -/area/ship/engineering/atmospherics) -"TS" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Mix Exit Pump" - }, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" + dir = 8 }, -/obj/structure/catwalk/over, +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/fulltile, /turf/open/floor/plating, /area/ship/engineering/atmospherics) -"TU" = ( -/obj/machinery/door/airlock/engineering{ - dir = 4; - name = "Engineering" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +"TS" = ( +/obj/machinery/atmospherics/components/trinary/mixer/airmix, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"Ug" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/techfloor{ dir = 8 }, +/obj/effect/turf_decal/techfloor/corner, /turf/open/floor/plasteel/dark, -/area/ship/engineering) +/area/ship/crew/cryo) "Uh" = ( -/obj/effect/turf_decal/corner/opaque/black{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, -/obj/structure/closet/emcloset/anchored, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/plasteel, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/plasteel/dark, /area/ship/cargo/office) "Uk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/closed/wall, -/area/ship/engineering/engine) -"Ut" = ( -/obj/effect/spawner/structure/window, -/obj/structure/curtain/bounty, -/turf/open/floor/plating, -/area/ship/crew/canteen) -"Uu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/disposalpipe/segment{ + dir = 2 }, -/turf/open/floor/plasteel/mono, -/area/ship/cargo) -"Uv" = ( -/obj/effect/turf_decal/corner/opaque/red/diagonal, -/obj/effect/turf_decal/corner/opaque/yellow/diagonal{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/techfloor{ dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"UA" = ( -/obj/effect/turf_decal/corner/opaque/yellow/border{ - dir = 5 - }, -/obj/effect/turf_decal/corner/opaque/yellow/bordercorner{ - dir = 8 - }, -/obj/machinery/button/door{ - id = "hallwindows"; - name = "Shutters Control"; - pixel_y = 24 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"UC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Uo" = ( +/obj/machinery/newscaster/directional/north, +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) +"Ut" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + name = "Privacy Shutters"; + id = "privacyshutters" }, +/obj/structure/window/fulltile, +/obj/structure/grille, +/turf/open/floor/plasteel/dark, +/area/ship/crew/office) +"Uu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 + dir = 9 }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-8" }, -/obj/structure/cable{ - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/turf/open/floor/plasteel/mono, +/turf/open/floor/plasteel, /area/ship/cargo) +"Uv" = ( +/obj/structure/table, +/turf/open/floor/wood, +/area/ship/crew/office) +"UA" = ( +/obj/structure/bed, +/obj/structure/curtain/cloth/grey, +/obj/item/bedsheet/random, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) "UD" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2{ - dir = 8 +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ + dir = 4 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) +/turf/open/floor/plasteel, +/area/ship/hallway/central) "UI" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light/directional/south, -/turf/open/floor/carpet/nanoweave, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/plasteel/tech/grid, /area/ship/hallway/central) "UJ" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, +/obj/machinery/power/smes/engineering, +/obj/structure/catwalk/over/plated_catwalk/dark, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "0-8" }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable{ - icon_state = "0-4" +/obj/structure/sign/warning/enginesafety{ + pixel_y = 32 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8 +/turf/open/floor/plating, +/area/ship/engineering/engine) +"UM" = ( +/obj/structure/closet/secure_closet{ + icon_state = "cap"; + name = "\proper captain's locker"; + req_access_txt = "20" }, /obj/machinery/light_switch{ - pixel_x = -12; - pixel_y = 23 - }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"UL" = ( -/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_x = 24; + pixel_y = -5 + }, +/obj/item/storage/backpack/satchel/cap, +/obj/item/storage/backpack/captain, +/obj/item/storage/belt/sabre, +/obj/item/clothing/glasses/sunglasses, +/obj/item/clothing/suit/armor/vest/capcarapace, +/obj/item/clothing/under/rank/command/captain/parade, +/obj/item/clothing/shoes/laceup, +/obj/item/door_remote/captain, +/obj/item/clothing/suit/armor/vest/capcarapace/alt, +/obj/item/clothing/gloves/color/captain/nt, +/obj/item/clothing/under/rank/command/captain/nt/skirt, +/obj/item/clothing/under/rank/command/captain/nt, +/obj/item/clothing/head/caphat/parade, +/obj/item/clothing/head/caphat/nt, +/turf/open/floor/wood, +/area/ship/crew/crewtwo) +"UN" = ( +/turf/open/floor/wood, +/area/ship/hallway/central) +"UR" = ( +/obj/structure/railing{ dir = 8 }, -/obj/structure/sign/directions/supply{ - pixel_y = -6 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/closed/wall/r_wall, -/area/ship/engineering/engine) -"UM" = ( -/obj/machinery/computer/helm{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/purple, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 +/obj/effect/turf_decal/techfloor{ + dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"UN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 6 }, /turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/cryo) +/area/ship/bridge) "Vd" = ( /obj/machinery/door/airlock/engineering{ dir = 4; name = "Engineering" }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, /turf/open/floor/plasteel/dark, -/area/ship/engineering) +/area/ship/engineering/atmospherics) "Ve" = ( -/obj/structure/curtain/bounty, -/obj/machinery/door/poddoor{ - id = "windowlockdown" - }, -/obj/effect/spawner/structure/window/reinforced/shutters, -/turf/open/floor/plating, -/area/ship/crew/dorm) +/obj/structure/railing, +/obj/item/kirbyplants/random, +/obj/machinery/light/dim/directional/west, +/turf/open/floor/carpet/nanoweave/beige, +/area/ship/bridge) "Vj" = ( /turf/closed/wall, /area/ship/hallway/central) "Vp" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 9 - }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/techfloor{ - dir = 4 +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/drinks/beer, +/obj/effect/turf_decal/corner/opaque/neutral{ + dir = 8 }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/light_switch{ - dir = 8; - pixel_y = 11; - pixel_x = 20 +/obj/effect/turf_decal/corner/opaque/ntblue, +/obj/effect/turf_decal/corner/opaque/green/half{ + dir = 1 }, /turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) -"Vz" = ( -/obj/effect/turf_decal/atmos/plasma, -/turf/open/floor/engine/plasma, -/area/ship/engineering/atmospherics) -"VK" = ( -/obj/structure/cable/yellow, -/obj/machinery/power/terminal, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 +/area/ship/crew/canteen/kitchen) +"Vq" = ( +/obj/structure/closet/secure_closet{ + anchored = 1; + can_be_unanchored = 1; + icon_state = "sec"; + name = "equipment locker"; + req_access_txt = "1" + }, +/obj/item/melee/baton/loaded, +/obj/item/restraints/handcuffs, +/obj/item/restraints/handcuffs, +/obj/item/stock_parts/cell/gun, +/obj/item/stock_parts/cell/gun/mini, +/obj/item/stock_parts/cell/gun/mini, +/obj/item/ammo_box/magazine/co9mm, +/obj/item/ammo_box/magazine/co9mm, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 }, -/turf/open/floor/plating, -/area/ship/engineering/engine) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/wood, +/area/ship/crew/crewthree) "VP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 +/obj/structure/chair{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/structure/bedsheetbin, -/obj/structure/table, -/obj/item/radio/intercom/directional/north, -/obj/machinery/light/small/directional/east, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) "VQ" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"Wa" = ( +/obj/effect/turf_decal/borderfloorwhite/full, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Nitrogen to Mix" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"Wa" = ( -/obj/machinery/iv_drip, -/obj/structure/bed, -/obj/item/bedsheet/medical, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel/mono/dark, +/turf/open/floor/plasteel/white, /area/ship/medical) -"Wb" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8 - }, -/obj/machinery/atmospherics/components/binary/pump, -/turf/open/floor/engine, -/area/ship/engineering/engine) "Wg" = ( -/obj/item/kirbyplants/random, +/obj/structure/table, +/obj/item/toy/cards/deck{ + pixel_y = 7 + }, +/turf/open/floor/carpet/red, +/area/ship/hallway/central) +"Wr" = ( +/obj/machinery/vending/clothing{ + pixel_y = 10 + }, /obj/machinery/light_switch{ dir = 8; - pixel_y = 0; - pixel_x = 20 + pixel_x = 24; + pixel_y = -5 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/wood, /area/ship/crew/cryo) -"Wr" = ( +"Ws" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/light_switch{ - dir = 8; - pixel_y = 0; - pixel_x = 20 +/turf/open/floor/engine, +/area/ship/engineering/atmospherics) +"Wy" = ( +/obj/structure/closet/emcloset/wall{ + pixel_y = 28 }, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) -"Ws" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +"Wz" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/turf_decal/techfloor{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"Wv" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/layer2, -/turf/open/floor/plasteel/tech/techmaint, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/wood, /area/ship/hallway/central) "WC" = ( /obj/machinery/light/directional/north, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) -"WJ" = ( +"WE" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 10 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering) +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "WO" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/item/storage/bag/trash, -/obj/item/mop, -/obj/item/pushbroom, -/obj/structure/janitorialcart, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/turf/open/floor/plasteel/mono, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plasteel, /area/ship/cargo) "WP" = ( -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"WR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) +"WR" = ( +/obj/effect/turf_decal/corner/opaque/white/mono, +/obj/machinery/vending/dinnerware, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) "WU" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "engine fuel pump" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 5 +/obj/machinery/light/directional/west, +/obj/structure/reagent_dispensers/fueltank, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/turf/open/floor/plating, -/area/ship/engineering) +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) "WX" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave{ - pixel_x = 2; - pixel_y = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/white/mono, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/wood, +/area/ship/crew/dorm) "WZ" = ( /turf/closed/wall, /area/ship/crew/cryo) "Xe" = ( -/obj/effect/turf_decal/techfloor{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 1 }, -/obj/effect/turf_decal/techfloor/hole/right, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"Xl" = ( -/obj/structure/curtain{ - pixel_y = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/shower{ - dir = 8; - pixel_y = 8 +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ + dir = 1 }, -/obj/item/soap/nanotrasen, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/plasteel/freezer, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"Xl" = ( +/obj/structure/bed, +/obj/item/bedsheet/random, +/obj/structure/curtain/cloth/grey, +/turf/open/floor/carpet/blue, /area/ship/crew/dorm) "Xp" = ( /turf/closed/wall/r_wall, /area/ship/cargo/office) "Xs" = ( -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/effect/turf_decal/techfloor/hole, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) -"Xt" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 9 - }, -/obj/effect/turf_decal/number/two, +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/structure/window/plasma/reinforced/fulltile, /turf/open/floor/plating, /area/ship/engineering/atmospherics) -"Xy" = ( -/obj/machinery/computer/secure_data{ +"Xt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/yellow{ +/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, +/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ dir = 4 }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) +/obj/machinery/newscaster/directional/north, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"Xu" = ( +/obj/machinery/medical_kiosk, +/obj/machinery/light/directional/south, +/turf/open/floor/carpet/nanoweave/blue, +/area/ship/medical) +"Xy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/carpet/blue, +/area/ship/crew/crewthree) "XA" = ( -/obj/structure/table, -/obj/effect/turf_decal/corner/opaque/black/three_quarters, -/obj/item/paper_bin{ - pixel_x = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/item/pen, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/ntspaceworks_small/left, +/turf/open/floor/plasteel/dark, /area/ship/cargo/office) "XJ" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ - dir = 4 +/obj/effect/turf_decal/corner/opaque/white/mono, +/obj/machinery/door/window/brigdoor/southright{ + name = "The Captain's Personal Lavatory"; + opacity = 1; + dir = 8 }, -/turf/closed/wall/r_wall, +/turf/open/floor/plasteel, /area/ship/crew/crewtwo) "XU" = ( /turf/closed/wall/r_wall, /area/ship/crew/dorm) +"XY" = ( +/obj/machinery/door/poddoor/preopen{ + dir = 4; + id = "bridgelockdown" + }, +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating, +/area/ship/bridge) "Yb" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 +/obj/machinery/door/airlock/command{ + name = "Bridge"; + req_access_txt = "19" }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, /turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/dorm) +/area/ship/bridge) "Yj" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4 +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/machinery/power/terminal{ + dir = 1 }, -/turf/open/floor/engine, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plating, /area/ship/engineering/engine) "Ym" = ( /obj/machinery/door/poddoor{ @@ -5675,250 +5891,181 @@ /turf/open/floor/plating, /area/ship/cargo) "Yn" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 1 }, -/turf/closed/wall, -/area/ship/engineering/engine) -"Yp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/plasteel/mono, -/area/ship/cargo) -"Ys" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/structure/disposalpipe/segment{ + dir = 2 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ +/obj/effect/turf_decal/techfloor{ dir = 4 }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/crew/cryo) -"Yv" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/atmospherics) +"Yp" = ( +/obj/structure/closet/secure_closet/miningcloset{ + anchored = 1 }, -/obj/effect/turf_decal/techfloor{ - dir = 9 +/obj/item/storage/bag/ore, +/obj/item/storage/bag/ore, +/obj/item/clothing/suit/hooded/explorer, +/obj/item/clothing/suit/hooded/explorer, +/obj/item/clothing/glasses/meson, +/obj/item/clothing/glasses/meson, +/obj/item/mining_scanner, +/obj/item/mining_scanner, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 23 }, +/obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel, +/area/ship/cargo) +"Yv" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/plasma{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/turf/open/floor/plating, /area/ship/engineering/atmospherics) "Yx" = ( -/obj/structure/table, -/obj/item/storage/box/survival/radio{ - pixel_x = -8; - pixel_y = 12 - }, -/obj/item/storage/box/survival/radio{ - pixel_x = 8; - pixel_y = 12 - }, -/obj/item/storage/box/survival/radio{ - pixel_y = 4 +/obj/structure/chair/sofa/right, +/obj/machinery/light_switch{ + pixel_x = 11; + pixel_y = 23 }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) +/obj/machinery/firealarm/directional/north, +/turf/open/floor/carpet/red, +/area/ship/hallway/central) "YC" = ( -/obj/item/bedsheet/dorms, -/obj/structure/bed, -/obj/structure/curtain/bounty, -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"YE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/disposal/bin, -/obj/item/paper{ - default_raw_text = "The igniter in the chamber does not work very well. I suggest throwing lit welders down the disposal chute over there to ignite the chamber." - }, -/obj/item/weldingtool, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/sign/warning/deathsposal{ - desc = "A warning sign which reads 'DISPOSAL: LEADS TO INCINERATOR'."; - name = "\improper DISPOSAL: LEADS TO INCINERATOR sign"; - pixel_x = 32 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ dir = 1 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/engineering) -"YL" = ( -/obj/effect/turf_decal/corner/opaque/purple, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 4 - }, -/obj/structure/displaycase/captain{ - req_access = null; - req_access_txt = "20" - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) +/turf/open/floor/carpet/nanoweave, +/area/ship/hallway/central) "YQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/chair{ + dir = 4 }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/carpet/nanoweave, +/turf/open/floor/plasteel/tech/grid, /area/ship/hallway/central) "YT" = ( -/obj/item/kirbyplants/random, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/closet/crate/medical, +/obj/item/defibrillator, +/obj/item/pinpointer/crew/prox, +/obj/item/storage/firstaid/fire, +/obj/item/storage/box/bodybags, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/plasteel/mono/dark, +/area/ship/cargo/office) "Za" = ( -/obj/machinery/sleeper{ - dir = 1 - }, -/obj/structure/sign/poster/official/random{ - pixel_y = -32 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/mono/dark, +/turf/open/floor/carpet/nanoweave/blue, /area/ship/medical) "Zd" = ( -/turf/closed/wall, -/area/ship/crew/canteen) -"Zf" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, -/obj/structure/window/reinforced/spawner/west, -/obj/machinery/door/window/eastleft, -/obj/machinery/door/poddoor{ - dir = 4; - id = "windowlockdown" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering) +/obj/effect/turf_decal/corner/opaque/white/mono, +/turf/open/floor/plasteel, +/area/ship/crew/canteen/kitchen) +"Zf" = ( +/obj/machinery/suit_storage_unit/engine, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/tech/grid, +/area/ship/engineering/engine) "Zo" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 +/obj/machinery/computer/crew{ + dir = 8 }, -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/corner/opaque/bar/half{ dir = 4 }, -/obj/machinery/door/poddoor/preopen{ - dir = 4; - id = "coolingshutdown" - }, -/turf/open/floor/engine/airless, -/area/ship/external) +/turf/open/floor/plasteel/dark, +/area/ship/bridge) "Zr" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable, -/obj/effect/turf_decal/techfloor{ +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ + dir = 10 + }, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/atmospherics) +"Zu" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/structure/closet/secure_closet/engineering_welding{ - anchored = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 }, -/obj/item/reagent_containers/glass/bottle/welding_fuel, -/obj/item/reagent_containers/glass/bottle/welding_fuel, -/obj/item/reagent_containers/glass/bottle/welding_fuel, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering) -"Zv" = ( -/obj/item/kirbyplants/random, -/obj/item/radio/intercom/directional/north{ - pixel_y = 25 +/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ + dir = 5 }, -/turf/open/floor/carpet, -/area/ship/crew/office) +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) "Zw" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/railing{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/turf/open/floor/plasteel/dark, +/area/ship/cargo/office) +"ZD" = ( +/obj/machinery/power/terminal{ dir = 8 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/cargo/office) -"ZC" = ( -/obj/machinery/pipedispenser, -/obj/machinery/light/directional/west, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/sign/warning/electricshock{ + pixel_y = 25 }, /turf/open/floor/plating, /area/ship/engineering/atmospherics) "ZE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/obj/machinery/light/directional/south, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) "ZI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 }, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/mono, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, /area/ship/cargo) "ZJ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-8" - }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/structure/dresser, +/obj/machinery/light/small/directional/north, +/turf/open/floor/wood, +/area/ship/crew/cryo) +"ZR" = ( +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "0-2" }, /turf/open/floor/carpet/nanoweave, /area/ship/hallway/central) -"ZO" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/ship/engineering/engine) -"ZR" = ( -/obj/machinery/vending/coffee, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -20; - pixel_y = 13 - }, -/turf/open/floor/wood, -/area/ship/crew/office) (1,1,1) = {" fW @@ -5928,20 +6075,20 @@ fW fW fW fW -fW -fW -fW -mF -mF +yo +Pb +Pb +ul +ul ul ul mX ul ul -mF -mF -fW -fW +ul +ul +Pb +Pb fW fW fW @@ -5958,25 +6105,25 @@ fW fW fW fW -fW -vD -gb -kz -kz -II -lE +qF +mF +tf +gh +OJ ul +lE +dj nF HL bk -ul +dj Zf -MA -gh +ul gh -vD -vD -fW +OJ +kz +mF +mF fW fW fW @@ -5988,29 +6135,29 @@ fW fW fW fW -fW -fW kz -ed -tf kz -ZC +bG +EE +tf +ZD +IA WU -NK +JX ul -ZO +lY lV lY ul NK uT IA -gh -Ak +IA +kz +bG EE -gh -fW -fW +kz +kz fW fW fW @@ -6019,17 +6166,17 @@ fW (4,1,1) = {" fW fW -fW -kz kz kz +JT +gO gO dJ xO sz -yG -yG -IV +cQ +aR +kn MV sK AG @@ -6040,21 +6187,21 @@ we sD TH zy -gh -gh -gh -fW +zy +gk +kz +kz fW fW fW "} (5,1,1) = {" fW -fW +kz kz kz Np -wt +Kd Jk nj Hm @@ -6070,20 +6217,20 @@ ub Oo yF Xe -CR +yF CR Hu mL -gh -gh -fW +kz +kz +kz fW fW "} (6,1,1) = {" fW kz -kz +pT At RK wt @@ -6097,40 +6244,40 @@ CE HR Ws bA -Fc -uX +fc +hc Kz -sc +Fc lW -bz +sJ bz dO qK bI -gh -gh +DF +kz fW fW "} (7,1,1) = {" +fW kz -kz -gx -gx +Lm +pZ yj TF gN -pW +Ni vW ne ra hZ ft -pB -pc -WJ +MS +RQ +tp Gi -YE +vB fw Tf ww @@ -6140,40 +6287,40 @@ Zr Ew Xs wC -gh +kz fW fW "} (8,1,1) = {" kz -Vz -kr +kz +kz Cu Px -jM +Px TS lR dZ -ff +kz TO -IV +ul rx fT nu gB vB -IV -Eb -Tc +mc +kz +kz Vd -Fu -Fu -Fu +pM Fu Fu Fu tx -fW +tx +tx +tx fW "} (9,1,1) = {" @@ -6185,98 +6332,98 @@ Ri Yv TG oE -CC +EP va RO -IV +ul Lv Yj fD MP Gh -IV -fg +ik +kz fz ai +CA Fu -qQ FC Fq qy tz -tx -tx +pr +uG fW "} (10,1,1) = {" kz -gx -gx +rM +At TN kB -Ni +fl fu bf -NT -fJ +SE +At sk -IV +ul UJ -MS -RQ -tp +rz +Gi +tk aL -IV -lr +pB +kz jZ wB +sC Fu -Ls Ca -Sz +hz sh Kv -pr -uG +jv +rb fW "} (11,1,1) = {" kz -AM -GF -GA -WP -MQ -Gx -bf -QU -Pm -ah -IV -oG -Yj -Ms -Wb -mA +kz +kz +kz +kz +kz +kz +kz +kz +kz +kz ul -gh -TU +ul +ul +ul +ul +ul +ul +kz +kz er +og Fu -CA Om -NI +JQ WO -ug -jv -rb +FO +JE +Ym fW "} (12,1,1) = {" -kz +hr JY -Lm -Dd +SK +hr UD dB rK @@ -6284,20 +6431,20 @@ um QU vO QY -ul +WZ +JS Bc -Su Da -VK -HE -ul +Bc +fU +WZ rW -pD -gQ +cS +sU +gc Fu -dt Yp -Rv +TI PI Pq JE @@ -6305,188 +6452,188 @@ Ym fW "} (13,1,1) = {" -kz +wg +ky gx -gx -TN +tR VQ ES Bw tm gi -jD -TO -ul -ul -ul -ul -CM +Ao +Fx +WZ +ek +Ug +qp CM -UL +BS +WZ tI -pD -gQ -wZ +xb +hA +gc Ls -JQ -JQ +aQ +Rv ZI -JQ -JE +ug +jv Ym Eu "} (14,1,1) = {" -kz +hr Ek -rM -GA -WP -jP -pT +hr +hr +hr +hr +hr Xt -TO -TO -TO -KQ -pD +GW +Ao +Tc +WZ +ZJ Nh xK xW Mn -FB -Jj +WZ +il pD -gQ -wZ -Ls +Cz +pz +is Gp -JQ +bZ Uu NC -jv -Ym +fs +jX fW "} (15,1,1) = {" -kz -jc -as -Dd +lw +lw +lw +DZ dp -OT +rF Vp -TO -TO +Pl +GW qY aF -bE -aF +WZ +WZ Wr vc Ev -Kp -oD -fo -fo +WZ +WZ +ib +cq Mi wZ -Ls +Fu MH -JQ -UC -FW -fs -jX +yh +zu +zu +tx +tx fW "} (16,1,1) = {" -kz -kz -kz -kz +fW +lw +wT +KL vY -cY -TO -TO -pD -gQ -pD +KL +Hd +Pl +GW +UI +fn FB -MT WZ WZ -aI -Hd -FB -om -pD -gQ -Fu -UA +Mk +WZ +Vj +bY +HW +WP +hA +si +ys pt -zR -QJ +ys uQ -tx -tx +uQ +Xp +fW fW "} (17,1,1) = {" -hr -KY +fW +lw RL -TO -TO -TO -TO +OT +Ss +OT +vI Pl -pD +gr gQ -Ql -WZ -MT +JJ +cp +Wz hb Ki lh -Hd -WZ +EG cp -Bd -Ea +ie +Tm +Hq +gc ys -vH LX Nm -cQ -pq +hG +hG Xp fW fW "} (18,1,1) = {" -AJ -Wv +fW +lw WR -KL -cC +SG +OT wX -if -if +PJ +Pl if UI -WZ -Pz +sd +re re Gb UN al -Ys -Fv -WZ -WC +UN +UN +HW +WP eu -ys +hC qR Au JA @@ -6497,95 +6644,95 @@ fW fW "} (19,1,1) = {" -xE -xE -Zd +fW +lw +kL Zd +DL Br -Br -Zd -Ao -pD +xf +kO +if YQ -WZ +Vj Yx Wg Oi gP -Ic -yD +UN +UN KH -WZ +mf ts -sO -Qe -qm +hA +pD +ys nd Zw nv -Mk +gm Xp fW fW "} (20,1,1) = {" fW -xE +lw yf uw uD jr -Br +tX Bg -gM +xo pI +Vj xs -xs -xs -xs -xs +fa +Oi cF cF -xs -xs -Rx -ta -wU -HA -Au +UN +uX +fx +WC +hA +pD +ys +OH nB wA -ba +AP Xp fW fW "} (21,1,1) = {" fW -xE -ka -bD -nE -Ir -hw +lw +xf +xf +xf +xf +xf nX -pD -gQ -ji +Dc +Cs +Vj DV fI -ji +Ka qq fY -zG -KU -qa -gM -eP +zG +KU +Vj +qr +hA +rc ys -kM iI -TI +pq AB XA Xp @@ -6594,192 +6741,192 @@ fW "} (22,1,1) = {" fW -xE -xE +sY +As mT Bh LD -Id -Jn -fo -ZJ -MI -lj -gm +Ut +BE +zO +TL ji -mD -XJ -RV -qz +ji +ji +ji +ji +qa +qa qa +hr pD -DR -AT -AT -AT -AT -AT -ls +hA +om +ys +jf +lU +ic +BI Xp fW fW "} (23,1,1) = {" fW -fW -GQ +sY +QQ vR Uv -eT -Br -gR +mM +Ut +pD +ir pD -gQ eC xA bO dl -ht +ji id qS -rq qa -rB -sO -rF -FN +Hb +pD +hA +Jj +ys js pf YT -hJ -fW +CV +Xp fW fW "} (24,1,1) = {" fW -fW +sY GQ -Pr +mM Gq zM Ut -vG -Bd -aZ +pD +ir +pD MI Sc us +Vq ji -En -XJ +ze SO -qs +qa Tz -Ja +Bd ta -ga -AE -Gs -oq -dy -hJ -fW +Vj +ys +ys +ys +ys +ys +Xp fW fW "} (25,1,1) = {" fW -fW -GQ +sY +uv NL oU -Pn -Zd -Dv +MZ +Ut pD +sA ZE ji +Dz +ps +dG ji -ji -ji -rN -XJ +qa XJ qa -nq -nq +hr +Bq hA -nq +ga bd -dy +Th CH -em +kE +Xu ls fW fW -fW "} (26,1,1) = {" fW -fW -xE +nq +nq xE SY Kh -Zd -Zd -pD -gQ -sG -Qp +tB +om +ir +cd +ji +ji SA -IP -pm +ji +ji bq GL -Qp -CV +bW +hr ZR QK -nq +Jn iY OF CB +oq ls ls fW fW -fW "} (27,1,1) = {" fW fW -fW -lw +nq +ed Ta -tB +Cy eL oT fo -Ff -BH +Ny +ji Aa kp oN -As +ji lk iP vp -vq -vq -mi -nq -QM +qa +pD +hA +ve +dy ix Za -ls -fW +wd +hJ fW fW fW @@ -6787,188 +6934,348 @@ fW (28,1,1) = {" fW fW -fW -lw +nq +dW Gm OG -SX -xf -Vj +tB +eg +JM VP -BJ -Qp +ji +yM Qs rw -pz +ji wp ok -Qp -ps -ip -Tr -nq +ao +qa +Uo +hA +ga vP RR Op +kM +hJ +fW +fW +fW +"} +(29,1,1) = {" +fW +fW +nq +tB +tB +tB +tB +tB +vf +Ir +ji +lf +Xy +xi +ji +UM +hi +vZ +qa +de +eY +AT +Pk +tZ +Wa +MG +hJ +fW +fW +fW +"} +(30,1,1) = {" +fW +fW +XU +IB +eP +Re +BW +jS +bw +Kb +ji +ji +fi +ji +ji +qa +iB +qa +qa +gM +dM +AT +Gc +tZ +Wa +zC +hJ +fW +fW +fW +"} +(31,1,1) = {" +fW +fW +XU +XU +wO +WX +eB +jS +hT +cJ +Qp +Ve +Eb +BJ +zi +iv +AE +Ex +Qp +pn +hA +AT +HO +tr +Gs +ls +ls +fW +fW +fW +"} +(32,1,1) = {" +fW +fW +fW +XU +uL +uh +Kf +yU +WE +YC +Yb +Az +Mr +MT +Zu +UR +Rw +aA +Fj +DN +Qo +AT +zS +Cr +oD ls fW fW fW fW "} -(29,1,1) = {" +(33,1,1) = {" fW fW fW -lw -sj -tB -ca +XU +dq uq +eQ jS -jS -Go +Wy +om Qp -Xy -xi -YL -UM -hi +ph +sc +FW +du +HA +jM +wb Qp -Zv -de -tH -nq -Pk -ix -Wa +Sv +Dp +AT +LA +dX +QM ls fW fW fW fW "} -(30,1,1) = {" +(34,1,1) = {" fW fW fW -lw -lw -Re -BW -ON +XU +XU +mQ +jK jS -KI -wd +lA +HZ Qp -fi -Lq -Lq -iB -iB +EF +Zo +Fv +ng +vo +hP +uY Qp -yu -ex -dM -nq -Gc -tZ -ls +kU +Cl +kU +kU +kU +wH ls fW fW fW fW "} -(31,1,1) = {" +(35,1,1) = {" fW fW fW fW -lw -WX -eB -bW +XU +yB +TJ jS -Qi -Az -Ve +jS +jS +XU +XY +XY +XY +ih +ih +XY +XY +wH +qg +fG +mi +ja +kU +wH +fW +fW +fW +fW +fW +"} +(36,1,1) = {" +fW +fW +fW +fW +XU +bo +gu +Xl +uS +mI +XU mg ME ME NB -Kn -sY -Rw -di -Mh -nq -HO -tr -ls +np +ME +qb +wH +mU +zJ +mw +sn +kU +wH fW fW fW fW fW "} -(32,1,1) = {" +(37,1,1) = {" fW fW fW fW -lw -lw -xf -yU -jS -YC -Yb -ph +XU +XU +hM +rq +Fn +aZ +XU np ME ME +ME +ME qb Kn -sY -Fj -DN -Hq -nq -ls -ls -ls +wH +kU +kU +KI +kU +wH +wH fW fW fW fW fW "} -(33,1,1) = {" +(38,1,1) = {" fW fW fW fW fW -lw -eQ -fS -jS -of -ie -ph +XU +La +kW +aZ +aZ +jq mg ME ME +ME +ME NB Kn -nq -uY -Sv -Dp -IB -LA -nq +xu +bR +mN +bs +HE +wH fW fW fW @@ -6976,31 +7283,31 @@ fW fW fW "} -(34,1,1) = {" +(39,1,1) = {" fW fW fW fW fW -lw -lw -gu -jS -jS -zu XU -Zo -vo -vo -vo -hP -sY +XU +Xl +aZ +aZ +jq +fg +Lq +Lq +Lq +Lq +Lq +zP +xu +aN +ut +eD +wH wH -Ss -Cl -kU -nq -nq fW fW fW @@ -7008,30 +7315,30 @@ fW fW fW "} -(35,1,1) = {" +(40,1,1) = {" fW fW fW fW fW fW -lw -lw -jS -LV -Iy XU +XU +BH +UA +jq im fW fW fW +fW +fW im -sY +xu +BK +Dy +wH wH -mM -fG -nq -nq fW fW fW @@ -7040,7 +7347,7 @@ fW fW fW "} -(36,1,1) = {" +(41,1,1) = {" fW fW fW @@ -7048,21 +7355,21 @@ fW fW fW fW -lw XU -Xl -rz +XU +XU XU im fW fW fW +fW +fW im -sY -Ka -mU -nq -nq +wH +Co +wH +wH fW fW fW @@ -7072,7 +7379,7 @@ fW fW fW "} -(37,1,1) = {" +(42,1,1) = {" fW fW fW @@ -7084,16 +7391,48 @@ fW XU XU XU +im +fW +fW +fW +fW +fW +im +wH +wH +wH +fW +fW +fW +fW +fW +fW +fW +fW +fW +"} +(43,1,1) = {" +fW +fW +fW +fW +fW +fW +fW +fW +fW +XU XU im fW fW fW +fW +fW im -nq -nq -nq -nq +wH +wH +fW fW fW fW diff --git a/_maps/shuttles/shiptest/pirate_ember.dmm b/_maps/shuttles/pirate/pirate_ember.dmm similarity index 99% rename from _maps/shuttles/shiptest/pirate_ember.dmm rename to _maps/shuttles/pirate/pirate_ember.dmm index 02cdfcd4d301..0b8fe0c12e10 100644 --- a/_maps/shuttles/shiptest/pirate_ember.dmm +++ b/_maps/shuttles/pirate/pirate_ember.dmm @@ -2247,14 +2247,14 @@ /obj/effect/decal/cleanable/cobweb, /obj/item/clothing/gloves/krav_maga/combatglovesplus, /obj/item/clothing/under/syndicate/camo, -/obj/item/clothing/under/syndicate/soviet, +/obj/item/clothing/under/syndicate/camo, /obj/item/clothing/neck/scarf/black, /obj/item/clothing/neck/cloak/hos, /obj/item/clothing/mask/bandana/black{ pixel_x = 1; pixel_y = -4 }, -/obj/item/clothing/mask/russian_balaclava, +/obj/item/clothing/mask/gas/sechailer/minutemen, /obj/item/clothing/suit/armor/vest/marine/medium, /obj/item/storage/belt/military, /obj/item/clothing/shoes/cowboy/black, @@ -5744,9 +5744,9 @@ pixel_x = 1; pixel_y = -4 }, -/obj/item/clothing/mask/russian_balaclava, -/obj/item/clothing/mask/russian_balaclava, -/obj/item/clothing/mask/russian_balaclava, +/obj/item/clothing/mask/gas/sechailer/minutemen, +/obj/item/clothing/mask/gas/sechailer/minutemen, +/obj/item/clothing/mask/gas/sechailer/minutemen, /obj/item/storage/belt/military, /obj/item/storage/belt/military, /obj/item/storage/belt/military/army, diff --git a/_maps/shuttles/shiptest/pirate_libertatia.dmm b/_maps/shuttles/pirate/pirate_libertatia.dmm similarity index 99% rename from _maps/shuttles/shiptest/pirate_libertatia.dmm rename to _maps/shuttles/pirate/pirate_libertatia.dmm index 2291bece301d..e0c0905371ad 100644 --- a/_maps/shuttles/shiptest/pirate_libertatia.dmm +++ b/_maps/shuttles/pirate/pirate_libertatia.dmm @@ -854,8 +854,8 @@ /area/ship/crew) "AL" = ( /obj/structure/table, -/obj/effect/spawner/lootdrop/donkpockets, -/obj/effect/spawner/lootdrop/donkpockets, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/item/radio/intercom/directional/north, /obj/item/lighter{ @@ -1592,12 +1592,12 @@ name = "food crate" }, /obj/item/storage/cans/sixbeer, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, diff --git a/_maps/shuttles/shiptest/pirate_noderider.dmm b/_maps/shuttles/pirate/pirate_noderider.dmm similarity index 100% rename from _maps/shuttles/shiptest/pirate_noderider.dmm rename to _maps/shuttles/pirate/pirate_noderider.dmm diff --git a/_maps/shuttles/shiptest/srm_glaive.dmm b/_maps/shuttles/roumain/srm_glaive.dmm similarity index 100% rename from _maps/shuttles/shiptest/srm_glaive.dmm rename to _maps/shuttles/roumain/srm_glaive.dmm diff --git a/_maps/shuttles/ruin/ruin_caravan_victim.dmm b/_maps/shuttles/ruin/ruin_caravan_victim.dmm deleted file mode 100644 index 4b8d1803616d..000000000000 --- a/_maps/shuttles/ruin/ruin_caravan_victim.dmm +++ /dev/null @@ -1,1793 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ap" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/obj/item/multitool, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless, -/area/ship/cargo) -"ax" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/silver{ - amount = 25 - }, -/obj/item/stack/sheet/mineral/silver{ - amount = 25 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/terminal{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"aP" = ( -/obj/machinery/door/airlock{ - name = "Crew Quarters" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/airless, -/area/ship/crew) -"bg" = ( -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/airless, -/area/ship/crew) -"bu" = ( -/obj/machinery/door/airlock{ - name = "Crew Cabins" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/airless, -/area/ship/crew) -"bI" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/turf_decal/box/white/corners, -/obj/machinery/button/door{ - id = "caravantrade1_cargo"; - name = "Cargo Blast Door Control"; - pixel_y = -25 - }, -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/diamond{ - amount = 5 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"bR" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/structure/sink{ - pixel_y = 25 - }, -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/showroomfloor{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/crew) -"ct" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/airless, -/area/ship/cargo) -"cx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/power/terminal, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/crew) -"cX" = ( -/obj/structure/chair/stool, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 4 - }, -/turf/open/floor/plasteel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/crew) -"ec" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"eP" = ( -/obj/machinery/door/poddoor{ - id = "caravantrade1_cargo"; - name = "Cargo Blast Door" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating/airless, -/area/ship/cargo) -"fk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/meter, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"fD" = ( -/turf/template_noop, -/area/ship/cargo) -"gs" = ( -/obj/structure/closet/secure_closet/freezer{ - locked = 0; - name = "fridge" - }, -/obj/item/reagent_containers/food/drinks/beer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/reagent_containers/food/drinks/beer, -/obj/item/reagent_containers/food/drinks/beer{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/reagent_containers/food/drinks/waterbottle{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/item/reagent_containers/food/drinks/waterbottle{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/reagent_containers/food/snacks/pizzaslice/margherita{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/reagent_containers/food/snacks/pizzaslice/margherita, -/obj/item/reagent_containers/food/snacks/chocolatebar, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 4 - }, -/turf/open/floor/plasteel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/crew) -"gw" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/mob_spawn/human/corpse/cargo_tech, -/obj/effect/decal/cleanable/blood, -/obj/effect/turf_decal/corner/opaque/blue, -/turf/open/floor/plasteel/dark{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/bridge) -"hk" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"if" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/mob/living/simple_animal/hostile/syndicate/ranged/smg/space, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/airless, -/area/ship/cargo) -"ig" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor{ - id = "caravantrade1_bridge" - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/ship/bridge) -"jg" = ( -/obj/machinery/door/airlock{ - name = "Restroom" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/crew) -"jr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/airless, -/area/ship/cargo) -"lt" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 6 - }, -/obj/machinery/space_heater, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/terminal{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"lx" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 1 - }, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged4" - }, -/area/ship/cargo) -"lC" = ( -/obj/machinery/power/smes, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"lM" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/sign/warning/vacuum{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"mo" = ( -/obj/machinery/power/port_gen/pacman{ - anchored = 1 - }, -/obj/item/wrench, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"mu" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/cargo) -"mw" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/item/storage/toolbox/emergency, -/obj/item/wrench, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/power/terminal, -/obj/structure/cable, -/turf/open/floor/plasteel/dark{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/bridge) -"mZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 - }, -/obj/structure/frame/computer{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/bridge) -"nM" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating/airless, -/area/ship/cargo) -"oj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"ot" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 4 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"oS" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"pR" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/crew) -"pU" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/bridge) -"qp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/bridge) -"qM" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/blood, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/dark/airless, -/area/ship/bridge) -"rf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel/airless{ - icon_state = "floorscorched1" - }, -/area/ship/cargo) -"rF" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/airless, -/area/ship/crew) -"sf" = ( -/obj/machinery/light/directional/north, -/obj/structure/table, -/obj/item/stack/packageWrap, -/obj/item/crowbar, -/obj/item/flashlight{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless, -/area/ship/cargo) -"si" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/external{ - id_tag = "caravantrade1_bolt" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/ship/bridge) -"ss" = ( -/obj/structure/rack, -/obj/item/storage/belt/utility, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless, -/area/ship/cargo) -"tg" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/space_heater, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/terminal{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"tj" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor{ - id = "caravantrade1_bridge" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"ur" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg3" - }, -/area/ship/cargo) -"uA" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/bed, -/obj/item/bedsheet, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/east, -/obj/machinery/button/door{ - id = "caravantrade1_cabin1"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 6; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/crew) -"uS" = ( -/mob/living/simple_animal/hostile/syndicate/ranged/smg/space, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"vt" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"vO" = ( -/obj/machinery/door/poddoor{ - id = "caravantrade1_cargo"; - name = "Cargo Blast Door" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ship/cargo) -"xz" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-9" - }, -/obj/structure/cable{ - icon_state = "1-5" - }, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged5" - }, -/area/ship/cargo) -"yn" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/titanium{ - amount = 20 - }, -/obj/item/stack/sheet/mineral/titanium{ - amount = 20 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"yC" = ( -/obj/machinery/button/door{ - id = "caravantrade1_bolt"; - name = "External Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 8; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/turf_decal/corner/opaque/blue, -/turf/open/floor/plasteel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/bridge) -"zd" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"zy" = ( -/obj/structure/girder, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg1" - }, -/area/ship/cargo) -"Ax" = ( -/obj/item/stack/sheet/metal/fifty, -/turf/open/floor/plasteel/airless{ - icon_state = "floorscorched2" - }, -/area/ship/cargo) -"AM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/command{ - name = "Bridge" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/bridge) -"AX" = ( -/obj/effect/turf_decal/box/white/corners, -/obj/structure/closet/crate, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"Bu" = ( -/obj/item/stack/sheet/mineral/titanium, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-10" - }, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged1" - }, -/area/ship/cargo) -"Bx" = ( -/obj/structure/table, -/obj/item/storage/box/donkpockets{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/trash/plate{ - pixel_x = -5; - pixel_y = -3 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/crew) -"BN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/engineering{ - name = "Engine Room" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"CR" = ( -/obj/effect/turf_decal/industrial/outline, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"CU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/airless{ - icon_state = "floorscorched1" - }, -/area/ship/cargo) -"Dt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/effect/decal/cleanable/blood, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/crew) -"DQ" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/gold{ - amount = 25 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"El" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/engineering/engine) -"Eo" = ( -/obj/structure/lattice, -/obj/item/stack/sheet/mineral/titanium, -/turf/template_noop, -/area/ship/cargo) -"EI" = ( -/obj/effect/decal/cleanable/blood, -/mob/living/simple_animal/hostile/syndicate/melee/sword/space/stormtrooper, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 - }, -/turf/open/floor/plasteel/dark{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/bridge) -"EQ" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/firealarm/directional/west, -/obj/effect/decal/cleanable/blood, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/mob/living/simple_animal/hostile/syndicate/ranged/smg/space, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 4 - }, -/turf/open/floor/plasteel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/crew) -"EW" = ( -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "caravantrade1_bridge"; - name = "Ship Blast Door Control" - }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 - }, -/turf/open/floor/plasteel/dark{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/bridge) -"EZ" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"Fv" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/engineering/engine) -"Fx" = ( -/obj/structure/lattice, -/obj/structure/fluff/broken_flooring{ - icon_state = "singular" - }, -/turf/template_noop, -/area/ship/cargo) -"GJ" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/airless, -/area/ship/crew) -"Hv" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/airless, -/area/ship/crew) -"Ib" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/airless, -/area/ship/bridge) -"Ja" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/structure/rack, -/obj/item/storage/firstaid/regular, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/bridge) -"Jv" = ( -/turf/template_noop, -/area/template_noop) -"Kc" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor{ - id = "caravantrade1_bridge" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"Ko" = ( -/obj/structure/rack, -/obj/item/tank/internals/oxygen, -/obj/item/radio, -/obj/item/clothing/mask/gas, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 - }, -/turf/open/floor/plasteel{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/bridge) -"KC" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"KX" = ( -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"Lr" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor{ - id = "caravantrade1_bridge" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"Lt" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew) -"LK" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless, -/area/ship/bridge) -"LM" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor{ - id = "caravantrade1_bridge" - }, -/turf/open/floor/plating, -/area/ship/bridge) -"LX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/door_assembly/door_assembly_min{ - anchored = 1; - density = 0; - name = "broken airlock" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/airless, -/area/ship/cargo) -"Mb" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/airless, -/area/ship/crew) -"NL" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 5 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/crew) -"NY" = ( -/obj/machinery/door/poddoor{ - id = "caravantrade1_cargo"; - name = "Cargo Blast Door" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg3" - }, -/area/ship/cargo) -"Od" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/pen{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/folder/yellow{ - pixel_x = -6 - }, -/obj/item/gps{ - gpstag = "Distress Signal" - }, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/bridge) -"Ov" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged2" - }, -/area/ship/cargo) -"Ow" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 - }, -/obj/machinery/computer/helm{ - dir = 8 - }, -/turf/open/floor/plasteel/dark{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/bridge) -"OK" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 1 - }, -/obj/structure/closet/crate, -/obj/item/stack/sheet/mineral/uranium{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/uranium{ - amount = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/terminal{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"PM" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/bed, -/obj/item/bedsheet, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm/directional/east, -/obj/machinery/button/door{ - id = "caravantrade1_cabin2"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 6; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/crew) -"Qk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/airless, -/area/ship/cargo) -"Qs" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"QU" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor{ - id = "caravantrade1_bridge" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"QY" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/machinery/firealarm/directional/north, -/obj/item/stack/cable_coil/yellow{ - pixel_x = 12; - pixel_y = 4 - }, -/turf/open/floor/plasteel/airless, -/area/ship/cargo) -"Rw" = ( -/obj/machinery/door/airlock{ - id_tag = "caravantrade1_cabin2"; - name = "Cabin 2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/dark/airless, -/area/ship/crew) -"RI" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"RN" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/power/terminal, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg3" - }, -/area/ship/engineering/engine) -"Su" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged3" - }, -/area/ship/cargo) -"Td" = ( -/obj/structure/lattice, -/turf/template_noop, -/area/ship/cargo) -"TP" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/item/stack/sheet/metal/fifty, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"Ut" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/airless, -/area/ship/cargo) -"UW" = ( -/obj/machinery/airalarm/directional/east, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/airless{ - icon_state = "platingdmg1" - }, -/area/ship/engineering/engine) -"VD" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/external{ - id_tag = "caravantrade1_bolt" - }, -/obj/docking_port/mobile{ - callTime = 250; - dir = 2; - dwidth = 5; - height = 11; - launch_status = 0; - name = "Small Freighter"; - port_direction = 8; - preferred_direction = 4; - width = 21 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/ship/bridge) -"VN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "6-8" - }, -/turf/open/floor/plasteel/airless, -/area/ship/cargo) -"VT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/airless, -/area/ship/crew) -"Wm" = ( -/obj/machinery/door/airlock{ - id_tag = "caravantrade1_cabin1"; - name = "Cabin 1" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/dark/airless, -/area/ship/crew) -"Wr" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor{ - id = "caravantrade1_bridge" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/ship/crew) -"WI" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/cargo) -"WU" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/mob_spawn/human/corpse/cargo_tech, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/airless, -/area/ship/crew) -"WX" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 8 - }, -/obj/structure/closet/crate, -/obj/item/stack/sheet/plasteel/twenty, -/obj/item/stack/sheet/plasteel/twenty, -/turf/open/floor/plasteel/airless{ - icon_state = "damaged5" - }, -/area/ship/cargo) -"WZ" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/glass{ - amount = 10 - }, -/obj/item/stack/rods/ten, -/obj/item/storage/box/lights/bulbs, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/terminal{ - dir = 8 - }, -/turf/open/floor/plating/airless, -/area/ship/engineering/engine) -"Xh" = ( -/obj/machinery/door/poddoor{ - id = "caravantrade1_cargo"; - name = "Cargo Blast Door" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating/airless, -/area/ship/cargo) -"Xt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/holopad/emergency/command, -/turf/open/floor/plasteel/dark/airless, -/area/ship/bridge) -"XI" = ( -/obj/effect/turf_decal/industrial/outline, -/obj/structure/closet/emcloset, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"Yk" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/bridge) -"YR" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor{ - id = "caravantrade1_bridge" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"Zk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) -"ZY" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating/airless, -/area/ship/cargo) -"ZZ" = ( -/obj/effect/turf_decal/box/white/corners{ - dir = 1 - }, -/obj/structure/closet/crate, -/obj/item/stack/sheet/rglass{ - amount = 20 - }, -/obj/item/stack/sheet/rglass{ - amount = 20 - }, -/turf/open/floor/plasteel/dark/airless, -/area/ship/cargo) - -(1,1,1) = {" -El -El -El -vt -vt -El -KX -Jv -Jv -Jv -Jv -"} -(2,1,1) = {" -Fv -mo -El -KC -KC -El -El -ZY -ZY -ZY -mu -"} -(3,1,1) = {" -El -RN -lC -WZ -lt -zd -El -nM -nM -nM -mu -"} -(4,1,1) = {" -El -oj -ec -Qs -UW -fk -El -OK -ax -tg -WI -"} -(5,1,1) = {" -El -BN -El -El -El -BN -El -DQ -oS -bI -WI -"} -(6,1,1) = {" -Lt -GJ -Rw -PM -WI -Qk -ct -Zk -uS -EZ -eP -"} -(7,1,1) = {" -Wr -Mb -Lt -Lt -WI -ss -CU -ZZ -hk -RI -NY -"} -(8,1,1) = {" -Lt -bg -Wm -uA -mu -sf -jr -ot -hk -AX -Xh -"} -(9,1,1) = {" -Lt -bu -Lt -Lt -WI -QY -if -Ax -yn -Su -eP -"} -(10,1,1) = {" -Lt -cx -Lt -bR -WI -ap -VN -lx -TP -WX -vO -"} -(11,1,1) = {" -Wr -pR -Lt -jg -WI -WI -rf -xz -Ov -Td -ur -"} -(12,1,1) = {" -Wr -Dt -WU -Hv -rF -LX -Bu -CR -Fx -fD -Eo -"} -(13,1,1) = {" -Wr -gs -cX -EQ -VT -WI -XI -Ut -Td -fD -fD -"} -(14,1,1) = {" -Lt -NL -Bx -Lt -aP -WI -WI -zy -fD -fD -Jv -"} -(15,1,1) = {" -Yk -Yk -Yk -Yk -Ib -LK -Yk -Jv -Jv -Jv -Jv -"} -(16,1,1) = {" -VD -lM -si -yC -qp -Ko -Lr -Jv -Jv -Jv -Jv -"} -(17,1,1) = {" -pU -Yk -Yk -Yk -AM -Yk -Yk -Jv -Jv -Jv -Jv -"} -(18,1,1) = {" -Jv -Yk -Ja -qM -Xt -mw -Yk -Jv -Jv -Jv -Jv -"} -(19,1,1) = {" -Jv -ig -Od -EI -gw -EW -Lr -Jv -Jv -Jv -Jv -"} -(20,1,1) = {" -Jv -LM -QU -mZ -Ow -tj -LM -Jv -Jv -Jv -Jv -"} -(21,1,1) = {" -Jv -Jv -Kc -YR -YR -Kc -Jv -Jv -Jv -Jv -Jv -"} diff --git a/_maps/shuttles/ruin/ruin_pirate_cutter.dmm b/_maps/shuttles/ruin/ruin_pirate_cutter.dmm deleted file mode 100644 index e71d9c9c7fb6..000000000000 --- a/_maps/shuttles/ruin/ruin_pirate_cutter.dmm +++ /dev/null @@ -1,1613 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"af" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/engineering) -"aE" = ( -/obj/structure/closet{ - name = "pirate outfits" - }, -/obj/item/clothing/head/collectable/pirate, -/obj/item/clothing/suit/pirate, -/obj/item/clothing/under/costume/pirate, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/head/bandana, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/black, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/crew) -"aK" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/medical) -"bd" = ( -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "caravanpirate_bridge"; - name = "Bridge Blast Door Control"; - pixel_x = -16 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"bH" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ship/medical) -"cU" = ( -/obj/machinery/sleeper{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"de" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"dE" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"fh" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/ship/engineering) -"fL" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/machinery/computer/helm{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"fU" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ship/security) -"gG" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/sign/warning/vacuum{ - pixel_x = -32 - }, -/turf/open/floor/plating, -/area/ship/medical) -"gT" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/item/melee/classic_baton, -/obj/effect/turf_decal/corner/opaque/red, -/obj/item/radio/intercom/wideband/directional/north, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"hh" = ( -/mob/living/simple_animal/hostile/pirate{ - environment_smash = 0 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ship/security) -"hI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plating, -/area/ship/engineering) -"hZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"ig" = ( -/obj/structure/table, -/obj/item/circular_saw, -/obj/item/scalpel{ - pixel_y = 12 - }, -/obj/item/cautery{ - pixel_x = 4 - }, -/obj/machinery/light/small/directional/west, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ship/medical) -"iF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"iX" = ( -/obj/structure/table, -/obj/machinery/door/window/southleft{ - base_state = "right"; - icon_state = "right"; - name = "Weapon Storage" - }, -/obj/item/gun/energy/laser, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/security) -"ja" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/power/terminal, -/obj/structure/cable, -/turf/open/floor/plasteel, -/area/ship/security) -"jh" = ( -/obj/machinery/power/port_gen/pacman{ - anchored = 1 - }, -/obj/item/wrench, -/obj/effect/turf_decal/industrial/warning{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/manifold/orange/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow, -/turf/open/floor/plating, -/area/ship/engineering) -"kl" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/medical) -"ku" = ( -/obj/structure/rack, -/obj/item/storage/bag/money/vault, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 - }, -/mob/living/simple_animal/parrot{ - faction = list("pirate"); - name = "Pegwing" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"kY" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/machinery/meter, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/ship/engineering) -"kZ" = ( -/obj/structure/table, -/obj/machinery/airalarm/directional/north, -/obj/item/ammo_box/a40mm, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/security) -"le" = ( -/obj/machinery/porta_turret/syndicate/pod{ - dir = 5; - faction = list("pirate") - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) -"lu" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/bridge) -"lG" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"lY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ship/medical) -"mr" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/command{ - name = "Bridge" - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"mF" = ( -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/plastitanium, -/obj/machinery/door/poddoor{ - id = "caravanpirate_bridge" - }, -/turf/open/floor/plating, -/area/ship/security) -"oa" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/bed, -/obj/item/bedsheet/brown, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"oF" = ( -/obj/structure/closet{ - name = "pirate outfits" - }, -/obj/item/clothing/head/collectable/pirate, -/obj/item/clothing/suit/pirate, -/obj/item/clothing/under/costume/pirate, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/head/bandana, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"oL" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ship/medical) -"oO" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/structure/frame/computer, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"oT" = ( -/obj/structure/table, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/door/window/southleft{ - name = "Weapon Storage" - }, -/obj/item/grenade/smokebomb{ - pixel_x = -4 - }, -/obj/item/grenade/smokebomb{ - pixel_x = 2 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/security) -"oV" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/ship/security) -"pS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ship/security) -"qo" = ( -/obj/machinery/porta_turret/syndicate/pod{ - dir = 6; - faction = list("pirate") - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) -"qC" = ( -/obj/structure/table, -/obj/item/storage/fancy/donut_box{ - pixel_y = 18 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = -6 - }, -/obj/item/reagent_containers/food/drinks/bottle/rum{ - pixel_x = 8; - pixel_y = 3 - }, -/obj/structure/sign/poster/contraband/red_rum{ - pixel_x = 32 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"qX" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/item/reagent_containers/glass/bucket, -/obj/item/mop, -/obj/effect/turf_decal/industrial/warning{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/manifold/orange/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ship/engineering) -"rI" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/crew) -"su" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/ship/medical) -"th" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/engineering{ - name = "Engineering" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/ship/engineering) -"to" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/bottle/rum{ - pixel_x = 3; - pixel_y = 6 - }, -/obj/item/reagent_containers/food/drinks/bottle/rum, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"ty" = ( -/obj/structure/closet/crate/secure/loot, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"tM" = ( -/obj/effect/decal/cleanable/dirt, -/mob/living/simple_animal/hostile/pirate/ranged{ - environment_smash = 0 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel, -/area/ship/security) -"ul" = ( -/obj/structure/table, -/obj/item/retractor, -/obj/item/hemostat, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"un" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/ship/security) -"uB" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/sign/warning/vacuum{ - pixel_x = -32 - }, -/turf/open/floor/plating, -/area/ship/security) -"vd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ship/security) -"wa" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/machinery/firealarm/directional/south, -/obj/machinery/holopad/emergency/command, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"wk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/medical) -"wL" = ( -/obj/machinery/button/door{ - id = "caravanpirate_bolt_port"; - name = "External Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -4; - pixel_y = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/medical) -"wZ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"xg" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 5 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"yt" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/orange/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ship/engineering) -"yu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"yW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/space_heater, -/obj/effect/turf_decal/industrial/warning{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 9 - }, -/turf/open/floor/plating, -/area/ship/engineering) -"zB" = ( -/obj/machinery/button/door{ - id = "caravanpirate_bolt_starboard"; - name = "External Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -4; - pixel_y = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ship/security) -"Ag" = ( -/obj/structure/table/optable, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Ah" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/external{ - id_tag = "caravanpirate_bolt_starboard" - }, -/turf/open/floor/plating, -/area/ship/security) -"Av" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ship/medical) -"AP" = ( -/obj/structure/sign/departments/medbay/alt, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/medical) -"Bi" = ( -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/plastitanium, -/obj/machinery/door/poddoor{ - id = "caravanpirate_bridge" - }, -/turf/open/floor/plating, -/area/ship/medical) -"BL" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plating, -/area/ship/engineering) -"CF" = ( -/obj/structure/table, -/obj/item/storage/firstaid/brute{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/fire, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Ek" = ( -/obj/machinery/atmospherics/components/unary/tank/toxins{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/hatch/yellow, -/turf/open/floor/plating, -/area/ship/engineering) -"EB" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/machinery/turretid{ - icon_state = "control_kill"; - lethal = 1; - locked = 0; - pixel_y = -30; - req_access = null - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/mob/living/simple_animal/hostile/pirate/ranged{ - environment_smash = 0 - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"EK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ship/medical) -"FM" = ( -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/glass{ - amount = 10 - }, -/obj/item/storage/toolbox/mechanical, -/obj/item/flashlight{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 20 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/orange/hidden{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/plating, -/area/ship/engineering) -"Gb" = ( -/obj/structure/tank_dispenser/oxygen, -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/security) -"Gh" = ( -/obj/machinery/atmospherics/components/unary/tank/air, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plating, -/area/ship/engineering) -"Gw" = ( -/obj/machinery/suit_storage_unit/open, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/security) -"GO" = ( -/obj/machinery/porta_turret/syndicate/pod{ - dir = 9; - faction = list("pirate") - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) -"GR" = ( -/obj/structure/table, -/obj/item/coin/gold, -/obj/item/coin/silver, -/obj/item/coin/silver, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"Hp" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/security) -"Hq" = ( -/obj/structure/bed, -/obj/item/bedsheet/brown, -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/corner/opaque/black, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ship/crew) -"HD" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ship/engineering) -"HO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - name = "Armory" - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ship/security) -"II" = ( -/obj/structure/closet/crate/freezer/surplus_limbs, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"IZ" = ( -/obj/item/stack/sheet/mineral/gold{ - amount = 25 - }, -/obj/item/stack/sheet/mineral/bananium{ - amount = 5 - }, -/obj/item/stack/sheet/mineral/silver{ - amount = 25 - }, -/obj/item/stack/sheet/mineral/uranium{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/diamond{ - amount = 5 - }, -/obj/structure/closet/crate, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/silver, -/obj/item/coin/gold, -/obj/item/coin/gold, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"Jb" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/external{ - id_tag = "caravanpirate_bolt_port" - }, -/obj/docking_port/mobile{ - callTime = 150; - dir = 2; - name = "Pirate Cutter"; - port_direction = 8; - preferred_direction = 4 - }, -/turf/open/floor/plating, -/area/ship/medical) -"Jv" = ( -/turf/template_noop, -/area/template_noop) -"Ka" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/ship/engineering) -"Kr" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/closet/crate/secure/loot, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"Ku" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/external{ - id_tag = "caravanpirate_bolt_starboard" - }, -/turf/open/floor/plating, -/area/ship/security) -"Ld" = ( -/obj/machinery/suit_storage_unit/open, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/medical) -"LG" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/medical) -"NE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/power/terminal, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"ON" = ( -/obj/machinery/porta_turret/syndicate/pod{ - dir = 10; - faction = list("pirate") - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) -"Pc" = ( -/obj/structure/sign/departments/engineering, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/engineering) -"Pn" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ship/engineering) -"Pp" = ( -/obj/structure/bed, -/obj/item/bedsheet/brown, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"PL" = ( -/obj/machinery/light/small/directional/south, -/obj/structure/bed, -/obj/item/bedsheet/brown, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"Qj" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ship/security) -"QQ" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) -"Rq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ship/medical) -"Rz" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/external{ - id_tag = "caravanpirate_bolt_port" - }, -/turf/open/floor/plating, -/area/ship/medical) -"RC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"RK" = ( -/obj/machinery/power/smes{ - charge = 5e+006 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/ship/engineering) -"Sk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"SF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/corner/opaque/black, -/obj/effect/turf_decal/corner/opaque/black{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/crew) -"Ty" = ( -/obj/machinery/atmospherics/components/unary/tank/toxins, -/obj/effect/turf_decal/industrial/hatch/yellow, -/turf/open/floor/plating, -/area/ship/engineering) -"TK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/airalarm/directional/east, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/ship/engineering) -"UP" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/emergency, -/obj/item/weldingtool, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"Wd" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ship/engineering) -"Yb" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ship/crew) -"Yo" = ( -/obj/structure/table, -/obj/item/storage/box/lethalshot, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/security) -"Yw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"Zo" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/ship/engineering) -"Zp" = ( -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/plastitanium, -/obj/machinery/door/poddoor{ - id = "caravanpirate_bridge" - }, -/turf/open/floor/plating, -/area/ship/bridge) -"ZD" = ( -/obj/structure/table, -/obj/machinery/light/small/directional/west{ - brightness = 3 - }, -/obj/item/spacecash/bundle/c200, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"ZY" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) - -(1,1,1) = {" -Jv -Jv -Wd -Pn -Pn -Pn -Jv -Pn -Pn -Pn -Wd -Jv -Jv -"} -(2,1,1) = {" -Jv -GO -af -HD -HD -HD -af -HD -HD -HD -af -ON -Jv -"} -(3,1,1) = {" -Jv -af -Ty -qX -yt -yW -af -RK -FM -jh -Ek -af -Jv -"} -(4,1,1) = {" -Jv -af -Gh -kY -Ka -fh -TK -hI -Ka -Zo -BL -af -Jv -"} -(5,1,1) = {" -Jv -af -af -th -Pc -af -af -af -Pc -th -af -af -Jv -"} -(6,1,1) = {" -Jv -LG -Ld -Rq -ig -ul -Hp -Yo -oV -un -Gw -Hp -Jv -"} -(7,1,1) = {" -oL -LG -LG -wk -su -Ag -Hp -kZ -tM -ja -Hp -Hp -QQ -"} -(8,1,1) = {" -Jb -gG -Rz -kl -EK -CF -Hp -Gb -pS -fU -Ku -uB -Ah -"} -(9,1,1) = {" -oL -LG -LG -wL -lY -cU -Hp -oT -hh -zB -Hp -Hp -QQ -"} -(10,1,1) = {" -Jv -Bi -Ld -aK -bH -II -Hp -iX -vd -Qj -Gw -mF -Jv -"} -(11,1,1) = {" -Jv -oL -LG -AP -Av -LG -Hp -Hp -HO -Hp -Hp -QQ -Jv -"} -(12,1,1) = {" -Jv -Jv -rI -aE -SF -Hq -Kr -Pp -RC -oF -rI -Jv -Jv -"} -(13,1,1) = {" -Jv -Jv -rI -oa -yu -hZ -wZ -de -iF -PL -rI -Jv -Jv -"} -(14,1,1) = {" -Jv -Jv -le -rI -xg -qC -IZ -Sk -ku -rI -qo -Jv -Jv -"} -(15,1,1) = {" -Jv -Jv -Jv -Yb -lu -lu -lu -mr -lu -Yb -Jv -Jv -Jv -"} -(16,1,1) = {" -Jv -Jv -Jv -Jv -lu -to -ZD -Yw -lu -Jv -Jv -Jv -Jv -"} -(17,1,1) = {" -Jv -Jv -Jv -Jv -lu -GR -ZY -NE -lu -Jv -Jv -Jv -Jv -"} -(18,1,1) = {" -Jv -Jv -Jv -Jv -lu -ty -lG -wa -lu -Jv -Jv -Jv -Jv -"} -(19,1,1) = {" -Jv -Jv -Jv -Jv -lu -UP -dE -gT -lu -Jv -Jv -Jv -Jv -"} -(20,1,1) = {" -Jv -Jv -Jv -Jv -Zp -oO -EB -bd -Zp -Jv -Jv -Jv -Jv -"} -(21,1,1) = {" -Jv -Jv -Jv -Jv -Zp -Zp -fL -Zp -Zp -Jv -Jv -Jv -Jv -"} -(22,1,1) = {" -Jv -Jv -Jv -Jv -Jv -Zp -Zp -Zp -Jv -Jv -Jv -Jv -Jv -"} diff --git a/_maps/shuttles/ruin/ruin_solgov_exploration_pod.dmm b/_maps/shuttles/ruin/ruin_solgov_exploration_pod.dmm deleted file mode 100644 index 6ab4c6c19195..000000000000 --- a/_maps/shuttles/ruin/ruin_solgov_exploration_pod.dmm +++ /dev/null @@ -1,155 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/bridge) -"d" = ( -/obj/structure/window/reinforced/fulltile/shuttle, -/turf/open/floor/plating, -/area/ship/bridge) -"g" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"j" = ( -/obj/machinery/computer/helm{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/ship/bridge) -"s" = ( -/obj/machinery/power/smes/shuttle{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/door/window/westright, -/turf/open/floor/plating, -/area/ship/bridge) -"w" = ( -/obj/machinery/power/smes/shuttle{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/door/window/westleft, -/turf/open/floor/plating, -/area/ship/bridge) -"y" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/mineral/titanium/yellow, -/area/ship/bridge) -"z" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/bridge) -"B" = ( -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/holopad/emergency/command, -/turf/open/floor/mineral/titanium/yellow, -/area/ship/bridge) -"E" = ( -/obj/structure/frame/computer{ - anchored = 1; - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/ship/bridge) -"G" = ( -/obj/machinery/door/airlock/titanium, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/docking_port/mobile{ - height = 6; - name = "SolGov Exploration Pod"; - port_direction = 8; - preferred_direction = 4; - width = 4 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"J" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/turf/open/floor/mineral/titanium/yellow, -/area/ship/bridge) -"U" = ( -/obj/machinery/power/terminal{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/mineral/titanium/yellow, -/area/ship/bridge) -"Y" = ( -/obj/machinery/door/airlock/titanium, -/turf/open/floor/plating, -/area/ship/bridge) - -(1,1,1) = {" -a -d -d -a -"} -(2,1,1) = {" -d -E -j -d -"} -(3,1,1) = {" -a -y -J -a -"} -(4,1,1) = {" -Y -U -B -G -"} -(5,1,1) = {" -a -s -w -a -"} -(6,1,1) = {" -z -g -g -z -"} diff --git a/_maps/shuttles/ruin/ruin_syndicate_dropship.dmm b/_maps/shuttles/ruin/ruin_syndicate_dropship.dmm deleted file mode 100644 index edec2afb3308..000000000000 --- a/_maps/shuttles/ruin/ruin_syndicate_dropship.dmm +++ /dev/null @@ -1,771 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"al" = ( -/obj/machinery/airalarm/syndicate{ - dir = 4; - pixel_x = -25 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"az" = ( -/obj/machinery/power/apc/syndicate{ - dir = 8; - name = "Syndicate Drop Ship APC"; - pixel_x = -25 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small/directional/north, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/structure/table, -/obj/item/storage/toolbox/emergency, -/turf/open/floor/plating, -/area/ship/crew) -"bo" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"bB" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/button/door{ - id = "caravansyndicate3_bolt_starboard"; - name = "External Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = -6; - req_access_txt = "150"; - specialfunctions = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"bN" = ( -/obj/machinery/power/smes{ - charge = 5e+006 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 10 - }, -/obj/structure/cable/yellow, -/turf/open/floor/plating, -/area/ship/crew) -"cB" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"dZ" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ship/crew) -"gl" = ( -/obj/machinery/door/airlock/hatch{ - id_tag = "caravansyndicate3_bolt_port"; - name = "External Airlock"; - normalspeed = 0; - req_access_txt = "150" - }, -/obj/docking_port/mobile{ - dir = 2; - dwidth = 6; - height = 7; - name = "Syndicate Drop Ship"; - port_direction = 8; - preferred_direction = 4; - width = 15 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/plating, -/area/ship/crew) -"ha" = ( -/obj/machinery/power/port_gen/pacman{ - anchored = 1 - }, -/obj/item/wrench, -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/effect/turf_decal/industrial/warning{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 9 - }, -/turf/open/floor/plating, -/area/ship/crew) -"ka" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/ship/crew) -"ns" = ( -/obj/structure/table/reinforced, -/obj/machinery/button/door{ - id = "caravansyndicate3_bridge"; - name = "Bridge Blast Door Control"; - pixel_x = -16; - pixel_y = 5; - req_access_txt = "150" - }, -/obj/machinery/button/door{ - id = "caravansyndicate3_bolt_bridge"; - name = "Bridge Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -16; - pixel_y = -5; - req_access_txt = "150"; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"qE" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/obj/item/clothing/under/syndicate, -/obj/item/clothing/shoes/sneakers/black, -/turf/open/floor/mineral/plastitanium, -/area/ship/crew) -"rz" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/machinery/computer/helm{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"rU" = ( -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/plastitanium, -/obj/machinery/door/poddoor{ - id = "caravansyndicate3_bridge" - }, -/turf/open/floor/plating, -/area/ship/crew) -"rV" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/ship/crew) -"sb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/structure/frame/computer{ - anchored = 1; - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"sn" = ( -/obj/structure/chair/comfy/shuttle, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/ship/crew) -"ss" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"uy" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/machinery/light/small/directional/west, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"vw" = ( -/obj/structure/table/reinforced, -/obj/item/storage/firstaid/regular, -/obj/item/assembly/flash/handheld, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"wH" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ship/crew) -"xC" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/button/door{ - id = "caravansyndicate3_bolt_port"; - name = "External Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - pixel_y = 6; - req_access_txt = "150"; - specialfunctions = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"Bp" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"BQ" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"Cm" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/obj/machinery/firealarm/directional/south, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 9 - }, -/turf/open/floor/pod/dark, -/area/ship/crew) -"Dt" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/obj/item/storage/box/syndie_kit/chameleon, -/obj/item/crowbar/red, -/obj/machinery/light/small/directional/south, -/turf/open/floor/mineral/plastitanium, -/area/ship/crew) -"Dx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"EO" = ( -/obj/structure/chair/comfy/shuttle, -/obj/machinery/airalarm/syndicate{ - pixel_y = 25 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/dark, -/area/ship/crew) -"Fa" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/obj/item/clothing/under/syndicate/combat, -/obj/item/clothing/shoes/jackboots, -/obj/item/storage/belt/military, -/obj/item/crowbar/red, -/turf/open/floor/mineral/plastitanium, -/area/ship/crew) -"Gx" = ( -/obj/machinery/airalarm/syndicate{ - dir = 4; - pixel_x = -25 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"HJ" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/sign/warning/vacuum{ - pixel_y = -32 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/obj/item/clothing/under/syndicate/combat, -/obj/item/storage/belt/military, -/turf/open/floor/mineral/plastitanium, -/area/ship/crew) -"HM" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/mob/living/simple_animal/hostile/syndicate/ranged/smg/pilot{ - environment_smash = 0 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"Ij" = ( -/obj/machinery/turretid{ - ailock = 1; - desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; - icon_state = "control_kill"; - lethal = 1; - name = "Shuttle turret control"; - pixel_y = 34; - req_access = null; - req_access_txt = "150" - }, -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"IR" = ( -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/hatch{ - id_tag = "caravansyndicate3_bolt_bridge"; - name = "Bridge"; - req_access_txt = "150" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"IU" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"Jv" = ( -/turf/template_noop, -/area/template_noop) -"KS" = ( -/obj/machinery/door/airlock/hatch{ - id_tag = "caravansyndicate3_bolt_starboard"; - name = "External Airlock"; - normalspeed = 0; - req_access_txt = "150" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ship/crew) -"Lq" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/obj/structure/sign/warning/vacuum{ - pixel_y = 32 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/shoes/sneakers/black, -/turf/open/floor/mineral/plastitanium, -/area/ship/crew) -"NH" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/obj/item/clothing/under/syndicate, -/obj/item/clothing/glasses/night, -/obj/machinery/light/small/directional/north, -/turf/open/floor/mineral/plastitanium, -/area/ship/crew) -"Pt" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/closet/crate, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/glass{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/plastitanium{ - amount = 20 - }, -/obj/item/storage/box/lights/bulbs, -/obj/item/storage/toolbox/mechanical, -/obj/item/stack/sheet/mineral/plasma{ - amount = 20 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/atmospherics/pipe/manifold4w/orange/hidden, -/turf/open/floor/plating, -/area/ship/crew) -"PL" = ( -/obj/machinery/porta_turret/syndicate/energy, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/crew) -"PY" = ( -/obj/machinery/atmospherics/components/unary/tank/toxins{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/hatch/yellow{ - dir = 4 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/ship/crew) -"Rj" = ( -/obj/machinery/porta_turret/syndicate/energy{ - dir = 1 - }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/crew) -"Sl" = ( -/obj/structure/table/reinforced, -/obj/item/storage/toolbox/emergency, -/obj/item/wrench, -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"Tn" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/crew) -"UD" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"US" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"Vf" = ( -/obj/machinery/door/airlock/hatch{ - name = "Ready Room"; - req_access_txt = "150" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"Wr" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"YU" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 10 - }, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/obj/item/clothing/under/syndicate/combat, -/turf/open/floor/mineral/plastitanium, -/area/ship/crew) -"ZB" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ship/crew) -"ZI" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/syndicate{ - anchored = 1 - }, -/obj/item/clothing/shoes/jackboots, -/obj/item/crowbar/red, -/turf/open/floor/mineral/plastitanium, -/area/ship/crew) -"ZJ" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "fuel pump" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"ZK" = ( -/obj/machinery/computer/crew{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew) -"ZZ" = ( -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/holopad/emergency/command, -/turf/open/floor/plasteel/dark, -/area/ship/crew) - -(1,1,1) = {" -ZB -Jv -dZ -dZ -dZ -Jv -ZB -"} -(2,1,1) = {" -Tn -Tn -wH -wH -wH -Tn -Tn -"} -(3,1,1) = {" -Tn -az -bN -Pt -ha -PY -Tn -"} -(4,1,1) = {" -Tn -sn -US -ZJ -BQ -ka -Tn -"} -(5,1,1) = {" -Tn -EO -ss -IU -Bp -Cm -Tn -"} -(6,1,1) = {" -Tn -sn -ss -cB -UD -rV -Tn -"} -(7,1,1) = {" -Tn -NH -Fa -cB -qE -Dt -Tn -"} -(8,1,1) = {" -Rj -Tn -Tn -Vf -Tn -Tn -PL -"} -(9,1,1) = {" -gl -xC -al -cB -bo -bB -KS -"} -(10,1,1) = {" -Tn -Lq -YU -Dx -ZI -HJ -Tn -"} -(11,1,1) = {" -Tn -Tn -Tn -IR -Tn -Tn -Tn -"} -(12,1,1) = {" -Tn -uy -Gx -cB -ZZ -Sl -Tn -"} -(13,1,1) = {" -rU -ns -Ij -HM -Wr -vw -rU -"} -(14,1,1) = {" -rU -rU -sb -rz -ZK -rU -rU -"} -(15,1,1) = {" -Jv -rU -rU -rU -rU -rU -Jv -"} diff --git a/_maps/shuttles/ruin/ruin_syndicate_fighter_shiv.dmm b/_maps/shuttles/ruin/ruin_syndicate_fighter_shiv.dmm deleted file mode 100644 index 34f45b2b62da..000000000000 --- a/_maps/shuttles/ruin/ruin_syndicate_fighter_shiv.dmm +++ /dev/null @@ -1,230 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aA" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/mob/living/simple_animal/hostile/syndicate/ranged/smg/pilot{ - environment_smash = 0 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/ship/security) -"cU" = ( -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 1 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) -"dw" = ( -/obj/machinery/porta_turret/syndicate/energy{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/orange/hidden{ - dir = 4 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) -"eC" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/mineral/plastitanium/red, -/area/ship/security) -"fh" = ( -/obj/machinery/camera/xray{ - c_tag = "External View"; - dir = 4; - network = list("caravansyndicate1"); - pixel_x = 32 - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 1 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) -"na" = ( -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) -"qx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/turretid{ - ailock = 1; - desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; - icon_state = "control_kill"; - lethal = 1; - name = "Shuttle turret control"; - pixel_x = 32; - req_access = null; - req_access_txt = "150" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "engine fuel pump" - }, -/turf/open/floor/mineral/plastitanium/red, -/area/ship/security) -"tH" = ( -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 9 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) -"tU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/security, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/ship/security) -"us" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ship/security) -"uW" = ( -/obj/machinery/button/door{ - id = "caravansyndicate1_bolt"; - name = "External Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - req_access_txt = "150"; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/frame/computer{ - anchored = 1; - - }, -/turf/open/floor/mineral/plastitanium/red, -/area/ship/security) -"vD" = ( -/obj/machinery/porta_turret/syndicate/energy{ - dir = 4 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) -"vK" = ( -/obj/machinery/power/apc/highcap/fifteen_k{ - dir = 8; - name = "Syndicate Fighter APC"; - pixel_x = -25; - req_access_txt = "150" - }, -/obj/machinery/computer/helm{ - dir = 1 - }, -/obj/item/radio/intercom/wideband/directional/north, -/turf/open/floor/mineral/plastitanium/red, -/area/ship/security) -"wV" = ( -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/hatch{ - id_tag = "caravansyndicate1_bolt"; - name = "External Airlock"; - normalspeed = 0; - req_access_txt = "150" - }, -/obj/effect/decal/cleanable/dirt, -/obj/docking_port/mobile{ - callTime = 50; - dir = 4; - dwidth = 4; - height = 5; - ignitionTime = 25; - name = "Syndicate Fighter"; - port_direction = 2; - preferred_direction = 4; - width = 9 - }, -/turf/open/floor/plating, -/area/ship/security) -"zu" = ( -/obj/machinery/porta_turret/syndicate/energy{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 1 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) -"Fs" = ( -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 10 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) -"Jv" = ( -/turf/template_noop, -/area/template_noop) -"YP" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) -"YX" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ship/security) - -(1,1,1) = {" -Jv -us -YX -YX -wV -YX -YX -us -Jv -"} -(2,1,1) = {" -Jv -YP -YX -uW -aA -vK -YX -YP -Jv -"} -(3,1,1) = {" -YX -na -YX -tU -qx -eC -YX -na -YX -"} -(4,1,1) = {" -YX -Fs -cU -dw -fh -zu -cU -tH -YX -"} -(5,1,1) = {" -vD -Jv -Jv -Jv -Jv -Jv -Jv -Jv -vD -"} diff --git a/_maps/shuttles/ruin/ruin_syndicate_interceptor.dmm b/_maps/shuttles/ruin/ruin_syndicate_interceptor.dmm deleted file mode 100644 index d08a43ace5fb..000000000000 --- a/_maps/shuttles/ruin/ruin_syndicate_interceptor.dmm +++ /dev/null @@ -1,267 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"b" = ( -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) -"c" = ( -/obj/structure/chair/comfy/shuttle{ - name = "Grav Couch"; - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/ship/bridge) -"h" = ( -/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, -/obj/machinery/door/poddoor/preopen{ - id = "jbs04EM" - }, -/turf/open/floor/plating, -/area/ship/bridge) -"i" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 9 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"n" = ( -/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"s" = ( -/obj/machinery/atmospherics/pipe/manifold/orange{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"u" = ( -/obj/machinery/atmospherics/components/unary/tank/toxins{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"v" = ( -/obj/structure/sign/syndicate, -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) -"B" = ( -/obj/structure/sign/syndicate, -/obj/docking_port/mobile{ - dir = 4; - port_direction = 4; - preferred_direction = 2 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) -"D" = ( -/obj/machinery/atmospherics/pipe/manifold/orange{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/plating, -/area/ship/bridge) -"E" = ( -/obj/machinery/door/airlock/external, -/obj/machinery/door/poddoor/preopen{ - id = "jbs04EM" - }, -/turf/open/floor/plating, -/area/ship/bridge) -"F" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/obj/item/clothing/suit/space/pilot, -/obj/item/clothing/head/helmet/space/pilot, -/obj/item/tank/jetpack/oxygen, -/obj/machinery/door/poddoor/preopen{ - id = "jbs04EM" - }, -/obj/machinery/suit_storage_unit/inherit, -/turf/open/floor/plating, -/area/ship/bridge) -"I" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, -/obj/structure/window/plasma/reinforced{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ship/bridge) -"L" = ( -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/bridge) -"M" = ( -/obj/structure{ - desc = "A devastating strike weapon of times past. The mountings seem broken now."; - dir = 4; - icon = 'icons/mecha/mecha_equipment.dmi'; - icon_state = "mecha_missilerack_six"; - name = "ancient missile rack"; - pixel_x = 7; - pixel_y = 11 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) -"N" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 4 - }, -/turf/open/floor/engine/hull, -/area/ship/bridge) -"O" = ( -/obj/structure{ - desc = "A formerly deadly laser cannon, now stuck rusting on a fightercraft."; - dir = 4; - icon = 'icons/obj/turrets.dmi'; - icon_state = "syndie_off"; - name = "defunct laser cannon"; - pixel_x = 8 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) -"Q" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 9 - }, -/obj/effect/turf_decal/number/zero{ - pixel_x = -6 - }, -/obj/effect/turf_decal/number/four{ - pixel_x = 6 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) -"V" = ( -/obj/machinery/computer/helm{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ship/bridge) -"W" = ( -/obj/structure{ - desc = "A devastating strike weapon of times past. The mountings seem broken now."; - dir = 4; - icon = 'icons/mecha/mecha_equipment.dmi'; - icon_state = "mecha_missilerack_six"; - name = "ancient missile rack"; - pixel_x = 7; - pixel_y = -5 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) -"X" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 10 - }, -/turf/closed/wall/mineral/plastitanium, -/area/ship/bridge) -"Y" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/button/door{ - pixel_y = 26; - pixel_x = 5; - id = "jbs04EM"; - name = "Emergency Lockdown" - }, -/turf/open/floor/mineral/plastitanium, -/area/ship/bridge) - -(1,1,1) = {" -a -a -a -B -a -a -a -"} -(2,1,1) = {" -a -a -N -b -N -a -a -"} -(3,1,1) = {" -O -L -I -b -I -L -O -"} -(4,1,1) = {" -a -n -s -D -i -b -a -"} -(5,1,1) = {" -a -W -L -u -L -M -a -"} -(6,1,1) = {" -a -a -X -F -Q -a -a -"} -(7,1,1) = {" -a -a -b -Y -E -a -a -"} -(8,1,1) = {" -a -a -v -c -v -a -a -"} -(9,1,1) = {" -a -a -h -V -h -a -a -"} -(10,1,1) = {" -a -a -h -h -h -a -a -"} diff --git a/_maps/shuttles/shiptest/solgov_chronicle.dmm b/_maps/shuttles/solgov/solgov_chronicle.dmm similarity index 99% rename from _maps/shuttles/shiptest/solgov_chronicle.dmm rename to _maps/shuttles/solgov/solgov_chronicle.dmm index a501fcd211f5..56b5e7d3df8a 100644 --- a/_maps/shuttles/shiptest/solgov_chronicle.dmm +++ b/_maps/shuttles/solgov/solgov_chronicle.dmm @@ -175,8 +175,7 @@ /area/ship/cargo) "bs" = ( /obj/machinery/telecomms/broadcaster/preset_left{ - network = "SolNet"; - pixel_y = 0 + network = "SolNet" }, /obj/machinery/door/window/brigdoor/northright{ dir = 2; @@ -676,7 +675,6 @@ /area/ship/cargo) "gi" = ( /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#543C30" }, /obj/structure/railing/wood{ @@ -759,7 +757,6 @@ "hp" = ( /obj/structure/table/wood, /obj/structure/railing/wood{ - dir = 2; color = "#792f27" }, /obj/item/reagent_containers/food/snacks/grown/cabbage{ @@ -1833,7 +1830,6 @@ /area/ship/cargo) "sq" = ( /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#543C30" }, /obj/structure/cable{ @@ -1875,7 +1871,6 @@ /area/ship/security/armory) "sz" = ( /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#543C30" }, /obj/structure/railing/wood{ @@ -2001,7 +1996,6 @@ req_one_access = list(61,11) }, /obj/machinery/telecomms/message_server{ - pixel_y = 0; autolinkers = list("solgovPDA"); network = "SolNet"; calibrating = 0 @@ -2087,7 +2081,6 @@ /area/ship/engineering) "uK" = ( /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#543C30" }, /obj/structure/cable{ @@ -2240,7 +2233,6 @@ /obj/item/kirbyplants{ icon_state = "plant-11"; pixel_x = 10; - pixel_y = 0; layer = 2.89 }, /obj/structure/table/wood/fancy/purple, @@ -2571,9 +2563,6 @@ /obj/effect/turf_decal/atmos/oxygen{ layer = 2.04 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, @@ -2581,6 +2570,9 @@ dir = 1 }, /obj/effect/turf_decal/techfloor/orange, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, /turf/open/floor/plasteel/tech/grid, /area/ship/engineering/engine) "zs" = ( @@ -2804,7 +2796,6 @@ /obj/machinery/telecomms/processor{ autolinkers = list("processor7"); network = "SolNet"; - pixel_y = 0; id = "Processor" }, /obj/structure/window/reinforced, @@ -3026,7 +3017,6 @@ /area/ship/crew/office) "Ds" = ( /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#543C30" }, /obj/structure/cable{ @@ -3070,7 +3060,6 @@ }, /obj/machinery/firealarm/directional/north, /obj/machinery/light_switch{ - dir = 2; pixel_y = 22; pixel_x = -12 }, @@ -3220,7 +3209,6 @@ icon_state = "0-8" }, /obj/machinery/light_switch{ - dir = 2; pixel_y = 22; pixel_x = -12 }, @@ -3544,8 +3532,7 @@ "IH" = ( /obj/machinery/telecomms/server/presets/solgov{ autolinkers = list("solgov","sproingle"); - network = "SolNet"; - pixel_y = 0 + network = "SolNet" }, /obj/machinery/door/window/brigdoor/northleft{ dir = 2; @@ -3722,7 +3709,6 @@ /area/ship/engineering) "Kc" = ( /obj/effect/turf_decal/siding/wood{ - dir = 2; color = "#543C30" }, /obj/structure/cable{ @@ -3746,9 +3732,7 @@ /obj/effect/turf_decal/spline/fancy/wood{ dir = 4 }, -/obj/effect/turf_decal/siding/wood/end{ - dir = 2 - }, +/obj/effect/turf_decal/siding/wood/end, /obj/structure/fluff/hedge, /turf/open/floor/wood/walnut, /area/ship/crew/crewtwo) @@ -4016,7 +4000,6 @@ "Nu" = ( /obj/structure/table/wood, /obj/structure/railing/wood{ - dir = 2; color = "#792f27" }, /obj/machinery/light/small/directional/west, @@ -4117,8 +4100,7 @@ pixel_y = -1 }, /obj/item/folder/solgov{ - pixel_x = 4; - pixel_y = 0 + pixel_x = 4 }, /obj/item/pen/solgov{ pixel_x = 2 @@ -4493,7 +4475,6 @@ dir = 8 }, /obj/machinery/light_switch{ - dir = 2; pixel_y = 22; pixel_x = -12 }, @@ -4560,7 +4541,6 @@ "SJ" = ( /obj/machinery/telecomms/receiver/preset_left{ network = "SolNet"; - pixel_y = 0; id = "Receiver" }, /obj/structure/window/reinforced{ @@ -4585,8 +4565,7 @@ pixel_y = -1 }, /obj/item/folder/solgov{ - pixel_x = 4; - pixel_y = 0 + pixel_x = 4 }, /obj/item/pen/solgov{ pixel_x = 2 @@ -5157,7 +5136,6 @@ dir = 8 }, /obj/machinery/light_switch{ - dir = 2; pixel_y = 22; pixel_x = -12 }, diff --git a/_maps/shuttles/shiptest/solgov_paracelsus.dmm b/_maps/shuttles/solgov/solgov_paracelsus.dmm similarity index 99% rename from _maps/shuttles/shiptest/solgov_paracelsus.dmm rename to _maps/shuttles/solgov/solgov_paracelsus.dmm index d687b8decc11..2f32c88fb163 100644 --- a/_maps/shuttles/shiptest/solgov_paracelsus.dmm +++ b/_maps/shuttles/solgov/solgov_paracelsus.dmm @@ -762,6 +762,8 @@ /obj/machinery/light/small/directional/east, /obj/item/clothing/under/solgov/formal/skirt, /obj/item/clothing/suit/solgov/suit, +/obj/item/clothing/suit/hooded/wintercoat/solgov, +/obj/item/clothing/suit/hooded/wintercoat/solgov, /turf/open/floor/wood/ebony, /area/ship/crew/dorm) "if" = ( @@ -800,6 +802,7 @@ }, /obj/structure/window/reinforced, /obj/effect/turf_decal/industrial/outline/red, +/obj/item/clothing/glasses/meson/prescription, /turf/open/floor/plasteel/mono, /area/ship/cargo) "ip" = ( @@ -1658,6 +1661,7 @@ dir = 1 }, /obj/effect/turf_decal/industrial/outline/red, +/obj/item/clothing/glasses/meson/prescription, /turf/open/floor/plasteel/mono, /area/ship/cargo) "qH" = ( @@ -1738,6 +1742,7 @@ /obj/item/folder/solgov, /obj/item/clipboard, /obj/item/pen/solgov, +/obj/item/clothing/glasses/meson/prescription, /turf/open/floor/plasteel/tech/techmaint, /area/ship/maintenance/port) "re" = ( @@ -2043,6 +2048,9 @@ dir = 4 }, /obj/effect/turf_decal/industrial/outline/yellow, +/obj/item/folder/solgov, +/obj/item/folder/solgov, +/obj/item/folder/solgov, /turf/open/floor/plasteel/mono, /area/ship/cargo/office) "uO" = ( @@ -2225,7 +2233,7 @@ /area/ship/cargo/office) "wk" = ( /obj/machinery/door/airlock/solgov{ - name = "Bridge"; + name = "Psychologist Office"; id_tag = "sg_par_psychlock" }, /obj/effect/turf_decal/industrial/warning{ @@ -2331,6 +2339,7 @@ "wR" = ( /obj/item/clothing/gloves/color/latex/nitrile, /obj/structure/table/glass, +/obj/item/storage/box/rxglasses, /obj/machinery/door/window/southleft{ dir = 8 }, @@ -3008,6 +3017,9 @@ /obj/structure/table/wood, /obj/item/paper_bin, /obj/item/pen/solgov, +/obj/item/folder/solgov{ + pixel_x = -16 + }, /turf/open/floor/wood/ebony, /area/ship/crew/crewtwo) "DD" = ( @@ -3580,17 +3592,6 @@ "Jw" = ( /turf/open/floor/plating, /area/ship/external/dark) -"JD" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile/shuttle, -/obj/structure/table/wood, -/obj/item/toy/plush/blahaj, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "sg_par_psych" - }, -/turf/open/floor/plating, -/area/ship/crew/office) "JI" = ( /obj/effect/turf_decal/trimline/opaque/solgovblue/filled/corner{ dir = 1 @@ -3978,6 +3979,7 @@ /obj/item/reagent_containers/food/condiment/soymilk, /obj/item/reagent_containers/food/condiment/soymilk, /obj/item/storage/fancy/egg_box, +/obj/item/reagent_containers/food/condiment/enzyme, /turf/open/floor/wood/ebony, /area/ship/crew/canteen) "MO" = ( @@ -4265,15 +4267,16 @@ /obj/item/stack/sheet/mineral/wood/fifty, /obj/item/clothing/under/solgov/formal, /obj/item/clothing/shoes/laceup, +/obj/item/folder/solgov, /obj/item/clothing/neck/stripedsolgovscarf, /obj/item/clothing/gloves/color/black, /obj/item/pen/solgov, /obj/item/clothing/glasses/regular, /obj/item/toy/plush/blahaj, /obj/item/lighter, -/obj/item/folder/solgov, /obj/item/clothing/under/solgov/formal/skirt, /obj/item/clothing/suit/solgov/suit, +/obj/item/folder/solgov, /obj/item/clothing/head/fedora/solgov, /turf/open/floor/carpet/royalblue, /area/ship/crew/office) @@ -4430,6 +4433,8 @@ }, /obj/item/clothing/under/solgov/formal/skirt, /obj/item/clothing/suit/solgov/suit, +/obj/item/clothing/suit/hooded/wintercoat/solgov, +/obj/item/clothing/suit/hooded/wintercoat/solgov, /turf/open/floor/wood/ebony, /area/ship/crew/dorm) "QQ" = ( @@ -5141,7 +5146,7 @@ dir = 8 }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "0-2" }, /turf/open/floor/plasteel/tech/techmaint, /area/ship/maintenance/port) @@ -6018,7 +6023,7 @@ Ik XF dq YA -JD +YJ RI qf MF diff --git a/_maps/shuttles/subshuttles/Subshuttle Catalog.txt b/_maps/shuttles/subshuttles/Subshuttle Catalog.txt index 210d55b3228d..1d48dbc85f03 100644 --- a/_maps/shuttles/subshuttles/Subshuttle Catalog.txt +++ b/_maps/shuttles/subshuttles/Subshuttle Catalog.txt @@ -3,6 +3,11 @@ Size = "1x3" Purpose = "Showing people how to fill this document in" File Path = "_maps\shuttles\subshuttles\example.dmm" +Name = "Gut Combat Freighter" +Size = "7x15" +Purpose = "Transporting goods, while fending for itself" +File Path = "_maps\shuttles\subshuttles\frontiersmen_gut" + Name = "Kunai Dropship" Size = "12x7" Purpose = "A multi-role dropship used by almost every group faring space. Its ease of manufacture and high mobility makes it ideal for transport." @@ -27,3 +32,8 @@ Name = "Superpill" Size = "1x3" Purpose = "A horrid merger of engineering platform and pill" File Path = "_maps\shuttles\subshuttles\independant_pill.dmm" + +Name = "Falcon Dropship" +Size = "13x7" +Purpose = "A Nanotrasen dropship, primarily used by Heron-Class carriers." +File Path = "_maps\shuttles\subshuttles\nanotrasen_falcon.dmm" diff --git a/_maps/shuttles/subshuttles/frontiersmen_gut.dmm b/_maps/shuttles/subshuttles/frontiersmen_gut.dmm new file mode 100644 index 000000000000..cf1571f9d7d4 --- /dev/null +++ b/_maps/shuttles/subshuttles/frontiersmen_gut.dmm @@ -0,0 +1,810 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ab" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"aF" = ( +/obj/effect/turf_decal/techfloor, +/obj/structure/closet/crate, +/obj/item/clothing/suit/space/nasavoid/old, +/obj/item/clothing/head/helmet/space/nasavoid/old, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/clothing/mask/gas, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"bD" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"bY" = ( +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "2-5" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"ci" = ( +/obj/machinery/door/window/brigdoor/southright{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"cA" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"dJ" = ( +/obj/machinery/porta_turret/ship/ballistic{ + dir = 5 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ship/storage) +"eo" = ( +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"fh" = ( +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + id = "gut_holo"; + dir = 1 + }, +/obj/machinery/button/shieldwallgen{ + dir = 1; + id = "gut_holo"; + pixel_x = 8; + pixel_y = -21 + }, +/obj/machinery/button/door{ + id = "gut_cargo"; + name = "Cargo Door Control"; + pixel_y = -22; + dir = 1 + }, +/obj/machinery/door/poddoor/shutters{ + id = "gut_cargo"; + name = "Blast Shutters"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-5" + }, +/turf/open/floor/engine/hull/interior, +/area/ship/storage) +"gz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-10" + }, +/obj/structure/cable{ + icon_state = "4-9" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"gH" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"hl" = ( +/obj/machinery/power/shuttle/engine/electric{ + dir = 1 + }, +/obj/machinery/door/poddoor{ + id = "gut_engines"; + name = "Thruster Blast Door" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ship/storage) +"hu" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack, +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/carbine, +/obj/structure/closet/crate/secure/weapon, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"ii" = ( +/turf/closed/wall/mineral/plastitanium, +/area/ship/storage) +"ju" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/smes/shuttle/precharged{ + dir = 1 + }, +/obj/structure/window/plasma/reinforced/spawner, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage) +"li" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/wrapping, +/obj/structure/cable{ + icon_state = "6-8" + }, +/obj/machinery/power/terminal, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/industrial/warning, +/obj/item/storage/toolbox/syndicate{ + pixel_y = 5; + pixel_x = 11 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage) +"mj" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"nj" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/secure/gear, +/obj/item/gun/ballistic/automatic/smg/aks74u{ + pixel_y = -6 + }, +/obj/item/gun/ballistic/automatic/zip_pistol, +/obj/item/gun/ballistic/automatic/zip_pistol, +/obj/item/gun/ballistic/automatic/zip_pistol, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"nA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"ov" = ( +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + id = "gut_holo" + }, +/obj/machinery/door/poddoor/shutters{ + id = "gut_cargo"; + name = "Blast Shutters"; + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-6" + }, +/turf/open/floor/engine/hull/interior, +/area/ship/storage) +"oX" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8; + color = "#808080" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"qh" = ( +/obj/structure/window/reinforced/spawner/east, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"qu" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/storage) +"qE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-10" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"qI" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable/yellow{ + icon_state = "4-9" + }, +/obj/structure/cable{ + icon_state = "5-10" + }, +/obj/machinery/power/terminal, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/industrial/warning, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/item/stack/cable_coil/red{ + pixel_x = 8; + pixel_y = 5 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage) +"rn" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"rv" = ( +/turf/template_noop, +/area/template_noop) +"sj" = ( +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/machinery/computer/helm, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage) +"sk" = ( +/turf/open/floor/plasteel/stairs{ + dir = 1 + }, +/area/ship/storage) +"sP" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-5" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"tj" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8; + color = "#808080" + }, +/obj/effect/decal/cleanable/vomit/old{ + pixel_y = 6 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/light/directional/east, +/obj/machinery/power/apc/auto_name/directional/north, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"ue" = ( +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/machinery/computer/crew, +/obj/machinery/light_switch{ + pixel_y = 21; + pixel_x = -10 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage) +"uh" = ( +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage) +"uA" = ( +/obj/machinery/power/port_gen/pacman/super, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/button/door{ + id = "gut_engines"; + name = "Engine Shutters"; + pixel_y = -22; + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage) +"vg" = ( +/obj/structure/window/reinforced/spawner/east, +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/structure/closet/crate/secure/weapon, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_x = 2 + }, +/obj/item/grenade/chem_grenade/metalfoam{ + pixel_x = 6 + }, +/obj/item/grenade/empgrenade{ + pixel_x = -4 + }, +/obj/item/grenade/frag, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"vJ" = ( +/obj/machinery/porta_turret/ship/ballistic{ + dir = 9 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ship/storage) +"xU" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/effect/turf_decal/industrial/radiation{ + dir = 5 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage) +"yz" = ( +/obj/machinery/door/poddoor/shutters{ + id = "gut_cargo"; + name = "Blast Shutters"; + dir = 4 + }, +/turf/open/floor/engine/hull/interior, +/area/ship/storage) +"Bl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-10" + }, +/obj/structure/cable{ + icon_state = "2-10" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"Dr" = ( +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 1 + }, +/area/ship/storage) +"Ds" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/poddoor{ + id = "gut_launchdoor" + }, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/storage) +"Dz" = ( +/obj/structure/cable/yellow{ + icon_state = "6-8" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"EP" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"GH" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/button/massdriver{ + id = "gut_launchdoor"; + name = "Cannon Button"; + pixel_x = 21; + pixel_y = 8; + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"GQ" = ( +/obj/machinery/porta_turret/ship/ballistic{ + dir = 5 + }, +/turf/closed/wall/mineral/plastitanium, +/area/ship/storage) +"HT" = ( +/obj/machinery/mass_driver{ + dir = 1; + id = "gut_launchdoor" + }, +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/storage) +"Ih" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "4-10" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"IE" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"JX" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/decal/cleanable/oil{ + pixel_x = 8; + pixel_y = 12 + }, +/obj/machinery/power/smes/shuttle/precharged{ + dir = 1 + }, +/obj/structure/window/plasma/reinforced/spawner, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage) +"Ls" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage) +"MF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"MG" = ( +/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, +/turf/open/floor/plating, +/area/ship/storage) +"Ny" = ( +/turf/open/floor/engine/hull/reinforced/interior, +/area/ship/storage) +"QL" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning, +/obj/machinery/power/smes/shuttle/precharged{ + dir = 1 + }, +/obj/structure/window/plasma/reinforced/spawner, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage) +"Rx" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8; + color = "#808080" + }, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"RY" = ( +/obj/machinery/porta_turret/ship/ballistic{ + dir = 9 + }, +/turf/closed/wall/mineral/plastitanium, +/area/ship/storage) +"SO" = ( +/obj/machinery/power/terminal, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"Tq" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/obj/docking_port/mobile{ + dir = 4; + launch_status = 0; + port_direction = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"Uc" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/effect/decal/cleanable/plastic, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/power/terminal, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/industrial/warning, +/obj/structure/cable{ + icon_state = "0-1" + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage) +"Ui" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8; + color = "#808080" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"UA" = ( +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/industrial/loading{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"UB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"Xf" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ship/storage) +"Xr" = ( +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage) +"XD" = ( +/obj/machinery/power/shuttle/engine/electric{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/door/poddoor{ + id = "gut_engines"; + name = "Thruster Blast Door" + }, +/turf/open/floor/plating, +/area/ship/storage) +"Yn" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/stairs{ + dir = 1 + }, +/area/ship/storage) +"ZR" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 1; + name = "tactical chair" + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage) + +(1,1,1) = {" +vJ +ov +yz +fh +Xf +rv +rv +RY +MG +MG +MG +Xf +Xf +ii +rv +"} +(2,1,1) = {" +Xf +Tq +gz +aF +Xf +Xf +Xf +Xf +sj +ZR +Dr +SO +xU +Xf +Xf +"} +(3,1,1) = {" +Xf +EP +nA +UA +Ls +nj +hu +Xf +ue +uh +Dr +Dz +li +ju +hl +"} +(4,1,1) = {" +Xf +rn +MF +gH +mj +IE +cA +Yn +Xr +eo +bY +sP +qI +JX +XD +"} +(5,1,1) = {" +Xf +vg +qh +ci +GH +ab +bD +sk +UB +Ih +qE +Bl +Uc +QL +XD +"} +(6,1,1) = {" +Ds +qu +Ny +HT +Xf +Xf +Xf +Xf +tj +oX +Ui +Rx +uA +Xf +Xf +"} +(7,1,1) = {" +dJ +Xf +Xf +Xf +Xf +rv +rv +GQ +Xf +Xf +Xf +Xf +Xf +ii +rv +"} diff --git a/_maps/shuttles/subshuttles/independent_sugarcube.dmm b/_maps/shuttles/subshuttles/independent_sugarcube.dmm index 0765373b95f4..865e0da78091 100644 --- a/_maps/shuttles/subshuttles/independent_sugarcube.dmm +++ b/_maps/shuttles/subshuttles/independent_sugarcube.dmm @@ -56,8 +56,8 @@ /turf/open/floor/plating, /area/ship/engineering) "h" = ( -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/item/trash/cheesie, /obj/item/trash/cheesie, /obj/item/trash/candy, diff --git a/_maps/shuttles/subshuttles/independent_superpill.dmm b/_maps/shuttles/subshuttles/independent_superpill.dmm index 9677aeafed5e..fc0dacddc501 100644 --- a/_maps/shuttles/subshuttles/independent_superpill.dmm +++ b/_maps/shuttles/subshuttles/independent_superpill.dmm @@ -52,9 +52,6 @@ /obj/structure/cable{ icon_state = "0-4" }, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer2, /obj/machinery/atmospherics/pipe/simple/general/visible/layer4, /obj/machinery/atmospherics/pipe/simple/general/visible, @@ -182,10 +179,6 @@ /obj/machinery/door/window{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4; - piping_layer = 5 - }, /obj/structure/window/reinforced/tinted{ dir = 4 }, @@ -206,6 +199,9 @@ /obj/item/tank/internals/emergency_oxygen, /obj/item/clothing/head/helmet/space/orange, /obj/item/tank/internals/plasma/full, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, /turf/open/floor/plasteel/tech/grid, /area/ship/storage) diff --git a/_maps/shuttles/subshuttles/nanotrasen_falcon.dmm b/_maps/shuttles/subshuttles/nanotrasen_falcon.dmm new file mode 100644 index 000000000000..566469a7e219 --- /dev/null +++ b/_maps/shuttles/subshuttles/nanotrasen_falcon.dmm @@ -0,0 +1,677 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/machinery/computer/security{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage/eva) +"b" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/holopad/emergency/command, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage/eva) +"c" = ( +/obj/item/gps/computer{ + pixel_y = -20 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage/eva) +"d" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "tactical chair" + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"e" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage/eva) +"f" = ( +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 10 + }, +/obj/machinery/power/smes/engineering, +/obj/structure/cable{ + icon_state = "0-10" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 10 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage/eva) +"g" = ( +/turf/closed/wall/mineral/plastitanium, +/area/ship/storage/eva) +"h" = ( +/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/orange/hidden{ + dir = 8 + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage/eva) +"i" = ( +/obj/effect/turf_decal/steeldecal/steel_decals6, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage/eva) +"j" = ( +/obj/machinery/computer/helm{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage/eva) +"k" = ( +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/camera{ + dir = 5 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/storage/eva) +"l" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10, +/obj/effect/turf_decal/techfloor/corner{ + dir = 1; + pixel_y = -16 + }, +/obj/machinery/light_switch{ + pixel_x = -22; + dir = 4; + pixel_y = 8 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage/eva) +"m" = ( +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/storage/eva) +"n" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ship/storage/eva) +"o" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/wallmed{ + pixel_y = -28 + }, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"p" = ( +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 9 + }, +/obj/structure/cable/yellow, +/obj/machinery/power/port_gen/pacman, +/obj/effect/turf_decal/industrial/warning{ + dir = 9 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage/eva) +"r" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "tactical chair" + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"s" = ( +/obj/structure/window/reinforced/survival_pod/spawner/west, +/obj/machinery/atmospherics/components/unary/shuttle/heater{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor/orange, +/turf/open/floor/plasteel/tech, +/area/ship/storage/eva) +"t" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/storage/eva) +"v" = ( +/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1{ + dir = 8 + }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "engine fuel pump" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10, +/obj/machinery/door/airlock/grunge{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage/eva) +"w" = ( +/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/poddoor{ + id = "heron_subshuttle_bridge" + }, +/turf/open/floor/plating, +/area/ship/storage/eva) +"y" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 + }, +/obj/machinery/power/shieldwallgen/atmos{ + anchored = 1; + dir = 4; + id = "heron_subshuttle2"; + locked = 1 + }, +/obj/structure/cable{ + icon_state = "0-1" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/poddoor/shutters{ + id = "heron_subshuttle22"; + name = "Blast Shutters" + }, +/obj/machinery/button/shieldwallgen{ + id = "heron_subshuttle2"; + pixel_x = -21; + pixel_y = -8; + dir = 4 + }, +/obj/machinery/button/door{ + id = "heron_subshuttle22"; + name = "Access Shutters"; + pixel_x = -23; + dir = 4 + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/storage/eva) +"z" = ( +/turf/template_noop, +/area/template_noop) +"A" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 + }, +/obj/machinery/power/shieldwallgen/atmos{ + anchored = 1; + dir = 4; + id = "heron_subshuttle1"; + locked = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/atmospherics/components/binary/valve{ + dir = 1; + name = "Shuttle Fuel Valve" + }, +/obj/machinery/door/poddoor/shutters{ + id = "heron_subshuttle11"; + name = "Blast Shutters" + }, +/obj/machinery/button/door{ + id = "heron_subshuttle11"; + name = "Access Shutters"; + pixel_x = -23; + dir = 4 + }, +/obj/machinery/button/shieldwallgen{ + id = "heron_subshuttle1"; + pixel_x = -21; + pixel_y = 8; + dir = 4 + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/storage/eva) +"B" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "tactical chair" + }, +/obj/structure/railing{ + dir = 8; + layer = 4.1 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"C" = ( +/obj/structure/window/reinforced/survival_pod/spawner/west, +/obj/machinery/atmospherics/components/unary/tank/toxins{ + dir = 4; + piping_layer = 1 + }, +/obj/structure/cable{ + icon_state = "4-5" + }, +/obj/effect/turf_decal/steeldecal/steel_decals3, +/obj/effect/turf_decal/steeldecal/steel_decals3{ + dir = 6 + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage/eva) +"D" = ( +/obj/machinery/power/shuttle/engine/fueled/plasma{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id = "heron_subshuttle_engines"; + name = "Thruster Blast Door"; + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/storage/eva) +"E" = ( +/obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/poddoor{ + id = "heron_subshuttle_bridge"; + dir = 8 + }, +/turf/open/floor/plating, +/area/ship/storage/eva) +"F" = ( +/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "2-5" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/storage/eva) +"G" = ( +/obj/machinery/computer/crew/syndie{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage/eva) +"H" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage/eva) +"I" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"J" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/storage/eva) +"K" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"L" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 + }, +/obj/machinery/power/shieldwallgen/atmos{ + anchored = 1; + dir = 8; + id = "heron_subshuttle1"; + locked = 1 + }, +/obj/structure/cable{ + icon_state = "0-10" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/docking_port/mobile{ + dir = 2; + port_direction = 8; + preferred_direction = 4 + }, +/obj/machinery/door/poddoor/shutters{ + id = "heron_subshuttle11"; + name = "Blast Shutters" + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/storage/eva) +"M" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/orange/hidden{ + dir = 9 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage/eva) +"N" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/plasma, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/storage/eva) +"O" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass{ + pixel_x = 8; + pixel_y = 20 + }, +/obj/structure/cable{ + icon_state = "1-6" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/storage/eva) +"P" = ( +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/gps{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/machinery/button/door{ + id = "heron_subshuttle_bridge"; + name = "Bridge Shutters"; + pixel_x = 6; + pixel_y = 7; + dir = 1 + }, +/obj/machinery/button/door{ + id = "heron_subshuttle_engines"; + name = "Engine Shutters"; + pixel_x = 6; + pixel_y = -1; + dir = 1 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage/eva) +"Q" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/stairs{ + icon = 'icons/obj/stairs.dmi'; + dir = 8 + }, +/area/ship/storage/eva) +"R" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 + }, +/obj/machinery/power/shieldwallgen/atmos{ + anchored = 1; + dir = 8; + id = "heron_subshuttle2"; + locked = 1 + }, +/obj/structure/cable{ + icon_state = "0-9" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/poddoor/shutters{ + id = "heron_subshuttle22"; + name = "Blast Shutters" + }, +/turf/open/floor/plasteel/patterned/ridged, +/area/ship/storage/eva) +"S" = ( +/obj/structure/window/reinforced/survival_pod/spawner/west, +/obj/machinery/atmospherics/components/unary/shuttle/heater{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor/orange{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/storage/eva) +"T" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "tactical chair" + }, +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/steeldecal/steel_decals10, +/obj/effect/turf_decal/techfloor/corner{ + dir = 8; + pixel_y = 16 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/storage/eva) +"U" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/storage/eva) +"X" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/storage/eva) +"Z" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/storage/eva) + +(1,1,1) = {" +z +n +D +n +D +n +z +"} +(2,1,1) = {" +z +n +S +C +s +n +z +"} +(3,1,1) = {" +n +n +f +h +p +n +n +"} +(4,1,1) = {" +n +n +n +v +n +n +n +"} +(5,1,1) = {" +A +F +k +M +U +O +y +"} +(6,1,1) = {" +L +N +X +e +X +X +R +"} +(7,1,1) = {" +n +B +r +Z +B +d +n +"} +(8,1,1) = {" +n +m +J +b +J +t +n +"} +(9,1,1) = {" +n +K +I +H +I +o +n +"} +(10,1,1) = {" +n +n +n +Q +n +n +n +"} +(11,1,1) = {" +w +c +l +i +T +P +w +"} +(12,1,1) = {" +g +n +G +j +a +n +g +"} +(13,1,1) = {" +z +g +E +E +E +g +z +"} diff --git a/_maps/shuttles/shiptest/syndicate_aegis.dmm b/_maps/shuttles/syndicate/syndicate_aegis.dmm similarity index 99% rename from _maps/shuttles/shiptest/syndicate_aegis.dmm rename to _maps/shuttles/syndicate/syndicate_aegis.dmm index 6f807bf52bd3..94ce81e53d3d 100644 --- a/_maps/shuttles/shiptest/syndicate_aegis.dmm +++ b/_maps/shuttles/syndicate/syndicate_aegis.dmm @@ -499,6 +499,28 @@ }, /turf/open/floor/wood/walnut, /area/ship/bridge) +"dB" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/closet/firecloset/wall{ + pixel_y = 29 + }, +/obj/structure/catwalk/over, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/orange/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ship/engineering) "dH" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -709,25 +731,6 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/plasteel/tech/techmaint, /area/ship/engineering) -"fH" = ( -/obj/structure/table/wood/reinforced, -/obj/item/storage/fancy/cigarettes/cigpack_syndicate{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/item/storage/fancy/cigarettes/cigpack_syndicate{ - pixel_x = 11; - pixel_y = 9 - }, -/obj/item/radio/intercom/wideband/directional/north, -/obj/machinery/fax, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium/red{ - icon_state = "plastitanium" - }, -/area/ship/bridge) "fJ" = ( /obj/structure/closet/wall/orange{ name = "fuel locker"; @@ -2313,6 +2316,11 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/ship/hallway/central) +"up" = ( +/obj/machinery/light/directional/north, +/obj/structure/chair/sofa/left, +/turf/open/floor/carpet/red, +/area/ship/crew/canteen) "uA" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -2711,31 +2719,6 @@ /obj/item/storage/toolbox/mechanical, /turf/open/floor/plasteel/tech/techmaint, /area/ship/engineering) -"yu" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 8 - }, -/obj/structure/closet/firecloset/wall{ - pixel_y = 29 - }, -/obj/structure/catwalk/over, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/manifold/orange/hidden{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ship/engineering) "yA" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -3196,14 +3179,6 @@ }, /turf/open/floor/carpet/red, /area/ship/crew/canteen) -"Ez" = ( -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/obj/structure/chair/sofa/left, -/turf/open/floor/carpet/red, -/area/ship/crew/canteen) "EJ" = ( /obj/machinery/power/shuttle/engine/fueled/plasma{ dir = 1 @@ -4264,6 +4239,25 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/ship/hallway/central) +"OW" = ( +/obj/structure/table/wood/reinforced, +/obj/item/storage/fancy/cigarettes/cigpack_syndicate{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/storage/fancy/cigarettes/cigpack_syndicate{ + pixel_x = 11; + pixel_y = 9 + }, +/obj/item/radio/intercom/wideband/directional/north, +/obj/machinery/fax, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/mineral/plastitanium/red{ + icon_state = "plastitanium" + }, +/area/ship/bridge) "Pc" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5585,7 +5579,7 @@ xO go qM hl -Ez +up iO Ee aP @@ -5925,7 +5919,7 @@ wk wk gq uM -fH +OW jW kI uM @@ -6077,7 +6071,7 @@ Xr XY Dt It -yu +dB ZJ FS gx diff --git a/_maps/shuttles/shiptest/syndicate_cybersun_kansatsu.dmm b/_maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm similarity index 100% rename from _maps/shuttles/shiptest/syndicate_cybersun_kansatsu.dmm rename to _maps/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm diff --git a/_maps/shuttles/shiptest/syndicate_gec_lugol.dmm b/_maps/shuttles/syndicate/syndicate_gec_lugol.dmm similarity index 100% rename from _maps/shuttles/shiptest/syndicate_gec_lugol.dmm rename to _maps/shuttles/syndicate/syndicate_gec_lugol.dmm diff --git a/_maps/shuttles/shiptest/syndicate_gorlex_hyena.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm similarity index 99% rename from _maps/shuttles/shiptest/syndicate_gorlex_hyena.dmm rename to _maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm index 98d65bc0b7da..5d1d70d59fec 100644 --- a/_maps/shuttles/shiptest/syndicate_gorlex_hyena.dmm +++ b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm @@ -221,12 +221,12 @@ name = "food crate" }, /obj/item/storage/cans/sixbeer, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/snacks/rationpack, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, /obj/effect/turf_decal/industrial/outline, /turf/open/floor/plasteel/mono/dark, /area/ship/cargo) diff --git a/_maps/shuttles/shiptest/syndicate_gorlex_komodo.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm similarity index 99% rename from _maps/shuttles/shiptest/syndicate_gorlex_komodo.dmm rename to _maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm index 10558626c75d..2ec2677dde07 100644 --- a/_maps/shuttles/shiptest/syndicate_gorlex_komodo.dmm +++ b/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm @@ -3649,7 +3649,7 @@ /obj/effect/turf_decal/techfloor{ dir = 10 }, -/obj/item/clothing/mask/russian_balaclava, +/obj/item/clothing/mask/gas/sechailer/minutemen, /obj/item/clothing/under/syndicate/skirt, /obj/structure/closet/syndicate{ desc = "It's a basic storage unit."; diff --git a/_maps/shuttles/shiptest/syndicate_luxembourg.dmm b/_maps/shuttles/syndicate/syndicate_luxembourg.dmm similarity index 99% rename from _maps/shuttles/shiptest/syndicate_luxembourg.dmm rename to _maps/shuttles/syndicate/syndicate_luxembourg.dmm index 2248c1f12c6b..1f8f1132f0d7 100644 --- a/_maps/shuttles/shiptest/syndicate_luxembourg.dmm +++ b/_maps/shuttles/syndicate/syndicate_luxembourg.dmm @@ -441,16 +441,6 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/plasteel/tech/techmaint, /area/ship/crew/dorm) -"in" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 5 - }, -/obj/structure/catwalk/over/plated_catwalk, -/turf/open/floor/plating, -/area/ship/engineering) "it" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/power/shieldwallgen/atmos{ @@ -509,6 +499,22 @@ /obj/machinery/atmospherics/pipe/layer_manifold, /turf/open/floor/plating, /area/ship/engineering) +"iZ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 9 + }, +/obj/structure/catwalk/over/plated_catwalk/white, +/obj/machinery/atmospherics/components/unary/portables_connector{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering) "jr" = ( /turf/open/floor/carpet/red_gold, /area/ship/hallway/central) @@ -541,17 +547,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/mono/dark, /area/ship/storage) -"kp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/structure/rack, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/neutral/mono, -/turf/open/floor/plasteel/mono/dark, -/area/ship/hallway/central) "ks" = ( /obj/structure/closet/crate, /obj/item/gun_voucher, @@ -714,19 +709,6 @@ /obj/item/radio/headset, /turf/open/floor/plasteel/dark, /area/ship/crew/dorm) -"nG" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 - }, -/obj/structure/catwalk/over/plated_catwalk/white, -/turf/open/floor/plating, -/area/ship/engineering) "ow" = ( /obj/effect/spawner/structure/window/plasma/reinforced/plastitanium, /obj/machinery/door/poddoor/shutters{ @@ -967,29 +949,6 @@ }, /turf/open/floor/plasteel/mono/dark, /area/ship/cargo) -"tc" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/drinkingglass{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/paper{ - desc = "A piece of paper depicting a extremely pissed up upper manager"; - default_raw_text = "YOU ARENT SUPPOSED TO BE MINING, HEAR ME!?!! YOU'RE SUPPOSED TO BE SELLING SHIT TO THE CONSUMERS YOU HEAR!! AS PUNISHMENT FOR THE LAST SHIFT, I HAVE REMOVED ALLL OF YOUR MINING TOOLS!! NOW GET BACK TO WORK!!"; - name = "angry letter from upper management" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/mono/dark, -/area/ship/crew/canteen) "tx" = ( /obj/machinery/power/port_gen/pacman, /obj/structure/cable/yellow{ @@ -1498,6 +1457,14 @@ /obj/machinery/vending/dinnerware, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/canteen) +"DE" = ( +/obj/structure/rack, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/neutral/mono, +/turf/open/floor/plasteel/mono/dark, +/area/ship/hallway/central) "DG" = ( /obj/machinery/light/directional/south, /obj/structure/rack, @@ -1587,6 +1554,19 @@ }, /turf/open/floor/plasteel/mono/dark, /area/ship/engineering) +"Fj" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, +/obj/item/paper{ + desc = "A piece of paper depicting a extremely pissed up upper manager"; + default_raw_text = "YOU DAMNNED FOOLS! YOU ARENT SUPPOSED TO USE YOUR STOCK, YOU'RE SUPPOSED TO SELL THEM!! WE AREN'T WASTING MY MONEY ARE WE!?! NOW GET BACK TO WORK!!!"; + name = "angry letter from upper management" + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/storage) "Fq" = ( /obj/structure/cable{ icon_state = "4-8" @@ -1923,6 +1903,29 @@ }, /turf/open/floor/plasteel/dark, /area/ship/hallway/central) +"Lr" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/paper{ + desc = "A piece of paper depicting a extremely pissed up upper manager"; + default_raw_text = "YOU ARENT SUPPOSED TO BE MINING, HEAR ME!?!! YOU'RE SUPPOSED TO BE SELLING SHIT TO THE CONSUMERS YOU HEAR!! AS PUNISHMENT FOR THE LAST SHIFT, I HAVE REMOVED ALLL OF YOUR MINING TOOLS!! NOW GET BACK TO WORK!!"; + name = "angry letter from upper management" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/mono/dark, +/area/ship/crew/canteen) "Lu" = ( /obj/structure/chair/plastic{ dir = 1 @@ -2671,19 +2674,6 @@ }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/storage) -"YX" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/item/paper{ - desc = "A piece of paper depicting a extremely pissed up upper manager"; - default_raw_text = "YOU DAMNNED FOOLS! YOU ARENT SUPPOSED TO USE YOUR STOCK, YOU'RE SUPPOSED TO SELL THEM!! WE AREN'T WASTING MY MONEY ARE WE!?! NOW GET BACK TO WORK!!!"; - name = "angry letter from upper management" - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/storage) "YZ" = ( /obj/structure/closet/secure{ icon_state = "eng_secure"; @@ -2728,6 +2718,19 @@ /obj/structure/catwalk/over/plated_catwalk, /turf/open/floor/plating, /area/ship/engineering) +"ZV" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ + dir = 5 + }, +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/components/unary/portables_connector{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ship/engineering) (1,1,1) = {" Nr @@ -2890,7 +2893,7 @@ JU Ka JO iO -YX +Fj YO YK ks @@ -2926,7 +2929,7 @@ hm rU Ro uo -in +ZV mK vp pt @@ -3060,7 +3063,7 @@ dH Sn TP TP -kp +DE Jr PO vp @@ -3143,7 +3146,7 @@ YI YI qf HZ -tc +Lr Dw rq YI @@ -3157,7 +3160,7 @@ Ai FV Wh eL -nG +iZ bt CT vp diff --git a/_maps/shuttles/shiptest/syndicate_twinkleshine.dmm b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm similarity index 99% rename from _maps/shuttles/shiptest/syndicate_twinkleshine.dmm rename to _maps/shuttles/syndicate/syndicate_twinkleshine.dmm index 3a7d800a4f22..6390f43501cd 100644 --- a/_maps/shuttles/shiptest/syndicate_twinkleshine.dmm +++ b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm @@ -881,21 +881,6 @@ /obj/effect/turf_decal/trimline/opaque/syndiered/filled/line, /turf/open/floor/plasteel/dark, /area/ship/medical) -"fU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/ship/hallway/central) "fV" = ( /obj/machinery/door/airlock/atmos/glass{ name = "Atmospherics"; @@ -5561,6 +5546,18 @@ /obj/structure/mecha_wreckage/ripley/deathripley, /turf/open/floor/plasteel/tech/grid, /area/ship/bridge) +"GW" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/hallway/central) "GZ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -6602,14 +6599,6 @@ }, /turf/open/floor/mineral/plastitanium, /area/ship/security) -"Nm" = ( -/obj/structure/table/reinforced, -/obj/machinery/fax, -/obj/effect/turf_decal/corner/opaque/syndiered/half{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/ship/bridge) "No" = ( /obj/effect/turf_decal/corner/transparent/bar/diagonal, /obj/machinery/holopad/emergency, @@ -8281,6 +8270,14 @@ /obj/effect/turf_decal/corner/opaque/syndiered, /turf/open/floor/mineral/plastitanium, /area/ship/bridge) +"Xc" = ( +/obj/structure/table/reinforced, +/obj/machinery/fax, +/obj/effect/turf_decal/corner/opaque/syndiered/half{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium, +/area/ship/bridge) "Xf" = ( /obj/structure/rack, /obj/effect/turf_decal/box/white/corners{ @@ -9973,7 +9970,7 @@ IV Ya Sb RW -fU +GW pO je KI @@ -10008,7 +10005,7 @@ IV ql Yj RW -fU +GW kf je hb @@ -10119,7 +10116,7 @@ nb Pv pp nb -Nm +Xc Kk KB zp diff --git a/auxmos.dll b/auxmos.dll index 499c125baa87..9db02bf27e26 100644 Binary files a/auxmos.dll and b/auxmos.dll differ diff --git a/check_regex.yaml b/check_regex.yaml index c28639172af2..df266ee19e55 100644 --- a/check_regex.yaml +++ b/check_regex.yaml @@ -29,7 +29,7 @@ standards: - exactly: [1, "/area text paths", '"/area'] - exactly: [17, "/datum text paths", '"/datum'] - exactly: [4, "/mob text paths", '"/mob'] - - exactly: [51, "/obj text paths", '"/obj'] + - exactly: [49, "/obj text paths", '"/obj'] - exactly: [0, "/turf text paths", '"/turf'] - exactly: [117, "text2path uses", "text2path"] @@ -38,14 +38,22 @@ standards: - exactly: [ - 297, + 295, "non-bitwise << uses", '(? current ? MC_AVERAGE_SLOW(average, current) : MC_AVERAGE_FAST(average, current)) #define MC_AVG_SLOW_UP_FAST_DOWN(average, current) (average < current ? MC_AVERAGE_SLOW(average, current) : MC_AVERAGE_FAST(average, current)) +///creates a running average of "things elapsed" per time period when you need to count via a smaller time period. +///eg you want an average number of things happening per second but you measure the event every tick (50 milliseconds). +///make sure both time intervals are in the same units. doesnt work if current_duration > total_duration or if total_duration == 0 +#define MC_AVG_OVER_TIME(average, current, total_duration, current_duration) ((((total_duration) - (current_duration)) / (total_duration)) * (average) + (current)) + +#define MC_AVG_MINUTES(average, current, current_duration) (MC_AVG_OVER_TIME(average, current, 1 MINUTES, current_duration)) + +#define MC_AVG_SECONDS(average, current, current_duration) (MC_AVG_OVER_TIME(average, current, 1 SECONDS, current_duration)) + #define NEW_SS_GLOBAL(varname) if(varname != src){if(istype(varname)){Recover();qdel(varname);}varname = src;} #define START_PROCESSING(Processor, Datum) if (!(Datum.datum_flags & DF_ISPROCESSING)) {Datum.datum_flags |= DF_ISPROCESSING;Processor.processing += Datum} @@ -99,3 +108,12 @@ ss_id="processing_[#X]";\ }\ /datum/controller/subsystem/processing/##X + +#define VERB_MANAGER_SUBSYSTEM_DEF(X) GLOBAL_REAL(SS##X, /datum/controller/subsystem/verb_manager/##X);\ +/datum/controller/subsystem/verb_manager/##X/New(){\ + NEW_SS_GLOBAL(SS##X);\ + PreInit();\ + ss_id="verb_manager_[#X]";\ +}\ +/datum/controller/subsystem/verb_manager/##X/fire() {..() /*just so it shows up on the profiler*/} \ +/datum/controller/subsystem/verb_manager/##X diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index fc720d2c96fd..02a85927c142 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -359,17 +359,6 @@ T.pixel_x = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_X; \ T.pixel_y = (PipingLayer - PIPING_LAYER_DEFAULT) * PIPING_LAYER_P_Y; -GLOBAL_VAR(atmos_extools_initialized) // this must be an uninitialized (null) one or init_monstermos will be called twice because reasons -#define ATMOS_EXTOOLS_CHECK if(!GLOB.atmos_extools_initialized){ \ - GLOB.atmos_extools_initialized=TRUE; \ - if(fexists(world.system_type == MS_WINDOWS ? "./byond-extools.dll" : "./libbyond-extools.so")){ \ - var/result = call((world.system_type == MS_WINDOWS ? "./byond-extools.dll" : "./libbyond-extools.so"),"init_monstermos")(); \ - if(result != "ok") {CRASH(result);} \ - } else { \ - CRASH("byond-extools.dll does not exist!"); \ - } \ -} - GLOBAL_LIST_INIT(pipe_paint_colors, sortList(list( "amethyst" = rgb(130,43,255), //supplymain "blue" = rgb(0,0,255), diff --git a/code/__DEFINES/atoms.dm b/code/__DEFINES/atoms.dm new file mode 100644 index 000000000000..3c7b67070f88 --- /dev/null +++ b/code/__DEFINES/atoms.dm @@ -0,0 +1,4 @@ +#define BAD_INIT_QDEL_BEFORE 1 +#define BAD_INIT_DIDNT_INIT 2 +#define BAD_INIT_SLEPT 4 +#define BAD_INIT_NO_HINT 8 diff --git a/code/__DEFINES/callbacks.dm b/code/__DEFINES/callbacks.dm index 6d23e5090542..25f3717011a9 100644 --- a/code/__DEFINES/callbacks.dm +++ b/code/__DEFINES/callbacks.dm @@ -2,4 +2,6 @@ /// A shorthand for the callback datum, [documented here](datum/callback.html) #define CALLBACK new /datum/callback #define INVOKE_ASYNC world.ImmediateInvokeAsync -#define CALLBACK_NEW(typepath, args) CALLBACK(GLOBAL_PROC, /proc/___callbacknew, typepath, args) +/// like CALLBACK but specifically for verb callbacks +#define VERB_CALLBACK new /datum/callback/verb_callback +#define CALLBACK_NEW(typepath, args) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___callbacknew), typepath, args) diff --git a/code/__DEFINES/cargo.dm b/code/__DEFINES/cargo.dm index d5341990774a..c6564616c01b 100644 --- a/code/__DEFINES/cargo.dm +++ b/code/__DEFINES/cargo.dm @@ -13,23 +13,45 @@ #define STYLE_GONDOLA 13 #define STYLE_SEETHROUGH 14 -#define POD_ICON_STATE 1 -#define POD_NAME 2 -#define POD_DESC 3 +#define POD_SHAPE 1 +#define POD_BASE 2 +#define POD_DOOR 3 +#define POD_DECAL 4 +#define POD_GLOW 5 +#define POD_RUBBLE_TYPE 6 +#define POD_NAME 7 +#define POD_DESC 8 -#define POD_STYLES list( \ - list("supplypod", "supply pod", "A Nanotrasen supply drop pod."), \ - list("bluespacepod", "bluespace supply pod" , "A Nanotrasen Bluespace supply pod. Teleports back to CentCom after delivery."), \ - list("centcompod", "\improper CentCom supply pod", "A Nanotrasen supply pod, this one has been marked with Central Command's designations. Teleports back to CentCom after delivery."), \ - list("syndiepod", "blood-red supply pod", "A dark, intimidating supply pod, covered in the blood-red markings of the Syndicate. It's probably best to stand back from this."), \ - list("squadpod", "\improper MK. II supply pod", "A Nanotrasen supply pod. This one has been marked the markings of some sort of elite strike team."), \ - list("cultpod", "bloody supply pod", "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."), \ - list("missilepod", "cruise missile", "A big ass missile that didn't seem to fully detonate. It was likely launched from some far-off deep space missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."), \ - list("smissilepod", "\improper Syndicate cruise missile", "A big ass, blood-red missile that didn't seem to fully detonate. It was likely launched from some deep space Syndicate missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."), \ - list("boxpod", "\improper Aussec supply crate", "An incredibly sturdy supply crate, designed to withstand orbital re-entry. Has 'Aussec Armory - 2532' engraved on the side."), \ - list("honkpod", "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."), \ - list("fruitpod", "\improper Orange", "An angry orange."), \ - list("", "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"), \ - list("gondolapod", "gondola", "The silent walker. This one seems to be part of a delivery agency."), \ - list("", "", "") \ -) +#define RUBBLE_NONE 1 +#define RUBBLE_NORMAL 2 +#define RUBBLE_WIDE 3 +#define RUBBLE_THIN 4 + +#define POD_SHAPE_NORML 1 +#define POD_SHAPE_OTHER 2 + +#define POD_TRANSIT "1" +#define POD_FALLING "2" +#define POD_OPENING "3" +#define POD_LEAVING "4" + +#define SUPPLYPOD_X_OFFSET -16 + +GLOBAL_LIST_EMPTY(supplypod_loading_bays) + +GLOBAL_LIST_INIT(podstyles, list(\ + list(POD_SHAPE_NORML, "pod", TRUE, "default", "yellow", RUBBLE_NORMAL, "supply pod", "A Nanotrasen supply drop pod."),\ + list(POD_SHAPE_NORML, "advpod", TRUE, "bluespace", "blue", RUBBLE_NORMAL, "bluespace supply pod", "A Nanotrasen Bluespace supply pod. Teleports back to CentCom after delivery."),\ + list(POD_SHAPE_NORML, "advpod", TRUE, "centcom", "blue", RUBBLE_NORMAL, "\improper CentCom supply pod", "A Nanotrasen supply pod, this one has been marked with Central Command's designations. Teleports back to CentCom after delivery."),\ + list(POD_SHAPE_NORML, "darkpod", TRUE, "syndicate", "red", RUBBLE_NORMAL, "blood-red supply pod", "An intimidating supply pod, covered in the blood-red markings of the Syndicate. It's probably best to stand back from this."),\ + list(POD_SHAPE_NORML, "darkpod", TRUE, "deathsquad", "blue", RUBBLE_NORMAL, "\improper Deathsquad drop pod", "A Nanotrasen drop pod. This one has been marked the markings of Nanotrasen's elite strike team."),\ + list(POD_SHAPE_NORML, "pod", TRUE, "cultist", "red", RUBBLE_NORMAL, "bloody supply pod", "A Nanotrasen supply pod covered in scratch-marks, blood, and strange runes."),\ + list(POD_SHAPE_OTHER, "missile", FALSE, FALSE, FALSE, RUBBLE_THIN, "cruise missile", "A big ass missile that didn't seem to fully detonate. It was likely launched from some far-off deep space missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\ + list(POD_SHAPE_OTHER, "smissile", FALSE, FALSE, FALSE, RUBBLE_THIN, "\improper Syndicate cruise missile", "A big ass, blood-red missile that didn't seem to fully detonate. It was likely launched from some deep space Syndicate missile silo. There appears to be an auxillery payload hatch on the side, though manually opening it is likely impossible."),\ + list(POD_SHAPE_OTHER, "box", TRUE, FALSE, FALSE, RUBBLE_WIDE, "\improper Aussec supply crate", "An incredibly sturdy supply crate, designed to withstand orbital re-entry. Has 'Aussec Armory - 2532' engraved on the side."),\ + list(POD_SHAPE_NORML, "clownpod", TRUE, "clown", "green", RUBBLE_NORMAL, "\improper HONK pod", "A brightly-colored supply pod. It likely originated from the Clown Federation."),\ + list(POD_SHAPE_OTHER, "orange", TRUE, FALSE, FALSE, RUBBLE_NONE, "\improper Orange", "An angry orange."),\ + list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, "\improper S.T.E.A.L.T.H. pod MKVII", "A supply pod that, under normal circumstances, is completely invisible to conventional methods of detection. How are you even seeing this?"),\ + list(POD_SHAPE_OTHER, "gondola", FALSE, FALSE, FALSE, RUBBLE_NONE, "gondola", "The silent walker. This one seems to be part of a delivery agency."),\ + list(POD_SHAPE_OTHER, FALSE, FALSE, FALSE, FALSE, RUBBLE_NONE, FALSE, FALSE, "rl_click", "give_po")\ +)) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 47189ae8b285..7df3a453acfb 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -111,12 +111,8 @@ #define SHOVE_SLOWDOWN_LENGTH 30 #define SHOVE_SLOWDOWN_STRENGTH 0.85 //multiplier //Shove disarming item list -GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( - /obj/item/gun))) - - +GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(/obj/item/gun))) //Combat object defines - //Embedded objects #define EMBEDDED_PAIN_CHANCE 15 //Chance for embedded objects to cause pain (damage user) #define EMBEDDED_ITEM_FALLOUT 5 //Chance for embedded object to fall out (causing pain but removing the object) @@ -138,8 +134,11 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( #define EMBED_POINTY_SUPERIOR list("embed_chance" = 100, "ignore_throwspeed_threshold" = TRUE) //Gun weapon weight +/// Allows you to dual wield this gun and your offhand gun #define WEAPON_LIGHT 1 +/// Does not allow you to dual wield with this gun and your offhand gun #define WEAPON_MEDIUM 2 +/// You must wield the gun to fire this gun #define WEAPON_HEAVY 3 //Gun trigger guards #define TRIGGER_GUARD_ALLOW_ALL -1 diff --git a/code/__DEFINES/cooldowns.dm b/code/__DEFINES/cooldowns.dm index ae027233c9e7..861bb843d793 100644 --- a/code/__DEFINES/cooldowns.dm +++ b/code/__DEFINES/cooldowns.dm @@ -35,7 +35,7 @@ #define COMSIG_CD_STOP(cd_index) "cooldown_[cd_index]" #define COMSIG_CD_RESET(cd_index) "cd_reset_[cd_index]" -#define TIMER_COOLDOWN_START(cd_source, cd_index, cd_time) LAZYSET(cd_source.cooldowns, cd_index, addtimer(CALLBACK(GLOBAL_PROC, /proc/end_cooldown, cd_source, cd_index), cd_time)) +#define TIMER_COOLDOWN_START(cd_source, cd_index, cd_time) LAZYSET(cd_source.cooldowns, cd_index, addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(end_cooldown), cd_source, cd_index), cd_time)) #define TIMER_COOLDOWN_CHECK(cd_source, cd_index) LAZYACCESS(cd_source.cooldowns, cd_index) @@ -48,7 +48,7 @@ * A bit more expensive than the regular timers, but can be reset before they end and the time left can be checked. */ -#define S_TIMER_COOLDOWN_START(cd_source, cd_index, cd_time) LAZYSET(cd_source.cooldowns, cd_index, addtimer(CALLBACK(GLOBAL_PROC, /proc/end_cooldown, cd_source, cd_index), cd_time, TIMER_STOPPABLE)) +#define S_TIMER_COOLDOWN_START(cd_source, cd_index, cd_time) LAZYSET(cd_source.cooldowns, cd_index, addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(end_cooldown), cd_source, cd_index), cd_time, TIMER_STOPPABLE)) #define S_TIMER_COOLDOWN_RESET(cd_source, cd_index) reset_cooldown(cd_source, cd_index) @@ -62,7 +62,7 @@ #define COOLDOWN_DECLARE(cd_index) var/##cd_index = 0 -#define COOLDOWN_START(cd_source, cd_index, cd_time) (cd_source.cd_index = world.time + cd_time) +#define COOLDOWN_START(cd_source, cd_index, cd_time) (cd_source.cd_index = world.time + (cd_time)) //Returns true if the cooldown has run its course, false otherwise #define COOLDOWN_FINISHED(cd_source, cd_index) (cd_source.cd_index < world.time) diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index bda73339bff8..bbdbe022a9df 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -7,6 +7,8 @@ // start global signals with "!", this used to be necessary but now it's just a formatting choice /// from base of datum/controller/subsystem/mapping/proc/add_new_zlevel(): (list/args) #define COMSIG_GLOB_NEW_Z "!new_z" +/// sent after world.maxx and/or world.maxy are expanded: (has_exapnded_world_maxx, has_expanded_world_maxy) +#define COMSIG_GLOB_EXPANDED_WORLD_BOUNDS "!expanded_world_bounds" /// called after a successful var edit somewhere in the world: (list/args) #define COMSIG_GLOB_VAR_EDIT "!var_edit" /// called after an explosion happened : (epicenter, devastation_range, heavy_impact_range, light_impact_range, took, orig_dev_range, orig_heavy_range, orig_light_range) @@ -22,6 +24,8 @@ #define COMPONENT_GLOB_BLOCK_CINEMATIC 1 /// ingame button pressed (/obj/machinery/button/button) #define COMSIG_GLOB_BUTTON_PRESSED "!button_pressed" +/// a client (re)connected, after all /client/New() checks have passed : (client/connected_client) +#define COMSIG_GLOB_CLIENT_CONNECT "!client_connect" // signals from globally accessible objects /// from SSsun when the sun changes position : (azimuth) @@ -532,6 +536,8 @@ #define COMSIG_TOOL_START_USE "tool_start_use" ///from base of [/obj/item/proc/tool_start_check]: (mob/living/user) #define COMSIG_ITEM_DISABLE_EMBED "item_disable_embed" ///from [/obj/item/proc/disableEmbedding]: #define COMSIG_MINE_TRIGGERED "minegoboom" ///from [/obj/effect/mine/proc/triggermine]: +///from [/obj/structure/closet/supplypod/proc/endlaunch]: +#define COMSIG_SUPPLYPOD_LANDED "supplypodgoboom" ///Called when an item is being offered, from [/obj/item/proc/on_offered(mob/living/carbon/offerer)] #define COMSIG_ITEM_OFFERING "item_offering" diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 82bfd3d983f1..e0ac4b177001 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -4,7 +4,6 @@ #define ALL (~0) //For convenience. #define NONE 0 - GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768)) /* Directions */ @@ -139,6 +138,10 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define INDESTRUCTIBLE (1<<6) /// can't be frozen #define FREEZE_PROOF (1<<7) +/// Should this object not be destroyed when a shuttle lands on it? +#define LANDING_PROOF (1<<8) +/// Should this object be able to be in hyperspace without being deleted? +#define HYPERSPACE_PROOF (1<<9) //tesla_zap #define ZAP_MACHINE_EXPLOSIVE (1<<0) diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm index 7e0feafb3da3..f2b6a8fd196d 100644 --- a/code/__DEFINES/food.dm +++ b/code/__DEFINES/food.dm @@ -14,6 +14,11 @@ #define BREAKFAST (1<<13) #define CLOTH (1<<14) #define GRILLED (1<<15) +/*#define NUTS (1<<16) +#define SEAFOOD (1<<17) +#define ORANGES (1<<18) +#define BUGS (1<<19)*/ +#define GORE (1<<20) /// IC meaning (more or less) for food flags #define FOOD_FLAGS_IC list( \ diff --git a/code/__DEFINES/input.dm b/code/__DEFINES/input.dm new file mode 100644 index 000000000000..7ec645990d78 --- /dev/null +++ b/code/__DEFINES/input.dm @@ -0,0 +1,2 @@ +///if the running average click latency is above this amount then clicks will never queue and will execute immediately +#define MAXIMUM_CLICK_LATENCY (0.5 DECISECONDS) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index deacb4000289..b824bd2a17b1 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -4,6 +4,8 @@ #define isatom(A) (isloc(A)) +#define isdatum(thing) (istype(thing, /datum)) + #define isweakref(D) (istype(D, /datum/weakref)) //Turfs @@ -168,6 +170,8 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define islandmine(A) (istype(A, /obj/effect/mine)) +#define issupplypod(A) (istype(A, /obj/structure/closet/supplypod)) + #define isammocasing(A) (istype(A, /obj/item/ammo_casing)) #define isidcard(I) (istype(I, /obj/item/card/id)) @@ -227,6 +231,8 @@ GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( #define isshuttleturf(T) (length(T.baseturfs) && (/turf/baseturf_skipover/shuttle in T.baseturfs)) +#define isProbablyWallMounted(O) (O.pixel_x > 20 || O.pixel_x < -20 || O.pixel_y > 20 || O.pixel_y < -20) + #define isbook(O) (is_type_in_typecache(O, GLOB.book_types)) GLOBAL_LIST_INIT(book_types, typecacheof(list( diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index c8848f000099..21eb9b40e066 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -8,42 +8,50 @@ #define DEFAULT_RELIGION "Christianity" #define DEFAULT_DEITY "Space Jesus" -#define JOB_DISPLAY_ORDER_DEFAULT 0 - -#define JOB_DISPLAY_ORDER_ASSISTANT 1 -#define JOB_DISPLAY_ORDER_CAPTAIN 2 -#define JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL 3 -#define JOB_DISPLAY_ORDER_SOLGOV 3.5 -#define JOB_DISPLAY_ORDER_QUARTERMASTER 4 -#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 5 -#define JOB_DISPLAY_ORDER_SHAFT_MINER 6 -#define JOB_DISPLAY_ORDER_BARTENDER 7 -#define JOB_DISPLAY_ORDER_COOK 8 -#define JOB_DISPLAY_ORDER_BOTANIST 9 -#define JOB_DISPLAY_ORDER_JANITOR 10 -#define JOB_DISPLAY_ORDER_CLOWN 11 -#define JOB_DISPLAY_ORDER_MIME 12 -#define JOB_DISPLAY_ORDER_CURATOR 13 -#define JOB_DISPLAY_ORDER_LAWYER 14 -#define JOB_DISPLAY_ORDER_CHAPLAIN 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_CHIEF_MEDICAL_OFFICER 21 -#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 22 +#define JOB_DISPLAY_ORDER_CAPTAIN 0 +#define JOB_DISPLAY_ORDER_HEAD_OF_PERSONNEL 1 +#define JOB_DISPLAY_ORDER_SOLGOV 2 + +#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 10 +#define JOB_DISPLAY_ORDER_WARDEN 11 +#define JOB_DISPLAY_ORDER_DETECTIVE 12 +#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 13 +#define JOB_DISPLAY_ORDER_BRIG_PHYS 14 + +#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 20 +#define JOB_DISPLAY_ORDER_CHEMIST 21 +#define JOB_DISPLAY_ORDER_VIROLOGIST 22 #define JOB_DISPLAY_ORDER_PARAMEDIC 23 -#define JOB_DISPLAY_ORDER_CHEMIST 24 -#define JOB_DISPLAY_ORDER_VIROLOGIST 25 -#define JOB_DISPLAY_ORDER_PSYCHOLOGIST 26 -#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 27 -#define JOB_DISPLAY_ORDER_SCIENTIST 28 -#define JOB_DISPLAY_ORDER_ROBOTICIST 29 -#define JOB_DISPLAY_ORDER_GENETICIST 30 -#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 31 -#define JOB_DISPLAY_ORDER_WARDEN 32 -#define JOB_DISPLAY_ORDER_DETECTIVE 33 -#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 34 -#define JOB_DISPLAY_ORDER_BRIG_PHYS 35 -#define JOB_DISPLAY_ORDER_PRISONER 36 +#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 24 +#define JOB_DISPLAY_ORDER_PSYCHOLOGIST 25 + +#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 30 +#define JOB_DISPLAY_ORDER_SCIENTIST 31 +#define JOB_DISPLAY_ORDER_ROBOTICIST 32 +#define JOB_DISPLAY_ORDER_GENETICIST 33 + +#define JOB_DISPLAY_ORDER_CHIEF_ENGINEER 40 +#define JOB_DISPLAY_ORDER_STATION_ENGINEER 41 +#define JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN 42 + +#define JOB_DISPLAY_ORDER_QUARTERMASTER 50 +#define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 51 +#define JOB_DISPLAY_ORDER_SHAFT_MINER 52 + +#define JOB_DISPLAY_ORDER_BARTENDER 60 +#define JOB_DISPLAY_ORDER_COOK 61 +#define JOB_DISPLAY_ORDER_BOTANIST 62 +#define JOB_DISPLAY_ORDER_JANITOR 63 +#define JOB_DISPLAY_ORDER_CLOWN 64 +#define JOB_DISPLAY_ORDER_MIME 65 +#define JOB_DISPLAY_ORDER_CURATOR 66 +#define JOB_DISPLAY_ORDER_LAWYER 67 +#define JOB_DISPLAY_ORDER_CHAPLAIN 68 +#define JOB_DISPLAY_ORDER_AI 69 +#define JOB_DISPLAY_ORDER_CYBORG 70 + +#define JOB_DISPLAY_ORDER_PRISONER 75 + +#define JOB_DISPLAY_ORDER_DEFAULT 80 + +#define JOB_DISPLAY_ORDER_ASSISTANT 999 diff --git a/code/__DEFINES/keybinding.dm b/code/__DEFINES/keybinding.dm index a1494018d434..97b9c9d82aad 100644 --- a/code/__DEFINES/keybinding.dm +++ b/code/__DEFINES/keybinding.dm @@ -42,6 +42,7 @@ //Human #define COMSIG_KB_HUMAN_QUICKEQUIP_DOWN "keybinding_human_quickequip_down" #define COMSIG_KB_HUMAN_QUICKEQUIPBELT_DOWN "keybinding_human_quickequipbelt_down" +#define COMSIG_KB_HUMAN_UNIQUEACTION "keybinding_uniqueaction" #define COMSIG_KB_HUMAN_BAGEQUIP_DOWN "keybinding_human_bagequip_down" #define COMSIG_KB_HUMAN_EQUIPMENTSWAP_DOWN "keybinding_human_equipmentswap_down" #define COMSIG_KB_HUMAN_SUITEQUIP_DOWN "keybinding_human_suitequip_down" diff --git a/code/__DEFINES/lag_switch.dm b/code/__DEFINES/lag_switch.dm new file mode 100644 index 000000000000..022880c1a461 --- /dev/null +++ b/code/__DEFINES/lag_switch.dm @@ -0,0 +1,24 @@ +// All of the possible Lag Switch lag mitigation measures +// If you add more do not forget to update MEASURES_AMOUNT accordingly +/// Stops ghosts flying around freely, they can still jump and orbit, staff exempted +#define DISABLE_DEAD_KEYLOOP 1 +/// Stops ghosts using zoom/t-ray verbs and resets their view if zoomed out, staff exempted +#define DISABLE_GHOST_ZOOM_TRAY 2 +/// Disable runechat and enable the bubbles, speaking mobs with TRAIT_BYPASS_MEASURES exempted +#define DISABLE_RUNECHAT 3 +/// Disable icon2html procs from verbs like examine, mobs calling with TRAIT_BYPASS_MEASURES exempted +#define DISABLE_USR_ICON2HTML 4 +/// Prevents anyone from joining the game as anything but observer +#define DISABLE_NON_OBSJOBS 5 +/// Limit IC/dchat spam to one message every x seconds per client, TRAIT_BYPASS_MEASURES exempted +#define SLOWMODE_SAY 6 +/// Disables parallax, as if everyone had disabled their preference, TRAIT_BYPASS_MEASURES exempted +#define DISABLE_PARALLAX 7 +/// Disables footsteps, TRAIT_BYPASS_MEASURES exempted +#define DISABLE_FOOTSTEPS 8 +/// Disables planet deletion +#define DISABLE_PLANETDEL 9 +/// Disables ALL new planet generation, TRAIT_BYPASS_MEASURES exempted +#define DISABLE_PLANETGEN 10 + +#define MEASURES_AMOUNT 10 // The total number of switches defined above diff --git a/code/__DEFINES/maths.dm b/code/__DEFINES/maths.dm index b6b75cc8d8c8..77c32e0ff653 100644 --- a/code/__DEFINES/maths.dm +++ b/code/__DEFINES/maths.dm @@ -29,6 +29,8 @@ #define CEILING(x, y) (-round(-(x) / (y)) * (y)) +#define ROUND_UP(x) (-round(-(x))) + // round() acts like floor(x, 1) by default but can't handle other values #define FLOOR(x, y) (round((x) / (y)) * (y)) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 03796c87e897..e8975a1a6653 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -149,6 +149,13 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache) //subtypesof(), typesof() without the parent path #define subtypesof(typepath) (typesof(typepath) - typepath) +/// Takes a datum as input, returns its ref string, or a cached version of it +/// This allows us to cache \ref creation, which ensures it'll only ever happen once per datum, saving string tree time +/// It is slightly less optimal then a []'d datum, but the cost is massively outweighed by the potential savings +/// It will only work for datums mind, for datum reasons +/// : because of the embedded typecheck +#define text_ref(datum) (isdatum(datum) ? (datum:cached_ref ||= "\ref[datum]") : ("\ref[datum]")) + //Gets the turf this atom inhabits #define get_turf(A) (get_step(A, 0)) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index e4f600dcea6a..99cff793a761 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -430,3 +430,6 @@ #define THROW_MODE_DISABLED 0 #define THROW_MODE_TOGGLE 1 #define THROW_MODE_HOLD 2 + +//Saves a proc call, life is suffering. If who has no targets_from var, we assume it's just who +#define GET_TARGETS_FROM(who) (who.targets_from ? who.get_targets_from() : who) diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index d9c57e5d3efa..865470774039 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -2,18 +2,19 @@ #define EMAGGED (1<<0) -#define IN_USE (1<<1) // If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! -#define CAN_BE_HIT (1<<2) //can this be bludgeoned by items? -#define BEING_SHOCKED (1<<3) // Whether this thing is currently (already) being shocked by a tesla -#define DANGEROUS_POSSESSION (1<<4) //Admin possession yes/no -#define ON_BLUEPRINTS (1<<5) //Are we visible on the station blueprints at roundstart? -#define UNIQUE_RENAME (1<<6) // can you customize the description/name of the thing? -#define USES_TGUI (1<<7) //put on things that use tgui on ui_interact instead of custom/old UI. +#define IN_USE (1<<1) //! If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! +#define CAN_BE_HIT (1<<2) //! can this be bludgeoned by items? +#define BEING_SHOCKED (1<<3) //! Whether this thing is currently (already) being shocked by a tesla +#define DANGEROUS_POSSESSION (1<<4) //! Admin possession yes/no +#define ON_BLUEPRINTS (1<<5) //! Are we visible on the station blueprints at roundstart? +#define UNIQUE_RENAME (1<<6) //! can you customize the description/name of the thing? +#define USES_TGUI (1<<7) //! put on things that use tgui on ui_interact instead of custom/old UI. #define FROZEN (1<<8) -#define BLOCK_Z_OUT_DOWN (1<<9) // Should this object block z falling from loc? -#define BLOCK_Z_OUT_UP (1<<10) // Should this object block z uprise from loc? -#define BLOCK_Z_IN_DOWN (1<<11) // Should this object block z falling from above? -#define BLOCK_Z_IN_UP (1<<12) // Should this object block z uprise from below? +#define BLOCK_Z_OUT_DOWN (1<<9) //! Should this object block z falling from loc? +#define BLOCK_Z_OUT_UP (1<<10) //! Should this object block z uprise from loc? +#define BLOCK_Z_IN_DOWN (1<<11) //! Should this object block z falling from above? +#define BLOCK_Z_IN_UP (1<<12) //! Should this object block z uprise from below? + // If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support @@ -59,3 +60,17 @@ #define ORGAN_VITAL (1<<4) //Currently only the brain #define ORGAN_EDIBLE (1<<5) //is a snack? :D #define ORGAN_SYNTHETIC_EMP (1<<6) //Synthetic organ affected by an EMP. Deteriorates over time. + +/// Flags for the pod_flags var on /obj/structure/closet/supplypod + +#define FIRST_SOUNDS (1<<0) // If it shouldn't play sounds the first time it lands, used for reverse mode + + +// Bullet hit sounds +#define PROJECTILE_HITSOUND_FLESH (1<<0) +#define PROJECTILE_HITSOUND_NON_LIVING (1<<1) +#define PROJECTILE_HITSOUND_GLASS (1<<2) +#define PROJECTILE_HITSOUND_STONE (1<<3) +#define PROJECTILE_HITSOUND_METAL (1<<4) +#define PROJECTILE_HITSOUND_WOOD (1<<5) +#define PROJECTILE_HITSOUND_SNOW (1<<6) diff --git a/code/__DEFINES/qdel.dm b/code/__DEFINES/qdel.dm index d6a08b3174f8..dca885b37b95 100644 --- a/code/__DEFINES/qdel.dm +++ b/code/__DEFINES/qdel.dm @@ -30,6 +30,13 @@ #define GC_QUEUE_HARDDELETE 3 //! short queue for things that hard delete instead of going thru the gc subsystem, this is purely so if they *can* softdelete, they will soft delete rather then wasting time with a hard delete. #define GC_QUEUE_COUNT 3 //! Number of queues, used for allocating the nested lists. Don't forget to increase this if you add a new queue stage + +// Defines for the ssgarbage queue items +#define GC_QUEUE_ITEM_QUEUE_TIME 1 //! Time this item entered the queue +#define GC_QUEUE_ITEM_REF 2 //! Ref to the item +#define GC_QUEUE_ITEM_GCD_DESTROYED 3 //! Item's gc_destroyed var value. Used to detect ref reuse. +#define GC_QUEUE_ITEM_INDEX_COUNT 3 //! Number of item indexes, used for allocating the nested lists. Don't forget to increase this if you add a new queue item index + // Defines for the time an item has to get its reference cleaned before it fails the queue and moves to the next. #define GC_FILTER_QUEUE 1 SECONDS #define GC_CHECK_QUEUE 5 MINUTES @@ -47,10 +54,10 @@ #define QDELETED(X) (!X || QDELING(X)) #define QDESTROYING(X) (!X || X.gc_destroyed == GC_CURRENTLY_BEING_QDELETED) -#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, (time) > GC_FILTER_QUEUE ? WEAKREF(item) : item), time, TIMER_STOPPABLE) -#define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME) +#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), (time) > GC_FILTER_QUEUE ? WEAKREF(item) : item), time, TIMER_STOPPABLE) +#define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME) #define QDEL_NULL(item) qdel(item); item = null #define QDEL_LIST(L) if(L) { for(var/I in L) qdel(I); L.Cut(); } -#define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/______qdel_list_wrapper, L), time, TIMER_STOPPABLE) +#define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(______qdel_list_wrapper), L), time, TIMER_STOPPABLE) #define QDEL_LIST_ASSOC(L) if(L) { for(var/I in L) { qdel(L[I]); qdel(I); } L.Cut(); } #define QDEL_LIST_ASSOC_VAL(L) if(L) { for(var/I in L) qdel(L[I]); L.Cut(); } diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index 6fe70f5419b4..361a24697a39 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -53,7 +53,6 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_CHANGELING = /datum/game_mode/changeling, ROLE_WIZARD = /datum/game_mode/wizard, ROLE_MALF, - ROLE_REV = /datum/game_mode/revolution, ROLE_ALIEN, ROLE_PAI, ROLE_CULTIST = /datum/game_mode/cult, @@ -61,13 +60,11 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_NINJA, ROLE_OBSESSED, ROLE_SPACE_DRAGON, - ROLE_MONKEY = /datum/game_mode/monkey, ROLE_REVENANT, ROLE_ABDUCTOR, ROLE_DEVIL = /datum/game_mode/devil, ROLE_INTERNAL_AFFAIRS = /datum/game_mode/traitor/internal_affairs, ROLE_SENTIENCE, - ROLE_FAMILIES = /datum/game_mode/gang, ROLE_BORER )) diff --git a/code/__DEFINES/rust_g.dm b/code/__DEFINES/rust_g.dm index cab4430a88df..76e5fa22d474 100644 --- a/code/__DEFINES/rust_g.dm +++ b/code/__DEFINES/rust_g.dm @@ -110,6 +110,12 @@ #define rustg_dmi_strip_metadata(fname) RUSTG_CALL(RUST_G, "dmi_strip_metadata")(fname) #define rustg_dmi_create_png(path, width, height, data) RUSTG_CALL(RUST_G, "dmi_create_png")(path, width, height, data) #define rustg_dmi_resize_png(path, width, height, resizetype) RUSTG_CALL(RUST_G, "dmi_resize_png")(path, width, height, resizetype) +/** + * input: must be a path, not an /icon; you have to do your own handling if it is one, as icon objects can't be directly passed to rustg. + * + * output: json_encode'd list. json_decode to get a flat list with icon states in the order they're in inside the .dmi + */ +#define rustg_dmi_icon_states(fname) RUSTG_CALL(RUST_G, "dmi_icon_states")(fname) #define rustg_file_read(fname) RUSTG_CALL(RUST_G, "file_read")(fname) #define rustg_file_exists(fname) RUSTG_CALL(RUST_G, "file_exists")(fname) @@ -158,8 +164,9 @@ #define rustg_time_milliseconds(id) text2num(RUSTG_CALL(RUST_G, "time_milliseconds")(id)) #define rustg_time_reset(id) RUSTG_CALL(RUST_G, "time_reset")(id) +/// Returns the timestamp as a string /proc/rustg_unix_timestamp() - return text2num(RUSTG_CALL(RUST_G, "unix_timestamp")()) + return RUSTG_CALL(RUST_G, "unix_timestamp")() #define rustg_raw_read_toml_file(path) json_decode(RUSTG_CALL(RUST_G, "toml_file_to_json")(path) || "null") diff --git a/code/__DEFINES/spaceman_dmm.dm b/code/__DEFINES/spaceman_dmm.dm index 6d87700f3d24..b62bbee4259a 100644 --- a/code/__DEFINES/spaceman_dmm.dm +++ b/code/__DEFINES/spaceman_dmm.dm @@ -40,5 +40,5 @@ /world/Del() var/debug_server = world.GetConfig("env", "AUXTOOLS_DEBUG_DLL") if (debug_server) - call(debug_server, "auxtools_shutdown")() + LIBCALL(debug_server, "auxtools_shutdown")() . = ..() diff --git a/code/__DEFINES/statpanel.dm b/code/__DEFINES/statpanel.dm index 65b35e7654a2..8ce6ba624a1b 100644 --- a/code/__DEFINES/statpanel.dm +++ b/code/__DEFINES/statpanel.dm @@ -11,6 +11,4 @@ GLOBAL_LIST_INIT(client_verbs_required, list( /client/verb/forum, /client/verb/github, /client/verb/joindiscord, - // Admin help - /client/verb/adminhelp, )) diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 184f7e754103..7f5569e3e609 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -87,6 +87,9 @@ ///Call qdel on the atom after intialization #define INITIALIZE_HINT_QDEL 2 +///Call qdel with a force of TRUE after initialization +#define INITIALIZE_HINT_QDEL_FORCE 3 + ///type and all subtypes should always immediately call Initialize in New() #define INITIALIZE_IMMEDIATE(X) ##X/New(loc, ...){ \ ..(); \ @@ -162,7 +165,6 @@ #define FIRE_PRIORITY_PROCESS 25 #define FIRE_PRIORITY_THROWING 25 #define FIRE_PRIORITY_SPACEDRIFT 30 -#define FIRE_PRIORITY_FIELDS 30 #define FIRE_PRIOTITY_SMOOTHING 35 #define FIRE_PRIORITY_NETWORKS 40 #define FIRE_PRIORITY_OBJ 40 @@ -185,6 +187,7 @@ #define FIRE_PRIORITY_SOUND_LOOPS 800 #define FIRE_PRIORITY_OVERMAP_MOVEMENT 850 #define FIRE_PRIORITY_SPEECH_CONTROLLER 900 +#define FIRE_PRIORITY_DELAYED_VERBS 950 #define FIRE_PRIORITY_INPUT 1000 // This must always always be the max highest priority. Player input must never be lost. //Pipeline rebuild helper defines, these suck but it'll do for now diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index 6187a67825a4..d468d6044196 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "6.5.3" +#define TGS_DMAPI_VERSION "6.6.1" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -129,6 +129,13 @@ /// DreamDaemon Ultrasafe security level. #define TGS_SECURITY_ULTRASAFE 2 +/// DreamDaemon public visibility level. +#define TGS_VISIBILITY_PUBLIC 0 +/// DreamDaemon private visibility level. +#define TGS_VISIBILITY_PRIVATE 1 +/// DreamDaemon invisible visibility level. +#define TGS_VISIBILITY_INVISIBLE 2 + //REQUIRED HOOKS /** @@ -458,6 +465,10 @@ /world/proc/TgsSecurityLevel() return +/// Returns the current BYOND visibility level as a TGS_VISIBILITY_ define if TGS is present, null otherwise. Requires TGS to be using interop API version 5 or higher otherwise the string "___unimplemented" wil be returned. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! +/world/proc/TgsVisibility() + return + /// Returns a list of active [/datum/tgs_revision_information/test_merge]s if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsTestMerges() return diff --git a/code/__DEFINES/time.dm b/code/__DEFINES/time.dm index 9600b2f5c2e6..fda27f56d1a3 100644 --- a/code/__DEFINES/time.dm +++ b/code/__DEFINES/time.dm @@ -46,6 +46,10 @@ When using time2text(), please use "DDD" to find the weekday. Refrain from using #define SATURDAY "Sat" #define SUNDAY "Sun" +#define MILLISECONDS *0.01 + +#define DECISECONDS *1 //the base unit all of these defines are scaled by, because byond uses that as a unit of measurement for some fucking reason + #define SECONDS *10 #define MINUTES SECONDS*60 @@ -54,8 +58,6 @@ When using time2text(), please use "DDD" to find the weekday. Refrain from using #define TICKS *world.tick_lag -#define MILLISECONDS * 0.01 - #define DS2TICKS(DS) ((DS)/world.tick_lag) #define TICKS2DS(T) ((T) TICKS) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 26d82fba3278..ea51a1c96113 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -216,6 +216,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NOMOBSWAP "no-mob-swap" #define TRAIT_XRAY_VISION "xray_vision" #define TRAIT_THERMAL_VISION "thermal_vision" +/// We have some form of forced gravity acting on us +#define TRAIT_FORCED_GRAVITY "forced_gravity" #define TRAIT_ABDUCTOR_TRAINING "abductor-training" #define TRAIT_ABDUCTOR_SCIENTIST_TRAINING "abductor-scientist-training" #define TRAIT_SURGEON "surgeon" @@ -263,6 +265,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_SCOOPABLE "scoopable" //your smooches actually deal damage to their target #define TRAIT_KISS_OF_DEATH "kiss_of_death" +/// This mob overrides certian SSlag_switch measures with this special trait +#define TRAIT_BYPASS_MEASURES "bypass_lagswitch_measures" //non-mob traits /// Used for limb-based paralysis, where replacing the limb will fix it. #define TRAIT_PARALYSIS "paralysis" @@ -421,3 +425,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_FISH_SAFE_STORAGE "fish_case" /// Stuff that can go inside fish cases #define TRAIT_FISH_CASE_COMPATIBILE "fish_case_compatibile" + +/// Trait granted by [mob/living/silicon/ai] +/// Applied when the ai anchors itself +#define AI_ANCHOR_TRAIT "ai_anchor" diff --git a/code/__DEFINES/typeids.dm b/code/__DEFINES/typeids.dm index 3cf1b16e000b..5329164229d0 100644 --- a/code/__DEFINES/typeids.dm +++ b/code/__DEFINES/typeids.dm @@ -3,6 +3,6 @@ #define TYPEID_NORMAL_LIST "f" //helper macros #define GET_TYPEID(ref) (((length(ref) <= 10) ? "TYPEID_NULL" : copytext(ref, 4, -7))) -#define IS_NORMAL_LIST(L) (GET_TYPEID("\ref[L]") == TYPEID_NORMAL_LIST) +#define IS_NORMAL_LIST(L) (GET_TYPEID(text_ref(L)) == TYPEID_NORMAL_LIST) diff --git a/code/__DEFINES/verb_manager.dm b/code/__DEFINES/verb_manager.dm new file mode 100644 index 000000000000..11ea6ada4d83 --- /dev/null +++ b/code/__DEFINES/verb_manager.dm @@ -0,0 +1,36 @@ +/** + * verb queuing thresholds. remember that since verbs execute after SendMaps the player wont see the effects of the verbs on the game world + * until SendMaps executes next tick, and then when that later update reaches them. thus most player input has a minimum latency of world.tick_lag + player ping. + * however thats only for the visual effect of player input, when a verb processes the actual latency of game state changes or semantic latency is effectively 1/2 player ping, + * unless that verb is queued for the next tick in which case its some number probably smaller than world.tick_lag. + * so some verbs that represent player input are important enough that we only introduce semantic latency if we absolutely need to. + * its for this reason why player clicks are handled in SSinput before even movement - semantic latency could cause someone to move out of range + * when the verb finally processes but it was in range if the verb had processed immediately and overtimed. + */ + +///queuing tick_usage threshold for verbs that are high enough priority that they only queue if the server is overtiming. +///ONLY use for critical verbs +#define VERB_OVERTIME_QUEUE_THRESHOLD 100 +///queuing tick_usage threshold for verbs that need lower latency more than most verbs. +#define VERB_HIGH_PRIORITY_QUEUE_THRESHOLD 95 +///default queuing tick_usage threshold for most verbs which can allow a small amount of latency to be processed in the next tick +#define VERB_DEFAULT_QUEUE_THRESHOLD 85 + +///attempt to queue this verb process if the server is overloaded. evaluates to FALSE if queuing isnt necessary or if it failed. +///_verification_args... are only necessary if the verb_manager subsystem youre using checks them in can_queue_verb() +///if you put anything in _verification_args that ISNT explicitely put in the can_queue_verb() override of the subsystem youre using, +///it will runtime. +#define TRY_QUEUE_VERB(_verb_callback, _tick_check, _subsystem_to_use, _verification_args...) (_queue_verb(_verb_callback, _tick_check, _subsystem_to_use, _verification_args)) +///queue wrapper for TRY_QUEUE_VERB() when you want to call the proc if the server isnt overloaded enough to queue +#define QUEUE_OR_CALL_VERB(_verb_callback, _tick_check, _subsystem_to_use, _verification_args...) \ + if(!TRY_QUEUE_VERB(_verb_callback, _tick_check, _subsystem_to_use, _verification_args)) {\ + _verb_callback:InvokeAsync() \ + }; + +//goes straight to SSverb_manager with default tick threshold +#define DEFAULT_TRY_QUEUE_VERB(_verb_callback, _verification_args...) (TRY_QUEUE_VERB(_verb_callback, VERB_DEFAULT_QUEUE_THRESHOLD, null, _verification_args)) +#define DEFAULT_QUEUE_OR_CALL_VERB(_verb_callback, _verification_args...) QUEUE_OR_CALL_VERB(_verb_callback, VERB_DEFAULT_QUEUE_THRESHOLD, null, _verification_args) + +//default tick threshold but nondefault subsystem +#define TRY_QUEUE_VERB_FOR(_verb_callback, _subsystem_to_use, _verification_args...) (TRY_QUEUE_VERB(_verb_callback, VERB_DEFAULT_QUEUE_THRESHOLD, _subsystem_to_use, _verification_args)) +#define QUEUE_OR_CALL_VERB_FOR(_verb_callback, _subsystem_to_use, _verification_args...) QUEUE_OR_CALL_VERB(_verb_callback, VERB_DEFAULT_QUEUE_THRESHOLD, _subsystem_to_use, _verification_args) diff --git a/code/__HELPERS/_extools_api.dm b/code/__HELPERS/_extools_api.dm index d1961907e1e8..16c70f7d2dc5 100644 --- a/code/__HELPERS/_extools_api.dm +++ b/code/__HELPERS/_extools_api.dm @@ -8,7 +8,7 @@ GLOBAL_LIST_EMPTY(auxtools_initialized) #define AUXTOOLS_CHECK(LIB)\ if (!GLOB.auxtools_initialized[LIB] && fexists(LIB)) {\ - var/string = call(LIB,"auxtools_init")();\ + var/string = LIBCALL(LIB,"auxtools_init")();\ if(findtext(string, "SUCCESS")) {\ GLOB.auxtools_initialized[LIB] = TRUE;\ } else {\ @@ -18,6 +18,6 @@ GLOBAL_LIST_EMPTY(auxtools_initialized) #define AUXTOOLS_SHUTDOWN(LIB)\ if (GLOB.auxtools_initialized[LIB] && fexists(LIB)){\ - call(LIB,"auxtools_shutdown")();\ + LIBCALL(LIB,"auxtools_shutdown")();\ GLOB.auxtools_initialized[LIB] = FALSE;\ }\ diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index 39dccd4e64d7..376e023940de 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -250,6 +250,49 @@ return null +/// Takes a weighted list (see above) and expands it into raw entries +/// This eats more memory, but saves time when actually picking from it +/proc/expand_weights(list/list_to_pick) + var/list/values = list() + for(var/item in list_to_pick) + var/value = list_to_pick[item] + if(!value) + continue + values += value + + var/gcf = greatest_common_factor(values) + + var/list/output = list() + for(var/item in list_to_pick) + var/value = list_to_pick[item] + if(!value) + continue + for(var/i in 1 to value / gcf) + output += item + return output + +/// Takes a list of numbers as input, returns the highest value that is cleanly divides them all +/// Note: this implementation is expensive as heck for large numbers, I only use it because most of my usecase +/// Is < 10 ints +/proc/greatest_common_factor(list/values) + var/smallest = min(arglist(values)) + for(var/i in smallest to 1 step -1) + var/safe = TRUE + for(var/entry in values) + if(entry % i != 0) + safe = FALSE + break + if(safe) + return i + +/// Pick a random element from the list and remove it from the list. +/proc/pick_n_take(list/list_to_pick) + RETURN_TYPE(list_to_pick[_].type) + if(list_to_pick.len) + var/picked = rand(1,list_to_pick.len) + . = list_to_pick[picked] + list_to_pick.Cut(picked,picked+1) //Cut is far more efficient that Remove() + // Allows picks with non-integer weights and also 0 // precision 1000 means it works up to 3 decimal points /proc/pickweight_float(list/L, default=1, precision=1000) @@ -268,14 +311,6 @@ return null -//Pick a random element from the list and remove it from the list. -/proc/pick_n_take(list/L) - RETURN_TYPE(L[_].type) - if(L.len) - var/picked = rand(1,L.len) - . = L[picked] - L.Cut(picked,picked+1) //Cut is far more efficient that Remove() - //Returns the top(last) element from the list and removes it from the list (typical stack function) /proc/pop(list/L) if(L.len) diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 314549a4f464..df8a952c05b5 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -35,6 +35,18 @@ SEND_TEXT(world.log, text) #endif +#if defined(REFERENCE_DOING_IT_LIVE) +#define log_reftracker(msg) log_harddel("## REF SEARCH [msg]") + +/proc/log_harddel(text) + WRITE_LOG(GLOB.harddel_log, text) + +#elif defined(REFERENCE_TRACKING) // Doing it locally +#define log_reftracker(msg) log_world("## REF SEARCH [msg]") + +#else //Not tracking at all +#define log_reftracker(msg) +#endif /* Items with ADMINPRIVATE prefixed are stripped from public logs. */ /proc/log_admin(text) diff --git a/code/__HELPERS/datums.dm b/code/__HELPERS/datums.dm new file mode 100644 index 000000000000..7cf87c203b73 --- /dev/null +++ b/code/__HELPERS/datums.dm @@ -0,0 +1,9 @@ +///Check if a datum has not been deleted and is a valid source +/proc/is_valid_src(datum/source_datum) + if(istype(source_datum)) + return !QDELETED(source_datum) + return FALSE + +/proc/call_async(datum/source, proc_type, list/arguments) + set waitfor = FALSE + return call(source, proc_type)(arglist(arguments)) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 438bbdfda28f..6dc31eea2fdb 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -40,12 +40,23 @@ block( \ if(istype(T)) return T +///Returns a list with all the adjacent open turfs. /proc/get_adjacent_open_turfs(atom/center) - . = list(get_open_turf_in_dir(center, NORTH), - get_open_turf_in_dir(center, SOUTH), - get_open_turf_in_dir(center, EAST), - get_open_turf_in_dir(center, WEST)) - listclearnulls(.) + var/list/hand_back = list() + // Inlined get_open_turf_in_dir, just to be fast + var/turf/open/new_turf = get_step(center, NORTH) + if(istype(new_turf)) + hand_back += new_turf + new_turf = get_step(center, SOUTH) + if(istype(new_turf)) + hand_back += new_turf + new_turf = get_step(center, EAST) + if(istype(new_turf)) + hand_back += new_turf + new_turf = get_step(center, WEST) + if(istype(new_turf)) + hand_back += new_turf + return hand_back /proc/get_adjacent_open_areas(atom/center) . = list() @@ -342,7 +353,7 @@ block( \ /proc/flick_overlay(image/I, list/show_to, duration) for(var/client/C in show_to) C.images += I - addtimer(CALLBACK(GLOBAL_PROC, /proc/remove_images_from_clients, I, show_to), duration, TIMER_CLIENT_TIME) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(remove_images_from_clients), I, show_to), duration, TIMER_CLIENT_TIME) /proc/flick_overlay_view(image/I, atom/target, duration) //wrapper for the above, flicks to everyone who can see the target atom var/list/viewing = list() @@ -464,7 +475,6 @@ block( \ //First we spawn a dude. var/mob/living/carbon/human/new_character = new//The mob being spawned. - SSjob.SendToLateJoin(new_character) G_found.client.prefs.copy_to(new_character) new_character.dna.update_dna_identity() diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 9e7350a1d0aa..1048aaa5c861 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -39,7 +39,6 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_legs, GLOB.spider_legs_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_spinneret, GLOB.spider_spinneret_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_mandibles, GLOB.spider_mandibles_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/kepori_feathers, GLOB.kepori_feathers_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/kepori_body_feathers, GLOB.kepori_body_feathers_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/kepori_tail_feathers, GLOB.kepori_tail_feathers_list) @@ -76,6 +75,13 @@ GLOB.materials_list[D.id] = D sortList(GLOB.materials_list, /proc/cmp_typepaths_asc) + //Default Jobs + for(var/path in subtypesof(/datum/job)) + var/datum/job/new_job = new path() + GLOB.occupations += new_job + GLOB.name_occupations[new_job.name] = new_job + GLOB.type_occupations[path] = new_job + // Keybindings init_keybindings() diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index f8cc644c6649..38e540e996b9 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -1198,7 +1198,7 @@ GLOBAL_DATUM_INIT(dummySave, /savefile, new("tmp/dummySave.sav")) //Cache of ico if(isicon(icon) && isfile(icon)) //icons compiled in from 'icons/path/to/dmi_file.dmi' at compile time are weird and arent really /icon objects, ///but they pass both isicon() and isfile() checks. theyre the easiest case since stringifying them gives us the path we want - var/icon_ref = "\ref[icon]" + var/icon_ref = text_ref(icon) var/locate_icon_string = "[locate(icon_ref)]" icon_path = locate_icon_string @@ -1209,7 +1209,7 @@ GLOBAL_DATUM_INIT(dummySave, /savefile, new("tmp/dummySave.sav")) //Cache of ico // the rsc reference returned by fcopy_rsc() will be stringifiable to "icons/path/to/dmi_file.dmi" var/rsc_ref = fcopy_rsc(icon) - var/icon_ref = "\ref[rsc_ref]" + var/icon_ref = text_ref(rsc_ref) var/icon_path_string = "[locate(icon_ref)]" @@ -1219,7 +1219,7 @@ GLOBAL_DATUM_INIT(dummySave, /savefile, new("tmp/dummySave.sav")) //Cache of ico var/rsc_ref = fcopy_rsc(icon) //if its the text path of an existing dmi file, the rsc reference returned by fcopy_rsc() will be stringifiable to a dmi path - var/rsc_ref_ref = "\ref[rsc_ref]" + var/rsc_ref_ref = text_ref(rsc_ref) var/rsc_ref_string = "[locate(rsc_ref_ref)]" icon_path = rsc_ref_string @@ -1244,6 +1244,8 @@ GLOBAL_DATUM_INIT(dummySave, /savefile, new("tmp/dummySave.sav")) //Cache of ico /proc/icon2html(atom/thing, client/target, icon_state, dir = SOUTH, frame = 1, moving = FALSE, sourceonly = FALSE, extra_classes = null) if (!thing) return + if(SSlag_switch.measures[DISABLE_USR_ICON2HTML] && usr && !HAS_TRAIT(usr, TRAIT_BYPASS_MEASURES)) + return var/key var/icon/icon2collapse = thing @@ -1354,6 +1356,8 @@ GLOBAL_DATUM_INIT(dummySave, /savefile, new("tmp/dummySave.sav")) //Cache of ico /proc/costly_icon2html(thing, target, sourceonly = FALSE) if (!thing) return + if(SSlag_switch.measures[DISABLE_USR_ICON2HTML] && usr && !HAS_TRAIT(usr, TRAIT_BYPASS_MEASURES)) + return if (isicon(thing)) return icon2html(thing, target) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index e824b3d82273..8838ba324530 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -78,8 +78,6 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_legs, GLOB.spider_legs_list) if(!GLOB.spider_spinneret_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_spinneret, GLOB.spider_spinneret_list) - if(!GLOB.spider_mandibles_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_mandibles, GLOB.spider_mandibles_list) if(!GLOB.kepori_feathers_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/kepori_feathers, GLOB.kepori_feathers_list) if(!GLOB.kepori_tail_feathers_list.len) @@ -118,7 +116,6 @@ "moth_wings" = pick(GLOB.moth_wings_list), "face_markings" = pick(GLOB.face_markings_list), "spider_legs" = pick(GLOB.spider_legs_list), - "spider_mandibles" = pick(GLOB.spider_mandibles_list), "spider_spinneret" = pick(GLOB.spider_spinneret_list), "spines" = pick(GLOB.spines_list), "squid_face" = pick(GLOB.squid_face_list), @@ -244,7 +241,7 @@ GLOBAL_LIST_EMPTY(species_list) return "unknown" ///Timed action involving two mobs, the user and the target. -/proc/do_mob(mob/user , mob/target, time = 3 SECONDS, uninterruptible = FALSE, progress = TRUE, datum/callback/extra_checks = null) +/proc/do_mob(mob/user , mob/target, time = 3 SECONDS, uninterruptible = FALSE, progress = TRUE, datum/callback/extra_checks = null, ignore_loc_change = FALSE) if(!user || !target) return FALSE @@ -284,7 +281,12 @@ GLOBAL_LIST_EMPTY(species_list) drifting = FALSE user_loc = user.loc - if((!drifting && user.loc != user_loc) || target.loc != target_loc || user.get_active_held_item() != holding || user.incapacitated() || (extra_checks && !extra_checks.Invoke())) + + if(!ignore_loc_change && ((!drifting && user.loc != user_loc) || target.loc != target_loc)) + . = FALSE + break + + if(user.get_active_held_item() != holding || user.incapacitated() || (extra_checks && !extra_checks.Invoke())) . = FALSE break if(!QDELETED(progbar)) diff --git a/code/__HELPERS/nameof.dm b/code/__HELPERS/nameof.dm new file mode 100644 index 000000000000..7cd5777f4652 --- /dev/null +++ b/code/__HELPERS/nameof.dm @@ -0,0 +1,15 @@ +/** + * NAMEOF: Compile time checked variable name to string conversion + * evaluates to a string equal to "X", but compile errors if X isn't a var on datum. + * datum may be null, but it does need to be a typed var. + **/ +#define NAMEOF(datum, X) (#X || ##datum.##X) + +/** + * NAMEOF that actually works in static definitions because src::type requires src to be defined + */ +#if DM_VERSION >= 515 +#define NAMEOF_STATIC(datum, X) (nameof(type::##X)) +#else +#define NAMEOF_STATIC(datum, X) (#X || ##datum.##X) +#endif diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 87e4beb62c8d..f89cfea14edb 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -236,6 +236,24 @@ return copytext(text, 1, i + 1) return "" +//Returns a string with reserved characters and spaces after the first and last letters removed +//Like trim(), but very slightly faster. worth it for niche usecases +/proc/trim_reduced(text) + var/starting_coord = 1 + var/text_len = length(text) + for (var/i in 1 to text_len) + if (text2ascii(text, i) > 32) + starting_coord = i + break + + for (var/i = text_len, i >= starting_coord, i--) + if (text2ascii(text, i) > 32) + return copytext(text, starting_coord, i + 1) + + if(starting_coord > 1) + return copytext(text, starting_coord) + return "" + /** * Truncate a string to the given length * @@ -255,7 +273,7 @@ /proc/trim(text, max_length) if(max_length) text = copytext_char(text, 1, max_length) - return trim_left(trim_right(text)) + return trim_reduced(text) //Returns a string with the first element of the string capitalized. /proc/capitalize(t) @@ -735,6 +753,9 @@ GLOBAL_LIST_INIT(binary, list("0","1")) base = text("[]\herself", rest) if("hers") base = text("[]\hers", rest) + else // Someone fucked up, if you're not a macro just go home yeah? + // This does technically break parsing, but at least it's better then what it used to do + return base . = base if(rest) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 9ca24f24cb7e..94039f138721 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -32,6 +32,27 @@ else if(dx<0) .+=360 + +////Tile coordinates (x, y) to absolute coordinates (in number of pixels). Center of a tile is generally assumed to be (16,16), but can be offset. +#define ABS_COOR(c) (((c - 1) * 32) + 16) +#define ABS_COOR_OFFSET(c, o) (((c - 1) * 32) + o) + +/proc/get_angle_with_scatter(atom/start, atom/end, scatter, x_offset = 16, y_offset = 16) + var/end_apx + var/end_apy + if(isliving(end)) //Center mass. + end_apx = ABS_COOR(end.x) + end_apy = ABS_COOR(end.y) + else //Exact pixel. + end_apx = ABS_COOR_OFFSET(end.x, x_offset) + end_apy = ABS_COOR_OFFSET(end.y, y_offset) + scatter = ((rand(0, min(scatter, 45))) * (prob(50) ? 1 : -1)) //Up to 45 degrees deviation to either side. + . = round((90 - ATAN2(end_apx - ABS_COOR(start.x), end_apy - ABS_COOR(start.y))), 1) + scatter + if(. < 0) + . += 360 + else if(. >= 360) + . -= 360 + /proc/Get_Pixel_Angle(y, x)//for getting the angle when animating something's pixel_x and pixel_y if(!y) return (x>=0)?90:270 @@ -379,16 +400,16 @@ Turf and target are separate in case you want to teleport some distance from a t break return turf_to_check -//Returns a list of all locations (except the area) the movable is within. -/proc/get_nested_locs(atom/movable/AM, include_turf = FALSE) +///Returns a list of all locations (except the area) the movable is within. +/proc/get_nested_locs(atom/movable/atom_on_location, include_turf = FALSE) . = list() - var/atom/location = AM.loc - var/turf/turf = get_turf(AM) - while(location && location != turf) + var/atom/location = atom_on_location.loc + var/turf/our_turf = get_turf(atom_on_location) + while(location && location != our_turf) . += location location = location.loc - if(location && include_turf) //At this point, only the turf is left, provided it exists. - . += location + if(our_turf && include_turf) //At this point, only the turf is left, provided it exists. + . += our_turf // returns the turf located at the map edge in the specified direction relative to A // used for mass driver @@ -660,6 +681,11 @@ will handle it, but: if(!istype(AM)) return + //Find coordinates + var/turf/T = get_turf(AM) //use checked_atom's turfs, as it's coords are the same as checked_atom's AND checked_atom's coords are lost if it is inside another atom + if(!T) + return null + //Find AM's matrix so we can use it's X/Y pixel shifts var/matrix/M = matrix(AM.transform) @@ -678,10 +704,6 @@ will handle it, but: var/rough_x = round(round(pixel_x_offset,world.icon_size)/world.icon_size) var/rough_y = round(round(pixel_y_offset,world.icon_size)/world.icon_size) - //Find coordinates - var/turf/T = get_turf(AM) //use AM's turfs, as it's coords are the same as AM's AND AM's coords are lost if it is inside another atom - if(!T) - return null var/final_x = T.x + rough_x var/final_y = T.y + rough_y @@ -1363,11 +1385,13 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) return "{[time_high]-[time_mid]-[GUID_VERSION][time_low]-[GUID_VARIANT][time_clock]-[node_id]}" -// \ref behaviour got changed in 512 so this is necesary to replicate old behaviour. -// If it ever becomes necesary to get a more performant REF(), this lies here in wait -// #define REF(thing) (thing && istype(thing, /datum) && (thing:datum_flags & DF_USE_TAG) && thing:tag ? "[thing:tag]" : "\ref[thing]") +/** + * \ref behaviour got changed in 512 so this is necesary to replicate old behaviour. + * If it ever becomes necesary to get a more performant REF(), this lies here in wait + * #define REF(thing) (thing && isdatum(thing) && (thing:datum_flags & DF_USE_TAG) && thing:tag ? "[thing:tag]" : text_ref(thing)) +**/ /proc/REF(input) - if(istype(input, /datum)) + if(isdatum(input)) var/datum/thing = input if(thing.datum_flags & DF_USE_TAG) if(!thing.tag) @@ -1375,11 +1399,11 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) thing.datum_flags &= ~DF_USE_TAG else return "\[[url_encode(thing.tag)]\]" - return "\ref[input]" + return text_ref(input) // Makes a call in the context of a different usr // Use sparingly -/world/proc/PushUsr(mob/M, datum/callback/CB, ...) +/world/proc/push_usr(mob/M, datum/callback/CB, ...) var/temp = usr usr = M if (length(args) > 2) @@ -1388,12 +1412,9 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) . = CB.Invoke() usr = temp -//datum may be null, but it does need to be a typed var -#define NAMEOF(datum, X) (#X || ##datum.##X) - -#define VARSET_LIST_CALLBACK(target, var_name, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, ##target, ##var_name, ##var_value) +#define VARSET_LIST_CALLBACK(target, var_name, var_value) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___callbackvarset), ##target, ##var_name, ##var_value) //dupe code because dm can't handle 3 level deep macros -#define VARSET_CALLBACK(datum, var, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, ##datum, NAMEOF(##datum, ##var), ##var_value) +#define VARSET_CALLBACK(datum, var, var_value) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___callbackvarset), ##datum, NAMEOF(##datum, ##var), ##var_value) /proc/___callbackvarset(list_or_datum, var_name, var_value) if(length(list_or_datum)) @@ -1405,8 +1426,8 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) else D.vars[var_name] = var_value -#define TRAIT_CALLBACK_ADD(target, trait, source) CALLBACK(GLOBAL_PROC, /proc/___TraitAdd, ##target, ##trait, ##source) -#define TRAIT_CALLBACK_REMOVE(target, trait, source) CALLBACK(GLOBAL_PROC, /proc/___TraitRemove, ##target, ##trait, ##source) +#define TRAIT_CALLBACK_ADD(target, trait, source) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___TraitAdd), ##target, ##trait, ##source) +#define TRAIT_CALLBACK_REMOVE(target, trait, source) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___TraitRemove), ##target, ##trait, ##source) ///DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback. /proc/___TraitAdd(target,trait,source) diff --git a/code/__HELPERS/virtual_z_level.dm b/code/__HELPERS/virtual_z_level.dm index a218539de4b0..b00c77b80b83 100644 --- a/code/__HELPERS/virtual_z_level.dm +++ b/code/__HELPERS/virtual_z_level.dm @@ -24,6 +24,7 @@ return my_turf.virtual_z /atom/proc/get_virtual_level() + RETURN_TYPE(/datum/virtual_level) return /atom/movable/get_virtual_level() @@ -45,3 +46,7 @@ var/datum/virtual_level/vlevel = get_virtual_level() if(vlevel) return vlevel.parent_map_zone + +/atom/proc/get_relative_location() + var/datum/virtual_level/vlevel = get_virtual_level() + return vlevel?.get_relative_coords(src) diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm index d711276efc27..08ca94db6c6a 100644 --- a/code/__byond_version_compat.dm +++ b/code/__byond_version_compat.dm @@ -1,7 +1,7 @@ // This file contains defines allowing targeting byond versions newer than the supported //Update this whenever you need to take advantage of more recent byond features -/*#define MIN_COMPILER_VERSION 514 +#define MIN_COMPILER_VERSION 514 #define MIN_COMPILER_BUILD 1556 #if (DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD) && !defined(SPACEMAN_DMM) //Don't forget to update this part @@ -12,8 +12,13 @@ #if (DM_VERSION == 514 && DM_BUILD > 1575 && DM_BUILD <= 1577) #error Your version of BYOND currently has a crashing issue that will prevent you from running Dream Daemon test servers. #error We require developers to test their content, so an inability to test means we cannot allow the compile. -#error Please consider downgrading to 514.1575 or lower. -#endif*/ +#error Please consider upgrading to 514.1577 or above. +#endif + +#if (DM_VERSION == 514 && DM_BUILD == 1589) +#warn Warning! Byond 514.1589 has been known to be unstable. Use at your own risk. +#warn Please consider using 514.1588. +#endif // Keep savefile compatibilty at minimum supported level #if DM_VERSION >= 515 @@ -43,3 +48,16 @@ /// Call by name proc reference, checks if the proc is existing global proc #define GLOBAL_PROC_REF(X) (/proc/##X) #endif + +// I heard that this was fixed in 1609 (not public currently), but that could be wrong, so keep an eye on this +#if (DM_VERSION == 515 && DM_BUILD < 1609) +/// fcopy will crash on 515 linux if given a non-existant file, instead of returning 0 like on 514 linux or 515 windows +/// var case matches documentation for fcopy. +/world/proc/__fcopy(Src, Dst) + if (!fexists(Src)) + return 0 + return fcopy(Src, Dst) + +#define fcopy(Src, Dst) world.__fcopy(Src, Dst) + +#endif diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 4b661c80e6e7..4f96217abd2c 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -15,9 +15,14 @@ //#define REFERENCE_TRACKING #ifdef REFERENCE_TRACKING +///Used for doing dry runs of the reference finder, to test for feature completeness +///Slightly slower, higher in memory. Just not optimal +//#define REFERENCE_TRACKING_DEBUG + ///Run a lookup on things hard deleting by default. //#define GC_FAILURE_HARD_LOOKUP #ifdef GC_FAILURE_HARD_LOOKUP +///Don't stop when searching, go till you're totally done #define FIND_REF_NO_CHECK_TICK #endif //ifdef GC_FAILURE_HARD_LOOKUP @@ -26,6 +31,16 @@ //#define VISUALIZE_ACTIVE_TURFS //Highlights atmos active turfs in green #endif //ifdef TESTING +/// If this is uncommented, we set up the ref tracker to be used in a live environment +/// And to log events to [log_dir]/harddels.log +//#define REFERENCE_DOING_IT_LIVE +#ifdef REFERENCE_DOING_IT_LIVE +// compile the backend +#define REFERENCE_TRACKING +// actually look for refs +#define GC_FAILURE_HARD_LOOKUP +#endif // REFERENCE_DOING_IT_LIVE + //#define UNIT_TESTS //Enables unit tests via TEST_RUN_PARAMETER #ifndef PRELOAD_RSC //set to: @@ -37,23 +52,6 @@ /// Prefer the autowiki build target instead. // #define AUTOWIKI -//Update this whenever you need to take advantage of more recent byond features -#define MIN_COMPILER_VERSION 513 -#define MIN_COMPILER_BUILD 1514 -#if DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD -//Don't forget to update this part -#error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update. -#error You need version 513.1514 or higher -#endif - -//Update this whenever the byond version is stable so people stop updating to hilariously broken versions -//#define MAX_COMPILER_VERSION 514 -//#define MAX_COMPILER_BUILD 1571 -#ifdef MAX_COMPILER_VERSION -#if DM_VERSION > MAX_COMPILER_VERSION || DM_BUILD > MAX_COMPILER_BUILD -#warn WARNING: Your BYOND version is over the recommended version (514.1571)! Stability is not guaranteed. -#endif -#endif //Log the full sendmaps profile on 514.1556+, any earlier and we get bugs or it not existing #if DM_VERSION >= 514 && DM_BUILD >= 1556 #define SENDMAPS_PROFILE @@ -72,6 +70,14 @@ #define TESTING #endif +#ifdef UNIT_TESTS +//Hard del testing defines +#define REFERENCE_TRACKING +#define REFERENCE_TRACKING_DEBUG +#define FIND_REF_NO_CHECK_TICK +#define GC_FAILURE_HARD_LOOKUP +#endif + // A reasonable number of maximum overlays an object needs // If you think you need more, rethink it #define MAX_ATOM_OVERLAYS 100 diff --git a/code/_debugger.dm b/code/_debugger.dm index dafc759ec563..1518908fa9a0 100644 --- a/code/_debugger.dm +++ b/code/_debugger.dm @@ -9,5 +9,5 @@ /datum/debugger/proc/enable_debugger() var/dll = world.GetConfig("env", "AUXTOOLS_DEBUG_DLL") if (dll) - call(dll, "auxtools_init")() + LIBCALL(dll, "auxtools_init")() enable_debugging() diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 905fd5039ca5..406f0bb0b101 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -202,6 +202,11 @@ DEFINE_BITFIELD(obj_flags, list( "ON_BLUEPRINTS" = ON_BLUEPRINTS, "UNIQUE_RENAME" = UNIQUE_RENAME, "USES_TGUI" = USES_TGUI, + "FROZEN" = FROZEN, + "BLOCK_Z_OUT_DOWN" = BLOCK_Z_OUT_DOWN, + "BLOCK_Z_OUT_UP" = BLOCK_Z_OUT_UP, + "BLOCK_Z_IN_DOWN" = BLOCK_Z_IN_DOWN, + "BLOCK_Z_IN_UP" = BLOCK_Z_IN_UP, )) DEFINE_BITFIELD(pass_flags, list( @@ -222,7 +227,9 @@ DEFINE_BITFIELD(resistance_flags, list( "UNACIDABLE" = UNACIDABLE, "ACID_PROOF" = ACID_PROOF, "INDESTRUCTIBLE" = INDESTRUCTIBLE, - "FREEZE_PROOF" = FREEZE_PROOF + "FREEZE_PROOF" = FREEZE_PROOF, + "LANDING_PROOF" = LANDING_PROOF, + "HYPERSPACE_PROOF" = HYPERSPACE_PROOF, )) DEFINE_BITFIELD(sight, list( diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 66196b1a6dd6..aca090086487 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -43,7 +43,6 @@ GLOBAL_LIST_EMPTY(ipc_chassis_list) GLOBAL_LIST_INIT(ipc_brain_list, list("Posibrain", "Man-Machine Interface")) GLOBAL_LIST_EMPTY(spider_legs_list) GLOBAL_LIST_EMPTY(spider_spinneret_list) -GLOBAL_LIST_EMPTY(spider_mandibles_list) GLOBAL_LIST_EMPTY(kepori_feathers_list) GLOBAL_LIST_EMPTY(kepori_body_feathers_list) GLOBAL_LIST_EMPTY(kepori_tail_feathers_list) @@ -128,7 +127,7 @@ GLOBAL_LIST_INIT(ai_core_display_screens, sortList(list( "Helios", "House", "Inverted", - "Lamp", //WS edit, moff ai display + "Lamp", "Matrix", "Monochrome", "Murica", diff --git a/code/_globalvars/lists/jobs.dm b/code/_globalvars/lists/jobs.dm new file mode 100644 index 000000000000..181a39727101 --- /dev/null +++ b/code/_globalvars/lists/jobs.dm @@ -0,0 +1,3 @@ +GLOBAL_LIST_EMPTY(occupations) +GLOBAL_LIST_EMPTY(name_occupations) +GLOBAL_LIST_EMPTY(type_occupations) diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 07e17b8382c5..0091b88fa15f 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -233,6 +233,7 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/storage/box/donkpockets/donkpockethonk = 1, ) = 1, /obj/item/reagent_containers/food/snacks/monkeycube = 1, + /obj/effect/spawner/lootdrop/ration = 1, ) = 8, list(//fakeout items, keep this list at low relative weight diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index ded23733220c..fb00d8bdf283 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -12,6 +12,7 @@ GLOBAL_LIST_EMPTY(stealthminID) //reference list with IDs that store ckeys, //This is for procs to replace all the goddamn 'in world's that are chilling around the code GLOBAL_LIST_EMPTY(player_list) //all mobs **with clients attached**. +GLOBAL_LIST_EMPTY(keyloop_list) //as above but can be limited to boost performance GLOBAL_LIST_EMPTY(mob_list) //all mobs, including clientless GLOBAL_LIST_EMPTY(mob_directory) //mob_id -> mob GLOBAL_LIST_EMPTY(alive_mob_list) //all alive mobs, including clientless. Excludes /mob/dead/new_player @@ -34,6 +35,8 @@ GLOBAL_LIST_EMPTY(aiEyes) ///underages who have been reported to security for trying to buy things they shouldn't, so they can't spam GLOBAL_LIST_EMPTY(narcd_underages) +GLOBAL_LIST_EMPTY(real_names_joined) + GLOBAL_LIST_EMPTY(language_datum_instances) GLOBAL_LIST_EMPTY(all_languages) diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index e83b4bfca48e..181752707d4d 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -49,6 +49,11 @@ GLOBAL_PROTECT(perf_log) GLOBAL_VAR(demo_log) GLOBAL_PROTECT(demo_log) +#ifdef REFERENCE_DOING_IT_LIVE +GLOBAL_VAR(harddel_log) +GLOBAL_PROTECT(harddel_log) +#endif + GLOBAL_LIST_EMPTY(bombers) GLOBAL_PROTECT(bombers) GLOBAL_LIST_EMPTY(admin_log) diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index b08504daae29..3239cb53b8d0 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -84,6 +84,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_CANNOT_OPEN_PRESENTS" = TRAIT_CANNOT_OPEN_PRESENTS, "TRAIT_PRESENT_VISION" = TRAIT_PRESENT_VISION, "TRAIT_DISK_VERIFIER" = TRAIT_DISK_VERIFIER, + "TRAIT_BYPASS_MEASURES" = TRAIT_BYPASS_MEASURES, "TRAIT_NOMOBSWAP" = TRAIT_NOMOBSWAP, "TRAIT_XRAY_VISION" = TRAIT_XRAY_VISION, "TRAIT_THERMAL_VISION" = TRAIT_THERMAL_VISION, diff --git a/code/_onclick/adjacent.dm b/code/_onclick/adjacent.dm index 2528c246dcf4..944847959158 100644 --- a/code/_onclick/adjacent.dm +++ b/code/_onclick/adjacent.dm @@ -104,7 +104,7 @@ */ /turf/proc/ClickCross(target_dir, border_only, target_atom = null, atom/movable/mover = null) for(var/obj/O in src) - if((mover && O.CanPass(mover,get_step(src,target_dir))) || (!mover && !O.density)) + if((mover && O.CanPass(mover, target_dir)) || (!mover && !O.density)) continue if(O == target_atom || O == mover || (O.pass_flags_self & LETPASSTHROW)) //check if there's a dense object present on the turf continue // LETPASSTHROW is used for anything you can click through (or the firedoor special case, see above) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index c81f8addfcb5..f8c60ecd97fa 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -38,9 +38,10 @@ * * Note that this proc can be overridden, and is in the case of screen objects. */ -/atom/Click(location,control,params) +/atom/Click(location, control, params) if(flags_1 & INITIALIZED_1) SEND_SIGNAL(src, COMSIG_CLICK, location, control, params, usr) + usr.ClickOn(src, params) /atom/DblClick(location,control,params) diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm index 00a16eefda33..ac401489f40a 100644 --- a/code/_onclick/drag_drop.dm +++ b/code/_onclick/drag_drop.dm @@ -108,7 +108,7 @@ UnregisterSignal(mouseObject, COMSIG_PARENT_QDELETING) mouseObject = over_object // register signal to new mouseObject - RegisterSignal(mouseObject, COMSIG_PARENT_QDELETING, .proc/clear_mouseObject) + RegisterSignal(mouseObject, COMSIG_PARENT_QDELETING, PROC_REF(clear_mouseObject)) mouseControlObject = over_control if(selected_target[1] && over_object && over_object.IsAutoclickable()) selected_target[1] = over_object diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 8071bec684b7..8a61e094fa1d 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -65,7 +65,7 @@ Override makes it so the alert is not replaced until cleared by a clear_alert wi animate(thealert, transform = matrix(), time = 2.5, easing = CUBIC_EASING) if(thealert.timeout) - addtimer(CALLBACK(src, .proc/alert_timeout, thealert, category), thealert.timeout) + addtimer(CALLBACK(src, PROC_REF(alert_timeout), thealert, category), thealert.timeout) thealert.timeout = world.time + thealert.timeout - world.tick_lag return thealert @@ -313,7 +313,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." add_overlay(receiving) src.receiving = receiving src.offerer = offerer - RegisterSignal(taker, COMSIG_MOVABLE_MOVED, .proc/check_in_range, override = TRUE) //Override to prevent runtimes when people offer a item multiple times + RegisterSignal(taker, COMSIG_MOVABLE_MOVED, PROC_REF(check_in_range), override = TRUE) //Override to prevent runtimes when people offer a item multiple times /atom/movable/screen/alert/give/proc/removeAlert() to_chat(owner, "You moved out of range of [offerer]!") @@ -341,7 +341,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." . = ..() name = "[offerer] is offering a high-five!" desc = "[offerer] is offering a high-five! Click this alert to slap it." - RegisterSignal(offerer, COMSIG_PARENT_EXAMINE_MORE, .proc/check_fake_out) + RegisterSignal(offerer, COMSIG_PARENT_EXAMINE_MORE, PROC_REF(check_fake_out)) /atom/movable/screen/alert/give/highfive/handle_transfer() var/mob/living/carbon/taker = owner @@ -359,7 +359,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." offerer.visible_message(span_notice("[rube] rushes in to high-five [offerer], but-"), span_nicegreen("[rube] falls for your trick just as planned, lunging for a high-five that no longer exists! Classic!"), ignored_mobs=rube) to_chat(rube, span_nicegreen("You go in for [offerer]'s high-five, but-")) - addtimer(CALLBACK(src, .proc/too_slow_p2, offerer, rube), 0.5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(too_slow_p2), offerer, rube), 0.5 SECONDS) /// Part two of the ultimate prank /atom/movable/screen/alert/give/highfive/proc/too_slow_p2() @@ -657,12 +657,13 @@ so as to remain in compliance with the most up-to-date laws." desc = "A body was created. You can enter it." icon_state = "template" timeout = 300 - var/atom/target = null + var/datum/weakref/target_ref var/action = NOTIFY_JUMP /atom/movable/screen/alert/notify_action/Click() if(!usr || !usr.client || usr != owner) return + var/atom/target = target_ref?.resolve() if(!target) return var/mob/dead/observer/G = usr diff --git a/code/_onclick/hud/credits.dm b/code/_onclick/hud/credits.dm index 603754d2c093..0ee063593a8b 100644 --- a/code/_onclick/hud/credits.dm +++ b/code/_onclick/hud/credits.dm @@ -36,7 +36,7 @@ GLOBAL_LIST_INIT(patrons, world.file2list("[global.config.directory]/patrons.txt if(!C) continue - addtimer(CALLBACK(GLOBAL_PROC, .proc/create_credit, C), CREDIT_SPAWN_SPEED * i + (3 * CREDIT_SPAWN_SPEED), TIMER_CLIENT_TIME) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(create_credit), C), CREDIT_SPAWN_SPEED * i + (3 * CREDIT_SPAWN_SPEED), TIMER_CLIENT_TIME) /proc/create_credit(credit) new /atom/movable/screen/credit(null, credit) @@ -59,15 +59,19 @@ GLOBAL_LIST_INIT(patrons, world.file2list("[global.config.directory]/patrons.txt animate(src, transform = M, time = CREDIT_ROLL_SPEED) target = M animate(src, alpha = 255, time = CREDIT_EASE_DURATION, flags = ANIMATION_PARALLEL) - INVOKE_ASYNC(src, .proc/add_to_clients) + INVOKE_ASYNC(src, PROC_REF(add_to_clients)) QDEL_IN(src, CREDIT_ROLL_SPEED) /atom/movable/screen/credit/proc/add_to_clients() - for(var/client/C in GLOB.clients) - if(C.prefs.show_credits) + for(var/client/C as anything in GLOB.clients) + if(C?.prefs.show_credits) C.screen += src /atom/movable/screen/credit/Destroy() + for(var/client/C as anything in GLOB.clients) + if(!C) + continue + C.screen -= src screen_loc = null return ..() diff --git a/code/_onclick/hud/families.dm b/code/_onclick/hud/families.dm deleted file mode 100644 index 7f2e11a6ad73..000000000000 --- a/code/_onclick/hud/families.dm +++ /dev/null @@ -1,29 +0,0 @@ -/atom/movable/screen/wanted - name = "Space Police Alertness" - desc = "Shows the current level of hostility the space police is planning to rain down on you. Better be careful." - icon = 'icons/obj/gang/wanted_160x32.dmi' - icon_state = "wanted_0" - base_icon_state = "wanted" - screen_loc = ui_wanted_lvl - ///Wanted level, affects the hud icon. - var/level - ///Boolean, have the cops arrived? If so, the icon stops changing and remains the same. - var/cops_arrived - -/atom/movable/screen/wanted/Initialize() - . = ..() - var/datum/game_mode/gang/F = SSticker.mode - level = F.wanted_level - cops_arrived = F.cops_arrived - update_appearance() - -/atom/movable/screen/wanted/MouseEntered(location,control,params) - . = ..() - openToolTip(usr,src,params,title = name,content = desc, theme = "alerttooltipstyle") - -/atom/movable/screen/wanted/MouseExited() - closeToolTip(usr) - -/atom/movable/screen/wanted/update_icon_state() - icon_state = "[base_icon_state]_[level][cops_arrived ? "_active" : null]" - return ..() diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 14b95e421c3d..b286ff28f4c5 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -25,7 +25,7 @@ if(animated) animate(screen, alpha = 0, time = animated) - addtimer(CALLBACK(src, .proc/clear_fullscreen_after_animate, screen), animated, TIMER_CLIENT_TIME) + addtimer(CALLBACK(src, PROC_REF(clear_fullscreen_after_animate), screen), animated, TIMER_CLIENT_TIME) else if(client) client.screen -= screen diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index b7224ced6185..27b220d7fdb7 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -62,10 +62,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list( var/atom/movable/screen/healths var/atom/movable/screen/healthdoll var/atom/movable/screen/internals - var/atom/movable/screen/wanted/wanted_lvl - /*WS begin - var/atom/movable/screen/spacesuit - WS End - Fuckin' spacesuits. */ // subtypes can override this to force a specific UI style var/ui_style @@ -113,7 +109,6 @@ GLOBAL_LIST_INIT(available_ui_styles, list( healths = null healthdoll = null - wanted_lvl = null internals = null lingchemdisplay = null devilsouldisplay = null diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm index 334dabd9198e..0bf17de075bf 100644 --- a/code/_onclick/hud/parallax.dm +++ b/code/_onclick/hud/parallax.dm @@ -46,6 +46,10 @@ /datum/hud/proc/apply_parallax_pref(mob/viewmob) var/mob/screenmob = viewmob || mymob + + if (SSlag_switch.measures[DISABLE_PARALLAX] && !HAS_TRAIT(viewmob, TRAIT_BYPASS_MEASURES)) + return FALSE + var/client/C = screenmob.client if(C.prefs) var/pref = C.prefs.parallax @@ -129,7 +133,7 @@ C.parallax_movedir = new_parallax_movedir if (C.parallax_animate_timer) deltimer(C.parallax_animate_timer) - var/datum/callback/CB = CALLBACK(src, .proc/update_parallax_motionblur, C, animatedir, new_parallax_movedir, newtransform) + var/datum/callback/CB = CALLBACK(src, PROC_REF(update_parallax_motionblur), C, animatedir, new_parallax_movedir, newtransform) if(skip_windups) CB.Invoke() else diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index b672b901d086..ff65665f95c1 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -14,7 +14,7 @@ GLOBAL_LIST_EMPTY(radial_menus) UnregisterSignal(parent, COMSIG_PARENT_QDELETING) parent = new_value if(parent) - RegisterSignal(parent, COMSIG_PARENT_QDELETING, .proc/handle_parent_del) + RegisterSignal(parent, COMSIG_PARENT_QDELETING, PROC_REF(handle_parent_del)) /atom/movable/screen/radial/proc/handle_parent_del() SIGNAL_HANDLER diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index ccdc23d552f9..457a7ad5a599 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -283,6 +283,12 @@ icon_state = "[base_icon_state]_[robot?.lamp_enabled ? "on" : "off"]" return ..() +/atom/movable/screen/robot/lamp/Destroy() + if(robot) + robot.lampButton = null + robot = null + return ..() + /atom/movable/screen/robot/modPC name = "Modular Interface" icon_state = "template" @@ -294,6 +300,12 @@ return robot.modularInterface?.interact(robot) +/atom/movable/screen/robot/modPC/Destroy() + if(robot) + robot.interfaceButton = null + robot = null + return ..() + /atom/movable/screen/robot/alerts name = "Alert Panel" icon = 'icons/hud/screen_ai.dmi' diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 7266013b35a8..8615b9a9aa6d 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -684,6 +684,8 @@ /atom/movable/screen/splash/New(client/C, visible, use_previous_title) //TODO: Make this use INITIALIZE_IMMEDIATE, except its not easy . = ..() + if(!istype(C)) + return holder = C @@ -747,7 +749,7 @@ deltimer(timerid) if(!streak) return ..() - timerid = addtimer(CALLBACK(src, .proc/clear_streak), 20, TIMER_UNIQUE | TIMER_STOPPABLE) + timerid = addtimer(CALLBACK(src, PROC_REF(clear_streak)), 20, TIMER_UNIQUE | TIMER_STOPPABLE) icon_state = "combo" for(var/i = 1; i <= length(streak); ++i) var/intent_text = copytext(streak, i, i + 1) diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index 22c19f7cf627..8a25babbb010 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -42,7 +42,7 @@ . &= !(protection & CONFIG_ENTRY_HIDDEN) /datum/config_entry/vv_edit_var(var_name, var_value) - var/static/list/banned_edits = list(NAMEOF(src, name), NAMEOF(src, vv_VAS), NAMEOF(src, default), NAMEOF(src, resident_file), NAMEOF(src, protection), NAMEOF(src, abstract_type), NAMEOF(src, modified), NAMEOF(src, dupes_allowed)) + var/static/list/banned_edits = list(NAMEOF_STATIC(src, name), NAMEOF_STATIC(src, vv_VAS), NAMEOF_STATIC(src, default), NAMEOF_STATIC(src, resident_file), NAMEOF_STATIC(src, protection), NAMEOF_STATIC(src, abstract_type), NAMEOF_STATIC(src, modified), NAMEOF_STATIC(src, dupes_allowed)) if(var_name == NAMEOF(src, config_entry_value)) if(protection & CONFIG_ENTRY_LOCKED) return FALSE @@ -105,7 +105,7 @@ return FALSE /datum/config_entry/number/vv_edit_var(var_name, var_value) - var/static/list/banned_edits = list(NAMEOF(src, max_val), NAMEOF(src, min_val), NAMEOF(src, integer)) + var/static/list/banned_edits = list(NAMEOF_STATIC(src, max_val), NAMEOF_STATIC(src, min_val), NAMEOF_STATIC(src, integer)) return !(var_name in banned_edits) && ..() /datum/config_entry/flag diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 70fb5d107f3f..c806ec40837a 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -352,4 +352,4 @@ Example config: //Message admins when you can. /datum/controller/configuration/proc/DelayedMessageAdmins(text) - addtimer(CALLBACK(GLOBAL_PROC, /proc/message_admins, text), 0) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(message_admins), text), 0) diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index bf9b8d24a05c..41a470aac610 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -325,6 +325,10 @@ /datum/config_entry/flag/maprotation +/datum/config_entry/number/auto_lag_switch_pop //Number of clients at which drastic lag mitigation measures kick in + config_entry_value = null + min_val = 0 + /datum/config_entry/number/soft_popcap config_entry_value = null min_val = 0 diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 6f55532aed39..302c0de4a427 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -343,9 +343,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new queue_tail = null //these sort by lower priorities first to reduce the number of loops needed to add subsequent SS's to the queue //(higher subsystems will be sooner in the queue, adding them later in the loop means we don't have to loop thru them next queue add) - sortTim(tickersubsystems, /proc/cmp_subsystem_priority) + sortTim(tickersubsystems, GLOBAL_PROC_REF(cmp_subsystem_priority)) for(var/I in runlevel_sorted_subsystems) - sortTim(runlevel_sorted_subsystems, /proc/cmp_subsystem_priority) + sortTim(I, GLOBAL_PROC_REF(cmp_subsystem_priority)) I += tickersubsystems var/cached_runlevel = current_runlevel @@ -367,6 +367,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new while (1) tickdrift = max(0, MC_AVERAGE_FAST(tickdrift, (((REALTIMEOFDAY - init_timeofday) - (world.time - init_time)) / world.tick_lag))) var/starting_tick_usage = TICK_USAGE + if (init_stage != init_stage_completed) return MC_LOOP_RTN_NEWSTAGES if (processing <= 0) @@ -673,8 +674,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new /datum/controller/master/StartLoadingMap() //disallow more than one map to load at once, multithreading it will just cause race conditions - while(map_loading) - stoplag() + UNTIL(!map_loading) for(var/S in subsystems) var/datum/controller/subsystem/SS = S SS.StartLoadingMap() diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 4351ad863ea9..56b50beee9ce 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -33,8 +33,17 @@ SUBSYSTEM_DEF(air) var/list/expansion_queue = list() var/list/deferred_airs = list() var/max_deferred_airs = 0 + + ///List of all currently processing atmos machinery that doesn't interact with the air around it var/list/obj/machinery/atmos_machinery = list() + ///List of all currently processing atmos machinery that interacts with its loc's air var/list/obj/machinery/atmos_air_machinery = list() + + ///Atmos machinery that will be added to atmos_machinery once maploading is finished + var/list/obj/machinery/deferred_atmos_machinery = list() + ///Air atmos machinery that will be added to atmos_air_machinery once maploading is finished + var/list/obj/machinery/deferred_atmos_air_machinery = list() + var/list/pipe_init_dirs_cache = list() //atmos singletons @@ -67,8 +76,6 @@ SUBSYSTEM_DEF(air) var/excited_group_pressure_goal = 1 - var/is_test_loading = FALSE - /datum/controller/subsystem/air/stat_entry(msg) msg += "C:{" msg += "HP:[round(cost_highpressure,1)]|" @@ -111,13 +118,13 @@ SUBSYSTEM_DEF(air) /datum/controller/subsystem/air/proc/auxtools_update_reactions() /proc/reset_all_air() - SSair.can_fire = 0 + SSair.can_fire = FALSE message_admins("Air reset begun.") for(var/turf/open/T in world) T.Initalize_Atmos(0) CHECK_TICK message_admins("Air reset done.") - SSair.can_fire = 1 + SSair.can_fire = TRUE /datum/controller/subsystem/air/proc/thread_running() return FALSE @@ -159,8 +166,7 @@ SUBSYSTEM_DEF(air) // This is only machinery like filters, mixers that don't interact with air if(currentpart == SSAIR_ATMOSMACHINERY) timer = TICK_USAGE_REAL - if(!is_test_loading) - process_atmos_machinery(resumed) + process_atmos_machinery(resumed) cost_atmos_machinery = MC_AVERAGE(cost_atmos_machinery, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer)) if(state != SS_RUNNING) return @@ -197,8 +203,7 @@ SUBSYSTEM_DEF(air) currentpart = SSAIR_ATMOSMACHINERY_AIR if(currentpart == SSAIR_ATMOSMACHINERY_AIR) timer = TICK_USAGE_REAL - if(!is_test_loading) - process_atmos_air_machinery(resumed) + process_atmos_air_machinery(resumed) cost_atmos_machinery = MC_AVERAGE(cost_atmos_machinery, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer)) if(state != SS_RUNNING) return @@ -284,14 +289,20 @@ SUBSYSTEM_DEF(air) * Arguments: * * machine - The machine to start processing. Can be any /obj/machinery. */ -/datum/controller/subsystem/air/proc/start_processing_machine(obj/machinery/machine) +/datum/controller/subsystem/air/proc/start_processing_machine(obj/machinery/machine, mapload) if(machine.atmos_processing) return machine.atmos_processing = TRUE if(machine.interacts_with_air) - atmos_air_machinery += machine + if(mapload) + deferred_atmos_air_machinery += machine + else + atmos_air_machinery += machine else - atmos_machinery += machine + if(mapload) + deferred_atmos_machinery += machine + else + atmos_machinery += machine /** * Removes a given machine to the processing system for SSAIR_ATMOSMACHINERY processing. @@ -305,8 +316,10 @@ SUBSYSTEM_DEF(air) machine.atmos_processing = FALSE if(machine.interacts_with_air) atmos_air_machinery -= machine + deferred_atmos_air_machinery -= machine else atmos_machinery -= machine + deferred_atmos_machinery -= machine // If we're currently processing atmos machines, there's a chance this machine is in // the currentrun list, which is a cache of atmos_machinery. Remove it from that list @@ -396,12 +409,8 @@ SUBSYSTEM_DEF(air) if(item in net.members) continue if(item.parent) - var/static/pipenetwarnings = 10 - if(pipenetwarnings > 0) - log_mapping("build_pipeline(): [item.type] added to a pipenet while still having one. (pipes leading to the same spot stacking in one turf) around [AREACOORD(item)].") - pipenetwarnings-- - if(pipenetwarnings == 0) - log_mapping("build_pipeline(): further messages about pipenets will be suppressed") + log_mapping("Doubled atmosmachine found at [AREACOORD(item)] with other contents: [json_encode(item.loc.contents)]") + item.stack_trace("Possible doubled atmosmachine") net.members += item border += item @@ -469,7 +478,7 @@ SUBSYSTEM_DEF(air) if(!M) atmos_air_machinery -= M if(M.process_atmos(seconds) == PROCESS_KILL) - atmos_air_machinery.Remove(M) + stop_processing_machine(M) if(MC_TICK_CHECK) return @@ -570,6 +579,14 @@ SUBSYSTEM_DEF(air) /datum/controller/subsystem/air/StopLoadingMap() map_loading = FALSE + if(length(deferred_atmos_machinery)) + atmos_machinery += deferred_atmos_machinery + deferred_atmos_machinery.Cut() + + if(length(deferred_atmos_air_machinery)) + atmos_air_machinery += deferred_atmos_air_machinery + deferred_atmos_air_machinery.Cut() + /datum/controller/subsystem/air/proc/setup_allturfs() var/list/turfs_to_init = block(locate(1, 1, 1), locate(world.maxx, world.maxy, world.maxz)) var/times_fired = ++src.times_fired diff --git a/code/controllers/subsystem/atoms.dm b/code/controllers/subsystem/atoms.dm index fe73d2d60b1d..ee629f41fac1 100644 --- a/code/controllers/subsystem/atoms.dm +++ b/code/controllers/subsystem/atoms.dm @@ -1,8 +1,3 @@ -#define BAD_INIT_QDEL_BEFORE 1 -#define BAD_INIT_DIDNT_INIT 2 -#define BAD_INIT_SLEPT 4 -#define BAD_INIT_NO_HINT 8 - SUBSYSTEM_DEF(atoms) name = "Atoms" init_order = INIT_ORDER_ATOMS @@ -96,6 +91,9 @@ SUBSYSTEM_DEF(atoms) if(INITIALIZE_HINT_QDEL) qdel(A) qdeleted = TRUE + if(INITIALIZE_HINT_QDEL_FORCE) + qdel(A, force = TRUE) + qdeleted = TRUE else BadInitializeCalls[the_type] |= BAD_INIT_NO_HINT @@ -166,8 +164,3 @@ SUBSYSTEM_DEF(atoms) var/initlog = InitLog() if(initlog) text2file(initlog, "[GLOB.log_directory]/initialize.log") - -#undef BAD_INIT_QDEL_BEFORE -#undef BAD_INIT_DIDNT_INIT -#undef BAD_INIT_SLEPT -#undef BAD_INIT_NO_HINT diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index e5584df31e5e..0fd7090ff17d 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -192,9 +192,9 @@ SUBSYSTEM_DEF(dbcore) for (var/thing in querys) var/datum/DBQuery/query = thing if (warn) - INVOKE_ASYNC(query, /datum/DBQuery.proc/warn_execute) + INVOKE_ASYNC(query, TYPE_PROC_REF(/datum/DBQuery, warn_execute)) else - INVOKE_ASYNC(query, /datum/DBQuery.proc/Execute) + INVOKE_ASYNC(query, TYPE_PROC_REF(/datum/DBQuery, Execute)) for (var/thing in querys) var/datum/DBQuery/query = thing diff --git a/code/controllers/subsystem/explosions.dm b/code/controllers/subsystem/explosions.dm index 4e8a23b5ba3c..14f8e8b8fa19 100644 --- a/code/controllers/subsystem/explosions.dm +++ b/code/controllers/subsystem/explosions.dm @@ -140,7 +140,7 @@ SUBSYSTEM_DEF(explosions) else continue - addtimer(CALLBACK(GLOBAL_PROC, .proc/wipe_color_and_text, wipe_colours), 100) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(wipe_color_and_text), wipe_colours), 100) /proc/wipe_color_and_text(list/atom/wiping) for(var/i in wiping) @@ -278,7 +278,7 @@ SUBSYSTEM_DEF(explosions) M.playsound_local(epicenter, null, echo_volume, 1, frequency, S = explosion_echo_sound, distance_multiplier = 0) if(creaking_explosion) // 5 seconds after the bang, the station begins to creak - addtimer(CALLBACK(M, /mob/proc/playsound_local, epicenter, null, rand(FREQ_LOWER, FREQ_UPPER), 1, frequency, null, null, FALSE, hull_creaking_sound, 0), CREAK_DELAY) + addtimer(CALLBACK(M, TYPE_PROC_REF(/mob, playsound_local), epicenter, null, rand(FREQ_LOWER, FREQ_UPPER), 1, frequency, null, null, FALSE, hull_creaking_sound, 0), CREAK_DELAY) if(heavy_impact_range > 1) var/datum/effect_system/explosion/E diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index 94cf90aad7d2..da58d4764516 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -171,18 +171,19 @@ SUBSYSTEM_DEF(garbage) //Normally this isn't expensive, but the gc queue can grow to 40k items, and that gets costly/causes overrun. for (var/i in 1 to length(queue)) var/list/L = queue[i] - if (length(L) < 2) + if (length(L) < GC_QUEUE_ITEM_INDEX_COUNT) count++ if (MC_TICK_CHECK) return continue - var/GCd_at_time = L[1] - if(GCd_at_time > cut_off_time) + var/queued_at_time = L[GC_QUEUE_ITEM_QUEUE_TIME] + var/GCd_at_time = L[GC_QUEUE_ITEM_GCD_DESTROYED] + if(queued_at_time > cut_off_time) break // Everything else is newer, skip them count++ - var/refID = L[2] + var/refID = L[GC_QUEUE_ITEM_REF] var/datum/D D = locate(refID) @@ -208,11 +209,11 @@ SUBSYSTEM_DEF(garbage) if (GC_QUEUE_CHECK) #ifdef REFERENCE_TRACKING if(reference_find_on_fail[refID]) - INVOKE_ASYNC(D, /datum/proc/find_references) + INVOKE_ASYNC(D, TYPE_PROC_REF(/datum, find_references)) ref_searching = TRUE #ifdef GC_FAILURE_HARD_LOOKUP else - INVOKE_ASYNC(D, /datum/proc/find_references) + INVOKE_ASYNC(D, TYPE_PROC_REF(/datum, find_references)) ref_searching = TRUE #endif reference_find_on_fail -= refID @@ -220,7 +221,7 @@ SUBSYSTEM_DEF(garbage) var/type = D.type var/datum/qdel_item/I = items[type] - log_world("## TESTING: GC: -- \ref[D] | [type] was unable to be GC'd --") + log_world("## TESTING: GC: -- [text_ref(D)] | [type] was unable to be GC'd --") #ifdef TESTING for(var/c in GLOB.admins) //Using testing() here would fill the logs with ADMIN_VV garbage var/client/admin = c @@ -230,12 +231,6 @@ SUBSYSTEM_DEF(garbage) #endif I.failures++ - if (I.qdel_flags & QDEL_ITEM_SUSPENDED_FOR_LAG) - #ifdef REFERENCE_TRACKING - if(ref_searching) - return //ref searching intentionally cancels all further fires while running so things that hold references don't end up getting deleted, so we want to return here instead of continue - #endif - continue if (GC_QUEUE_HARDDELETE) HardDelete(D) if (MC_TICK_CHECK) @@ -259,28 +254,33 @@ SUBSYSTEM_DEF(garbage) if (isnull(D)) return if (level > GC_QUEUE_COUNT) - HardDelete(D) + HardDelete(D, TRUE) return - var/gctime = world.time - var/refid = "\ref[D]" + var/queue_time = world.time + + var/refid = text_ref(D) + if (D.gc_destroyed <= 0) + D.gc_destroyed = queue_time - D.gc_destroyed = gctime var/list/queue = queues[level] - queue[++queue.len] = list(gctime, refid) // not += for byond reasons + queue[++queue.len] = list(queue_time, refid, D.gc_destroyed) // not += for byond reasons //this is mainly to separate things profile wise. -/datum/controller/subsystem/garbage/proc/HardDelete(datum/D) +/datum/controller/subsystem/garbage/proc/HardDelete(datum/D, force) ++delslasttick ++totaldels var/type = D.type - var/refID = "\ref[D]" + var/refID = text_ref(D) + var/datum/qdel_item/I = items[type] + + if (!force && I.qdel_flags & QDEL_ITEM_SUSPENDED_FOR_LAG) + return var/tick_usage = TICK_USAGE del(D) tick_usage = TICK_USAGE_TO_MS(tick_usage) - var/datum/qdel_item/I = items[type] I.hard_deletes++ I.hard_delete_time += tick_usage if (tick_usage > I.hard_delete_max) @@ -382,14 +382,14 @@ SUBSYSTEM_DEF(garbage) if (QDEL_HINT_HARDDEL) //qdel should assume this object won't gc, and queue a hard delete SSgarbage.Queue(D, GC_QUEUE_HARDDELETE) if (QDEL_HINT_HARDDEL_NOW) //qdel should assume this object won't gc, and hard del it post haste. - SSgarbage.HardDelete(D) + SSgarbage.HardDelete(D, TRUE) #ifdef REFERENCE_TRACKING if (QDEL_HINT_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled, display all references to this object, then queue the object for deletion. SSgarbage.Queue(D) - D.find_references() //This breaks ci. Consider it insurance against somehow pring reftracking on accident + D.find_references() if (QDEL_HINT_IFFAIL_FINDREFERENCE) //qdel will, if REFERENCE_TRACKING is enabled and the object fails to collect, display all references to this object. SSgarbage.Queue(D) - SSgarbage.reference_find_on_fail["\ref[D]"] = TRUE + SSgarbage.reference_find_on_fail[text_ref(D)] = TRUE #endif else #ifdef TESTING diff --git a/code/controllers/subsystem/idlenpcpool.dm b/code/controllers/subsystem/idlenpcpool.dm index bce3f2ced7c2..5c8bb49ab765 100644 --- a/code/controllers/subsystem/idlenpcpool.dm +++ b/code/controllers/subsystem/idlenpcpool.dm @@ -6,7 +6,7 @@ SUBSYSTEM_DEF(idlenpcpool) runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME var/list/currentrun = list() - var/list/idle_mobs_by_virtual_level = list() + var/list/list/idle_mobs_by_virtual_level = list() /datum/controller/subsystem/idlenpcpool/stat_entry(msg) var/list/idlelist = GLOB.simple_animals[AI_IDLE] diff --git a/code/controllers/subsystem/input.dm b/code/controllers/subsystem/input.dm index 07de18a43c2c..f3edbabbc6a1 100644 --- a/code/controllers/subsystem/input.dm +++ b/code/controllers/subsystem/input.dm @@ -1,15 +1,28 @@ -SUBSYSTEM_DEF(input) +VERB_MANAGER_SUBSYSTEM_DEF(input) name = "Input" - wait = 1 //SS_TICKER means this runs every tick init_order = INIT_ORDER_INPUT init_stage = INITSTAGE_EARLY flags = SS_TICKER priority = FIRE_PRIORITY_INPUT runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY + use_default_stats = FALSE + var/list/macro_sets -/datum/controller/subsystem/input/Initialize() + ///running average of how many clicks inputted by a player the server processes every second. used for the subsystem stat entry + var/clicks_per_second = 0 + ///count of how many clicks onto atoms have elapsed before being cleared by fire(). used to average with clicks_per_second. + var/current_clicks = 0 + ///acts like clicks_per_second but only counts the clicks actually processed by SSinput itself while clicks_per_second counts all clicks + var/delayed_clicks_per_second = 0 + ///running average of how many movement iterations from player input the server processes every second. used for the subsystem stat entry + var/movements_per_second = 0 + ///running average of the amount of real time clicks take to truly execute after the command is originally sent to the server. + ///if a click isnt delayed at all then it counts as 0 deciseconds. + var/average_click_delay = 0 + +/datum/controller/subsystem/verb_manager/input/Initialize() setup_default_macro_sets() initialized = TRUE @@ -19,7 +32,7 @@ SUBSYSTEM_DEF(input) return ..() // This is for when macro sets are eventualy datumized -/datum/controller/subsystem/input/proc/setup_default_macro_sets() +/datum/controller/subsystem/verb_manager/input/proc/setup_default_macro_sets() var/list/static/default_macro_sets if(default_macro_sets) @@ -86,14 +99,59 @@ SUBSYSTEM_DEF(input) macro_sets = default_macro_sets // Badmins just wanna have fun ♪ -/datum/controller/subsystem/input/proc/refresh_client_macro_sets() +/datum/controller/subsystem/verb_manager/input/proc/refresh_client_macro_sets() var/list/clients = GLOB.clients for(var/i in 1 to clients.len) var/client/user = clients[i] user.set_macros() -/datum/controller/subsystem/input/fire() - var/list/clients = GLOB.clients // Let's sing the list cache song - for(var/i in 1 to clients.len) - var/client/C = clients[i] - C.keyLoop() +/datum/controller/subsystem/verb_manager/input/can_queue_verb(datum/callback/verb_callback/incoming_callback, control) + //make sure the incoming verb is actually something we specifically want to handle + if(control != "mapwindow.map") + return FALSE + + if(average_click_delay > MAXIMUM_CLICK_LATENCY || !..()) + current_clicks++ + average_click_delay = MC_AVG_FAST_UP_SLOW_DOWN(average_click_delay, 0) + return FALSE + + return TRUE + +///stupid workaround for byond not recognizing the /atom/Click typepath for the queued click callbacks +/atom/proc/_Click(location, control, params) + if(usr) + Click(location, control, params) + +/datum/controller/subsystem/verb_manager/input/fire() + ..() + + var/moves_this_run = 0 + for(var/mob/user as anything in GLOB.keyloop_list) + moves_this_run += user.focus?.keyLoop(user.client)//only increments if a player moves due to their own input + + movements_per_second = MC_AVG_SECONDS(movements_per_second, moves_this_run, wait TICKS) + +/datum/controller/subsystem/verb_manager/input/run_verb_queue() + var/deferred_clicks_this_run = 0 //acts like current_clicks but doesnt count clicks that dont get processed by SSinput + + for(var/datum/callback/verb_callback/queued_click as anything in verb_queue) + if(!istype(queued_click)) + stack_trace("non /datum/callback/verb_callback instance inside SSinput's verb_queue!") + continue + + average_click_delay = MC_AVG_FAST_UP_SLOW_DOWN(average_click_delay, TICKS2DS((DS2TICKS(world.time) - queued_click.creation_time)) SECONDS) + queued_click.InvokeAsync() + + current_clicks++ + deferred_clicks_this_run++ + + verb_queue.Cut() //is ran all the way through every run, no exceptions + + clicks_per_second = MC_AVG_SECONDS(clicks_per_second, current_clicks, wait SECONDS) + delayed_clicks_per_second = MC_AVG_SECONDS(delayed_clicks_per_second, deferred_clicks_this_run, wait SECONDS) + current_clicks = 0 + +/datum/controller/subsystem/verb_manager/input/stat_entry(msg) + . = ..() + . += "M/S:[round(movements_per_second,0.01)] | C/S:[round(clicks_per_second,0.01)] ([round(delayed_clicks_per_second,0.01)] | CD: [round(average_click_delay / (1 SECONDS),0.01)])" + diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm deleted file mode 100644 index e02621dd2b66..000000000000 --- a/code/controllers/subsystem/job.dm +++ /dev/null @@ -1,204 +0,0 @@ -SUBSYSTEM_DEF(job) - name = "Jobs" - init_order = INIT_ORDER_JOBS - flags = SS_NO_FIRE - - var/list/occupations = list() //List of all jobs - var/list/datum/job/name_occupations = list() //Dict of all jobs, keys are titles - var/list/type_occupations = list() //Dict of all jobs, keys are types - var/list/prioritized_jobs = list() - - var/overflow_role = "Assistant" - -/datum/controller/subsystem/job/Initialize(timeofday) - if(!occupations.len) - SetupOccupations() - return ..() - -/datum/controller/subsystem/job/proc/SetupOccupations() - occupations = list() - var/list/all_jobs = subtypesof(/datum/job) - if(!all_jobs.len) - to_chat(world, "Error setting up jobs, no job datums found") - return 0 - - for(var/J in all_jobs) - var/datum/job/job = new J() - if(!job) - continue - occupations += job - name_occupations[job.name] = job - type_occupations[J] = job - - return 1 - - -/datum/controller/subsystem/job/proc/GetJob(rank) - if(!occupations.len) - SetupOccupations() - if(istype(rank, /datum/job)) - return rank - return name_occupations[rank] - -/datum/controller/subsystem/job/proc/GetJobType(jobtype) - if(!occupations.len) - SetupOccupations() - return type_occupations[jobtype] - -/datum/controller/subsystem/job/proc/ResetOccupations() - JobDebug("Occupations reset.") - for(var/i in GLOB.new_player_list) - var/mob/dead/new_player/player = i - if((player) && (player.mind)) - player.mind.assigned_role = null - player.mind.special_role = null - SetupOccupations() - return - -/datum/controller/subsystem/job/proc/handle_auto_deadmin_roles(client/C, rank) - if(!C?.holder) - return TRUE - var/datum/job/job = GetJob(rank) - - var/timegate_expired = FALSE - // allow only forcing deadminning in the first X seconds of the round if auto_deadmin_timegate is set in config - var/timegate = CONFIG_GET(number/auto_deadmin_timegate) - if(timegate && (world.time - SSticker.round_start_time > timegate)) - timegate_expired = TRUE - - if(!job) - return - if((job.auto_deadmin_role_flags & DEADMIN_POSITION_HEAD) && ((CONFIG_GET(flag/auto_deadmin_heads) && !timegate_expired) || (C.prefs?.toggles & DEADMIN_POSITION_HEAD))) - return C.holder.auto_deadmin() - else if((job.auto_deadmin_role_flags & DEADMIN_POSITION_SECURITY) && ((CONFIG_GET(flag/auto_deadmin_security) && !timegate_expired) || (C.prefs?.toggles & DEADMIN_POSITION_SECURITY))) - return C.holder.auto_deadmin() - else if((job.auto_deadmin_role_flags & DEADMIN_POSITION_SILICON) && ((CONFIG_GET(flag/auto_deadmin_silicons) && !timegate_expired) || (C.prefs?.toggles & DEADMIN_POSITION_SILICON))) //in the event there's ever psuedo-silicon roles added, ie synths. - return C.holder.auto_deadmin() - -/datum/controller/subsystem/job/Recover() - set waitfor = FALSE - var/oldjobs = SSjob.occupations - sleep(20) - for (var/datum/job/J in oldjobs) - INVOKE_ASYNC(src, .proc/RecoverJob, J) - -/datum/controller/subsystem/job/proc/RecoverJob(datum/job/J) - var/datum/job/newjob = GetJob(J.name) - if (!istype(newjob)) - return - newjob.total_positions = J.total_positions - newjob.spawn_positions = J.spawn_positions - newjob.current_positions = J.current_positions - -/atom/proc/JoinPlayerHere(mob/M, buckle) - // By default, just place the mob on the same turf as the marker or whatever. - M.forceMove(get_turf(src)) - -/obj/structure/chair/JoinPlayerHere(mob/M, buckle) - // Placing a mob in a chair will attempt to buckle it, or else fall back to default. - if (buckle && isliving(M) && buckle_mob(M, FALSE, FALSE)) - return - ..() - -/datum/controller/subsystem/job/proc/SendToLateJoin(mob/M, buckle = TRUE, atom/destination) - if(destination) - destination.JoinPlayerHere(M, buckle) - return TRUE - - if(M.mind && M.mind.assigned_role && length(GLOB.jobspawn_overrides[M.mind.assigned_role])) //We're doing something special today. - destination = pick(GLOB.jobspawn_overrides[M.mind.assigned_role]) - destination.JoinPlayerHere(M, FALSE) - return TRUE - - var/msg = "Unable to send mob [M] to late join!" - message_admins(msg) - CRASH(msg) - - -/////////////////////////////////// -//Keeps track of all living heads// -/////////////////////////////////// -/datum/controller/subsystem/job/proc/get_living_heads() - . = list() - for(var/i in GLOB.human_list) - var/mob/living/carbon/human/player = i - if(player.stat != DEAD && player.mind && (player.mind.assigned_role in GLOB.command_positions)) - . |= player.mind - - -//////////////////////////// -//Keeps track of all heads// -//////////////////////////// -/datum/controller/subsystem/job/proc/get_all_heads() - . = list() - for(var/i in GLOB.mob_list) - var/mob/player = i - if(player.mind && (player.mind.assigned_role in GLOB.command_positions)) - . |= player.mind - -////////////////////////////////////////////// -//Keeps track of all living security members// -////////////////////////////////////////////// -/datum/controller/subsystem/job/proc/get_living_sec() - . = list() - for(var/i in GLOB.human_list) - var/mob/living/carbon/human/player = i - if(player.stat != DEAD && player.mind && (player.mind.assigned_role in GLOB.security_positions)) - . |= player.mind - -//////////////////////////////////////// -//Keeps track of all security members// -//////////////////////////////////////// -/datum/controller/subsystem/job/proc/get_all_sec() - . = list() - for(var/i in GLOB.human_list) - var/mob/living/carbon/human/player = i - if(player.mind && (player.mind.assigned_role in GLOB.security_positions)) - . |= player.mind - -/datum/controller/subsystem/job/proc/JobDebug(message) - log_job_debug(message) - -/datum/controller/subsystem/job/proc/get_manifest() - var/list/manifest_out = list() - for(var/datum/overmap/ship/controlled/ship as anything in SSovermap.controlled_ships) - if(!length(ship.manifest)) - continue - manifest_out["[ship.name] ([ship.source_template.short_name])"] = list() - for(var/crewmember in ship.manifest) - var/datum/job/crewmember_job = ship.manifest[crewmember] - manifest_out["[ship.name] ([ship.source_template.short_name])"] += list(list( - "name" = crewmember, - "rank" = crewmember_job.name, - "officer" = crewmember_job.officer - )) - - return manifest_out - -/datum/controller/subsystem/job/proc/get_manifest_html(monochrome = FALSE) - var/list/manifest = get_manifest() - var/dat = {" - - - - "} - for(var/department in manifest) - var/list/entries = manifest[department] - dat += "" - //JUST - var/even = FALSE - for(var/entry in entries) - var/list/entry_list = entry - dat += "" - even = !even - - dat += "
NameRank
[department]
[entry_list["name"]][entry_list["rank"]]
" - dat = replacetext(dat, "\n", "") - dat = replacetext(dat, "\t", "") - return dat diff --git a/code/controllers/subsystem/lag_switch.dm b/code/controllers/subsystem/lag_switch.dm new file mode 100644 index 000000000000..631685fe2910 --- /dev/null +++ b/code/controllers/subsystem/lag_switch.dm @@ -0,0 +1,156 @@ +/// The subsystem for controlling drastic performance enhancements aimed at reducing server load for a smoother albeit slightly duller gaming experience +SUBSYSTEM_DEF(lag_switch) + name = "Lag Switch" + flags = SS_NO_FIRE + + /// If the lag switch measures should attempt to trigger automatically, TRUE if a config value exists + var/auto_switch = FALSE + /// Amount of connected clients at which the Lag Switch should engage, set via config or admin panel + var/trigger_pop = INFINITY - 1337 + /// List of bools corresponding to code/__DEFINES/lag_switch.dm + var/static/list/measures[MEASURES_AMOUNT] + /// List of measures that toggle automatically + var/list/auto_measures = list(DISABLE_GHOST_ZOOM_TRAY, DISABLE_RUNECHAT, DISABLE_USR_ICON2HTML, DISABLE_PARALLAX, DISABLE_FOOTSTEPS, DISABLE_PLANETDEL) + /// Timer ID for the automatic veto period + var/veto_timer_id + /// Cooldown between say verb uses when slowmode is enabled + var/slowmode_cooldown = 3 SECONDS + +/datum/controller/subsystem/lag_switch/Initialize(start_timeofday) + for(var/i = 1, i <= measures.len, i++) + measures[i] = FALSE + var/auto_switch_pop = CONFIG_GET(number/auto_lag_switch_pop) + if(auto_switch_pop) + auto_switch = TRUE + trigger_pop = auto_switch_pop + RegisterSignal(SSdcs, COMSIG_GLOB_CLIENT_CONNECT, PROC_REF(client_connected)) + return ..() + +/datum/controller/subsystem/lag_switch/proc/client_connected(datum/source, client/connected) + SIGNAL_HANDLER + if(TGS_CLIENT_COUNT < trigger_pop) + return + + auto_switch = FALSE + UnregisterSignal(SSdcs, COMSIG_GLOB_CLIENT_CONNECT) + veto_timer_id = addtimer(CALLBACK(src, PROC_REF(set_all_measures), TRUE, TRUE), 20 SECONDS, TIMER_STOPPABLE) + message_admins("Lag Switch population threshold reached. Automatic activation of lag mitigation measures occuring in 20 seconds. (CANCEL)") + log_admin("Lag Switch population threshold reached. Automatic activation of lag mitigation measures occuring in 20 seconds.") + +/// (En/Dis)able automatic triggering of switches based on client count +/datum/controller/subsystem/lag_switch/proc/toggle_auto_enable() + auto_switch = !auto_switch + if(auto_switch) + RegisterSignal(SSdcs, COMSIG_GLOB_CLIENT_CONNECT, PROC_REF(client_connected)) + else + UnregisterSignal(SSdcs, COMSIG_GLOB_CLIENT_CONNECT) + +/// Called from an admin chat link +/datum/controller/subsystem/lag_switch/proc/cancel_auto_enable_in_progress() + if(!veto_timer_id) + return FALSE + + deltimer(veto_timer_id) + veto_timer_id = null + return TRUE + +/// Update the slowmode timer length and clear existing ones if reduced +/datum/controller/subsystem/lag_switch/proc/change_slowmode_cooldown(length) + if(!length) + return FALSE + + var/length_secs = length SECONDS + if(length_secs <= 0) + length_secs = 1 // one tick because cooldowns do not like 0 + + if(length_secs < slowmode_cooldown) + for(var/client/C as anything in GLOB.clients) + COOLDOWN_RESET(C, say_slowmode) + + slowmode_cooldown = length_secs + if(measures[SLOWMODE_SAY]) + to_chat(world, span_boldannounce("Slowmode timer has been changed to [length] seconds by an admin.")) + return TRUE + +/// Handle the state change for individual measures +/datum/controller/subsystem/lag_switch/proc/set_measure(measure_key, state) + if(isnull(measure_key) || isnull(state)) + stack_trace("SSlag_switch.set_measure() was called with a null arg") + return FALSE + if(isnull(LAZYACCESS(measures, measure_key))) + stack_trace("SSlag_switch.set_measure() was called with a measure_key not in the list of measures") + return FALSE + if(measures[measure_key] == state) + return TRUE + + measures[measure_key] = state + + switch(measure_key) + if(DISABLE_DEAD_KEYLOOP) + if(state) + for(var/mob/user as anything in GLOB.player_list) + if(user.stat == DEAD && !user.client?.holder) + GLOB.keyloop_list -= user + deadchat_broadcast(span_big("To increase performance Observer freelook is now disabled. Please use Orbit, Teleport, and Jump to look around."), message_type = DEADCHAT_ANNOUNCEMENT) + else + GLOB.keyloop_list |= GLOB.player_list + deadchat_broadcast("Observer freelook has been re-enabled. Enjoy your wooshing.", message_type = DEADCHAT_ANNOUNCEMENT) + if(DISABLE_GHOST_ZOOM_TRAY) + if(state) // if enabling make sure current ghosts are updated + for(var/mob/dead/observer/ghost in GLOB.dead_mob_list) + if(!ghost.client) + continue + if(!ghost.client.holder && ghost.client.view_size.getView() != ghost.client.view_size.default) + ghost.client.view_size.resetToDefault() + if(SLOWMODE_SAY) + if(state) + to_chat(world, span_boldannounce("Slowmode for IC/dead chat has been enabled with [slowmode_cooldown/10] seconds between messages.")) + else + for(var/client/C as anything in GLOB.clients) + COOLDOWN_RESET(C, say_slowmode) + to_chat(world, span_boldannounce("Slowmode for IC/dead chat has been disabled by an admin.")) + if(DISABLE_NON_OBSJOBS) + world.update_status() + if(DISABLE_PARALLAX) + if (state) + to_chat(world, span_boldannounce("Parallax has been disabled for performance concerns.")) + else + to_chat(world, span_boldannounce("Parallax has been re-enabled.")) + + for (var/mob/mob as anything in GLOB.mob_list) + mob.hud_used?.update_parallax_pref() + if(DISABLE_FOOTSTEPS) + if (state) + to_chat(world, span_boldannounce("Footstep sounds have been disabled for performance concerns.")) + else + to_chat(world, span_boldannounce("Footstep sounds have been re-enabled.")) + if(DISABLE_PLANETDEL) + if (state) + to_chat(world, span_boldannounce("Planet deletion and regeneration has been disabled for performance concerns.")) + else + to_chat(world, span_boldannounce("Planet deletion has been re-enabled.")) + if(DISABLE_PLANETGEN) + if (state) + to_chat(world, span_boldannounce("Planet generation has been disabled for performance concerns. You can still dock at already-generated planets.")) + else + to_chat(world, span_boldannounce("Planet generation has been re-enabled.")) + + return TRUE + +/// Helper to loop over all measures for mass changes +/datum/controller/subsystem/lag_switch/proc/set_all_measures(state, automatic = FALSE) + if(isnull(state)) + stack_trace("SSlag_switch.set_all_measures() was called with a null state arg") + return FALSE + + if(automatic) + message_admins("Lag Switch enabling automatic measures now.") + log_admin("Lag Switch enabling automatic measures now.") + veto_timer_id = null + for(var/i = 1, i <= auto_measures.len, i++) + set_measure(auto_measures[i], state) + return TRUE + + for(var/i = 1, i <= measures.len, i++) + set_measure(i, state) + return TRUE diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 0b297fd9de88..f9c5c9c86399 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -134,17 +134,6 @@ SUBSYSTEM_DEF(mapping) for(var/datum/planet_type/type as anything in subtypesof(/datum/planet_type)) planet_types[initial(type.planet)] = new type - // Still supporting bans by filename - // I hate this so much. I want to kill it because I don't think ANYONE uses this - // Couldn't you just remove it on a fork or something??? come onnnnnnnnnnnn stop EXISTING already - var/list/banned = generateMapList("[global.config.directory]/lavaruinblacklist.txt") - banned += generateMapList("[global.config.directory]/spaceruinblacklist.txt") - banned += generateMapList("[global.config.directory]/iceruinblacklist.txt") - banned += generateMapList("[global.config.directory]/sandruinblacklist.txt") - banned += generateMapList("[global.config.directory]/jungleruinblacklist.txt") - banned += generateMapList("[global.config.directory]/rockruinblacklist.txt") - banned += generateMapList("[global.config.directory]/wasteruinblacklist.txt") - for(var/item in sortList(subtypesof(/datum/map_template/ruin), /proc/cmp_ruincost_priority)) var/datum/map_template/ruin/ruin_type = item // screen out the abstract subtypes @@ -152,9 +141,6 @@ SUBSYSTEM_DEF(mapping) continue var/datum/map_template/ruin/R = new ruin_type() - if(R.mappath in banned) - continue - map_templates[R.name] = R ruins_templates[R.name] = R ruin_types_list[R.ruin_type] += list(R.name = R) @@ -223,7 +209,7 @@ SUBSYSTEM_DEF(mapping) var/value = job_slot_list[job] var/slots if(isnum(value)) - job_slot = SSjob.GetJob(job) + job_slot = GLOB.name_occupations[job] slots = value else if(islist(value)) var/datum/outfit/job_outfit = text2path(value["outfit"]) @@ -231,6 +217,7 @@ SUBSYSTEM_DEF(mapping) stack_trace("Invalid job outfit! [value["outfit"]] on [S.name]'s config! Defaulting to assistant clothing.") job_outfit = /datum/outfit/job/assistant job_slot = new /datum/job(job, job_outfit) + job_slot.display_order = length(S.job_slots) job_slot.wiki_page = value["wiki_page"] job_slot.officer = value["officer"] slots = value["slots"] @@ -259,6 +246,7 @@ SUBSYSTEM_DEF(mapping) S.space_spawn = TRUE shuttle_templates[S.file_name] = S + map_templates[S.file_name] = S #undef CHECK_STRING_EXISTS #undef CHECK_LIST_EXISTS diff --git a/code/controllers/subsystem/overmap.dm b/code/controllers/subsystem/overmap.dm index 2a09ae4c6ae7..eb6ccfa3c7b4 100644 --- a/code/controllers/subsystem/overmap.dm +++ b/code/controllers/subsystem/overmap.dm @@ -435,6 +435,49 @@ SUBSYSTEM_DEF(overmap) ship_count++ return ship_count +/datum/controller/subsystem/overmap/proc/get_manifest() + var/list/manifest_out = list() + for(var/datum/overmap/ship/controlled/ship as anything in controlled_ships) + if(!length(ship.manifest)) + continue + manifest_out["[ship.name] ([ship.source_template.short_name])"] = list() + for(var/crewmember in ship.manifest) + var/datum/job/crewmember_job = ship.manifest[crewmember] + manifest_out["[ship.name] ([ship.source_template.short_name])"] += list(list( + "name" = crewmember, + "rank" = crewmember_job.name, + "officer" = crewmember_job.officer + )) + + return manifest_out + +/datum/controller/subsystem/overmap/proc/get_manifest_html(monochrome = FALSE) + var/list/manifest = get_manifest() + var/dat = {" + + + + "} + for(var/department in manifest) + var/list/entries = manifest[department] + dat += "" + var/even = FALSE + for(var/entry in entries) + var/list/entry_list = entry + dat += "" + even = !even + + dat += "
NameRank
[department]
[entry_list["name"]][entry_list["rank"]]
" + dat = replacetext(dat, "\n", "") + dat = replacetext(dat, "\t", "") + return dat + /datum/controller/subsystem/overmap/Recover() overmap_objects = SSovermap.overmap_objects controlled_ships = SSovermap.controlled_ships diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm index ae8ca728e9ef..7c2bf71cad6a 100644 --- a/code/controllers/subsystem/pai.dm +++ b/code/controllers/subsystem/pai.dm @@ -147,7 +147,7 @@ SUBSYSTEM_DEF(pai) if(!(ROLE_PAI in G.client.prefs.be_special)) continue to_chat(G, "[user] is requesting a pAI personality! Use the pAI button to submit yourself as one.") - addtimer(CALLBACK(src, .proc/spam_again), spam_delay) + addtimer(CALLBACK(src, PROC_REF(spam_again)), spam_delay) var/list/available = list() for(var/datum/paiCandidate/c in SSpai.candidates) available.Add(check_ready(c)) diff --git a/code/controllers/subsystem/pathfinder.dm b/code/controllers/subsystem/pathfinder.dm index ccbea7930663..21ee7ea60b3c 100644 --- a/code/controllers/subsystem/pathfinder.dm +++ b/code/controllers/subsystem/pathfinder.dm @@ -31,7 +31,7 @@ SUBSYSTEM_DEF(pathfinder) while(flow[free]) CHECK_TICK free = (free % lcount) + 1 - var/t = addtimer(CALLBACK(src, /datum/flowcache.proc/toolong, free), 150, TIMER_STOPPABLE) + var/t = addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/flowcache, toolong), free), 150, TIMER_STOPPABLE) flow[free] = t flow[t] = M return free diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index b80649a82490..ad8bad1e1d9b 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -12,7 +12,7 @@ SUBSYSTEM_DEF(persistence) var/list/paintings = list() /datum/controller/subsystem/persistence/Initialize() - LoadPoly() + LoadPolly() LoadTrophies() LoadRecentModes() LoadPhotoPersistence() @@ -22,8 +22,8 @@ SUBSYSTEM_DEF(persistence) LoadPanicBunker() return ..() -/datum/controller/subsystem/persistence/proc/LoadPoly() - for(var/mob/living/simple_animal/parrot/Poly/P in GLOB.alive_mob_list) +/datum/controller/subsystem/persistence/proc/LoadPolly() + for(var/mob/living/simple_animal/parrot/Polly/P in GLOB.alive_mob_list) twitterize(P.speech_buffer, "polytalk") break //Who's been duping the bird?! diff --git a/code/controllers/subsystem/processing/fields.dm b/code/controllers/subsystem/processing/fields.dm deleted file mode 100644 index a4c58b883a8a..000000000000 --- a/code/controllers/subsystem/processing/fields.dm +++ /dev/null @@ -1,6 +0,0 @@ -PROCESSING_SUBSYSTEM_DEF(fields) - name = "Fields" - wait = 2 - priority = FIRE_PRIORITY_FIELDS - flags = SS_KEEP_TIMING | SS_NO_INIT - runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index e62e5bd30e3f..b5b8113384df 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -8,11 +8,11 @@ PROCESSING_SUBSYSTEM_DEF(quirks) wait = 10 runlevels = RUNLEVEL_GAME - var/list/quirks = list() //Assoc. list of all roundstart quirk datum types; "name" = /path/ - var/list/quirk_points = list() //Assoc. list of quirk names and their "point cost"; positive numbers are good traits, and negative ones are bad - var/list/quirk_objects = list() //A list of all quirk objects in the game, since some may process - var/list/quirk_blacklist = list() //A list a list of quirks that can not be used with each other. Format: list(quirk1,quirk2),list(quirk3,quirk4) - var/list/quirk_instances = list() //Assoc. list with instances of all roundstart quirk datum types; "name" = /path/ + var/list/quirks = list() //Assoc. list of all roundstart quirk datum types; "name" = /path/ + var/list/quirk_points = list() //Assoc. list of quirk names and their "point cost"; positive numbers are good traits, and negative ones are bad + var/list/quirk_objects = list() //A list of all quirk objects in the game, since some may process + var/list/quirk_blacklist = list() //A list a list of quirks that can not be used with each other. Format: list(quirk1,quirk2),list(quirk3,quirk4) + var/list/species_blacklist = list() //A list of quirks and the species they can't be used by /datum/controller/subsystem/processing/quirks/Initialize(timeofday) if(!quirks.len) @@ -25,6 +25,9 @@ PROCESSING_SUBSYSTEM_DEF(quirks) list("Alcohol Tolerance","Light Drinker"), \ list("Clown Fan","Mime Fan"), \ list("Bad Touch", "Friendly")) + + species_blacklist = list("Blood Deficiency" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE)) + for(var/client/client in GLOB.clients) client?.prefs.check_quirk_compatibility() return ..() @@ -37,7 +40,6 @@ PROCESSING_SUBSYSTEM_DEF(quirks) var/datum/quirk/T = V quirks[initial(T.name)] = T quirk_points[initial(T.name)] = initial(T.value) - quirk_instances[initial(T.name)] = new T /datum/controller/subsystem/processing/quirks/proc/AssignQuirks(mob/living/user, client/cli, spawn_effects) var/badquirk = FALSE diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index e306da3ee4c2..90e3f3a73cae 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -71,7 +71,7 @@ SUBSYSTEM_DEF(shuttle) /// Requests a bluespace jump, which, after jump_request_time deciseconds, will initiate a bluespace jump. /datum/controller/subsystem/shuttle/proc/request_jump(modifier = 1) jump_mode = BS_JUMP_CALLED - jump_timer = addtimer(CALLBACK(src, .proc/initiate_jump), jump_request_time * modifier, TIMER_STOPPABLE) + jump_timer = addtimer(CALLBACK(src, PROC_REF(initiate_jump)), jump_request_time * modifier, TIMER_STOPPABLE) priority_announce("Preparing for jump. ETD: [jump_request_time * modifier / (1 MINUTES)] minutes.", null, null, "Priority") /// Cancels a currently requested bluespace jump. Can only be done after the jump has been requested but before the jump has actually begun. @@ -255,7 +255,7 @@ SUBSYSTEM_DEF(shuttle) var/result = new_shuttle.canDock(destination_port) if((result != SHUTTLE_CAN_DOCK)) WARNING("Template shuttle [new_shuttle] cannot dock at [destination_port] ([result]).") - new_shuttle.jumpToNullSpace() + qdel(new_shuttle, TRUE) return new_shuttle.initiate_docking(destination_port) return new_shuttle @@ -279,7 +279,7 @@ SUBSYSTEM_DEF(shuttle) if((result != SHUTTLE_CAN_DOCK) && (result != SHUTTLE_SOMEONE_ELSE_DOCKED)) //Someone else /IS/ docked, the old shuttle! WARNING("Template shuttle [new_shuttle] cannot dock at [old_shuttle_location] ([result]).") - new_shuttle.jumpToNullSpace() + qdel(new_shuttle, TRUE) return new_shuttle.timer = to_replace.timer //Copy some vars from the old shuttle @@ -291,7 +291,7 @@ SUBSYSTEM_DEF(shuttle) to_replace.assigned_transit = null new_shuttle.assigned_transit = old_shuttle_location - to_replace.jumpToNullSpace() //This will destroy the old shuttle + qdel(to_replace, TRUE) new_shuttle.initiate_docking(old_shuttle_location) //This will spawn the new shuttle return new_shuttle @@ -327,8 +327,8 @@ SUBSYSTEM_DEF(shuttle) for(var/obj/docking_port/P in T) if(istype(P, /obj/docking_port/mobile)) if(new_shuttle) + stack_trace("Map warning: Shuttle Template [template.mappath] has multiple mobile docking ports.") qdel(P, TRUE) - log_world("Map warning: Shuttle Template [template.mappath] has multiple mobile docking ports.") else new_shuttle = P if(istype(P, /obj/docking_port/stationary)) @@ -340,8 +340,7 @@ SUBSYSTEM_DEF(shuttle) T0.empty() message_admins(msg) - WARNING(msg) - return + CRASH(msg) new_shuttle.docking_points = stationary_ports new_shuttle.current_ship = parent //for any ships that spawn on top of us @@ -353,13 +352,13 @@ SUBSYSTEM_DEF(shuttle) var/obj/docking_port/mobile/transit_dock = generate_transit_dock(new_shuttle) if(!transit_dock) + qdel(src, TRUE) CRASH("No dock found/could be created for shuttle ([template.name]), aborting.") var/result = new_shuttle.canDock(transit_dock) if((result != SHUTTLE_CAN_DOCK)) - WARNING("Template shuttle [new_shuttle] cannot dock at [transit_dock] ([result]).") - new_shuttle.jumpToNullSpace() - return + qdel(src, TRUE) + CRASH("Template shuttle [new_shuttle] cannot dock at [transit_dock] ([result]).") new_shuttle.initiate_docking(transit_dock) new_shuttle.linkup(transit_dock, parent) diff --git a/code/controllers/subsystem/speech_controller.dm b/code/controllers/subsystem/speech_controller.dm index 96476127f410..e293c89a9bb6 100644 --- a/code/controllers/subsystem/speech_controller.dm +++ b/code/controllers/subsystem/speech_controller.dm @@ -1,54 +1,5 @@ -SUBSYSTEM_DEF(speech_controller) +/// verb_manager subsystem just for handling say's +VERB_MANAGER_SUBSYSTEM_DEF(speech_controller) name = "Speech Controller" wait = 1 - flags = SS_TICKER priority = FIRE_PRIORITY_SPEECH_CONTROLLER//has to be high priority, second in priority ONLY to SSinput - init_order = INIT_ORDER_SPEECH_CONTROLLER - runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY - - ///used so that an admin can force all speech verbs to execute immediately instead of queueing - var/FOR_ADMINS_IF_BROKE_immediately_execute_all_speech = FALSE - - ///list of the form: list(client mob, message that mob is queued to say, other say arguments (if any)). - ///this is our process queue, processed every tick. - var/list/queued_says_to_execute = list() - -///queues mob_to_queue into our process list so they say(message) near the start of the next tick -/datum/controller/subsystem/speech_controller/proc/queue_say_for_mob(mob/mob_to_queue, message, message_type) - - if(!TICK_CHECK || FOR_ADMINS_IF_BROKE_immediately_execute_all_speech) - process_single_say(mob_to_queue, message, message_type) - return TRUE - - queued_says_to_execute += list(list(mob_to_queue, message, message_type)) - - return TRUE - -/datum/controller/subsystem/speech_controller/fire(resumed) - - /// cache for sanic speed (lists are references anyways) - var/list/says_to_process = queued_says_to_execute.Copy() - queued_says_to_execute.Cut()//we should be going through the entire list every single iteration - - for(var/list/say_to_process as anything in says_to_process) - - var/mob/mob_to_speak = say_to_process[MOB_INDEX]//index 1 is the mob, 2 is the message, 3 is the message category - var/message = say_to_process[MESSAGE_INDEX] - var/message_category = say_to_process[CATEGORY_INDEX] - - process_single_say(mob_to_speak, message, message_category) - -///used in fire() to process a single mobs message through the relevant proc. -///only exists so that sleeps in the message pipeline dont cause the whole queue to wait -/datum/controller/subsystem/speech_controller/proc/process_single_say(mob/mob_to_speak, message, message_category) - set waitfor = FALSE - - switch(message_category) - if(SPEECH_CONTROLLER_QUEUE_SAY_VERB) - mob_to_speak.say(message) - - if(SPEECH_CONTROLLER_QUEUE_WHISPER_VERB) - mob_to_speak.whisper(message) - - if(SPEECH_CONTROLLER_QUEUE_EMOTE_VERB) - mob_to_speak.emote("me",1,message,TRUE) diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm index ad13009760a0..ac505107d726 100644 --- a/code/controllers/subsystem/statpanel.dm +++ b/code/controllers/subsystem/statpanel.dm @@ -133,7 +133,7 @@ SUBSYSTEM_DEF(statpanels) if(length(turfitems) < 30) // only create images for the first 30 items on the turf, for performance reasons if(!(REF(turf_content) in cached_images)) cached_images += REF(turf_content) - turf_content.RegisterSignal(turf_content, COMSIG_PARENT_QDELETING, /atom/.proc/remove_from_cache) // we reset cache if anything in it gets deleted + turf_content.RegisterSignal(turf_content, COMSIG_PARENT_QDELETING, TYPE_PROC_REF(/atom, remove_from_cache)) // we reset cache if anything in it gets deleted if(ismob(turf_content) || length(turf_content.overlays) > 2) turfitems[++turfitems.len] = list("[turf_content.name]", REF(turf_content), costly_icon2html(turf_content, target, sourceonly=TRUE)) else @@ -153,17 +153,16 @@ SUBSYSTEM_DEF(statpanels) list("CPU:", world.cpu), list("Instances:", "[num2text(world.contents.len, 10)]"), list("World Time:", "[world.time]"), - list("Globals:", GLOB.stat_entry(), "\ref[GLOB]"), - list("[config]:", config.stat_entry(), "\ref[config]"), + list("Globals:", GLOB.stat_entry(), text_ref(GLOB)), + list("[config]:", config.stat_entry(), text_ref(config)), list("Byond:", "(FPS:[world.fps]) (TickCount:[world.time/world.tick_lag]) (TickDrift:[round(Master.tickdrift,1)]([round((Master.tickdrift/(world.time/world.tick_lag))*100,0.1)]%)) (Internal Tick Usage: [round(MAPTICK_LAST_INTERNAL_TICK_USAGE,0.1)]%)"), - list("Master Controller:", Master.stat_entry(), "\ref[Master]"), - list("Failsafe Controller:", Failsafe.stat_entry(), "\ref[Failsafe]"), + list("Master Controller:", Master.stat_entry(), text_ref(Master)), + list("Failsafe Controller:", Failsafe.stat_entry(), text_ref(Failsafe)), list("","") ) - for(var/ss in Master.subsystems) - var/datum/controller/subsystem/sub_system = ss - mc_data[++mc_data.len] = list("\[[sub_system.state_letter()]][sub_system.name]", sub_system.stat_entry(), "\ref[sub_system]") - mc_data[++mc_data.len] = list("Camera Net", "Cameras: [GLOB.cameranet.cameras.len] | Chunks: [GLOB.cameranet.chunks.len]", "\ref[GLOB.cameranet]") + for(var/datum/controller/subsystem/sub_system as anything in Master.subsystems) + mc_data[++mc_data.len] = list("\[[sub_system.state_letter()]][sub_system.name]", sub_system.stat_entry(), text_ref(sub_system)) + mc_data[++mc_data.len] = list("Camera Net", "Cameras: [GLOB.cameranet.cameras.len] | Chunks: [GLOB.cameranet.chunks.len]", text_ref(GLOB.cameranet)) mc_data_encoded = url_encode(json_encode(mc_data)) /atom/proc/remove_from_cache() diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index 78565227e014..0260e952d10d 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -74,7 +74,7 @@ SUBSYSTEM_DEF(throwing) /datum/thrownthing/New(thrownthing, target, target_turf, init_dir, maxrange, speed, thrower, diagonals_first, force, gentle, callback, target_zone) . = ..() src.thrownthing = thrownthing - RegisterSignal(thrownthing, COMSIG_PARENT_QDELETING, .proc/on_thrownthing_qdel) + RegisterSignal(thrownthing, COMSIG_PARENT_QDELETING, PROC_REF(on_thrownthing_qdel)) src.target = target src.target_turf = target_turf src.init_dir = init_dir diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 86c76e653f51..1a5d2367c85a 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -240,7 +240,6 @@ SUBSYSTEM_DEF(ticker) to_chat(world, "Unable to start [mode.name]. Not enough players, [mode.required_players] players and [mode.required_enemies] eligible antagonists needed. Reverting to pre-game lobby.") qdel(mode) mode = null - SSjob.ResetOccupations() return 0 CHECK_TICK @@ -254,7 +253,6 @@ SUBSYSTEM_DEF(ticker) log_game("[mode.name] failed pre_setup, cause: [mode.setup_error]") QDEL_NULL(mode) to_chat(world, "Error setting up [GLOB.master_mode]. Reverting to pre-game lobby.") - SSjob.ResetOccupations() return 0 else message_admins("DEBUG: Bypassing prestart checks...") @@ -510,7 +508,7 @@ SUBSYSTEM_DEF(ticker) var/mob/dead/new_player/player = i if(player.ready == PLAYER_READY_TO_OBSERVE && player.mind) //Break chain since this has a sleep input in it - addtimer(CALLBACK(player, /mob/dead/new_player.proc/make_me_an_observer), 1) + addtimer(CALLBACK(player, TYPE_PROC_REF(/mob/dead/new_player, make_me_an_observer)), 1) /datum/controller/subsystem/ticker/proc/load_mode() var/mode = trim(file2text("data/mode.txt")) diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm index 5e499069e71d..68092077d784 100644 --- a/code/controllers/subsystem/timer.dm +++ b/code/controllers/subsystem/timer.dm @@ -283,7 +283,7 @@ SUBSYSTEM_DEF(timer) return // Sort all timers by time to run - sortTim(alltimers, .proc/cmp_timer) + sortTim(alltimers, PROC_REF(cmp_timer)) // Get the earliest timer, and if the TTR is earlier than the current world.time, // then set the head offset appropriately to be the earliest time tracked by the @@ -511,8 +511,8 @@ SUBSYSTEM_DEF(timer) /datum/timedevent/proc/bucketJoin() // Generate debug-friendly name for timer var/static/list/bitfield_flags = list("TIMER_UNIQUE", "TIMER_OVERRIDE", "TIMER_CLIENT_TIME", "TIMER_STOPPABLE", "TIMER_NO_HASH_WAIT", "TIMER_LOOP") - name = "Timer: [id] (\ref[src]), TTR: [timeToRun], wait:[wait] Flags: [jointext(bitfield_to_list(flags, bitfield_flags), ", ")], \ - callBack: \ref[callBack], callBack.object: [callBack.object]\ref[callBack.object]([getcallingtype()]), \ + name = "Timer: [id] ([text_ref(src)]), TTR: [timeToRun], wait:[wait] Flags: [jointext(bitfield_to_list(flags, bitfield_flags), ", ")], \ + callBack: [text_ref(callBack)], callBack.object: [callBack.object][text_ref(callBack.object)]([getcallingtype()]), \ callBack.delegate:[callBack.delegate]([callBack.arguments ? callBack.arguments.Join(", ") : ""]), source: [source]" if (bucket_joined) @@ -588,7 +588,7 @@ SUBSYSTEM_DEF(timer) if (callback.object != GLOBAL_PROC && QDELETED(callback.object) && !QDESTROYING(callback.object)) stack_trace("addtimer called with a callback assigned to a qdeleted object. In the future such timers will not \ - be supported and may refuse to run or run with a 0 wait - proc: [callback.delegate], args: [json_encode(callback.arguments)] , usr: [callback.user.resolve()]") + be supported and may refuse to run or run with a 0 wait - proc: [callback.delegate], args: [json_encode(callback.arguments)] , usr: [callback.user?.resolve()]") wait = max(CEILING(wait, world.tick_lag), world.tick_lag) diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 87628785caf0..ab220b4382b4 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -96,7 +96,7 @@ SUBSYSTEM_DEF(traumas) /obj/item/clothing/under/rank/security/head_of_security/parade/female, //WS Edit - Better Command Uniforms /obj/item/clothing/head/helmet/abductor, /obj/item/clothing/suit/armor/abductor/vest, /obj/item/melee/baton/abductor, /obj/item/storage/belt/military/abductor, /obj/item/gun/energy/alien, /obj/item/abductor/silencer, - /obj/item/abductor/gizmo, /obj/item/clothing/under/rank/centcom/officer, + /obj/item/abductor/gizmo, /obj/item/clothing/under/rank/centcom/official, /obj/item/clothing/suit/space/hardsuit/ert, /obj/item/clothing/suit/space/hardsuit/ert/sec, /obj/item/clothing/suit/space/hardsuit/ert/engi, /obj/item/clothing/suit/space/hardsuit/ert/med, /obj/item/clothing/suit/space/hardsuit/deathsquad, /obj/item/clothing/head/helmet/space/hardsuit/deathsquad, @@ -119,7 +119,7 @@ SUBSYSTEM_DEF(traumas) /obj/item/clothing/under/rank/command/captain, /obj/item/clothing/under/rank/command/head_of_personnel, /obj/item/clothing/under/rank/security/head_of_security, /obj/item/clothing/under/rank/rnd/research_director, /obj/item/clothing/under/rank/medical/chief_medical_officer, /obj/item/clothing/under/rank/engineering/chief_engineer, - /obj/item/clothing/under/rank/centcom/officer, /obj/item/clothing/under/rank/centcom/commander, + /obj/item/clothing/under/rank/centcom/official, /obj/item/clothing/under/rank/centcom/commander, /obj/item/melee/classic_baton/telescopic, /obj/item/card/id/silver, /obj/item/card/id/gold, /obj/item/card/id/captains_spare, /obj/item/card/id/centcom, /obj/machinery/door/airlock/command)), diff --git a/code/controllers/subsystem/verb_manager.dm b/code/controllers/subsystem/verb_manager.dm new file mode 100644 index 000000000000..438916b5ae85 --- /dev/null +++ b/code/controllers/subsystem/verb_manager.dm @@ -0,0 +1,165 @@ +/** + * SSverb_manager, a subsystem that runs every tick and runs through its entire queue without yielding like SSinput. + * this exists because of how the byond tick works and where user inputted verbs are put within it. + * + * see TICK_ORDER.md for more info on how the byond tick is structured. + * + * The way the MC allots its time is via TICK_LIMIT_RUNNING, it simply subtracts the cost of SendMaps (MAPTICK_LAST_INTERNAL_TICK_USAGE) + * plus TICK_BYOND_RESERVE from the tick and uses up to that amount of time (minus the percentage of the tick used by the time it executes subsystems) + * on subsystems running cool things like atmospherics or Life or SSInput or whatever. + * + * Without this subsystem, verbs are likely to cause overtime if the MC uses all of the time it has alloted for itself in the tick, and SendMaps + * uses as much as its expected to, and an expensive verb ends up executing that tick. This is because the MC is completely blind to the cost of + * verbs, it can't account for it at all. The only chance for verbs to not cause overtime in a tick where the MC used as much of the tick + * as it alloted itself and where SendMaps costed as much as it was expected to is if the verb(s) take less than TICK_BYOND_RESERVE percent of + * the tick, which isnt much. Not to mention if SendMaps takes more than 30% of the tick and the MC forces itself to take at least 70% of the + * normal tick duration which causes ticks to naturally overrun even in the absence of verbs. + * + * With this subsystem, the MC can account for the cost of verbs and thus stop major overruns of ticks. This means that the most important subsystems + * like SSinput can start at the same time they were supposed to, leading to a smoother experience for the player since ticks arent riddled with + * minor hangs over and over again. + */ +SUBSYSTEM_DEF(verb_manager) + name = "Verb Manager" + wait = 1 + flags = SS_TICKER | SS_NO_INIT + priority = FIRE_PRIORITY_DELAYED_VERBS + runlevels = RUNLEVEL_INIT | RUNLEVELS_DEFAULT + + ///list of callbacks to procs called from verbs or verblike procs that were executed when the server was overloaded and had to delay to the next tick. + ///this list is ran through every tick, and the subsystem does not yield until this queue is finished. + var/list/datum/callback/verb_callback/verb_queue = list() + + ///running average of how many verb callbacks are executed every second. used for the stat entry + var/verbs_executed_per_second = 0 + + ///if TRUE we treat usr's with holders just like usr's without holders. otherwise they always execute immediately + var/can_queue_admin_verbs = FALSE + + ///if this is true all verbs immediately execute and dont queue. in case the mc is fucked or something + var/FOR_ADMINS_IF_VERBS_FUCKED_immediately_execute_all_verbs = FALSE + + ///used for subtypes to determine if they use their own stats for the stat entry + var/use_default_stats = TRUE + + ///if TRUE this will... message admins every time a verb is queued to this subsystem for the next tick with stats. + ///for obvious reasons dont make this be TRUE on the code level this is for admins to turn on + var/message_admins_on_queue = FALSE + + ///always queue if possible. overides can_queue_admin_verbs but not FOR_ADMINS_IF_VERBS_FUCKED_immediately_execute_all_verbs + var/always_queue = FALSE + +/** + * queue a callback for the given verb/verblike proc and any given arguments to the specified verb subsystem, so that they process in the next tick. + * intended to only work with verbs or verblike procs called directly from client input, use as part of TRY_QUEUE_VERB() and co. + * + * returns TRUE if the queuing was successful, FALSE otherwise. + */ +/proc/_queue_verb(datum/callback/verb_callback/incoming_callback, tick_check, datum/controller/subsystem/verb_manager/subsystem_to_use = SSverb_manager, ...) + if(QDELETED(incoming_callback)) + var/destroyed_string + if(!incoming_callback) + destroyed_string = "callback is null." + else + destroyed_string = "callback was deleted [DS2TICKS(world.time - incoming_callback.gc_destroyed)] ticks ago. callback was created [DS2TICKS(world.time) - incoming_callback.creation_time] ticks ago." + + stack_trace("_queue_verb() returned false because it was given a deleted callback! [destroyed_string]") + return FALSE + + if(!istext(incoming_callback.object) && QDELETED(incoming_callback.object)) //just in case the object is GLOBAL_PROC + var/destroyed_string + if(!incoming_callback.object) + destroyed_string = "callback.object is null." + else + destroyed_string = "callback.object was deleted [DS2TICKS(world.time - incoming_callback.object.gc_destroyed)] ticks ago. callback was created [DS2TICKS(world.time) - incoming_callback.creation_time] ticks ago." + + stack_trace("_queue_verb() returned false because it was given a callback acting on a qdeleted object! [destroyed_string]") + return FALSE + + //we want unit tests to be able to directly call verbs that attempt to queue, and since unit tests should test internal behavior, we want the queue + //to happen as if it was actually from player input if its called on a mob. +#ifdef UNIT_TESTS + if(QDELETED(usr) && ismob(incoming_callback.object)) + incoming_callback.user = WEAKREF(incoming_callback.object) + var/datum/callback/new_us = CALLBACK(arglist(list(GLOBAL_PROC, /proc/_queue_verb) + args.Copy())) + return world.push_usr(incoming_callback.object, new_us) +#endif + + //debatable whether this is needed, this is just to try and ensure that you dont use this to queue stuff that isnt from player input. + if(QDELETED(usr)) + stack_trace("_queue_verb() returned false because it wasnt called from player input!") + return FALSE + + if(!istype(subsystem_to_use)) + stack_trace("_queue_verb() returned false because it was given an invalid subsystem to queue for!") + return FALSE + + if((TICK_USAGE < tick_check) && !subsystem_to_use.always_queue) + return FALSE + + var/list/args_to_check = args.Copy() + args_to_check.Cut(2, 4)//cut out tick_check and subsystem_to_use + + //any subsystem can use the additional arguments to refuse queuing + if(!subsystem_to_use.can_queue_verb(arglist(args_to_check))) + return FALSE + + return subsystem_to_use.queue_verb(incoming_callback) + +/** + * subsystem-specific check for whether a callback can be queued. + * intended so that subsystem subtypes can verify whether + * + * subtypes may include additional arguments here if they need them! you just need to include them properly + * in TRY_QUEUE_VERB() and co. + */ +/datum/controller/subsystem/verb_manager/proc/can_queue_verb(datum/callback/verb_callback/incoming_callback) + if(always_queue && !FOR_ADMINS_IF_VERBS_FUCKED_immediately_execute_all_verbs) + return TRUE + + if((usr.client?.holder && !can_queue_admin_verbs) \ + || (!initialized && !(flags & SS_NO_INIT)) \ + || FOR_ADMINS_IF_VERBS_FUCKED_immediately_execute_all_verbs \ + || !(runlevels & Master.current_runlevel)) + return FALSE + + return TRUE + +/** + * queue a callback for the given proc, so that it is invoked in the next tick. + * intended to only work with verbs or verblike procs called directly from client input, use as part of TRY_QUEUE_VERB() + * + * returns TRUE if the queuing was successful, FALSE otherwise. + */ +/datum/controller/subsystem/verb_manager/proc/queue_verb(datum/callback/verb_callback/incoming_callback) + . = FALSE //errored + if(message_admins_on_queue) + message_admins("[name] verb queuing: tick usage: [TICK_USAGE]%, proc: [incoming_callback.delegate], object: [incoming_callback.object], usr: [usr]") + verb_queue += incoming_callback + return TRUE + +/datum/controller/subsystem/verb_manager/fire(resumed) + run_verb_queue() + +/// runs through all of this subsystems queue of verb callbacks. +/// goes through the entire verb queue without yielding. +/// used so you can flush the queue outside of fire() without interfering with anything else subtype subsystems might do in fire(). +/datum/controller/subsystem/verb_manager/proc/run_verb_queue() + var/executed_verbs = 0 + + for(var/datum/callback/verb_callback/verb_callback as anything in verb_queue) + if(!istype(verb_callback)) + stack_trace("non /datum/callback/verb_callback inside [name]'s verb_queue!") + continue + + verb_callback.InvokeAsync() + executed_verbs++ + + verb_queue.Cut() + verbs_executed_per_second = MC_AVG_SECONDS(verbs_executed_per_second, executed_verbs, wait SECONDS) + //note that wait SECONDS is incorrect if this is called outside of fire() but because byond is garbage i need to add a timer to rustg to find a valid solution + +/datum/controller/subsystem/verb_manager/stat_entry(msg) + . = ..() + if(use_default_stats) + . += "V/S: [round(verbs_executed_per_second, 0.01)]" diff --git a/code/controllers/subsystem/vis_overlays.dm b/code/controllers/subsystem/vis_overlays.dm index 39feb5629428..6d134610f9f3 100644 --- a/code/controllers/subsystem/vis_overlays.dm +++ b/code/controllers/subsystem/vis_overlays.dm @@ -5,12 +5,10 @@ SUBSYSTEM_DEF(vis_overlays) init_order = INIT_ORDER_VIS var/list/vis_overlay_cache - var/list/unique_vis_overlays var/list/currentrun /datum/controller/subsystem/vis_overlays/Initialize() vis_overlay_cache = list() - unique_vis_overlays = list() return ..() /datum/controller/subsystem/vis_overlays/fire(resumed = FALSE) @@ -44,8 +42,7 @@ SUBSYSTEM_DEF(vis_overlays) else overlay = _create_new_vis_overlay(icon, iconstate, layer, plane, dir, alpha, add_appearance_flags) overlay.cache_expiration = -1 - var/cache_id = "\ref[overlay]@{[world.time]}" - unique_vis_overlays += overlay + var/cache_id = "[text_ref(overlay)]@{[world.time]}" vis_overlay_cache[cache_id] = overlay . = overlay if(overlay == null) @@ -58,7 +55,6 @@ SUBSYSTEM_DEF(vis_overlays) if(!thing.managed_vis_overlays) thing.managed_vis_overlays = list(overlay) - RegisterSignal(thing, COMSIG_ATOM_DIR_CHANGE, .proc/rotate_vis_overlay) else thing.managed_vis_overlays += overlay @@ -81,23 +77,3 @@ SUBSYSTEM_DEF(vis_overlays) thing.managed_vis_overlays -= overlays if(!length(thing.managed_vis_overlays)) thing.managed_vis_overlays = null - UnregisterSignal(thing, COMSIG_ATOM_DIR_CHANGE) - -/datum/controller/subsystem/vis_overlays/proc/rotate_vis_overlay(atom/thing, old_dir, new_dir) - SIGNAL_HANDLER - - if(old_dir == new_dir) - return - var/rotation = dir2angle(old_dir) - dir2angle(new_dir) - var/list/overlays_to_remove = list() - for(var/i in thing.managed_vis_overlays - unique_vis_overlays) - var/obj/effect/overlay/vis/overlay = i - if(overlay == null) - message_debug("Somehow someway we are processing a null vis_overlay! ([thing.type])") - else - add_vis_overlay(thing, overlay.icon, overlay.icon_state, overlay.layer, overlay.plane, turn(overlay.dir, rotation), overlay.alpha, overlay.appearance_flags) - overlays_to_remove += overlay - for(var/i in thing.managed_vis_overlays & unique_vis_overlays) - var/obj/effect/overlay/vis/overlay = i - overlay.dir = turn(overlay.dir, rotation) - remove_vis_overlay(thing, overlays_to_remove) diff --git a/code/datums/action.dm b/code/datums/action.dm index 669313be1840..ea332792a397 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -31,7 +31,7 @@ /datum/action/proc/link_to(Target) target = Target - RegisterSignal(Target, COMSIG_ATOM_UPDATED_ICON, .proc/OnUpdatedIcon) + RegisterSignal(Target, COMSIG_ATOM_UPDATED_ICON, PROC_REF(OnUpdatedIcon)) /datum/action/Destroy() if(owner) @@ -47,7 +47,7 @@ return Remove(owner) owner = M - RegisterSignal(owner, COMSIG_PARENT_QDELETING, .proc/owner_deleted) + RegisterSignal(owner, COMSIG_PARENT_QDELETING, PROC_REF(owner_deleted)) //button id generation var/counter = 0 diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm index 8066c548896f..d2b499de92ed 100644 --- a/code/datums/ai_laws.dm +++ b/code/datums/ai_laws.dm @@ -18,6 +18,12 @@ var/list/devillaws = list() var/id = DEFAULT_AI_LAWID +/datum/ai_laws/Destroy(force, ...) + if(!QDELETED(owner)) + CRASH("AI lawset destroyed even though owner AI is not being destroyed.") + owner = null + return ..() + /datum/ai_laws/proc/lawid_to_type(lawid) var/all_ai_laws = subtypesof(/datum/ai_laws) for(var/al in all_ai_laws) diff --git a/code/datums/aquarium.dm b/code/datums/aquarium.dm index 2bca6af8c26d..86551b9d25ce 100644 --- a/code/datums/aquarium.dm +++ b/code/datums/aquarium.dm @@ -68,7 +68,7 @@ src.animation_getter = animation_getter src.animation_update_signals = animation_update_signals if(animation_update_signals) - RegisterSignal(parent, animation_update_signals, .proc/generate_animation) + RegisterSignal(parent, animation_update_signals, PROC_REF(generate_animation)) if(istype(parent,/obj/item/fish)) InitializeFromFish() @@ -78,7 +78,7 @@ InitializeOther() ADD_TRAIT(parent, TRAIT_FISH_CASE_COMPATIBILE, src) - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/enter_aquarium) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(enter_aquarium)) //If component is added to something already in aquarium at the time initialize it properly. var/atom/movable/movable_parent = parent @@ -160,9 +160,9 @@ /datum/component/aquarium_content/proc/on_inserted(atom/aquarium) current_aquarium = aquarium - RegisterSignal(current_aquarium, COMSIG_ATOM_EXITED, .proc/on_removed) - RegisterSignal(current_aquarium, COMSIG_AQUARIUM_SURFACE_CHANGED, .proc/on_surface_changed) - RegisterSignal(current_aquarium, COMSIG_AQUARIUM_FLUID_CHANGED,.proc/on_fluid_changed) + RegisterSignal(current_aquarium, COMSIG_ATOM_EXITED, PROC_REF(on_removed)) + RegisterSignal(current_aquarium, COMSIG_AQUARIUM_SURFACE_CHANGED, PROC_REF(on_surface_changed)) + RegisterSignal(current_aquarium, COMSIG_AQUARIUM_FLUID_CHANGED, PROC_REF(on_fluid_changed)) if(processing) START_PROCESSING(SSobj, src) diff --git a/code/datums/beam.dm b/code/datums/beam.dm index 8ff67bfb54fb..3044aacddfe7 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -69,8 +69,8 @@ visuals.emissive = emissive visuals.update_appearance() Draw() - RegisterSignal(origin, COMSIG_MOVABLE_MOVED, .proc/redrawing) - RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/redrawing) + RegisterSignal(origin, COMSIG_MOVABLE_MOVED, PROC_REF(redrawing)) + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(redrawing)) /** * Triggered by signals set up when the beam is set up. If it's still sane to create a beam, it removes the old beam, creates a new one. Otherwise it kills the beam. @@ -84,13 +84,14 @@ SIGNAL_HANDLER if(origin && target && get_dist(origin,target)You cannot directly influence the world around you, but you can see what [owner] cannot.") /mob/camera/imaginary_friend/Initialize(mapload, _trauma) + if(!_trauma) + stack_trace("Imaginary friend created without trauma, wtf") + return INITIALIZE_HINT_QDEL . = ..() trauma = _trauma owner = trauma.owner - INVOKE_ASYNC(src, .proc/setup_friend) + INVOKE_ASYNC(src, PROC_REF(setup_friend)) join = new join.Grant(src) @@ -131,7 +134,7 @@ client.images |= current_image /mob/camera/imaginary_friend/Destroy() - if(owner.client) + if(owner?.client) owner.client.images.Remove(human_image) if(client) client.images.Remove(human_image) @@ -173,7 +176,7 @@ if(owner.client) var/mutable_appearance/MA = mutable_appearance('icons/mob/talk.dmi', src, "default[say_test(message)]", FLY_LAYER) MA.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA - INVOKE_ASYNC(GLOBAL_PROC, /proc/flick_overlay, MA, list(owner.client), 30) + INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay), MA, list(owner.client), 30) for(var/mob/M in GLOB.dead_mob_list) var/link = FOLLOW_LINK(M, owner) diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm index 3b01c6c66f2c..069d89f0e7e7 100644 --- a/code/datums/brain_damage/mild.dm +++ b/code/datums/brain_damage/mild.dm @@ -178,8 +178,8 @@ to_chat(owner, "[pick("You have a coughing fit!", "You can't stop coughing!")]") owner.Immobilize(20) owner.emote("cough") - addtimer(CALLBACK(owner, /mob/.proc/emote, "cough"), 6) - addtimer(CALLBACK(owner, /mob/.proc/emote, "cough"), 12) + addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, emote), "cough"), 6) + addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, emote), "cough"), 12) owner.emote("cough") ..() diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm index c2446f882b60..00ecd3a49c48 100644 --- a/code/datums/brain_damage/phobia.dm +++ b/code/datums/brain_damage/phobia.dm @@ -83,7 +83,7 @@ if(HAS_TRAIT(owner, TRAIT_FEARLESS)) return if(trigger_regex.Find(hearing_args[HEARING_RAW_MESSAGE]) != 0) - addtimer(CALLBACK(src, .proc/freak_out, null, trigger_regex.group[2]), 10) //to react AFTER the chat message + addtimer(CALLBACK(src, PROC_REF(freak_out), null, trigger_regex.group[2]), 10) //to react AFTER the chat message hearing_args[HEARING_RAW_MESSAGE] = trigger_regex.Replace(hearing_args[HEARING_RAW_MESSAGE], "$2$3") /datum/brain_trauma/mild/phobia/handle_speech(datum/source, list/speech_args) diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index 4e7563c5fb81..979c43e8e13e 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -185,7 +185,7 @@ to_chat(owner, "You feel sick...") else to_chat(owner, "You feel really sick at the thought of being alone!") - addtimer(CALLBACK(owner, /mob/living/carbon.proc/vomit, high_stress), 50) //blood vomit if high stress + addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob/living/carbon, vomit), high_stress), 50) //blood vomit if high stress if(2) if(!high_stress) to_chat(owner, "You can't stop shaking...") @@ -292,7 +292,7 @@ var/regex/reg = new("(\\b[REGEX_QUOTE(trigger_phrase)]\\b)","ig") if(findtext(hearing_args[HEARING_RAW_MESSAGE], reg)) - addtimer(CALLBACK(src, .proc/hypnotrigger), 10) //to react AFTER the chat message + addtimer(CALLBACK(src, PROC_REF(hypnotrigger)), 10) //to react AFTER the chat message hearing_args[HEARING_RAW_MESSAGE] = reg.Replace(hearing_args[HEARING_RAW_MESSAGE], "*********") /datum/brain_trauma/severe/hypnotic_trigger/proc/hypnotrigger() diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm index 68dae74b1f8c..9c447f4ab10a 100644 --- a/code/datums/brain_damage/special.dm +++ b/code/datums/brain_damage/special.dm @@ -186,7 +186,7 @@ to_chat(owner, "Your connection to [linked_target] suddenly feels extremely strong... you can feel it pulling you!") owner.playsound_local(owner, 'sound/magic/lightning_chargeup.ogg', 75, FALSE) returning = TRUE - addtimer(CALLBACK(src, .proc/snapback), 100) + addtimer(CALLBACK(src, PROC_REF(snapback)), 100) /datum/brain_trauma/special/quantum_alignment/proc/snapback() returning = FALSE @@ -262,7 +262,7 @@ /datum/brain_trauma/special/death_whispers/proc/whispering() ADD_TRAIT(owner, TRAIT_SIXTHSENSE, TRAUMA_TRAIT) active = TRUE - addtimer(CALLBACK(src, .proc/cease_whispering), rand(50, 300)) + addtimer(CALLBACK(src, PROC_REF(cease_whispering)), rand(50, 300)) /datum/brain_trauma/special/death_whispers/proc/cease_whispering() REMOVE_TRAIT(owner, TRAIT_SIXTHSENSE, TRAUMA_TRAIT) @@ -306,7 +306,7 @@ var/atom/movable/AM = thing SEND_SIGNAL(AM, COMSIG_MOVABLE_SECLUDED_LOCATION) next_crisis = world.time + 600 - addtimer(CALLBACK(src, .proc/fade_in), duration) + addtimer(CALLBACK(src, PROC_REF(fade_in)), duration) /datum/brain_trauma/special/existential_crisis/proc/fade_in() QDEL_NULL(veil) diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index 78eb23a85b0b..ab391202a9d3 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -198,7 +198,7 @@ var/message = hearing_args[HEARING_RAW_MESSAGE] if(findtext(message, codeword)) hearing_args[HEARING_RAW_MESSAGE] = replacetext(message, codeword, "[codeword]") - addtimer(CALLBACK(src, /datum/brain_trauma/severe/split_personality.proc/switch_personalities), 10) + addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/brain_trauma/severe/split_personality, switch_personalities)), 10) /datum/brain_trauma/severe/split_personality/brainwashing/handle_speech(datum/source, list/speech_args) if(findtext(speech_args[SPEECH_MESSAGE], codeword)) diff --git a/code/datums/browser.dm b/code/datums/browser.dm index 2300e308a35f..c1ce6f43e99b 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -4,7 +4,7 @@ var/window_id // window_id is used as the window name for browse and onclose var/width = 0 var/height = 0 - var/atom/ref = null + var/datum/weakref/ref = null var/window_options = "can_close=1;can_minimize=1;can_maximize=0;can_resize=1;titlebar=1;" // window option is set using window_id var/stylesheets[0] var/scripts[0] @@ -16,8 +16,8 @@ /datum/browser/New(nuser, nwindow_id, ntitle = 0, nwidth = 0, nheight = 0, atom/nref = null) - user = nuser + RegisterSignal(user, COMSIG_PARENT_QDELETING, PROC_REF(user_deleted)) window_id = nwindow_id if (ntitle) title = format_text(ntitle) @@ -26,7 +26,11 @@ if (nheight) height = nheight if (nref) - ref = nref + ref = WEAKREF(nref) + +/datum/browser/proc/user_deleted(datum/source) + SIGNAL_HANDLER + user = null /datum/browser/proc/add_head_content(nhead_content) head_content = nhead_content @@ -113,8 +117,13 @@ /datum/browser/proc/setup_onclose() set waitfor = 0 //winexists sleeps, so we don't need to. for (var/i in 1 to 10) - if (user && winexists(user, window_id)) - onclose(user, window_id, ref) + if (user?.client && winexists(user, window_id)) + var/atom/send_ref + if(ref) + send_ref = ref.resolve() + if(!send_ref) + ref = null + onclose(user, window_id, send_ref) break /datum/browser/proc/close() @@ -227,7 +236,7 @@ winset(user, "mapwindow", "focus=true") break if (timeout) - addtimer(CALLBACK(src, .proc/close), timeout) + addtimer(CALLBACK(src, PROC_REF(close)), timeout) /datum/browser/modal/proc/wait() while (opentime && selectedbutton <= 0 && (!timeout || opentime+timeout > world.time)) diff --git a/code/datums/callback.dm b/code/datums/callback.dm index b5baea28f1f1..4fa2078f152b 100644 --- a/code/datums/callback.dm +++ b/code/datums/callback.dm @@ -37,14 +37,14 @@ * `CALLBACK(src, .some_proc_here)` * * ### when the above doesn't apply: - *.proc/procname + * PROC_REF(procname) * - * `CALLBACK(src, .proc/some_proc_here)` + * `CALLBACK(src, PROC_REF(some_proc_here))` * * * proc defined on a parent of a some type * - * `/some/type/.proc/some_proc_here` + * `TYPE_PROC_REF(/some/type, some_proc_here)` * * Otherwise you must always provide the full typepath of the proc (/type/of/thing/proc/procname) */ @@ -111,12 +111,18 @@ var/mob/M = W.resolve() if(M) if (length(args)) - return world.PushUsr(arglist(list(M, src) + args)) - return world.PushUsr(M, src) + return world.push_usr(arglist(list(M, src) + args)) + return world.push_usr(M, src) if (!object) return +#if DM_VERSION <= 514 + if(istext(object) && object != GLOBAL_PROC) + to_chat(usr, "[object] may be an external library. Calling external libraries is disallowed.", confidential = TRUE) + return +#endif + var/list/calling_arguments = arguments if (length(args)) if (length(arguments)) @@ -146,12 +152,18 @@ var/mob/M = W.resolve() if(M) if (length(args)) - return world.PushUsr(arglist(list(M, src) + args)) - return world.PushUsr(M, src) + return world.push_usr(arglist(list(M, src) + args)) + return world.push_usr(M, src) if (!object) return +#if DM_VERSION <= 514 + if(istext(object) && object != GLOBAL_PROC) + to_chat(usr, "[object] may be an external library. Calling external libraries is disallowed.", confidential = TRUE) + return +#endif + var/list/calling_arguments = arguments if (length(args)) if (length(arguments)) diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm index 684ec401e290..c27e0bd1b7ae 100644 --- a/code/datums/chatmessage.dm +++ b/code/datums/chatmessage.dm @@ -65,7 +65,7 @@ stack_trace("/datum/chatmessage created with [isnull(owner) ? "null" : "invalid"] mob owner") qdel(src) return - INVOKE_ASYNC(src, .proc/generate_image, text, target, owner, extra_classes, lifespan) + INVOKE_ASYNC(src, PROC_REF(generate_image), text, target, owner, extra_classes, lifespan) /datum/chatmessage/Destroy() if (owned_by) @@ -99,7 +99,7 @@ /datum/chatmessage/proc/generate_image(text, atom/target, mob/owner, list/extra_classes, lifespan) // Register client who owns this message owned_by = owner.client - RegisterSignal(owned_by, COMSIG_PARENT_QDELETING, .proc/on_parent_qdel) + RegisterSignal(owned_by, COMSIG_PARENT_QDELETING, PROC_REF(on_parent_qdel)) // Clip message var/maxlen = owned_by.prefs.max_chat_length @@ -212,6 +212,8 @@ * * 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) + if(SSlag_switch.measures[DISABLE_RUNECHAT] && !HAS_TRAIT(speaker, TRAIT_BYPASS_MEASURES)) + 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() diff --git a/code/datums/cinematic.dm b/code/datums/cinematic.dm index 883e9fb99dee..c36fb3961664 100644 --- a/code/datums/cinematic.dm +++ b/code/datums/cinematic.dm @@ -66,7 +66,7 @@ //We are now playing this cinematic //Handle what happens when a different cinematic tries to play over us - RegisterSignal(SSdcs, COMSIG_GLOB_PLAY_CINEMATIC, .proc/replacement_cinematic) + RegisterSignal(SSdcs, COMSIG_GLOB_PLAY_CINEMATIC, PROC_REF(replacement_cinematic)) //Pause OOC var/ooc_toggled = FALSE @@ -78,7 +78,7 @@ for(var/MM in watchers) var/mob/M = MM show_to(M, M.client) - RegisterSignal(M, COMSIG_MOB_CLIENT_LOGIN, .proc/show_to) + RegisterSignal(M, COMSIG_MOB_CLIENT_LOGIN, PROC_REF(show_to)) //Close watcher ui's SStgui.close_user_uis(M) diff --git a/code/datums/components/admin_popup.dm b/code/datums/components/admin_popup.dm index 65b97e09b1a2..88ef0d97fabf 100644 --- a/code/datums/components/admin_popup.dm +++ b/code/datums/components/admin_popup.dm @@ -23,7 +23,7 @@ COMSIG_ADMIN_HELP_REPLIED, COMSIG_PARENT_QDELETING, ), - .proc/delete_self, + PROC_REF(delete_self), ) /datum/component/admin_popup/Destroy(force, silent) diff --git a/code/datums/components/anti_magic.dm b/code/datums/components/anti_magic.dm index eede283e8b81..7cdb1db8f152 100644 --- a/code/datums/components/anti_magic.dm +++ b/code/datums/components/anti_magic.dm @@ -10,10 +10,10 @@ /datum/component/anti_magic/Initialize(_magic = FALSE, _holy = FALSE, _psychic = FALSE, _allowed_slots, _charges, _blocks_self = TRUE, datum/callback/_reaction, datum/callback/_expire) if(isitem(parent)) - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) - RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) else if(ismob(parent)) - RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect) + RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, PROC_REF(protect)) else return COMPONENT_INCOMPATIBLE @@ -34,7 +34,7 @@ if(!(allowed_slots & slot)) //Check that the slot is valid for antimagic UnregisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC) return - RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect, TRUE) + RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, PROC_REF(protect), TRUE) /datum/component/anti_magic/proc/on_drop(datum/source, mob/user) SIGNAL_HANDLER diff --git a/code/datums/components/aquarium.dm b/code/datums/components/aquarium.dm index 2bca6af8c26d..86551b9d25ce 100644 --- a/code/datums/components/aquarium.dm +++ b/code/datums/components/aquarium.dm @@ -68,7 +68,7 @@ src.animation_getter = animation_getter src.animation_update_signals = animation_update_signals if(animation_update_signals) - RegisterSignal(parent, animation_update_signals, .proc/generate_animation) + RegisterSignal(parent, animation_update_signals, PROC_REF(generate_animation)) if(istype(parent,/obj/item/fish)) InitializeFromFish() @@ -78,7 +78,7 @@ InitializeOther() ADD_TRAIT(parent, TRAIT_FISH_CASE_COMPATIBILE, src) - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/enter_aquarium) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(enter_aquarium)) //If component is added to something already in aquarium at the time initialize it properly. var/atom/movable/movable_parent = parent @@ -160,9 +160,9 @@ /datum/component/aquarium_content/proc/on_inserted(atom/aquarium) current_aquarium = aquarium - RegisterSignal(current_aquarium, COMSIG_ATOM_EXITED, .proc/on_removed) - RegisterSignal(current_aquarium, COMSIG_AQUARIUM_SURFACE_CHANGED, .proc/on_surface_changed) - RegisterSignal(current_aquarium, COMSIG_AQUARIUM_FLUID_CHANGED,.proc/on_fluid_changed) + RegisterSignal(current_aquarium, COMSIG_ATOM_EXITED, PROC_REF(on_removed)) + RegisterSignal(current_aquarium, COMSIG_AQUARIUM_SURFACE_CHANGED, PROC_REF(on_surface_changed)) + RegisterSignal(current_aquarium, COMSIG_AQUARIUM_FLUID_CHANGED, PROC_REF(on_fluid_changed)) if(processing) START_PROCESSING(SSobj, src) diff --git a/code/datums/components/archaeology.dm b/code/datums/components/archaeology.dm index 3be37b94db69..c4f0d7dc3d59 100644 --- a/code/datums/components/archaeology.dm +++ b/code/datums/components/archaeology.dm @@ -15,9 +15,9 @@ archdrops[i][ARCH_PROB] = 100 stack_trace("ARCHAEOLOGY WARNING: [parent] contained a null probability value in [i].") callback = _callback - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,.proc/Dig) - RegisterSignal(parent, COMSIG_ATOM_EX_ACT, .proc/BombDig) - RegisterSignal(parent, COMSIG_ATOM_SING_PULL, .proc/SingDig) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(Dig)) + RegisterSignal(parent, COMSIG_ATOM_EX_ACT, PROC_REF(BombDig)) + RegisterSignal(parent, COMSIG_ATOM_SING_PULL, PROC_REF(SingDig)) /datum/component/archaeology/InheritComponent(datum/component/archaeology/A, i_am_original) var/list/other_archdrops = A.archdrops diff --git a/code/datums/components/armor_plate.dm b/code/datums/components/armor_plate.dm index 49f79930352c..d90da9ee24a3 100644 --- a/code/datums/components/armor_plate.dm +++ b/code/datums/components/armor_plate.dm @@ -9,11 +9,11 @@ if(!isobj(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine) - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/applyplate) - RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, .proc/dropplates) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine)) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(applyplate)) + RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, PROC_REF(dropplates)) if(istype(parent, /obj/mecha/working/ripley)) - RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/apply_mech_overlays) + RegisterSignal(parent, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(apply_mech_overlays)) if(_maxamount) maxamount = _maxamount diff --git a/code/datums/components/art.dm b/code/datums/components/art.dm index 0683426ea1c2..3ed27f8297f9 100644 --- a/code/datums/components/art.dm +++ b/code/datums/components/art.dm @@ -4,13 +4,13 @@ /datum/component/art/Initialize(impress) impressiveness = impress if(isobj(parent)) - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_obj_examine) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_obj_examine)) else - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_other_examine) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_other_examine)) if(isstructure(parent)) - RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, .proc/on_attack_hand) + RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) if(isitem(parent)) - RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/apply_moodlet) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(apply_moodlet)) /datum/component/art/proc/apply_moodlet(mob/M, impress) SIGNAL_HANDLER @@ -43,7 +43,7 @@ /datum/component/art/proc/on_attack_hand(datum/source, mob/M) SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/examine, source, M) + INVOKE_ASYNC(src, PROC_REF(examine), source, M) /datum/component/art/proc/examine(datum/source, mob/M) @@ -51,16 +51,3 @@ if(!do_after(M, 20, target = parent)) return on_obj_examine(source, M) - -/datum/component/art/rev - -/datum/component/art/rev/apply_moodlet(mob/M, impress) - M.visible_message( - "[M] stops to inspect [parent].", - "You take in [parent], inspecting the fine craftsmanship of the proletariat." - ) - - if(M.mind && M.mind.has_antag_datum(/datum/antagonist/rev)) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "artgreat", /datum/mood_event/artgreat) - else - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "artbad", /datum/mood_event/artbad) diff --git a/code/datums/components/bane.dm b/code/datums/components/bane.dm index 4ac2c77525a6..8d7c7a08a65f 100644 --- a/code/datums/components/bane.dm +++ b/code/datums/components/bane.dm @@ -20,9 +20,9 @@ /datum/component/bane/RegisterWithParent() if(speciestype) - RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/speciesCheck) + RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(speciesCheck)) else - RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/mobCheck) + RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(mobCheck)) /datum/component/bane/UnregisterFromParent() UnregisterSignal(parent, COMSIG_ITEM_AFTERATTACK) diff --git a/code/datums/components/beauty.dm b/code/datums/components/beauty.dm index 9b3398b4ce96..fe3c06e3ad5a 100644 --- a/code/datums/components/beauty.dm +++ b/code/datums/components/beauty.dm @@ -8,8 +8,8 @@ beauty = beautyamount if(ismovable(parent)) - RegisterSignal(parent, COMSIG_ENTER_AREA, .proc/enter_area) - RegisterSignal(parent, COMSIG_EXIT_AREA, .proc/exit_area) + RegisterSignal(parent, COMSIG_ENTER_AREA, PROC_REF(enter_area)) + RegisterSignal(parent, COMSIG_EXIT_AREA, PROC_REF(exit_area)) var/area/A = get_area(parent) if(A) diff --git a/code/datums/components/beetlejuice.dm b/code/datums/components/beetlejuice.dm index c8b4b53c26ba..1b7bc8b3afc9 100644 --- a/code/datums/components/beetlejuice.dm +++ b/code/datums/components/beetlejuice.dm @@ -23,7 +23,7 @@ keyword = M.real_name update_regex() - RegisterSignal(SSdcs, COMSIG_GLOB_LIVING_SAY_SPECIAL, .proc/say_react) + RegisterSignal(SSdcs, COMSIG_GLOB_LIVING_SAY_SPECIAL, PROC_REF(say_react)) /datum/component/beetlejuice/proc/update_regex() R = regex("[REGEX_QUOTE(keyword)]","g[case_sensitive ? "" : "i"]") diff --git a/code/datums/components/bloodysoles.dm b/code/datums/components/bloodysoles.dm index 5f16085b7927..03afc96182dc 100644 --- a/code/datums/components/bloodysoles.dm +++ b/code/datums/components/bloodysoles.dm @@ -26,9 +26,9 @@ return COMPONENT_INCOMPATIBLE parent_atom = parent - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) - RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/on_clean) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_clean)) //Unregisters from the wielder if necessary @@ -96,8 +96,8 @@ Used to register our wielder equipped_slot = slot wielder = equipper - RegisterSignal(wielder, COMSIG_MOVABLE_MOVED, .proc/on_moved) - RegisterSignal(wielder, COMSIG_STEP_ON_BLOOD, .proc/on_step_blood) + RegisterSignal(wielder, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + RegisterSignal(wielder, COMSIG_STEP_ON_BLOOD, PROC_REF(on_step_blood)) /* Called when the parent item has been dropped @@ -224,11 +224,11 @@ Like its parent but can be applied to carbon mobs instead of clothing items if(!bloody_feet) bloody_feet = mutable_appearance('icons/effects/blood.dmi', "shoeblood", SHOES_LAYER) - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/on_clean) - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_moved) - RegisterSignal(parent, COMSIG_STEP_ON_BLOOD, .proc/on_step_blood) - RegisterSignal(parent, COMSIG_CARBON_UNEQUIP_SHOECOVER, .proc/unequip_shoecover) - RegisterSignal(parent, COMSIG_CARBON_EQUIP_SHOECOVER, .proc/equip_shoecover) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(on_clean)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + RegisterSignal(parent, COMSIG_STEP_ON_BLOOD, PROC_REF(on_step_blood)) + RegisterSignal(parent, COMSIG_CARBON_UNEQUIP_SHOECOVER, PROC_REF(unequip_shoecover)) + RegisterSignal(parent, COMSIG_CARBON_EQUIP_SHOECOVER, PROC_REF(equip_shoecover)) /datum/component/bloodysoles/feet/update_icon() . = list() diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index 9195d425b342..6923760a7705 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -26,7 +26,7 @@ if(_can_be_blunt) can_be_blunt = _can_be_blunt if(isitem(parent)) - RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/onItemAttack) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(onItemAttack)) /datum/component/butchering/proc/onItemAttack(obj/item/source, mob/living/M, mob/living/user) SIGNAL_HANDLER @@ -35,7 +35,7 @@ return if(M.stat == DEAD && (M.butcher_results || M.guaranteed_butcher_results)) //can we butcher it? if(butchering_enabled && (can_be_blunt || source.get_sharpness())) - INVOKE_ASYNC(src, .proc/startButcher, source, M, user) + INVOKE_ASYNC(src, PROC_REF(startButcher), source, M, user) return COMPONENT_ITEM_NO_ATTACK if(ishuman(M) && source.force && source.get_sharpness()) @@ -45,7 +45,7 @@ user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", MSG_VISUAL, \ "Their neck has already been already cut, you can't make the bleeding any worse!") return COMPONENT_ITEM_NO_ATTACK - INVOKE_ASYNC(src, .proc/startNeckSlice, source, H, user) + INVOKE_ASYNC(src, PROC_REF(startNeckSlice), source, H, user) return COMPONENT_ITEM_NO_ATTACK /datum/component/butchering/proc/startButcher(obj/item/source, mob/living/M, mob/living/user) @@ -122,7 +122,7 @@ return var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddComponent(/datum/component/connect_loc_behalf, parent, loc_connections) diff --git a/code/datums/components/caltrop.dm b/code/datums/components/caltrop.dm index 2a2cc55d2a22..33706c7c6d68 100644 --- a/code/datums/components/caltrop.dm +++ b/code/datums/components/caltrop.dm @@ -8,7 +8,7 @@ ///given to connect_loc to listen for something moving over target var/static/list/crossed_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) /datum/component/caltrop/Initialize(_min_damage = 0, _max_damage = 0, _probability = 100, _flags = NONE) @@ -24,7 +24,7 @@ if(ismovable(parent)) AddComponent(/datum/component/connect_loc_behalf, parent, crossed_connections) else - RegisterSignal(get_turf(parent), COMSIG_ATOM_ENTERED, .proc/on_entered) + RegisterSignal(get_turf(parent), COMSIG_ATOM_ENTERED, PROC_REF(on_entered)) // Inherit the new values passed to the component /datum/component/caltrop/InheritComponent(datum/component/caltrop/new_comp, original, min_damage, max_damage, probability, flags, soundfile) @@ -111,3 +111,5 @@ /datum/component/caltrop/UnregisterFromParent() if(ismovable(parent)) qdel(GetComponent(/datum/component/connect_loc_behalf)) + else + UnregisterSignal(get_turf(parent), list(COMSIG_ATOM_ENTERED)) diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index 9188e89ae734..f18002a05bd3 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -4,7 +4,8 @@ var/fall_message = "GAH! Ah... where are you?" var/oblivion_message = "You stumble and stare into the abyss before you. It stares back, and you fall into the enveloping dark." - var/static/list/falling_atoms = list() // Atoms currently falling into chasms + /// List of refs to falling objects -> how many levels deep we've fallen + var/static/list/falling_atoms = list() var/static/list/forbidden_types = typecacheof(list( /obj/singularity, /obj/docking_port, @@ -20,19 +21,21 @@ /obj/effect/light_emitter/tendril, /obj/effect/collapse, /obj/effect/particle_effect/ion_trails, - /obj/effect/dummy/phased_mob + /obj/effect/dummy/phased_mob, + /obj/effect/mapping_helpers, + /obj/effect/wisp, )) /datum/component/chasm/Initialize(turf/target) - RegisterSignal(parent, COMSIG_ATOM_ENTERED, .proc/Entered) + RegisterSignal(parent, COMSIG_ATOM_ENTERED, PROC_REF(Entered)) target_turf = target START_PROCESSING(SSobj, src) // process on create, in case stuff is still there -/datum/component/chasm/proc/Entered(datum/source, atom/movable/AM, atom/old_loc, list/atom/old_locs) +/datum/component/chasm/proc/Entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) SIGNAL_HANDLER START_PROCESSING(SSobj, src) - drop_stuff(AM) + drop_stuff(arrived) /datum/component/chasm/process() if (!drop_stuff()) @@ -50,7 +53,6 @@ return LAZYLEN(found_safeties) /datum/component/chasm/proc/drop_stuff(AM) - . = 0 if (is_safe()) return FALSE @@ -58,57 +60,58 @@ var/to_check = AM ? list(AM) : parent.contents for (var/thing in to_check) if (droppable(thing)) - . = 1 - INVOKE_ASYNC(src, .proc/drop, thing) + . = TRUE + INVOKE_ASYNC(src, PROC_REF(drop), thing) /datum/component/chasm/proc/droppable(atom/movable/AM) + var/datum/weakref/falling_ref = WEAKREF(AM) // avoid an infinite loop, but allow falling a large distance - if(falling_atoms[AM] && falling_atoms[AM] > 30) + if(falling_atoms[falling_ref] && falling_atoms[falling_ref] > 30) return FALSE if(!isliving(AM) && !isobj(AM)) return FALSE - if(is_type_in_typecache(AM, forbidden_types) || AM.throwing || (AM.movement_type & FLOATING)) + if(is_type_in_typecache(AM, forbidden_types) || AM.throwing || (AM.movement_type & (FLOATING|FLYING))) return FALSE //Flies right over the chasm if(ismob(AM)) var/mob/M = AM - if(M.buckled) //middle statement to prevent infinite loops just in case! + if(M.buckled) //middle statement to prevent infinite loops just in case! var/mob/buckled_to = M.buckled if((!ismob(M.buckled) || (buckled_to.buckled != M)) && !droppable(M.buckled)) return FALSE - if(M.is_flying()) - return FALSE if(ishuman(AM)) var/mob/living/carbon/human/H = AM if(istype(H.belt, /obj/item/wormhole_jaunter)) var/obj/item/wormhole_jaunter/J = H.belt //To freak out any bystanders - H.visible_message("[H] falls into [parent]!") + H.visible_message(span_boldwarning("[H] falls into [parent]!")) J.chasm_react(H) return FALSE return TRUE /datum/component/chasm/proc/drop(atom/movable/AM) + var/datum/weakref/falling_ref = WEAKREF(AM) //Make sure the item is still there after our sleep - if(!AM || QDELETED(AM)) + if(!AM || !falling_ref?.resolve()) + falling_atoms -= falling_ref return - falling_atoms[AM] = (falling_atoms[AM] || 0) + 1 + falling_atoms[falling_ref] = (falling_atoms[falling_ref] || 0) + 1 var/turf/T = target_turf if(T) // send to the turf below - AM.visible_message("[AM] falls into [parent]!", "[fall_message]") - T.visible_message("[AM] falls from above!") + AM.visible_message(span_boldwarning("[AM] falls into [parent]!"), span_userdanger("[fall_message]")) + T.visible_message(span_boldwarning("[AM] falls from above!")) AM.forceMove(T) if(isliving(AM)) var/mob/living/L = AM L.Paralyze(100) L.adjustBruteLoss(30) - falling_atoms -= AM + falling_atoms -= falling_ref else // send to oblivion - AM.visible_message("[AM] falls into [parent]!", "[oblivion_message]") + AM.visible_message(span_boldwarning("[AM] falls into [parent]!"), span_userdanger("[oblivion_message]")) if (isliving(AM)) var/mob/living/L = AM L.notransform = TRUE @@ -132,12 +135,16 @@ if(iscyborg(AM)) var/mob/living/silicon/robot/S = AM qdel(S.mmi) + if(isliving(AM)) + var/mob/living/L = AM + if(L.stat != DEAD) + L.death(TRUE) - falling_atoms -= AM + falling_atoms -= falling_ref qdel(AM) - if(AM && !QDELETED(AM)) //It's indestructible + if(AM && !QDELETED(AM)) //It's indestructible var/atom/parent = src.parent - parent.visible_message("[parent] spits out [AM]!") + parent.visible_message(span_boldwarning("[parent] spits out [AM]!")) AM.alpha = oldalpha AM.color = oldcolor AM.transform = oldtransform diff --git a/code/datums/components/connect_containers.dm b/code/datums/components/connect_containers.dm new file mode 100644 index 000000000000..fe957e3b94a3 --- /dev/null +++ b/code/datums/components/connect_containers.dm @@ -0,0 +1,68 @@ +/// This component behaves similar to connect_loc_behalf, but it's nested and hooks a signal onto all MOVABLES containing this atom. +/datum/component/connect_containers + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + + /// An assoc list of signal -> procpath to register to the loc this object is on. + var/list/connections + /** + * The atom the component is tracking. The component will delete itself if the tracked is deleted. + * Signals will also be updated whenever it moves. + */ + var/atom/movable/tracked + +/datum/component/connect_containers/Initialize(atom/movable/tracked, list/connections) + . = ..() + if (!ismovable(tracked)) + return COMPONENT_INCOMPATIBLE + + src.connections = connections + set_tracked(tracked) + +/datum/component/connect_containers/Destroy() + set_tracked(null) + return ..() + +/datum/component/connect_containers/InheritComponent(datum/component/component, original, atom/movable/tracked, list/connections) + // Not equivalent. Checks if they are not the same list via shallow comparison. + if(!compare_list(src.connections, connections)) + stack_trace("connect_containers component attached to [parent] tried to inherit another connect_containers component with different connections") + return + if(src.tracked != tracked) + set_tracked(tracked) + +/datum/component/connect_containers/proc/set_tracked(atom/movable/new_tracked) + if(tracked) + UnregisterSignal(tracked, list(COMSIG_MOVABLE_MOVED, COMSIG_PARENT_QDELETING)) + unregister_signals(tracked.loc) + tracked = new_tracked + if(!tracked) + return + RegisterSignal(tracked, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + RegisterSignal(tracked, COMSIG_PARENT_QDELETING, PROC_REF(handle_tracked_qdel)) + update_signals(tracked) + +/datum/component/connect_containers/proc/handle_tracked_qdel() + SIGNAL_HANDLER + qdel(src) + +/datum/component/connect_containers/proc/update_signals(atom/movable/listener) + if(!ismovable(listener.loc)) + return + + for(var/atom/movable/container as anything in get_nested_locs(listener)) + RegisterSignal(container, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + for(var/signal in connections) + parent.RegisterSignal(container, signal, connections[signal]) + +/datum/component/connect_containers/proc/unregister_signals(atom/movable/location) + if(!ismovable(location)) + return + + for(var/atom/movable/target as anything in (get_nested_locs(location) + location)) + UnregisterSignal(target, COMSIG_MOVABLE_MOVED) + parent.UnregisterSignal(target, connections) + +/datum/component/connect_containers/proc/on_moved(atom/movable/listener, atom/old_loc) + SIGNAL_HANDLER + unregister_signals(old_loc) + update_signals(listener) diff --git a/code/datums/components/connect_loc_behalf.dm b/code/datums/components/connect_loc_behalf.dm index b758b6ad5f32..297227e2aedd 100644 --- a/code/datums/components/connect_loc_behalf.dm +++ b/code/datums/components/connect_loc_behalf.dm @@ -20,8 +20,8 @@ src.tracked = tracked /datum/component/connect_loc_behalf/RegisterWithParent() - RegisterSignal(tracked, COMSIG_MOVABLE_MOVED, .proc/on_moved) - RegisterSignal(tracked, COMSIG_PARENT_QDELETING, .proc/handle_tracked_qdel) + RegisterSignal(tracked, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + RegisterSignal(tracked, COMSIG_PARENT_QDELETING, PROC_REF(handle_tracked_qdel)) update_signals() /datum/component/connect_loc_behalf/UnregisterFromParent() diff --git a/code/datums/components/connect_range.dm b/code/datums/components/connect_range.dm new file mode 100644 index 000000000000..093841833d8c --- /dev/null +++ b/code/datums/components/connect_range.dm @@ -0,0 +1,107 @@ +/** + * This component behaves similar to connect_loc_behalf but for all turfs in range, hooking into a signal on each of them. + * Just like connect_loc_behalf, It can react to that signal on behalf of a seperate listener. + * Good for components, though it carries some overhead. Can't be an element as that may lead to bugs. + */ +/datum/component/connect_range + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + + /// An assoc list of signal -> procpath to register to the loc this object is on. + var/list/connections + /** + * The atom the component is tracking. The component will delete itself if the tracked is deleted. + * Signals will also be updated whenever it moves (if it's a movable). + */ + var/atom/tracked + + /// The component will hook into signals only on turfs not farther from tracked than this. + var/range + /// Whether the component works when the movable isn't directly located on a turf. + var/works_in_containers + +/datum/component/connect_range/Initialize(atom/tracked, list/connections, range, works_in_containers = TRUE) + if(!isatom(tracked) || isarea(tracked) || range < 0) + return COMPONENT_INCOMPATIBLE + src.connections = connections + src.range = range + set_tracked(tracked) + src.works_in_containers = works_in_containers + +/datum/component/connect_range/Destroy() + set_tracked(null) + return ..() + +/datum/component/connect_range/InheritComponent(datum/component/component, original, atom/tracked, list/connections, range, works_in_containers) + // Not equivalent. Checks if they are not the same list via shallow comparison. + if(!compare_list(src.connections, connections)) + stack_trace("connect_range component attached to [parent] tried to inherit another connect_range component with different connections") + return + if(src.tracked != tracked) + set_tracked(tracked) + if(src.range == range && src.works_in_containers == works_in_containers) + return + //Unregister the signals with the old settings. + unregister_signals(isturf(tracked) ? tracked : tracked.loc) + src.range = range + src.works_in_containers = works_in_containers + //Re-register the signals with the new settings. + update_signals(src.tracked) + +/datum/component/connect_range/proc/set_tracked(atom/new_tracked) + if(tracked) //Unregister the signals from the old tracked and its surroundings + unregister_signals(isturf(tracked) ? tracked : tracked.loc) + UnregisterSignal(tracked, list( + COMSIG_MOVABLE_MOVED, + COMSIG_PARENT_QDELETING, + )) + tracked = new_tracked + if(!tracked) + return + //Register signals on the new tracked atom and its surroundings. + RegisterSignal(tracked, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + RegisterSignal(tracked, COMSIG_PARENT_QDELETING, PROC_REF(handle_tracked_qdel)) + update_signals(tracked) + +/datum/component/connect_range/proc/handle_tracked_qdel() + SIGNAL_HANDLER + qdel(src) + +/datum/component/connect_range/proc/update_signals(atom/target, atom/old_loc, forced = FALSE) + var/turf/current_turf = get_turf(target) + var/on_same_turf = current_turf == get_turf(old_loc) //Only register/unregister turf signals if it's moved to a new turf. + unregister_signals(old_loc, on_same_turf) + + if(isnull(current_turf)) + return + + if(ismovable(target.loc)) + if(!works_in_containers) + return + //Keep track of possible movement of all movables the target is in. + for(var/atom/movable/container as anything in get_nested_locs(target)) + RegisterSignal(container, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + + if(on_same_turf && !forced) + return + for(var/turf/target_turf in RANGE_TURFS(range, current_turf)) + for(var/signal in connections) + parent.RegisterSignal(target_turf, signal, connections[signal]) + +/datum/component/connect_range/proc/unregister_signals(atom/location, on_same_turf = FALSE) + //The location is null or is a container and the component shouldn't have register signals on it + if(isnull(location) || (!works_in_containers && !isturf(location))) + return + + if(ismovable(location)) + for(var/atom/movable/target as anything in (get_nested_locs(location) + location)) + UnregisterSignal(target, COMSIG_MOVABLE_MOVED) + + if(on_same_turf) + return + var/turf/previous_turf = get_turf(location) + for(var/turf/target_turf in RANGE_TURFS(range, previous_turf)) + parent.UnregisterSignal(target_turf, connections) + +/datum/component/connect_range/proc/on_moved(atom/movable/movable, atom/old_loc) + SIGNAL_HANDLER + update_signals(movable, old_loc) diff --git a/code/datums/components/construction.dm b/code/datums/components/construction.dm index ad1392c116d5..640aea796518 100644 --- a/code/datums/components/construction.dm +++ b/code/datums/components/construction.dm @@ -15,8 +15,8 @@ if(!isatom(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine) - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,.proc/action) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine)) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(action)) update_parent(index) /datum/component/construction/proc/examine(datum/source, mob/user, list/examine_list) @@ -34,7 +34,7 @@ /datum/component/construction/proc/action(datum/source, obj/item/I, mob/living/user) SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/check_step, I, user) + INVOKE_ASYNC(src, PROC_REF(check_step), I, user) /datum/component/construction/proc/update_index(diff) index += diff diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index a804ec657526..df5ae1319c2e 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -1,6 +1,6 @@ /datum/component/personal_crafting/Initialize() if(ismob(parent)) - RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, .proc/create_mob_button) + RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, PROC_REF(create_mob_button)) /datum/component/personal_crafting/proc/create_mob_button(mob/user, client/CL) SIGNAL_HANDLER @@ -10,7 +10,7 @@ C.icon = H.ui_style H.static_inventory += C CL.screen += C - RegisterSignal(C, COMSIG_CLICK, .proc/component_ui_interact) + RegisterSignal(C, COMSIG_CLICK, PROC_REF(component_ui_interact)) /datum/component/personal_crafting var/busy @@ -318,7 +318,7 @@ SIGNAL_HANDLER if(user == parent) - INVOKE_ASYNC(src, .proc/ui_interact, user) + INVOKE_ASYNC(src, PROC_REF(ui_interact), user) /datum/component/personal_crafting/ui_state(mob/user) return GLOB.not_incapacitated_turf_state diff --git a/code/datums/components/crafting/recipes.dm b/code/datums/components/crafting/recipes.dm index 5daa79d0ff7e..96a013df406a 100644 --- a/code/datums/components/crafting/recipes.dm +++ b/code/datums/components/crafting/recipes.dm @@ -871,9 +871,9 @@ /datum/crafting_recipe/ipickaxe name = "Improvised Pickaxe" reqs = list( - /obj/item/crowbar = 1, - /obj/item/kitchen/knife = 1, - /obj/item/stack/tape = 1) + /obj/item/crowbar = 1, + /obj/item/kitchen/knife = 1, + /obj/item/stack/tape = 1) result = /obj/item/pickaxe/improvised category = CAT_MISC diff --git a/code/datums/components/creamed.dm b/code/datums/components/creamed.dm index fcd1f1b8cc74..019bb7362bd2 100644 --- a/code/datums/components/creamed.dm +++ b/code/datums/components/creamed.dm @@ -51,7 +51,7 @@ GLOBAL_LIST_INIT(creamable, typecacheof(list( RegisterSignal(parent, list( COMSIG_COMPONENT_CLEAN_ACT, COMSIG_COMPONENT_CLEAN_FACE_ACT), - .proc/clean_up) + PROC_REF(clean_up)) /datum/component/creamed/UnregisterFromParent() UnregisterSignal(parent, list( diff --git a/code/datums/components/deadchat_control.dm b/code/datums/components/deadchat_control.dm index e48651ea7d86..f34960db1072 100644 --- a/code/datums/components/deadchat_control.dm +++ b/code/datums/components/deadchat_control.dm @@ -14,13 +14,13 @@ /datum/component/deadchat_control/Initialize(_deadchat_mode, _inputs, _input_cooldown = 12 SECONDS) if(!isatom(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, COMSIG_ATOM_ORBIT_BEGIN, .proc/orbit_begin) - RegisterSignal(parent, COMSIG_ATOM_ORBIT_STOP, .proc/orbit_stop) + RegisterSignal(parent, COMSIG_ATOM_ORBIT_BEGIN, PROC_REF(orbit_begin)) + RegisterSignal(parent, COMSIG_ATOM_ORBIT_STOP, PROC_REF(orbit_stop)) deadchat_mode = _deadchat_mode inputs = _inputs input_cooldown = _input_cooldown if(deadchat_mode == DEMOCRACY_MODE) - timerid = addtimer(CALLBACK(src, .proc/democracy_loop), input_cooldown, TIMER_STOPPABLE | TIMER_LOOP) + timerid = addtimer(CALLBACK(src, PROC_REF(democracy_loop)), input_cooldown, TIMER_STOPPABLE | TIMER_LOOP) notify_ghosts("[parent] is now deadchat controllable!", source = parent, action = NOTIFY_ORBIT, header="Something Interesting!") @@ -42,7 +42,7 @@ return MOB_DEADSAY_SIGNAL_INTERCEPT inputs[message].Invoke() ckey_to_cooldown[source.ckey] = TRUE - addtimer(CALLBACK(src, .proc/remove_cooldown, source.ckey), input_cooldown) + addtimer(CALLBACK(src, PROC_REF(remove_cooldown), source.ckey), input_cooldown) else if(deadchat_mode == DEMOCRACY_MODE) ckey_to_cooldown[source.ckey] = message return MOB_DEADSAY_SIGNAL_INTERCEPT @@ -94,14 +94,14 @@ return ckey_to_cooldown = list() if(var_value == DEMOCRACY_MODE) - timerid = addtimer(CALLBACK(src, .proc/democracy_loop), input_cooldown, TIMER_STOPPABLE | TIMER_LOOP) + timerid = addtimer(CALLBACK(src, PROC_REF(democracy_loop)), input_cooldown, TIMER_STOPPABLE | TIMER_LOOP) else deltimer(timerid) /datum/component/deadchat_control/proc/orbit_begin(atom/source, atom/orbiter) SIGNAL_HANDLER - RegisterSignal(orbiter, COMSIG_MOB_DEADSAY, .proc/deadchat_react) + RegisterSignal(orbiter, COMSIG_MOB_DEADSAY, PROC_REF(deadchat_react)) orbiters |= orbiter /datum/component/deadchat_control/proc/orbit_stop(atom/source, atom/orbiter) diff --git a/code/datums/components/dejavu.dm b/code/datums/components/dejavu.dm index 19e41148d3bd..b2a2cddf9c9b 100644 --- a/code/datums/components/dejavu.dm +++ b/code/datums/components/dejavu.dm @@ -42,22 +42,22 @@ tox_loss = L.getToxLoss() oxy_loss = L.getOxyLoss() brain_loss = L.getOrganLoss(ORGAN_SLOT_BRAIN) - rewind_type = .proc/rewind_living + rewind_type = PROC_REF(rewind_living) if(iscarbon(parent)) var/mob/living/carbon/C = parent saved_bodyparts = C.save_bodyparts() - rewind_type = .proc/rewind_carbon + rewind_type = PROC_REF(rewind_carbon) else if(isanimal(parent)) var/mob/living/simple_animal/M = parent brute_loss = M.bruteloss - rewind_type = .proc/rewind_animal + rewind_type = PROC_REF(rewind_animal) else if(isobj(parent)) var/obj/O = parent integrity = O.obj_integrity - rewind_type = .proc/rewind_obj + rewind_type = PROC_REF(rewind_obj) addtimer(CALLBACK(src, rewind_type), rewind_interval) diff --git a/code/datums/components/deployable.dm b/code/datums/components/deployable.dm index efb19f9246af..0e38fa84e236 100644 --- a/code/datums/components/deployable.dm +++ b/code/datums/components/deployable.dm @@ -27,8 +27,8 @@ src.thing_to_be_deployed = thing_to_be_deployed src.delete_on_use = delete_on_use - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine) - RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/on_attack_hand) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(on_attack_hand)) var/obj/item/typecast = thing_to_be_deployed deployed_name = initial(typecast.name) @@ -40,7 +40,7 @@ /datum/component/deployable/proc/on_attack_hand(datum/source, mob/user, location, direction) SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/deploy, source, user, location, direction) + INVOKE_ASYNC(src, PROC_REF(deploy), source, user, location, direction) /datum/component/deployable/proc/deploy(obj/source, mob/user, location, direction) //If there's no user, location and direction are used var/obj/deployed_object //Used for spawning the deployed object diff --git a/code/datums/components/dooropendeathproc.dm b/code/datums/components/dooropendeathproc.dm index cda6a31f270d..0f90bf623aac 100644 --- a/code/datums/components/dooropendeathproc.dm +++ b/code/datums/components/dooropendeathproc.dm @@ -11,7 +11,7 @@ src.door_id = door_id /datum/component/poddoor_on_death/RegisterWithParent() - RegisterSignal(parent, COMSIG_MOB_DEATH, .proc/open_doors) + RegisterSignal(parent, COMSIG_MOB_DEATH, PROC_REF(open_doors)) /datum/component/poddoor_on_death/proc/open_doors() for(var/obj/machinery/door/poddoor/D in GLOB.machines) diff --git a/code/datums/components/earprotection.dm b/code/datums/components/earprotection.dm index 9256c4310a70..6439e49b831f 100644 --- a/code/datums/components/earprotection.dm +++ b/code/datums/components/earprotection.dm @@ -1,7 +1,7 @@ /datum/component/wearertargeting/earprotection signals = list(COMSIG_CARBON_SOUNDBANG) mobtype = /mob/living/carbon - proctype = .proc/reducebang + proctype = PROC_REF(reducebang) /datum/component/wearertargeting/earprotection/Initialize(_valid_slots) . = ..() diff --git a/code/datums/components/edible.dm b/code/datums/components/edible.dm index b9a89ad9de90..3a047d082868 100644 --- a/code/datums/components/edible.dm +++ b/code/datums/components/edible.dm @@ -38,12 +38,12 @@ Behavior that's still missing from this component that original food items had t if(!isatom(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine) - RegisterSignal(parent, COMSIG_ATOM_ATTACK_ANIMAL, .proc/UseByAnimal) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine)) + RegisterSignal(parent, COMSIG_ATOM_ATTACK_ANIMAL, PROC_REF(UseByAnimal)) if(isitem(parent)) - RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/UseFromHand) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(UseFromHand)) else if(isturf(parent)) - RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, .proc/TryToEatTurf) + RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(TryToEatTurf)) src.bite_consumption = bite_consumption src.food_flags = food_flags diff --git a/code/datums/components/edit_complainer.dm b/code/datums/components/edit_complainer.dm index da801bc9e0bb..aaac9aed2d4d 100644 --- a/code/datums/components/edit_complainer.dm +++ b/code/datums/components/edit_complainer.dm @@ -16,7 +16,7 @@ ) say_lines = text || default_lines - RegisterSignal(SSdcs, COMSIG_GLOB_VAR_EDIT, .proc/var_edit_react) + RegisterSignal(SSdcs, COMSIG_GLOB_VAR_EDIT, PROC_REF(var_edit_react)) /datum/component/edit_complainer/proc/var_edit_react(datum/source, list/arguments) SIGNAL_HANDLER diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm index dcb4aff50bdf..ee789d3f9829 100644 --- a/code/datums/components/embedded.dm +++ b/code/datums/components/embedded.dm @@ -99,12 +99,12 @@ /datum/component/embedded/RegisterWithParent() if(iscarbon(parent)) - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/jostleCheck) - RegisterSignal(parent, COMSIG_CARBON_EMBED_RIP, .proc/ripOutCarbon) - RegisterSignal(parent, COMSIG_CARBON_EMBED_REMOVAL, .proc/safeRemoveCarbon) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(jostleCheck)) + RegisterSignal(parent, COMSIG_CARBON_EMBED_RIP, PROC_REF(ripOutCarbon)) + RegisterSignal(parent, COMSIG_CARBON_EMBED_REMOVAL, PROC_REF(safeRemoveCarbon)) else if(isclosedturf(parent)) - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examineTurf) - RegisterSignal(parent, COMSIG_PARENT_QDELETING, .proc/itemMoved) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examineTurf)) + RegisterSignal(parent, COMSIG_PARENT_QDELETING, PROC_REF(itemMoved)) /datum/component/embedded/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_MOVABLE_MOVED, COMSIG_CARBON_EMBED_RIP, COMSIG_CARBON_EMBED_REMOVAL, COMSIG_PARENT_EXAMINE)) @@ -136,7 +136,7 @@ limb.embedded_objects |= weapon // on the inside... on the inside... weapon.forceMove(victim) - RegisterSignal(weapon, list(COMSIG_MOVABLE_MOVED, COMSIG_PARENT_QDELETING), .proc/byeItemCarbon) + RegisterSignal(weapon, list(COMSIG_MOVABLE_MOVED, COMSIG_PARENT_QDELETING), PROC_REF(byeItemCarbon)) if(harmful) victim.visible_message("[weapon] embeds itself in [victim]'s [limb.name]!",ignored_mobs=victim) @@ -192,7 +192,7 @@ var/mob/living/carbon/victim = parent var/time_taken = rip_time * weapon.w_class - INVOKE_ASYNC(src, .proc/complete_rip_out, victim, I, limb, time_taken) + INVOKE_ASYNC(src, PROC_REF(complete_rip_out), victim, I, limb, time_taken) /// everything async that ripOut used to do /datum/component/embedded/proc/complete_rip_out(mob/living/carbon/victim, obj/item/I, obj/item/bodypart/limb, time_taken) @@ -239,7 +239,7 @@ return if(to_hands) - INVOKE_ASYNC(victim, /mob.proc/put_in_hands, weapon) + INVOKE_ASYNC(victim, TYPE_PROC_REF(/mob, put_in_hands), weapon) else weapon.forceMove(get_turf(victim)) @@ -305,7 +305,7 @@ // we can't store the item IN the turf (cause turfs are just kinda... there), so we fake it by making the item invisible and bailing if it moves due to a blast weapon.forceMove(hit) weapon.invisibility = INVISIBILITY_ABSTRACT - RegisterSignal(weapon, COMSIG_MOVABLE_MOVED, .proc/itemMoved) + RegisterSignal(weapon, COMSIG_MOVABLE_MOVED, PROC_REF(itemMoved)) var/pixelX = rand(-2, 2) var/pixelY = rand(-1, 3) // bias this upwards since in-hands are usually on the lower end of the sprite @@ -328,7 +328,7 @@ var/matrix/M = matrix() M.Translate(pixelX, pixelY) overlay.transform = M - RegisterSignal(hit,COMSIG_ATOM_UPDATE_OVERLAYS,.proc/apply_overlay) + RegisterSignal(hit,COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(apply_overlay)) hit.update_appearance() if(harmful) diff --git a/code/datums/components/empprotection.dm b/code/datums/components/empprotection.dm index 513370f3d5fa..bb94b08e55a9 100644 --- a/code/datums/components/empprotection.dm +++ b/code/datums/components/empprotection.dm @@ -5,7 +5,7 @@ if(!istype(parent, /atom)) return COMPONENT_INCOMPATIBLE flags = _flags - RegisterSignal(parent, list(COMSIG_ATOM_EMP_ACT), .proc/getEmpFlags) + RegisterSignal(parent, list(COMSIG_ATOM_EMP_ACT), PROC_REF(getEmpFlags)) /datum/component/empprotection/proc/getEmpFlags(datum/source, severity) SIGNAL_HANDLER diff --git a/code/datums/components/explodable.dm b/code/datums/components/explodable.dm index 360ab1dca847..abf16ecd4be5 100644 --- a/code/datums/components/explodable.dm +++ b/code/datums/components/explodable.dm @@ -12,16 +12,16 @@ if(!isatom(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/explodable_attack) - RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, .proc/explodable_insert_item) - RegisterSignal(parent, COMSIG_ATOM_EX_ACT, .proc/detonate) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(explodable_attack)) + RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, PROC_REF(explodable_insert_item)) + RegisterSignal(parent, COMSIG_ATOM_EX_ACT, PROC_REF(detonate)) if(ismovable(parent)) - RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, .proc/explodable_impact) - RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/explodable_bump) + RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, PROC_REF(explodable_impact)) + RegisterSignal(parent, COMSIG_MOVABLE_BUMP, PROC_REF(explodable_bump)) if(isitem(parent)) - RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/explodable_attack) - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) - RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) + RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), PROC_REF(explodable_attack)) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) @@ -71,7 +71,7 @@ /datum/component/explodable/proc/on_equip(datum/source, mob/equipper, slot) SIGNAL_HANDLER - RegisterSignal(equipper, COMSIG_MOB_APPLY_DAMGE, .proc/explodable_attack_zone, TRUE) + RegisterSignal(equipper, COMSIG_MOB_APPLY_DAMGE, PROC_REF(explodable_attack_zone), TRUE) /datum/component/explodable/proc/on_drop(datum/source, mob/user) SIGNAL_HANDLER diff --git a/code/datums/components/fantasy/_fantasy.dm b/code/datums/components/fantasy/_fantasy.dm index a203264fae0a..92bd0868a746 100644 --- a/code/datums/components/fantasy/_fantasy.dm +++ b/code/datums/components/fantasy/_fantasy.dm @@ -116,8 +116,7 @@ for(var/i in affixes) var/datum/fantasy_affix/affix = i affix.remove(src) - for(var/i in appliedComponents) - qdel(i) + QDEL_LIST(appliedComponents) master.force = max(0, master.force - quality) master.throwforce = max(0, master.throwforce - quality) diff --git a/code/datums/components/fishing_spot.dm b/code/datums/components/fishing_spot.dm index 78b9d64cbd20..585c98c59171 100644 --- a/code/datums/components/fishing_spot.dm +++ b/code/datums/components/fishing_spot.dm @@ -17,8 +17,8 @@ stack_trace("Invalid fishing spot configuration \"[configuration]\" passed down to fishing spot component.") return COMPONENT_INCOMPATIBLE fish_source = preset_configuration - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/handle_attackby) - RegisterSignal(parent, COMSIG_FISHING_ROD_CAST, .proc/handle_cast) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(handle_attackby)) + RegisterSignal(parent, COMSIG_FISHING_ROD_CAST, PROC_REF(handle_cast)) /datum/component/fishing_spot/proc/handle_cast(datum/source, obj/item/fishing_rod/rod, mob/user) @@ -54,7 +54,7 @@ var/datum/fishing_challenge/challenge = new(parent, result, rod, user) challenge.background = fish_source.background challenge.difficulty = fish_source.calculate_difficulty(result, rod, user) - RegisterSignal(challenge, COMSIG_FISHING_CHALLENGE_COMPLETED, .proc/fishing_completed) + RegisterSignal(challenge, COMSIG_FISHING_CHALLENGE_COMPLETED, PROC_REF(fishing_completed)) challenge.start(user) /datum/component/fishing_spot/proc/fishing_completed(datum/fishing_challenge/source, mob/user, success, perfect) diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm index d433e03b6934..2e5533023ac8 100644 --- a/code/datums/components/footstep.dm +++ b/code/datums/components/footstep.dm @@ -1,3 +1,5 @@ +#define SHOULD_DISABLE_FOOTSTEPS(source) ((SSlag_switch.measures[DISABLE_FOOTSTEPS] && !(HAS_TRAIT(source, TRAIT_BYPASS_MEASURES))) || HAS_TRAIT(source, TRAIT_SILENT_FOOTSTEPS)) + ///Footstep component. Plays footsteps at parents location when it is appropriate. /datum/component/footstep ///How many steps the parent has taken since the last time a footstep was played. @@ -21,7 +23,7 @@ if(FOOTSTEP_MOB_HUMAN) if(!ishuman(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/play_humanstep) + RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), PROC_REF(play_humanstep)) return if(FOOTSTEP_MOB_CLAW) footstep_sounds = GLOB.clawfootstep @@ -33,7 +35,7 @@ footstep_sounds = GLOB.footstep if(FOOTSTEP_MOB_SLIME) footstep_sounds = 'sound/effects/footstep/slime1.ogg' - RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/play_simplestep) //Note that this doesn't get called for humans. + RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), PROC_REF(play_simplestep)) //Note that this doesn't get called for humans. ///Prepares a footstep. Determines if it should get played. Returns the turf it should get played on. Note that it is always a /turf/open /datum/component/footstep/proc/prepare_step() @@ -71,6 +73,9 @@ /datum/component/footstep/proc/play_simplestep() SIGNAL_HANDLER + if (SHOULD_DISABLE_FOOTSTEPS(parent)) + return + var/turf/open/T = prepare_step() if(!T) return @@ -94,8 +99,9 @@ /datum/component/footstep/proc/play_humanstep() SIGNAL_HANDLER - if(HAS_TRAIT(parent, TRAIT_SILENT_FOOTSTEPS)) + if (SHOULD_DISABLE_FOOTSTEPS(parent)) return + var/turf/open/T = prepare_step() if(!T) return @@ -115,3 +121,5 @@ GLOB.barefootstep[T.barefootstep][2] * volume, TRUE, GLOB.barefootstep[T.barefootstep][3] + e_range, falloff_distance = 1) + +#undef SHOULD_DISABLE_FOOTSTEPS diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm index cac8fb8eb42b..e92e6eec3ee1 100644 --- a/code/datums/components/forensics.dm +++ b/code/datums/components/forensics.dm @@ -25,7 +25,7 @@ /datum/component/forensics/RegisterWithParent() check_blood() - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_act)) /datum/component/forensics/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_COMPONENT_CLEAN_ACT)) diff --git a/code/datums/components/fullauto.dm b/code/datums/components/fullauto.dm index bc55b9b76fc9..cedb3fe1614b 100644 --- a/code/datums/components/fullauto.dm +++ b/code/datums/components/fullauto.dm @@ -18,7 +18,7 @@ if(!isgun(parent)) return COMPONENT_INCOMPATIBLE var/obj/item/gun = parent - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/wake_up) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(wake_up)) if(_autofire_shot_delay) autofire_shot_delay = _autofire_shot_delay if(autofire_stat == AUTOFIRE_STAT_IDLE && ismob(gun.loc)) @@ -61,13 +61,13 @@ if(!QDELETED(usercli)) clicker = usercli shooter = clicker.mob - RegisterSignal(clicker, COMSIG_CLIENT_MOUSEDOWN, .proc/on_mouse_down) + RegisterSignal(clicker, COMSIG_CLIENT_MOUSEDOWN, PROC_REF(on_mouse_down)) if(!QDELETED(shooter)) - RegisterSignal(shooter, COMSIG_MOB_LOGOUT, .proc/autofire_off) + RegisterSignal(shooter, COMSIG_MOB_LOGOUT, PROC_REF(autofire_off)) UnregisterSignal(shooter, COMSIG_MOB_LOGIN) - RegisterSignal(parent, list(COMSIG_PARENT_QDELETING, COMSIG_ITEM_DROPPED), .proc/autofire_off) - parent.RegisterSignal(src, COMSIG_AUTOFIRE_ONMOUSEDOWN, /obj/item/gun/.proc/autofire_bypass_check) - parent.RegisterSignal(parent, COMSIG_AUTOFIRE_SHOT, /obj/item/gun/.proc/do_autofire) + RegisterSignal(parent, list(COMSIG_PARENT_QDELETING, COMSIG_ITEM_DROPPED), PROC_REF(autofire_off)) + parent.RegisterSignal(src, COMSIG_AUTOFIRE_ONMOUSEDOWN, TYPE_PROC_REF(/obj/item/gun, autofire_bypass_check)) + parent.RegisterSignal(parent, COMSIG_AUTOFIRE_SHOT, TYPE_PROC_REF(/obj/item/gun, do_autofire)) /datum/component/automatic_fire/proc/autofire_off(datum/source) SIGNAL_HANDLER @@ -83,7 +83,7 @@ mouse_status = AUTOFIRE_MOUSEUP //In regards to the component there's no click anymore to care about. clicker = null if(!QDELETED(shooter)) - RegisterSignal(shooter, COMSIG_MOB_LOGIN, .proc/on_client_login) + RegisterSignal(shooter, COMSIG_MOB_LOGIN, PROC_REF(on_client_login)) UnregisterSignal(shooter, COMSIG_MOB_LOGOUT) UnregisterSignal(parent, list(COMSIG_PARENT_QDELETING, COMSIG_ITEM_DROPPED)) shooter = null @@ -136,7 +136,7 @@ target = _target target_loc = get_turf(target) mouse_parameters = params - INVOKE_ASYNC(src, .proc/start_autofiring) + INVOKE_ASYNC(src, PROC_REF(start_autofiring)) //Dakka-dakka @@ -149,10 +149,10 @@ clicker.mouse_pointer_icon = clicker.mouse_override_icon if(mouse_status == AUTOFIRE_MOUSEUP) //See mouse_status definition for the reason for this. - RegisterSignal(clicker, COMSIG_CLIENT_MOUSEUP, .proc/on_mouse_up) + RegisterSignal(clicker, COMSIG_CLIENT_MOUSEUP, PROC_REF(on_mouse_up)) mouse_status = AUTOFIRE_MOUSEDOWN - RegisterSignal(shooter, COMSIG_MOB_SWAP_HANDS, .proc/stop_autofiring) + RegisterSignal(shooter, COMSIG_MOB_SWAP_HANDS, PROC_REF(stop_autofiring)) if(isgun(parent)) var/obj/item/gun/shoota = parent @@ -166,7 +166,7 @@ return //If it fails, such as when the gun is empty, then there's no need to schedule a second shot. START_PROCESSING(SSprojectiles, src) - RegisterSignal(clicker, COMSIG_CLIENT_MOUSEDRAG, .proc/on_mouse_drag) + RegisterSignal(clicker, COMSIG_CLIENT_MOUSEDRAG, PROC_REF(on_mouse_drag)) /datum/component/automatic_fire/proc/on_mouse_up(datum/source, atom/object, turf/location, control, params) @@ -243,9 +243,8 @@ if(!can_shoot()) shoot_with_empty_chamber(shooter) return FALSE - var/obj/item/bodypart/other_hand = shooter.has_hand_for_held_index(shooter.get_inactive_hand_index()) - if(weapon_weight == WEAPON_HEAVY && (shooter.get_inactive_held_item() || !other_hand)) - to_chat(shooter, "You need two hands to fire [src]!") + if(weapon_weight == WEAPON_HEAVY && (!wielded)) + to_chat(shooter, "You need a more secure grip to fire [src]!") return FALSE return TRUE @@ -260,10 +259,13 @@ SIGNAL_HANDLER if(semicd || shooter.incapacitated()) return NONE + if(weapon_weight == WEAPON_HEAVY && (!wielded)) + to_chat(shooter, "You need a more secure grip to fire [src]!") + return NONE if(!can_shoot()) shoot_with_empty_chamber(shooter) return NONE - INVOKE_ASYNC(src, .proc/do_autofire_shot, source, target, shooter, params) + INVOKE_ASYNC(src, PROC_REF(do_autofire_shot), source, target, shooter, params) return COMPONENT_AUTOFIRE_SHOT_SUCCESS //All is well, we can continue shooting. @@ -273,7 +275,7 @@ if(istype(akimbo_gun) && weapon_weight < WEAPON_MEDIUM) if(akimbo_gun.weapon_weight < WEAPON_MEDIUM && akimbo_gun.can_trigger_gun(shooter)) bonus_spread = dual_wield_spread - addtimer(CALLBACK(akimbo_gun, /obj/item/gun.proc/process_fire, target, shooter, TRUE, params, null, bonus_spread), 1) + addtimer(CALLBACK(akimbo_gun, TYPE_PROC_REF(/obj/item/gun, process_fire), target, shooter, TRUE, params, null, bonus_spread), 1) process_fire(target, shooter, TRUE, params, null, bonus_spread) #undef AUTOFIRE_MOUSEUP diff --git a/code/datums/components/gps.dm b/code/datums/components/gps.dm index 97d1962fe1bc..5fc6eb9d88ed 100644 --- a/code/datums/components/gps.dm +++ b/code/datums/components/gps.dm @@ -28,18 +28,18 @@ GLOBAL_LIST_EMPTY(GPS_list) var/atom/A = parent A.add_overlay("working") A.name = "[initial(A.name)] ([gpstag])" - RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/interact) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(interact)) if(!emp_proof) - RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/on_emp_act) - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_examine) - RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/on_AltClick) + RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp_act)) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(parent, COMSIG_CLICK_ALT, PROC_REF(on_AltClick)) ///Called on COMSIG_ITEM_ATTACK_SELF /datum/component/gps/item/proc/interact(datum/source, mob/user) SIGNAL_HANDLER if(user) - INVOKE_ASYNC(src, .proc/ui_interact, user) + INVOKE_ASYNC(src, PROC_REF(ui_interact), user) ///Called on COMSIG_PARENT_EXAMINE /datum/component/gps/item/proc/on_examine(datum/source, mob/user, list/examine_list) @@ -55,7 +55,7 @@ GLOBAL_LIST_EMPTY(GPS_list) var/atom/A = parent A.cut_overlay("working") A.add_overlay("emp") - addtimer(CALLBACK(src, .proc/reboot), 300, TIMER_UNIQUE|TIMER_OVERRIDE) //if a new EMP happens, remove the old timer so it doesn't reactivate early + addtimer(CALLBACK(src, PROC_REF(reboot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE) //if a new EMP happens, remove the old timer so it doesn't reactivate early SStgui.close_uis(src) //Close the UI control if it is open. ///Restarts the GPS after getting turned off by an EMP. diff --git a/code/datums/components/gunpoint.dm b/code/datums/components/gunpoint.dm index 19dc09464134..2865865c98ab 100644 --- a/code/datums/components/gunpoint.dm +++ b/code/datums/components/gunpoint.dm @@ -25,9 +25,9 @@ var/mob/living/shooter = parent target = targ weapon = wep - RegisterSignal(targ, list(COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_ITEM_ATTACK, COMSIG_MOVABLE_MOVED, COMSIG_MOB_FIRED_GUN), .proc/trigger_reaction) + RegisterSignal(targ, list(COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_ITEM_ATTACK, COMSIG_MOVABLE_MOVED, COMSIG_MOB_FIRED_GUN), PROC_REF(trigger_reaction)) - RegisterSignal(weapon, list(COMSIG_ITEM_DROPPED, COMSIG_ITEM_EQUIPPED), .proc/cancel) + RegisterSignal(weapon, list(COMSIG_ITEM_DROPPED, COMSIG_ITEM_EQUIPPED), PROC_REF(cancel)) shooter.visible_message("[shooter] aims [weapon] point blank at [target]!", \ "You aim [weapon] point blank at [target]!", target) @@ -44,7 +44,7 @@ target.playsound_local(target.loc, 'sound/machines/chime.ogg', 50, TRUE) SEND_SIGNAL(target, COMSIG_ADD_MOOD_EVENT, "gunpoint", /datum/mood_event/gunpoint) - addtimer(CALLBACK(src, .proc/update_stage, 2), GUNPOINT_DELAY_STAGE_2) + addtimer(CALLBACK(src, PROC_REF(update_stage), 2), GUNPOINT_DELAY_STAGE_2) /datum/component/gunpoint/Destroy(force, silent) var/mob/living/shooter = parent @@ -53,10 +53,10 @@ return ..() /datum/component/gunpoint/RegisterWithParent() - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/check_deescalate) - RegisterSignal(parent, COMSIG_MOB_APPLY_DAMGE, .proc/flinch) - RegisterSignal(parent, COMSIG_MOB_ATTACK_HAND, .proc/check_shove) - RegisterSignal(parent, list(COMSIG_LIVING_START_PULL, COMSIG_MOVABLE_BUMP), .proc/check_bump) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(check_deescalate)) + RegisterSignal(parent, COMSIG_MOB_APPLY_DAMGE, PROC_REF(flinch)) + RegisterSignal(parent, COMSIG_MOB_ATTACK_HAND, PROC_REF(check_shove)) + RegisterSignal(parent, list(COMSIG_LIVING_START_PULL, COMSIG_MOVABLE_BUMP), PROC_REF(check_bump)) /datum/component/gunpoint/UnregisterFromParent() UnregisterSignal(parent, COMSIG_MOVABLE_MOVED) @@ -91,7 +91,7 @@ to_chat(parent, "You steady [weapon] on [target].") to_chat(target, "[parent] has steadied [weapon] on you!") damage_mult = GUNPOINT_MULT_STAGE_2 - addtimer(CALLBACK(src, .proc/update_stage, 3), GUNPOINT_DELAY_STAGE_3) + addtimer(CALLBACK(src, PROC_REF(update_stage), 3), GUNPOINT_DELAY_STAGE_3) else if(stage == 3) to_chat(parent, "You have fully steadied [weapon] on [target].") to_chat(target, "[parent] has fully steadied [weapon] on you!") @@ -105,7 +105,7 @@ /datum/component/gunpoint/proc/trigger_reaction() SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/async_trigger_reaction) + INVOKE_ASYNC(src, PROC_REF(async_trigger_reaction)) /datum/component/gunpoint/proc/async_trigger_reaction() diff --git a/code/datums/components/heirloom.dm b/code/datums/components/heirloom.dm index d1a9bc753ef9..fc9983934ca6 100644 --- a/code/datums/components/heirloom.dm +++ b/code/datums/components/heirloom.dm @@ -9,7 +9,7 @@ owner = new_owner family_name = new_family_name - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine)) /datum/component/heirloom/proc/examine(datum/source, mob/user, list/examine_list) SIGNAL_HANDLER diff --git a/code/datums/components/honkspam.dm b/code/datums/components/honkspam.dm index 73b5e3335aad..ee457b4d967e 100644 --- a/code/datums/components/honkspam.dm +++ b/code/datums/components/honkspam.dm @@ -9,7 +9,7 @@ /datum/component/honkspam/Initialize() if(!isitem(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/interact) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(interact)) /datum/component/honkspam/proc/reset_spamflag() spam_flag = FALSE @@ -19,4 +19,4 @@ spam_flag = TRUE var/obj/item/parent_item = parent playsound(parent_item.loc, 'sound/items/bikehorn.ogg', 50, TRUE) - addtimer(CALLBACK(src, .proc/reset_spamflag), 2 SECONDS) + addtimer(CALLBACK(src, PROC_REF(reset_spamflag)), 2 SECONDS) diff --git a/code/datums/components/hot_ice.dm b/code/datums/components/hot_ice.dm index 018dfe800d1d..6192dc3256f8 100644 --- a/code/datums/components/hot_ice.dm +++ b/code/datums/components/hot_ice.dm @@ -9,8 +9,8 @@ src.gas_amount = gas_amount src.temp_amount = temp_amount - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attackby_react) - RegisterSignal(parent, COMSIG_ATOM_FIRE_ACT, .proc/flame_react) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(attackby_react)) + RegisterSignal(parent, COMSIG_ATOM_FIRE_ACT, PROC_REF(flame_react)) /datum/component/hot_ice/UnregisterFromParent() UnregisterSignal(parent, COMSIG_PARENT_ATTACKBY) diff --git a/code/datums/components/igniter.dm b/code/datums/components/igniter.dm index 152a325e92ee..270ff8b09857 100644 --- a/code/datums/components/igniter.dm +++ b/code/datums/components/igniter.dm @@ -9,11 +9,11 @@ /datum/component/igniter/RegisterWithParent() if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc - RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) + RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, PROC_REF(projectile_hit)) else if(isitem(parent)) - RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack) + RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(item_afterattack)) else if(ishostile(parent)) - RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) + RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, PROC_REF(hostile_attackingtarget)) /datum/component/igniter/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm index 3e2c8aab80c6..ceea1b3087a5 100644 --- a/code/datums/components/infective.dm +++ b/code/datums/components/infective.dm @@ -17,22 +17,22 @@ return COMPONENT_INCOMPATIBLE var/static/list/disease_connections = list( - COMSIG_ATOM_ENTERED = .proc/try_infect_crossed, + COMSIG_ATOM_ENTERED = PROC_REF(try_infect_crossed), ) AddComponent(/datum/component/connect_loc_behalf, parent, disease_connections) - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean) - RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, .proc/try_infect_buckle) - RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/try_infect_collide) - RegisterSignal(parent, COMSIG_MOVABLE_IMPACT_ZONE, .proc/try_infect_impact_zone) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean)) + RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, PROC_REF(try_infect_buckle)) + RegisterSignal(parent, COMSIG_MOVABLE_BUMP, PROC_REF(try_infect_collide)) + RegisterSignal(parent, COMSIG_MOVABLE_IMPACT_ZONE, PROC_REF(try_infect_impact_zone)) if(isitem(parent)) - RegisterSignal(parent, COMSIG_ITEM_ATTACK_ZONE, .proc/try_infect_attack_zone) - RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/try_infect_attack) - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/try_infect_equipped) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_ZONE, PROC_REF(try_infect_attack_zone)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(try_infect_attack)) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(try_infect_equipped)) if(istype(parent, /obj/item/reagent_containers/food/snacks)) - RegisterSignal(parent, COMSIG_FOOD_EATEN, .proc/try_infect_eat) + RegisterSignal(parent, COMSIG_FOOD_EATEN, PROC_REF(try_infect_eat)) else if(istype(parent, /obj/effect/decal/cleanable/blood/gibs)) - RegisterSignal(parent, COMSIG_GIBS_STREAK, .proc/try_infect_streak) + RegisterSignal(parent, COMSIG_GIBS_STREAK, PROC_REF(try_infect_streak)) /datum/component/infective/proc/try_infect_eat(datum/source, mob/living/eater, mob/living/feeder) SIGNAL_HANDLER diff --git a/code/datums/components/jousting.dm b/code/datums/components/jousting.dm index fcecf89f1d0c..034c37efd826 100644 --- a/code/datums/components/jousting.dm +++ b/code/datums/components/jousting.dm @@ -18,14 +18,14 @@ /datum/component/jousting/Initialize() if(!isitem(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) - RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) - RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/on_attack) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(on_attack)) /datum/component/jousting/proc/on_equip(datum/source, mob/user, slot) SIGNAL_HANDLER - RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/mob_move, TRUE) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(mob_move), TRUE) current_holder = user /datum/component/jousting/proc/on_drop(datum/source, mob/user) @@ -76,7 +76,7 @@ current_tile_charge++ if(current_timerid) deltimer(current_timerid) - current_timerid = addtimer(CALLBACK(src, .proc/reset_charge), movement_reset_tolerance, TIMER_STOPPABLE) + current_timerid = addtimer(CALLBACK(src, PROC_REF(reset_charge)), movement_reset_tolerance, TIMER_STOPPABLE) /datum/component/jousting/proc/reset_charge() current_tile_charge = 0 diff --git a/code/datums/components/knockback.dm b/code/datums/components/knockback.dm index 1c572573ff7c..d07b2a8028dc 100644 --- a/code/datums/components/knockback.dm +++ b/code/datums/components/knockback.dm @@ -11,11 +11,11 @@ /datum/component/knockback/RegisterWithParent() if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc - RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) + RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, PROC_REF(projectile_hit)) else if(isitem(parent)) - RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack) + RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(item_afterattack)) else if(ishostile(parent)) - RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) + RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, PROC_REF(hostile_attackingtarget)) /datum/component/knockback/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) diff --git a/code/datums/components/knockoff.dm b/code/datums/components/knockoff.dm index 770f72cfea5b..f7809baf3d1e 100644 --- a/code/datums/components/knockoff.dm +++ b/code/datums/components/knockoff.dm @@ -7,8 +7,8 @@ /datum/component/knockoff/Initialize(knockoff_chance,zone_override,slots_knockoffable) if(!isitem(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,.proc/OnEquipped) - RegisterSignal(parent, COMSIG_ITEM_DROPPED,.proc/OnDropped) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(OnEquipped)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(OnDropped)) src.knockoff_chance = knockoff_chance @@ -42,7 +42,7 @@ if(slots_knockoffable && !(slot in slots_knockoffable)) UnregisterSignal(H, COMSIG_HUMAN_DISARM_HIT) return - RegisterSignal(H, COMSIG_HUMAN_DISARM_HIT, .proc/Knockoff, TRUE) + RegisterSignal(H, COMSIG_HUMAN_DISARM_HIT, PROC_REF(Knockoff), TRUE) /datum/component/knockoff/proc/OnDropped(datum/source, mob/living/M) SIGNAL_HANDLER diff --git a/code/datums/components/label.dm b/code/datums/components/label.dm index f93e2d931470..4f3128ca6cd6 100644 --- a/code/datums/components/label.dm +++ b/code/datums/components/label.dm @@ -22,8 +22,8 @@ apply_label() /datum/component/label/RegisterWithParent() - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackby) - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/Examine) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(OnAttackby)) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(Examine)) /datum/component/label/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_PARENT_ATTACKBY, COMSIG_PARENT_EXAMINE)) diff --git a/code/datums/components/largeobjecttransparency.dm b/code/datums/components/largeobjecttransparency.dm index 55819d4eef9a..cccb05b39ad9 100644 --- a/code/datums/components/largeobjecttransparency.dm +++ b/code/datums/components/largeobjecttransparency.dm @@ -36,7 +36,7 @@ return ..() /datum/component/largetransparency/RegisterWithParent() - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_move) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) register_with_turfs() /datum/component/largetransparency/UnregisterFromParent() @@ -54,9 +54,9 @@ for(var/regist_tu in registered_turfs) if(!regist_tu) continue - RegisterSignal(regist_tu, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_CREATED), .proc/object_enter) - RegisterSignal(regist_tu, COMSIG_ATOM_EXITED, .proc/object_leave) - RegisterSignal(regist_tu, COMSIG_TURF_CHANGE, .proc/on_turf_change) + RegisterSignal(regist_tu, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_CREATED), PROC_REF(object_enter)) + RegisterSignal(regist_tu, COMSIG_ATOM_EXITED, PROC_REF(object_leave)) + RegisterSignal(regist_tu, COMSIG_TURF_CHANGE, PROC_REF(on_turf_change)) for(var/thing in regist_tu) var/atom/check_atom = thing if(!(check_atom.flags_1 & SHOW_BEHIND_LARGE_ICONS_1)) @@ -80,7 +80,7 @@ /datum/component/largetransparency/proc/on_turf_change() SIGNAL_HANDLER - addtimer(CALLBACK(src, .proc/on_move), 1, TIMER_UNIQUE|TIMER_OVERRIDE) //*pain + addtimer(CALLBACK(src, PROC_REF(on_move)), 1, TIMER_UNIQUE|TIMER_OVERRIDE) //*pain /datum/component/largetransparency/proc/object_enter(datum/source, atom/enterer) SIGNAL_HANDLER diff --git a/code/datums/components/lifesteal.dm b/code/datums/components/lifesteal.dm index 6bbb1f4b7fbe..ed847477e076 100644 --- a/code/datums/components/lifesteal.dm +++ b/code/datums/components/lifesteal.dm @@ -10,11 +10,11 @@ /datum/component/lifesteal/RegisterWithParent() if(isgun(parent)) - RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) + RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, PROC_REF(projectile_hit)) else if(isitem(parent)) - RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack) + RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(item_afterattack)) else if(ishostile(parent)) - RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) + RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, PROC_REF(hostile_attackingtarget)) /datum/component/lifesteal/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) diff --git a/code/datums/components/lockon_aiming.dm b/code/datums/components/lockon_aiming.dm index af15ffe992a8..c9a5345db12c 100644 --- a/code/datums/components/lockon_aiming.dm +++ b/code/datums/components/lockon_aiming.dm @@ -26,7 +26,7 @@ if(target_callback) can_target_callback = target_callback else - can_target_callback = CALLBACK(src, .proc/can_target) + can_target_callback = CALLBACK(src, PROC_REF(can_target)) if(range) lock_cursor_range = range if(typecache) diff --git a/code/datums/components/manual_blinking.dm b/code/datums/components/manual_blinking.dm index aa986672189b..d97e88ca8fe9 100644 --- a/code/datums/components/manual_blinking.dm +++ b/code/datums/components/manual_blinking.dm @@ -29,11 +29,11 @@ return ..() /datum/component/manual_blinking/RegisterWithParent() - RegisterSignal(parent, COMSIG_MOB_EMOTE, .proc/check_emote) - RegisterSignal(parent, COMSIG_CARBON_GAIN_ORGAN, .proc/check_added_organ) - RegisterSignal(parent, COMSIG_CARBON_LOSE_ORGAN, .proc/check_removed_organ) - RegisterSignal(parent, COMSIG_LIVING_REVIVE, .proc/restart) - RegisterSignal(parent, COMSIG_MOB_DEATH, .proc/pause) + RegisterSignal(parent, COMSIG_MOB_EMOTE, PROC_REF(check_emote)) + RegisterSignal(parent, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(check_added_organ)) + RegisterSignal(parent, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(check_removed_organ)) + RegisterSignal(parent, COMSIG_LIVING_REVIVE, PROC_REF(restart)) + RegisterSignal(parent, COMSIG_MOB_DEATH, PROC_REF(pause)) /datum/component/manual_blinking/UnregisterFromParent() UnregisterSignal(parent, COMSIG_MOB_EMOTE) diff --git a/code/datums/components/manual_breathing.dm b/code/datums/components/manual_breathing.dm index 9fba5b46b83a..bcae15536ca7 100644 --- a/code/datums/components/manual_breathing.dm +++ b/code/datums/components/manual_breathing.dm @@ -29,11 +29,11 @@ return ..() /datum/component/manual_breathing/RegisterWithParent() - RegisterSignal(parent, COMSIG_MOB_EMOTE, .proc/check_emote) - RegisterSignal(parent, COMSIG_CARBON_GAIN_ORGAN, .proc/check_added_organ) - RegisterSignal(parent, COMSIG_CARBON_LOSE_ORGAN, .proc/check_removed_organ) - RegisterSignal(parent, COMSIG_LIVING_REVIVE, .proc/restart) - RegisterSignal(parent, COMSIG_MOB_DEATH, .proc/pause) + RegisterSignal(parent, COMSIG_MOB_EMOTE, PROC_REF(check_emote)) + RegisterSignal(parent, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(check_added_organ)) + RegisterSignal(parent, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(check_removed_organ)) + RegisterSignal(parent, COMSIG_LIVING_REVIVE, PROC_REF(restart)) + RegisterSignal(parent, COMSIG_MOB_DEATH, PROC_REF(pause)) /datum/component/manual_breathing/UnregisterFromParent() UnregisterSignal(parent, COMSIG_MOB_EMOTE) diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index 5b43b0f78a33..a1cc816fc5f0 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -38,8 +38,8 @@ precondition = _precondition after_insert = _after_insert - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/OnExamine) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(OnAttackBy)) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(OnExamine)) for(var/mat in mat_list) //Make the assoc list ref | amount var/datum/material/M = SSmaterials.GetMaterialRef(mat) diff --git a/code/datums/components/mirv.dm b/code/datums/components/mirv.dm index 198a9336f246..260c12f49da9 100644 --- a/code/datums/components/mirv.dm +++ b/code/datums/components/mirv.dm @@ -16,7 +16,7 @@ /datum/component/mirv/RegisterWithParent() if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc - RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) + RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, PROC_REF(projectile_hit)) /datum/component/mirv/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_PROJECTILE_ON_HIT)) @@ -24,7 +24,7 @@ /datum/component/mirv/proc/projectile_hit(atom/fired_from, atom/movable/firer, atom/target, Angle) SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/do_shrapnel, firer, target) + INVOKE_ASYNC(src, PROC_REF(do_shrapnel), firer, target) /datum/component/mirv/proc/do_shrapnel(mob/firer, atom/target) if(radius < 1) @@ -39,5 +39,5 @@ P.range = override_projectile_range P.preparePixelProjectile(shootat_turf, target) P.firer = firer // don't hit ourself that would be really annoying - P.impacted = list(target = TRUE) // don't hit the target we hit already with the flak + LAZYSET(P.impacted, target, TRUE) // don't hit the target we hit already with the flak P.fire() diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index d3a4ec9c30b2..4c8b2a72cfa6 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -18,13 +18,13 @@ START_PROCESSING(SSmood, src) - RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT, .proc/add_event) - RegisterSignal(parent, COMSIG_CLEAR_MOOD_EVENT, .proc/clear_event) - RegisterSignal(parent, COMSIG_ENTER_AREA, .proc/check_area_mood) - RegisterSignal(parent, COMSIG_LIVING_REVIVE, .proc/on_revive) + RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT, PROC_REF(add_event)) + RegisterSignal(parent, COMSIG_CLEAR_MOOD_EVENT, PROC_REF(clear_event)) + RegisterSignal(parent, COMSIG_ENTER_AREA, PROC_REF(check_area_mood)) + RegisterSignal(parent, COMSIG_LIVING_REVIVE, PROC_REF(on_revive)) - RegisterSignal(parent, COMSIG_MOB_HUD_CREATED, .proc/modify_hud) - RegisterSignal(parent, COMSIG_JOB_RECEIVED, .proc/register_job_signals) + RegisterSignal(parent, COMSIG_MOB_HUD_CREATED, PROC_REF(modify_hud)) + RegisterSignal(parent, COMSIG_JOB_RECEIVED, PROC_REF(register_job_signals)) var/mob/living/owner = parent if(owner.hud_used) @@ -41,7 +41,7 @@ SIGNAL_HANDLER if(job in list("Research Director", "Scientist", "Roboticist")) - RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT_RND, .proc/add_event) //Mood events that are only for RnD members + RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT_RND, PROC_REF(add_event)) //Mood events that are only for RnD members /datum/component/mood/proc/print_mood(mob/user) var/msg = "[span_info("My current mental status:")]\n" @@ -250,7 +250,7 @@ clear_event(null, category) else if(the_event.timeout) - addtimer(CALLBACK(src, .proc/clear_event, null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE) + addtimer(CALLBACK(src, PROC_REF(clear_event), null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE) return 0 //Don't have to update the event. var/list/params = args.Copy(4) params.Insert(1, parent) @@ -261,7 +261,7 @@ update_mood() if(the_event.timeout) - addtimer(CALLBACK(src, .proc/clear_event, null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE) + addtimer(CALLBACK(src, PROC_REF(clear_event), null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE) /datum/component/mood/proc/clear_event(datum/source, category) SIGNAL_HANDLER @@ -294,8 +294,8 @@ screen_obj = new screen_obj.color = "#4b96c4" hud.infodisplay += screen_obj - RegisterSignal(hud, COMSIG_PARENT_QDELETING, .proc/unmodify_hud) - RegisterSignal(screen_obj, COMSIG_CLICK, .proc/hud_click) + RegisterSignal(hud, COMSIG_PARENT_QDELETING, PROC_REF(unmodify_hud)) + RegisterSignal(screen_obj, COMSIG_CLICK, PROC_REF(hud_click)) /datum/component/mood/proc/unmodify_hud(datum/source) SIGNAL_HANDLER diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm index e8f9befd9fee..93fc561bb677 100644 --- a/code/datums/components/nanites.dm +++ b/code/datums/components/nanites.dm @@ -42,31 +42,31 @@ cloud_sync() /datum/component/nanites/RegisterWithParent() - RegisterSignal(parent, COMSIG_HAS_NANITES, .proc/confirm_nanites) - RegisterSignal(parent, COMSIG_NANITE_IS_STEALTHY, .proc/check_stealth) - RegisterSignal(parent, COMSIG_NANITE_DELETE, .proc/delete_nanites) - RegisterSignal(parent, COMSIG_NANITE_UI_DATA, .proc/nanite_ui_data) - RegisterSignal(parent, COMSIG_NANITE_GET_PROGRAMS, .proc/get_programs) - RegisterSignal(parent, COMSIG_NANITE_SET_VOLUME, .proc/set_volume) - RegisterSignal(parent, COMSIG_NANITE_ADJUST_VOLUME, .proc/adjust_nanites) - RegisterSignal(parent, COMSIG_NANITE_SET_MAX_VOLUME, .proc/set_max_volume) - RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD, .proc/set_cloud) - RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD_SYNC, .proc/set_cloud_sync) - RegisterSignal(parent, COMSIG_NANITE_SET_SAFETY, .proc/set_safety) - RegisterSignal(parent, COMSIG_NANITE_SET_REGEN, .proc/set_regen) - RegisterSignal(parent, COMSIG_NANITE_ADD_PROGRAM, .proc/add_program) - RegisterSignal(parent, COMSIG_NANITE_SCAN, .proc/nanite_scan) - RegisterSignal(parent, COMSIG_NANITE_SYNC, .proc/sync) + RegisterSignal(parent, COMSIG_HAS_NANITES, PROC_REF(confirm_nanites)) + RegisterSignal(parent, COMSIG_NANITE_IS_STEALTHY, PROC_REF(check_stealth)) + RegisterSignal(parent, COMSIG_NANITE_DELETE, PROC_REF(delete_nanites)) + RegisterSignal(parent, COMSIG_NANITE_UI_DATA, PROC_REF(nanite_ui_data)) + RegisterSignal(parent, COMSIG_NANITE_GET_PROGRAMS, PROC_REF(get_programs)) + RegisterSignal(parent, COMSIG_NANITE_SET_VOLUME, PROC_REF(set_volume)) + RegisterSignal(parent, COMSIG_NANITE_ADJUST_VOLUME, PROC_REF(adjust_nanites)) + RegisterSignal(parent, COMSIG_NANITE_SET_MAX_VOLUME, PROC_REF(set_max_volume)) + RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD, PROC_REF(set_cloud)) + RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD_SYNC, PROC_REF(set_cloud_sync)) + RegisterSignal(parent, COMSIG_NANITE_SET_SAFETY, PROC_REF(set_safety)) + RegisterSignal(parent, COMSIG_NANITE_SET_REGEN, PROC_REF(set_regen)) + RegisterSignal(parent, COMSIG_NANITE_ADD_PROGRAM, PROC_REF(add_program)) + RegisterSignal(parent, COMSIG_NANITE_SCAN, PROC_REF(nanite_scan)) + RegisterSignal(parent, COMSIG_NANITE_SYNC, PROC_REF(sync)) if(isliving(parent)) - RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/on_emp) - RegisterSignal(parent, COMSIG_MOB_DEATH, .proc/on_death) - RegisterSignal(parent, COMSIG_MOB_ALLOWED, .proc/check_access) - RegisterSignal(parent, COMSIG_LIVING_ELECTROCUTE_ACT, .proc/on_shock) - RegisterSignal(parent, COMSIG_LIVING_MINOR_SHOCK, .proc/on_minor_shock) - RegisterSignal(parent, COMSIG_SPECIES_GAIN, .proc/check_viable_biotype) - RegisterSignal(parent, COMSIG_NANITE_SIGNAL, .proc/receive_signal) - RegisterSignal(parent, COMSIG_NANITE_COMM_SIGNAL, .proc/receive_comm_signal) + RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp)) + RegisterSignal(parent, COMSIG_MOB_DEATH, PROC_REF(on_death)) + RegisterSignal(parent, COMSIG_MOB_ALLOWED, PROC_REF(check_access)) + RegisterSignal(parent, COMSIG_LIVING_ELECTROCUTE_ACT, PROC_REF(on_shock)) + RegisterSignal(parent, COMSIG_LIVING_MINOR_SHOCK, PROC_REF(on_minor_shock)) + RegisterSignal(parent, COMSIG_SPECIES_GAIN, PROC_REF(check_viable_biotype)) + RegisterSignal(parent, COMSIG_NANITE_SIGNAL, PROC_REF(receive_signal)) + RegisterSignal(parent, COMSIG_NANITE_COMM_SIGNAL, PROC_REF(receive_comm_signal)) /datum/component/nanites/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_HAS_NANITES, diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm index 2c2d0acf71af..faf61f803fa2 100644 --- a/code/datums/components/orbiter.dm +++ b/code/datums/components/orbiter.dm @@ -22,9 +22,9 @@ target.orbiters = src if(ismovable(target)) - tracker = new(target, CALLBACK(src, .proc/move_react)) + tracker = new(target, CALLBACK(src, PROC_REF(move_react))) - RegisterSignal(parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, .proc/orbiter_glide_size_update) + RegisterSignal(parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, PROC_REF(orbiter_glide_size_update)) /datum/component/orbiter/UnregisterFromParent() var/atom/target = parent @@ -59,7 +59,7 @@ orbiter.orbiting.end_orbit(orbiter) orbiters[orbiter] = TRUE orbiter.orbiting = src - RegisterSignal(orbiter, COMSIG_MOVABLE_MOVED, .proc/orbiter_move_react) + RegisterSignal(orbiter, COMSIG_MOVABLE_MOVED, PROC_REF(orbiter_move_react)) SEND_SIGNAL(parent, COMSIG_ATOM_ORBIT_BEGIN, orbiter) diff --git a/code/datums/components/outline.dm b/code/datums/components/outline.dm index 7aa719d38a61..9bf766239bcc 100644 --- a/code/datums/components/outline.dm +++ b/code/datums/components/outline.dm @@ -7,9 +7,9 @@ if(!isatom(parent)) return COMPONENT_INCOMPATIBLE src.permanent = perm - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/OnExamine) - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/OnClean) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(OnExamine)) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(OnAttackBy)) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(OnClean)) var/atom/movable/A = parent A.add_filter("sprite-bane", 2, list("type"="outline", "color"="#000000", "size"=1)) diff --git a/code/datums/components/overlay_lighting.dm b/code/datums/components/overlay_lighting.dm index 623b24fb2c42..d4b40bdb7187 100644 --- a/code/datums/components/overlay_lighting.dm +++ b/code/datums/components/overlay_lighting.dm @@ -105,14 +105,14 @@ /datum/component/overlay_lighting/RegisterWithParent() . = ..() if(directional) - RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, .proc/on_parent_dir_change) - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_parent_moved) - RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_RANGE, .proc/set_range) - RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_POWER, .proc/set_power) - RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_COLOR, .proc/set_color) - RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_ON, .proc/on_toggle) - RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_FLAGS, .proc/on_light_flags_change) - RegisterSignal(parent, COMSIG_ATOM_USED_IN_CRAFT, .proc/on_parent_crafted) + RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_parent_dir_change)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_moved)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_RANGE, PROC_REF(set_range)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_POWER, PROC_REF(set_power)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_COLOR, PROC_REF(set_color)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_ON, PROC_REF(on_toggle)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_FLAGS, PROC_REF(on_light_flags_change)) + RegisterSignal(parent, COMSIG_ATOM_USED_IN_CRAFT, PROC_REF(on_parent_crafted)) var/atom/movable/movable_parent = parent if(movable_parent.light_flags & LIGHT_ATTACHED) overlay_lighting_flags |= LIGHTING_ATTACHED @@ -156,8 +156,7 @@ ///Clears the affected_turfs lazylist, removing from its contents the effects of being near the light. /datum/component/overlay_lighting/proc/clean_old_turfs() - for(var/t in affected_turfs) - var/turf/lit_turf = t + for(var/turf/lit_turf as anything in affected_turfs) lit_turf.dynamic_lumcount -= lum_power affected_turfs = null @@ -167,9 +166,12 @@ if(!current_holder) return var/atom/movable/light_source = GET_LIGHT_SOURCE + . = list() for(var/turf/lit_turf in view(lumcount_range, get_turf(light_source))) lit_turf.dynamic_lumcount += lum_power - LAZYADD(affected_turfs, lit_turf) + . += lit_turf + if(length(.)) + affected_turfs = . ///Clears the old affected turfs and populates the new ones. @@ -213,13 +215,13 @@ var/atom/movable/old_parent_attached_to = . UnregisterSignal(old_parent_attached_to, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) if(old_parent_attached_to == current_holder) - RegisterSignal(old_parent_attached_to, COMSIG_PARENT_QDELETING, .proc/on_holder_qdel) - RegisterSignal(old_parent_attached_to, COMSIG_MOVABLE_MOVED, .proc/on_holder_moved) + RegisterSignal(old_parent_attached_to, COMSIG_PARENT_QDELETING, PROC_REF(on_holder_qdel)) + RegisterSignal(old_parent_attached_to, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved)) if(parent_attached_to) if(parent_attached_to == current_holder) UnregisterSignal(current_holder, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) - RegisterSignal(parent_attached_to, COMSIG_PARENT_QDELETING, .proc/on_parent_attached_to_qdel) - RegisterSignal(parent_attached_to, COMSIG_MOVABLE_MOVED, .proc/on_parent_attached_to_moved) + RegisterSignal(parent_attached_to, COMSIG_PARENT_QDELETING, PROC_REF(on_parent_attached_to_qdel)) + RegisterSignal(parent_attached_to, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_attached_to_moved)) check_holder() @@ -239,10 +241,10 @@ clean_old_turfs() return if(new_holder != parent && new_holder != parent_attached_to) - RegisterSignal(new_holder, COMSIG_PARENT_QDELETING, .proc/on_holder_qdel) - RegisterSignal(new_holder, COMSIG_MOVABLE_MOVED, .proc/on_holder_moved) + RegisterSignal(new_holder, COMSIG_PARENT_QDELETING, PROC_REF(on_holder_qdel)) + RegisterSignal(new_holder, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved)) if(directional) - RegisterSignal(new_holder, COMSIG_ATOM_DIR_CHANGE, .proc/on_holder_dir_change) + RegisterSignal(new_holder, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_holder_dir_change)) if(overlay_lighting_flags & LIGHTING_ON) make_luminosity_update() add_dynamic_lumi() @@ -407,8 +409,7 @@ . = lum_power lum_power = new_lum_power var/difference = . - lum_power - for(var/t in affected_turfs) - var/turf/lit_turf = t + for(var/turf/lit_turf as anything in affected_turfs) lit_turf.dynamic_lumcount -= difference ///Here we append the behavior associated to changing lum_power. @@ -460,7 +461,7 @@ return UnregisterSignal(parent, COMSIG_ATOM_USED_IN_CRAFT) - RegisterSignal(new_craft, COMSIG_ATOM_USED_IN_CRAFT, .proc/on_parent_crafted) + RegisterSignal(new_craft, COMSIG_ATOM_USED_IN_CRAFT, PROC_REF(on_parent_crafted)) set_parent_attached_to(new_craft) #undef LIGHTING_ON diff --git a/code/datums/components/paintable.dm b/code/datums/components/paintable.dm index a0ed2873c90a..72472d41686d 100644 --- a/code/datums/components/paintable.dm +++ b/code/datums/components/paintable.dm @@ -2,7 +2,7 @@ var/current_paint /datum/component/spraycan_paintable/Initialize() - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/Repaint) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(Repaint)) /datum/component/spraycan_paintable/Destroy() RemoveCurrentCoat() diff --git a/code/datums/components/pellet_cloud.dm b/code/datums/components/pellet_cloud.dm index d0998c41e5b8..ae90dae17c55 100644 --- a/code/datums/components/pellet_cloud.dm +++ b/code/datums/components/pellet_cloud.dm @@ -47,7 +47,7 @@ var/mob/living/shooter /datum/component/pellet_cloud/Initialize(projectile_type=/obj/item/shrapnel, magnitude=5) - if(!isammocasing(parent) && !isgrenade(parent) && !islandmine(parent)) + if(!isammocasing(parent) && !isgrenade(parent) && !islandmine(parent) && !issupplypod(parent)) return COMPONENT_INCOMPATIBLE if(magnitude < 1) @@ -58,7 +58,7 @@ if(isammocasing(parent)) num_pellets = magnitude - else if(isgrenade(parent) || islandmine(parent)) + else if(isgrenade(parent) || islandmine(parent) || issupplypod(parent)) radius = magnitude /datum/component/pellet_cloud/Destroy(force, silent) @@ -69,14 +69,16 @@ return ..() /datum/component/pellet_cloud/RegisterWithParent() - RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, .proc/nullspace_parent) + RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, PROC_REF(nullspace_parent)) if(isammocasing(parent)) - RegisterSignal(parent, COMSIG_PELLET_CLOUD_INIT, .proc/create_casing_pellets) + RegisterSignal(parent, COMSIG_PELLET_CLOUD_INIT, PROC_REF(create_casing_pellets)) else if(isgrenade(parent)) - RegisterSignal(parent, COMSIG_GRENADE_ARMED, .proc/grenade_armed) - RegisterSignal(parent, COMSIG_GRENADE_PRIME, .proc/create_blast_pellets) + RegisterSignal(parent, COMSIG_GRENADE_ARMED, PROC_REF(grenade_armed)) + RegisterSignal(parent, COMSIG_GRENADE_PRIME, PROC_REF(create_blast_pellets)) else if(islandmine(parent)) - RegisterSignal(parent, COMSIG_MINE_TRIGGERED, .proc/create_blast_pellets) + RegisterSignal(parent, COMSIG_MINE_TRIGGERED, PROC_REF(create_blast_pellets)) + else if(issupplypod(parent)) + RegisterSignal(parent, COMSIG_SUPPLYPOD_LANDED, PROC_REF(create_blast_pellets)) /datum/component/pellet_cloud/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_PARENT_PREQDELETED, COMSIG_PELLET_CLOUD_INIT, COMSIG_GRENADE_PRIME, COMSIG_GRENADE_ARMED, COMSIG_MOVABLE_MOVED, COMSIG_MINE_TRIGGERED, COMSIG_ITEM_DROPPED)) @@ -101,8 +103,8 @@ else //Smart spread spread = round((i / num_pellets - 0.5) * distro) - RegisterSignal(shell.BB, COMSIG_PROJECTILE_SELF_ON_HIT, .proc/pellet_hit) - RegisterSignal(shell.BB, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PARENT_QDELETING), .proc/pellet_range) + RegisterSignal(shell.BB, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(pellet_hit)) + RegisterSignal(shell.BB, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PARENT_QDELETING), PROC_REF(pellet_range)) pellets += shell.BB if(!shell.throw_proj(target, targloc, shooter, params, spread)) return @@ -157,7 +159,7 @@ pellet_delta += radius * self_harm_radius_mult for(var/i in 1 to radius * self_harm_radius_mult) pew(body) // free shrapnel if it goes off in your hand, and it doesn't even count towards the absorbed. fun! - else if(!(body in bodies)) + else if(!(LAZYISIN(bodies, body))) martyrs += body // promoted from a corpse to a hero for(var/M in martyrs) @@ -178,7 +180,7 @@ if(martyr.stat != DEAD && martyr.client) LAZYADD(purple_hearts, martyr) - RegisterSignal(martyr, COMSIG_PARENT_QDELETING, .proc/on_target_qdel, override=TRUE) + RegisterSignal(martyr, COMSIG_PARENT_QDELETING, PROC_REF(on_target_qdel), override=TRUE) for(var/i in 1 to round(pellets_absorbed * 0.5)) pew(martyr) @@ -193,7 +195,7 @@ hits++ targets_hit[target]++ if(targets_hit[target] == 1) - RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/on_target_qdel, override=TRUE) + RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(on_target_qdel), override=TRUE) UnregisterSignal(P, list(COMSIG_PARENT_QDELETING, COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PROJECTILE_SELF_ON_HIT)) if(terminated == num_pellets) finalize() @@ -215,11 +217,11 @@ P.original = target P.fired_from = parent P.firer = parent // don't hit ourself that would be really annoying - P.impacted = list(parent = TRUE) // don't hit the target we hit already with the flak + LAZYSET(P.impacted, parent, TRUE) // don't hit the target we hit already with the flak P.suppressed = SUPPRESSED_VERY // set the projectiles to make no message so we can do our own aggregate message P.preparePixelProjectile(target, parent) - RegisterSignal(P, COMSIG_PROJECTILE_SELF_ON_HIT, .proc/pellet_hit) - RegisterSignal(P, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PARENT_QDELETING), .proc/pellet_range) + RegisterSignal(P, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(pellet_hit)) + RegisterSignal(P, list(COMSIG_PROJECTILE_RANGE_OUT, COMSIG_PARENT_QDELETING), PROC_REF(pellet_range)) pellets += P P.fire() @@ -252,10 +254,10 @@ if(ismob(nade.loc)) shooter = nade.loc LAZYINITLIST(bodies) - RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/grenade_dropped) - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/grenade_moved) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(grenade_dropped)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(grenade_moved)) var/static/list/loc_connections = list( - COMSIG_ATOM_EXITED =.proc/grenade_uncrossed, + COMSIG_ATOM_EXITED = PROC_REF(grenade_uncrossed), ) AddComponent(/datum/component/connect_loc_behalf, parent, loc_connections) @@ -267,13 +269,13 @@ /// Our grenade has moved, reset var/list/bodies so we're "on top" of any mobs currently on the tile /datum/component/pellet_cloud/proc/grenade_moved() LAZYCLEARLIST(bodies) - for(var/mob/living/L in get_turf(parent)) - RegisterSignal(L, COMSIG_PARENT_QDELETING, .proc/on_target_qdel, override=TRUE) - bodies += L + for(var/mob/living/new_mob in get_turf(parent)) + RegisterSignal(new_mob, COMSIG_PARENT_QDELETING, PROC_REF(on_target_qdel), override=TRUE) + LAZYADD(bodies, new_mob) /// Someone who was originally "under" the grenade has moved off the tile and is now eligible for being a martyr and "covering" it /datum/component/pellet_cloud/proc/grenade_uncrossed(datum/source, atom/movable/AM, direction) - bodies -= AM + LAZYREMOVE(bodies, AM) /// Our grenade or landmine or caseless shell or whatever tried deleting itself, so we intervene and nullspace it until we're done here /datum/component/pellet_cloud/proc/nullspace_parent() @@ -286,5 +288,5 @@ /datum/component/pellet_cloud/proc/on_target_qdel(atom/target) UnregisterSignal(target, COMSIG_PARENT_QDELETING) targets_hit -= target - bodies -= target + LAZYREMOVE(target, bodies) purple_hearts -= target diff --git a/code/datums/components/plumbing/_plumbing.dm b/code/datums/components/plumbing/_plumbing.dm index 8512e46c361d..80c956a0031b 100644 --- a/code/datums/components/plumbing/_plumbing.dm +++ b/code/datums/components/plumbing/_plumbing.dm @@ -26,16 +26,16 @@ reagents = AM.reagents turn_connects = _turn_connects - RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/on_parent_moved) - RegisterSignal(parent, list(COMSIG_PARENT_PREQDELETED), .proc/disable) - RegisterSignal(parent, list(COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH), .proc/toggle_active) - RegisterSignal(parent, list(COMSIG_OBJ_HIDE), .proc/hide) - RegisterSignal(parent, list(COMSIG_ATOM_UPDATE_OVERLAYS), .proc/create_overlays) //called by lateinit on startup + RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), PROC_REF(on_parent_moved)) + RegisterSignal(parent, list(COMSIG_PARENT_PREQDELETED), PROC_REF(disable)) + RegisterSignal(parent, list(COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH), PROC_REF(toggle_active)) + RegisterSignal(parent, list(COMSIG_OBJ_HIDE), PROC_REF(hide)) + RegisterSignal(parent, list(COMSIG_ATOM_UPDATE_OVERLAYS), PROC_REF(create_overlays)) //called by lateinit on startup if(start) //timer 0 so it can finish returning initialize, after which we're added to the parent. //Only then can we tell the duct next to us they can connect, because only then is the component really added. this was a fun one - addtimer(CALLBACK(src, .proc/enable), 0) + addtimer(CALLBACK(src, PROC_REF(enable)), 0) /datum/component/plumbing/process() if(!demand_connects || !reagents) diff --git a/code/datums/components/pricetag.dm b/code/datums/components/pricetag.dm index 9cf6a6e4f16a..bf81a595c2be 100644 --- a/code/datums/components/pricetag.dm +++ b/code/datums/components/pricetag.dm @@ -8,9 +8,9 @@ owner = _owner if(_profit_ratio) profit_ratio = _profit_ratio - RegisterSignal(parent, list(COMSIG_ITEM_SOLD), .proc/split_profit) - RegisterSignal(parent, list(COMSIG_STRUCTURE_UNWRAPPED, COMSIG_ITEM_UNWRAPPED), .proc/Unwrapped) - RegisterSignal(parent, list(COMSIG_ITEM_SPLIT_PROFIT, COMSIG_ITEM_SPLIT_PROFIT_DRY), .proc/return_ratio) + RegisterSignal(parent, list(COMSIG_ITEM_SOLD), PROC_REF(split_profit)) + RegisterSignal(parent, list(COMSIG_STRUCTURE_UNWRAPPED, COMSIG_ITEM_UNWRAPPED), PROC_REF(Unwrapped)) + RegisterSignal(parent, list(COMSIG_ITEM_SPLIT_PROFIT, COMSIG_ITEM_SPLIT_PROFIT_DRY), PROC_REF(return_ratio)) /datum/component/pricetag/proc/Unwrapped() SIGNAL_HANDLER diff --git a/code/datums/components/punchcooldown.dm b/code/datums/components/punchcooldown.dm index 5aacf49fd2d2..19aa8c8cd20d 100644 --- a/code/datums/components/punchcooldown.dm +++ b/code/datums/components/punchcooldown.dm @@ -2,7 +2,7 @@ /datum/component/wearertargeting/punchcooldown signals = list(COMSIG_HUMAN_MELEE_UNARMED_ATTACK) mobtype = /mob/living/carbon - proctype = .proc/reducecooldown + proctype = PROC_REF(reducecooldown) valid_slots = list(ITEM_SLOT_GLOVES) ///The warcry this generates var/warcry = "AT" @@ -11,7 +11,7 @@ . = ..() if(. == COMPONENT_INCOMPATIBLE) return - RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/changewarcry) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(changewarcry)) ///Called on COMSIG_HUMAN_MELEE_UNARMED_ATTACK. Yells the warcry and and reduces punch cooldown. /datum/component/wearertargeting/punchcooldown/proc/reducecooldown(mob/living/carbon/M, atom/target) @@ -24,7 +24,7 @@ /datum/component/wearertargeting/punchcooldown/proc/changewarcry(datum/source, mob/user) SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/changewarcry_async, user) + INVOKE_ASYNC(src, PROC_REF(changewarcry_async), user) /datum/component/wearertargeting/punchcooldown/proc/changewarcry_async(mob/user) var/input = stripped_input(user,"What do you want your battlecry to be? Max length of 6 characters.", ,"", 7) diff --git a/code/datums/components/rad_insulation.dm b/code/datums/components/rad_insulation.dm index d06cb1e18799..6ee306b28215 100644 --- a/code/datums/components/rad_insulation.dm +++ b/code/datums/components/rad_insulation.dm @@ -6,11 +6,11 @@ return COMPONENT_INCOMPATIBLE if(protects) // Does this protect things in its contents from being affected? - RegisterSignal(parent, COMSIG_ATOM_RAD_PROBE, .proc/rad_probe_react) + RegisterSignal(parent, COMSIG_ATOM_RAD_PROBE, PROC_REF(rad_probe_react)) if(contamination_proof) // Can this object be contaminated? - RegisterSignal(parent, COMSIG_ATOM_RAD_CONTAMINATING, .proc/rad_contaminating) + RegisterSignal(parent, COMSIG_ATOM_RAD_CONTAMINATING, PROC_REF(rad_contaminating)) if(_amount != 1) // If it's 1 it wont have any impact on radiation passing through anyway - RegisterSignal(parent, COMSIG_ATOM_RAD_WAVE_PASSING, .proc/rad_pass) + RegisterSignal(parent, COMSIG_ATOM_RAD_WAVE_PASSING, PROC_REF(rad_pass)) amount = _amount diff --git a/code/datums/components/radioactive.dm b/code/datums/components/radioactive.dm index a1d0553f3b1d..a6c67af2d3cd 100644 --- a/code/datums/components/radioactive.dm +++ b/code/datums/components/radioactive.dm @@ -18,11 +18,11 @@ hl3_release_date = _half_life can_contaminate = _can_contaminate if(istype(parent, /atom)) - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/rad_examine) - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/rad_clean) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(rad_examine)) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(rad_clean)) if(istype(parent, /obj/item)) - RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/rad_attack) - RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ, .proc/rad_attack) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(rad_attack)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ, PROC_REF(rad_attack)) else return COMPONENT_INCOMPATIBLE if(strength > RAD_MINIMUM_CONTAMINATION) @@ -31,7 +31,7 @@ //This relies on parent not being a turf or something. IF YOU CHANGE THAT, CHANGE THIS var/atom/movable/master = parent master.add_filter("rad_glow", 2, list("type" = "outline", "color" = "#39ff1430", "size" = 2)) - addtimer(CALLBACK(src, .proc/glow_loop, master), rand(1,19))//Things should look uneven + addtimer(CALLBACK(src, PROC_REF(glow_loop), master), rand(1,19))//Things should look uneven START_PROCESSING(SSradiation, src) /datum/component/radioactive/Destroy() diff --git a/code/datums/components/remote_materials.dm b/code/datums/components/remote_materials.dm index 4bd3d1b82e43..de61c13ae295 100644 --- a/code/datums/components/remote_materials.dm +++ b/code/datums/components/remote_materials.dm @@ -23,8 +23,8 @@ handles linking back and forth. src.category = category src.allow_standalone = allow_standalone - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) - RegisterSignal(parent, COMSIG_ATOM_MULTITOOL_ACT, .proc/OnMultitool) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(OnAttackBy)) + RegisterSignal(parent, COMSIG_ATOM_MULTITOOL_ACT, PROC_REF(OnMultitool)) if (allow_standalone) _MakeLocal() diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 3f56735a493c..7d3bf028d796 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -28,10 +28,10 @@ /datum/component/riding/Initialize() if(!ismovable(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, .proc/vehicle_turned) - RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, .proc/vehicle_mob_buckle) - RegisterSignal(parent, COMSIG_MOVABLE_UNBUCKLE, .proc/vehicle_mob_unbuckle) - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/vehicle_moved) + RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, PROC_REF(vehicle_turned)) + RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, PROC_REF(vehicle_mob_buckle)) + RegisterSignal(parent, COMSIG_MOVABLE_UNBUCKLE, PROC_REF(vehicle_mob_unbuckle)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(vehicle_moved)) /datum/component/riding/proc/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE) SIGNAL_HANDLER @@ -217,7 +217,7 @@ to_chat(user, "You'll need a special item in one of your hands to [drive_verb] [AM].") /datum/component/riding/proc/Unbuckle(atom/movable/M) - addtimer(CALLBACK(parent, /atom/movable/.proc/unbuckle_mob, M), 0, TIMER_UNIQUE) + addtimer(CALLBACK(parent, TYPE_PROC_REF(/atom/movable, unbuckle_mob), M), 0, TIMER_UNIQUE) /datum/component/riding/proc/Process_Spacemove(direction) var/atom/movable/AM = parent @@ -237,7 +237,7 @@ /datum/component/riding/human/Initialize() . = ..() - RegisterSignal(parent, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee) + RegisterSignal(parent, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, PROC_REF(on_host_unarmed_melee)) /datum/component/riding/human/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE) unequip_buckle_inhands(parent) diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index 7f0e230845f8..506d744d6c8c 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -26,17 +26,17 @@ if(can_user_rotate) src.can_user_rotate = can_user_rotate else - src.can_user_rotate = CALLBACK(src,.proc/default_can_user_rotate) + src.can_user_rotate = CALLBACK(src, PROC_REF(default_can_user_rotate)) if(can_be_rotated) src.can_be_rotated = can_be_rotated else - src.can_be_rotated = CALLBACK(src,.proc/default_can_be_rotated) + src.can_be_rotated = CALLBACK(src, PROC_REF(default_can_be_rotated)) if(after_rotation) src.after_rotation = after_rotation else - src.after_rotation = CALLBACK(src,.proc/default_after_rotation) + src.after_rotation = CALLBACK(src, PROC_REF(default_after_rotation)) //Try Clockwise,counter,flip in order if(src.rotation_flags & ROTATION_FLIP) @@ -52,10 +52,10 @@ /datum/component/simple_rotation/proc/add_signals() if(rotation_flags & ROTATION_ALTCLICK) - RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/HandRot) - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/ExamineMessage) + RegisterSignal(parent, COMSIG_CLICK_ALT, PROC_REF(HandRot)) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(ExamineMessage)) if(rotation_flags & ROTATION_WRENCH) - RegisterSignal(parent, COMSIG_ATOM_WRENCH_ACT, .proc/WrenchRot) + RegisterSignal(parent, COMSIG_ATOM_WRENCH_ACT, PROC_REF(WrenchRot)) /datum/component/simple_rotation/proc/add_verbs() if(rotation_flags & ROTATION_VERBS) diff --git a/code/datums/components/sitcomlaughter.dm b/code/datums/components/sitcomlaughter.dm index 7a31c812749b..8dfef21b749d 100644 --- a/code/datums/components/sitcomlaughter.dm +++ b/code/datums/components/sitcomlaughter.dm @@ -1,7 +1,7 @@ /datum/component/wearertargeting/sitcomlaughter valid_slots = list(ITEM_SLOT_HANDS, ITEM_SLOT_BELT, ITEM_SLOT_ID, ITEM_SLOT_LPOCKET, ITEM_SLOT_RPOCKET, ITEM_SLOT_SUITSTORE, ITEM_SLOT_DEX_STORAGE) signals = list(COMSIG_MOB_CREAMED, COMSIG_ON_CARBON_SLIP, COMSIG_ON_VENDOR_CRUSH, COMSIG_MOB_CLUMSY_SHOOT_FOOT) - proctype = .proc/EngageInComedy + proctype = PROC_REF(EngageInComedy) mobtype = /mob/living ///Sounds used for when user has a sitcom action occur var/list/comedysounds = list('sound/items/SitcomLaugh1.ogg', 'sound/items/SitcomLaugh2.ogg', 'sound/items/SitcomLaugh3.ogg') @@ -28,6 +28,6 @@ SIGNAL_HANDLER if(!COOLDOWN_FINISHED(src, laugh_cooldown)) return - addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, parent, pick(comedysounds), 100, FALSE, SHORT_RANGE_SOUND_EXTRARANGE), laugh_delay) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), parent, pick(comedysounds), 100, FALSE, SHORT_RANGE_SOUND_EXTRARANGE), laugh_delay) post_comedy_callback?.Invoke(source) COOLDOWN_START(src, laugh_cooldown, cooldown_time) diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm index 64dd511956ce..5c2c88ccfee7 100644 --- a/code/datums/components/slippery.dm +++ b/code/datums/components/slippery.dm @@ -11,12 +11,12 @@ ///what we give to connect_loc by default, makes slippable mobs moving over us slip var/static/list/default_connections = list( - COMSIG_ATOM_ENTERED = .proc/Slip, + COMSIG_ATOM_ENTERED = PROC_REF(Slip), ) ///what we give to connect_loc if we're an item and get equipped by a mob. makes slippable mobs moving over our holder slip var/static/list/holder_connections = list( - COMSIG_ATOM_ENTERED = .proc/Slip_on_wearer, + COMSIG_ATOM_ENTERED = PROC_REF(Slip_on_wearer), ) /// The connect_loc_behalf component for the holder_connections list. @@ -32,10 +32,10 @@ if(ismovable(parent)) if(isitem(parent)) - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) - RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) else - RegisterSignal(parent, COMSIG_ATOM_ENTERED, .proc/Slip) + RegisterSignal(parent, COMSIG_ATOM_ENTERED, PROC_REF(Slip)) /datum/component/slippery/proc/add_connect_loc_behalf_to_parent() if(ismovable(parent)) @@ -73,7 +73,7 @@ holder = equipper qdel(GetComponent(/datum/component/connect_loc_behalf)) AddComponent(/datum/component/connect_loc_behalf, holder, holder_connections) - RegisterSignal(holder, COMSIG_PARENT_PREQDELETED, .proc/holder_deleted) + RegisterSignal(holder, COMSIG_PARENT_PREQDELETED, PROC_REF(holder_deleted)) /datum/component/slippery/proc/holder_deleted(datum/source, datum/possible_holder) SIGNAL_HANDLER diff --git a/code/datums/components/soulstoned.dm b/code/datums/components/soulstoned.dm index 584f76cbc255..04e514062879 100644 --- a/code/datums/components/soulstoned.dm +++ b/code/datums/components/soulstoned.dm @@ -17,7 +17,7 @@ S.health = S.maxHealth S.bruteloss = 0 - RegisterSignal(S, COMSIG_MOVABLE_MOVED, .proc/free_prisoner) + RegisterSignal(S, COMSIG_MOVABLE_MOVED, PROC_REF(free_prisoner)) /datum/component/soulstoned/proc/free_prisoner() SIGNAL_HANDLER diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm index e4f7fa4e8648..42456ccf88e9 100644 --- a/code/datums/components/spawner.dm +++ b/code/datums/components/spawner.dm @@ -23,7 +23,7 @@ if(_spawn_sound) spawn_sound=_spawn_sound - RegisterSignal(parent, list(COMSIG_PARENT_QDELETING), .proc/stop_spawning) + RegisterSignal(parent, list(COMSIG_PARENT_QDELETING), PROC_REF(stop_spawning)) START_PROCESSING(SSprocessing, src) /datum/component/spawner/process() @@ -53,4 +53,5 @@ L.nest = src L.faction = src.faction P.visible_message("[L] [pick(spawn_text)] [P].") - playsound(P, pick(spawn_sound), 50, TRUE) + if(length(spawn_sound)) + playsound(P, pick(spawn_sound), 50, TRUE) diff --git a/code/datums/components/spill.dm b/code/datums/components/spill.dm index 343cdab3f081..1aa652e5106a 100644 --- a/code/datums/components/spill.dm +++ b/code/datums/components/spill.dm @@ -27,8 +27,8 @@ return COMPONENT_INCOMPATIBLE /datum/component/spill/RegisterWithParent() - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/equip_react) - RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/drop_react) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(equip_react)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(drop_react)) var/obj/item/master = parent preexisting_item_flags = master.item_flags master.item_flags |= ITEM_SLOT_POCKETS @@ -43,7 +43,7 @@ SIGNAL_HANDLER if(slot == ITEM_SLOT_LPOCKET || slot == ITEM_SLOT_RPOCKET) - RegisterSignal(equipper, COMSIG_LIVING_STATUS_KNOCKDOWN, .proc/knockdown_react, TRUE) + RegisterSignal(equipper, COMSIG_LIVING_STATUS_KNOCKDOWN, PROC_REF(knockdown_react), TRUE) else UnregisterSignal(equipper, COMSIG_LIVING_STATUS_KNOCKDOWN) diff --git a/code/datums/components/spooky.dm b/code/datums/components/spooky.dm index 9e5032ec70f7..2cdefc057f85 100644 --- a/code/datums/components/spooky.dm +++ b/code/datums/components/spooky.dm @@ -2,12 +2,12 @@ var/too_spooky = TRUE //will it spawn a new instrument? /datum/component/spooky/Initialize() - RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/spectral_attack) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(spectral_attack)) /datum/component/spooky/proc/spectral_attack(datum/source, mob/living/carbon/C, mob/user) SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/spectral_attack_async, source, C, user) + INVOKE_ASYNC(src, PROC_REF(spectral_attack_async), source, C, user) /datum/component/spooky/proc/spectral_attack_async(datum/source, mob/living/carbon/C, mob/user) diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm index fdb95e249f2b..368b70b64c0c 100644 --- a/code/datums/components/squeak.dm +++ b/code/datums/components/squeak.dm @@ -22,25 +22,25 @@ ///what we set connect_loc to if parent is an item var/static/list/item_connections = list( - COMSIG_ATOM_ENTERED = .proc/play_squeak_crossed, + COMSIG_ATOM_ENTERED = PROC_REF(play_squeak_crossed), ) /datum/component/squeak/Initialize(custom_sounds, volume_override, chance_override, step_delay_override, use_delay_override, extrarange, falloff_exponent, fallof_distance) if(!isatom(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), .proc/play_squeak) + RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), PROC_REF(play_squeak)) if(ismovable(parent)) - RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), .proc/play_squeak) + RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), PROC_REF(play_squeak)) AddComponent(/datum/component/connect_loc_behalf, parent, item_connections) - RegisterSignal(parent, COMSIG_ITEM_WEARERCROSSED, .proc/play_squeak_crossed) - RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react) + RegisterSignal(parent, COMSIG_ITEM_WEARERCROSSED, PROC_REF(play_squeak_crossed)) + RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, PROC_REF(disposing_react)) if(isitem(parent)) - RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/play_squeak) - RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/use_squeak) - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) - RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) + RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), PROC_REF(play_squeak)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(use_squeak)) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) if(istype(parent, /obj/item/clothing/shoes)) - RegisterSignal(parent, COMSIG_SHOES_STEP_ACTION, .proc/step_squeak) + RegisterSignal(parent, COMSIG_SHOES_STEP_ACTION, PROC_REF(step_squeak)) override_squeak_sounds = custom_sounds if(chance_override) @@ -103,7 +103,7 @@ /datum/component/squeak/proc/on_equip(datum/source, mob/equipper, slot) SIGNAL_HANDLER - RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react, TRUE) + RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, PROC_REF(disposing_react), TRUE) /datum/component/squeak/proc/on_drop(datum/source, mob/user) SIGNAL_HANDLER @@ -115,7 +115,7 @@ SIGNAL_HANDLER //We don't need to worry about unregistering this signal as it will happen for us automaticaly when the holder is qdeleted - RegisterSignal(holder, COMSIG_ATOM_DIR_CHANGE, .proc/holder_dir_change) + RegisterSignal(holder, COMSIG_ATOM_DIR_CHANGE, PROC_REF(holder_dir_change)) /datum/component/squeak/proc/holder_dir_change(datum/source, old_dir, new_dir) SIGNAL_HANDLER diff --git a/code/datums/components/stationstuck.dm b/code/datums/components/stationstuck.dm index 98f12cdc09c1..2f01af2ee6e7 100644 --- a/code/datums/components/stationstuck.dm +++ b/code/datums/components/stationstuck.dm @@ -9,7 +9,7 @@ if(!isliving(parent)) return COMPONENT_INCOMPATIBLE var/mob/living/L = parent - RegisterSignal(L, list(COMSIG_MOVABLE_Z_CHANGED), .proc/punish) + RegisterSignal(L, list(COMSIG_MOVABLE_Z_CHANGED), PROC_REF(punish)) murder = _murder message = _message diff --git a/code/datums/components/storage/concrete/_concrete.dm b/code/datums/components/storage/concrete/_concrete.dm index 4198ba5b974d..c0a9bd162209 100644 --- a/code/datums/components/storage/concrete/_concrete.dm +++ b/code/datums/components/storage/concrete/_concrete.dm @@ -15,8 +15,8 @@ /datum/component/storage/concrete/Initialize() . = ..() - RegisterSignal(parent, COMSIG_ATOM_CONTENTS_DEL, .proc/on_contents_del) - RegisterSignal(parent, COMSIG_OBJ_DECONSTRUCT, .proc/on_deconstruct) + RegisterSignal(parent, COMSIG_ATOM_CONTENTS_DEL, PROC_REF(on_contents_del)) + RegisterSignal(parent, COMSIG_OBJ_DECONSTRUCT, PROC_REF(on_deconstruct)) /datum/component/storage/concrete/Destroy() var/atom/real_location = real_location() diff --git a/code/datums/components/storage/concrete/bag_of_holding.dm b/code/datums/components/storage/concrete/bag_of_holding.dm index 7b734d8836cc..9c534ae2fa4d 100644 --- a/code/datums/components/storage/concrete/bag_of_holding.dm +++ b/code/datums/components/storage/concrete/bag_of_holding.dm @@ -5,7 +5,7 @@ var/list/obj/item/storage/backpack/holding/matching = typecache_filter_list(W.GetAllContents(), typecacheof(/obj/item/storage/backpack/holding)) matching -= A if(istype(W, /obj/item/storage/backpack/holding) || matching.len) - INVOKE_ASYNC(src, .proc/recursive_insertion, W, user) + INVOKE_ASYNC(src, PROC_REF(recursive_insertion), W, user) return . = ..() diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index bba9f933e336..ced0b0e79ff7 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -24,6 +24,7 @@ var/list/mob/is_using //lazy list of mobs looking at the contents of this storage. var/locked = FALSE //when locked nothing can see inside or use it. + var/locked_flavor = "locked" //prevents tochat messages related to locked from sending var/max_w_class = WEIGHT_CLASS_SMALL //max size of objects that will fit. var/max_combined_w_class = 14 //max combined sizes of objects that will fit. @@ -71,42 +72,42 @@ closer = new(null, src) orient2hud() - RegisterSignal(parent, COMSIG_CONTAINS_STORAGE, .proc/on_check) - RegisterSignal(parent, COMSIG_IS_STORAGE_LOCKED, .proc/check_locked) - RegisterSignal(parent, COMSIG_TRY_STORAGE_SHOW, .proc/signal_show_attempt) - RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, .proc/signal_insertion_attempt) - RegisterSignal(parent, COMSIG_TRY_STORAGE_CAN_INSERT, .proc/signal_can_insert) - RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE_TYPE, .proc/signal_take_type) - RegisterSignal(parent, COMSIG_TRY_STORAGE_FILL_TYPE, .proc/signal_fill_type) - RegisterSignal(parent, COMSIG_TRY_STORAGE_SET_LOCKSTATE, .proc/set_locked) - RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE, .proc/signal_take_obj) - RegisterSignal(parent, COMSIG_TRY_STORAGE_QUICK_EMPTY, .proc/signal_quick_empty) - RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_FROM, .proc/signal_hide_attempt) - RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_ALL, .proc/close_all) - RegisterSignal(parent, COMSIG_TRY_STORAGE_RETURN_INVENTORY, .proc/signal_return_inv) - - RegisterSignal(parent, COMSIG_TOPIC, .proc/topic_handle) - - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attackby) - - RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, .proc/on_attack_hand) - RegisterSignal(parent, COMSIG_ATOM_ATTACK_PAW, .proc/on_attack_hand) - RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/emp_act) - RegisterSignal(parent, COMSIG_ATOM_ATTACK_GHOST, .proc/show_to_ghost) - RegisterSignal(parent, COMSIG_ATOM_ENTERED, .proc/refresh_mob_views) - RegisterSignal(parent, COMSIG_ATOM_EXITED, .proc/_remove_and_refresh) - RegisterSignal(parent, COMSIG_ATOM_CANREACH, .proc/canreach_react) - - RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK, .proc/preattack_intercept) - RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/attack_self) - RegisterSignal(parent, COMSIG_ITEM_PICKUP, .proc/signal_on_pickup) - - RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, .proc/close_all) - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_move) - - RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/on_alt_click) - RegisterSignal(parent, COMSIG_MOUSEDROP_ONTO, .proc/mousedrop_onto) - RegisterSignal(parent, COMSIG_MOUSEDROPPED_ONTO, .proc/mousedrop_receive) + RegisterSignal(parent, COMSIG_CONTAINS_STORAGE, PROC_REF(on_check)) + RegisterSignal(parent, COMSIG_IS_STORAGE_LOCKED, PROC_REF(check_locked)) + RegisterSignal(parent, COMSIG_TRY_STORAGE_SHOW, PROC_REF(signal_show_attempt)) + RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, PROC_REF(signal_insertion_attempt)) + RegisterSignal(parent, COMSIG_TRY_STORAGE_CAN_INSERT, PROC_REF(signal_can_insert)) + RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE_TYPE, PROC_REF(signal_take_type)) + RegisterSignal(parent, COMSIG_TRY_STORAGE_FILL_TYPE, PROC_REF(signal_fill_type)) + RegisterSignal(parent, COMSIG_TRY_STORAGE_SET_LOCKSTATE, PROC_REF(set_locked)) + RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE, PROC_REF(signal_take_obj)) + RegisterSignal(parent, COMSIG_TRY_STORAGE_QUICK_EMPTY, PROC_REF(signal_quick_empty)) + RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_FROM, PROC_REF(signal_hide_attempt)) + RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_ALL, PROC_REF(close_all)) + RegisterSignal(parent, COMSIG_TRY_STORAGE_RETURN_INVENTORY, PROC_REF(signal_return_inv)) + + RegisterSignal(parent, COMSIG_TOPIC, PROC_REF(topic_handle)) + + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(attackby)) + + RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand)) + RegisterSignal(parent, COMSIG_ATOM_ATTACK_PAW, PROC_REF(on_attack_hand)) + RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, PROC_REF(emp_act)) + RegisterSignal(parent, COMSIG_ATOM_ATTACK_GHOST, PROC_REF(show_to_ghost)) + RegisterSignal(parent, COMSIG_ATOM_ENTERED, PROC_REF(refresh_mob_views)) + RegisterSignal(parent, COMSIG_ATOM_EXITED, PROC_REF(_remove_and_refresh)) + RegisterSignal(parent, COMSIG_ATOM_CANREACH, PROC_REF(canreach_react)) + + RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK, PROC_REF(preattack_intercept)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(attack_self)) + RegisterSignal(parent, COMSIG_ITEM_PICKUP, PROC_REF(signal_on_pickup)) + + RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, PROC_REF(close_all)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) + + RegisterSignal(parent, COMSIG_CLICK_ALT, PROC_REF(on_alt_click)) + RegisterSignal(parent, COMSIG_MOUSEDROP_ONTO, PROC_REF(mousedrop_onto)) + RegisterSignal(parent, COMSIG_MOUSEDROPPED_ONTO, PROC_REF(mousedrop_receive)) update_actions() @@ -144,7 +145,7 @@ return var/obj/item/I = parent modeswitch_action = new(I) - RegisterSignal(modeswitch_action, COMSIG_ACTION_TRIGGER, .proc/action_trigger) + RegisterSignal(modeswitch_action, COMSIG_ACTION_TRIGGER, PROC_REF(action_trigger)) if(I.obj_flags & IN_INVENTORY) var/mob/M = I.loc if(!istype(M)) @@ -194,10 +195,10 @@ SIGNAL_HANDLER if(locked) - to_chat(M, "[parent] seems to be locked!") + to_chat(M, "[parent] seems to be [locked_flavor]!") return FALSE if((M.get_active_held_item() == parent) && allow_quick_empty) - INVOKE_ASYNC(src, .proc/quick_empty, M) + INVOKE_ASYNC(src, PROC_REF(quick_empty), M) /datum/component/storage/proc/preattack_intercept(datum/source, obj/O, mob/M, params) SIGNAL_HANDLER @@ -206,7 +207,7 @@ return FALSE . = COMPONENT_NO_ATTACK if(locked) - to_chat(M, "[parent] seems to be locked!") + to_chat(M, "[parent] seems to be [locked_flavor]!") return FALSE var/obj/item/I = O if(collection_mode == COLLECT_ONE) @@ -215,7 +216,7 @@ return if(!isturf(I.loc)) return - INVOKE_ASYNC(src, .proc/async_preattack_intercept, I, M) + INVOKE_ASYNC(src, PROC_REF(async_preattack_intercept), I, M) ///async functionality from preattack_intercept /datum/component/storage/proc/async_preattack_intercept(obj/item/I, mob/M) @@ -228,7 +229,7 @@ return var/datum/progressbar/progress = new(M, len, I.loc) var/list/rejections = list() - while(do_after(M, 10, TRUE, parent, FALSE, CALLBACK(src, .proc/handle_mass_pickup, things, I.loc, rejections, progress))) + while(do_after(M, 10, TRUE, parent, FALSE, CALLBACK(src, PROC_REF(handle_mass_pickup), things, I.loc, rejections, progress))) stoplag(1) progress.end_progress() to_chat(M, "You put everything you could [insert_preposition] [parent].") @@ -279,14 +280,14 @@ if(!M.canUseStorage() || !A.Adjacent(M) || M.incapacitated()) return if(locked) - to_chat(M, "[parent] seems to be locked!") + to_chat(M, "[parent] seems to be [locked_flavor]!") return FALSE A.add_fingerprint(M) to_chat(M, "You start dumping out [parent].") var/turf/T = get_turf(A) var/list/things = contents() var/datum/progressbar/progress = new(M, length(things), T) - while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress))) + while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, PROC_REF(mass_remove_from_storage), T, things, progress))) stoplag(1) progress.end_progress() @@ -405,20 +406,27 @@ M.client.screen |= boxes M.client.screen |= closer M.client.screen |= real_location.contents - M.active_storage = src + M.set_active_storage(src) LAZYOR(is_using, M) + RegisterSignal(M, COMSIG_PARENT_QDELETING, PROC_REF(mob_deleted)) return TRUE +/datum/component/storage/proc/mob_deleted(datum/source) + SIGNAL_HANDLER + hide_from(source) + /datum/component/storage/proc/hide_from(mob/M) + if(M.active_storage == src) + M.set_active_storage(null) + LAZYREMOVE(is_using, M) + + UnregisterSignal(M, COMSIG_PARENT_QDELETING) if(!M.client) return TRUE var/atom/real_location = real_location() M.client.screen -= boxes M.client.screen -= closer M.client.screen -= real_location.contents - if(M.active_storage == src) - M.active_storage = null - LAZYREMOVE(is_using, M) return TRUE /datum/component/storage/proc/close(mob/M) @@ -498,6 +506,7 @@ cansee |= M else LAZYREMOVE(is_using, M) + UnregisterSignal(M, COMSIG_PARENT_QDELETING) return cansee //Tries to dump content @@ -506,7 +515,7 @@ var/atom/dump_destination = dest_object.get_dumping_location() if(A.Adjacent(M) && dump_destination && M.Adjacent(dump_destination)) if(locked) - to_chat(M, "[parent] seems to be locked!") + to_chat(M, "[parent] seems to be [locked_flavor]!") return FALSE if(dump_destination.storage_contents_dump_act(src, M)) playsound(A, "rustle", 50, TRUE, -5) @@ -583,10 +592,8 @@ // this must come before the screen objects only block, dunno why it wasn't before if(over_object == M) user_show_to_mob(M) - if(use_sound) - playsound(A, use_sound, 50, TRUE, -5) if(!istype(over_object, /atom/movable/screen)) - INVOKE_ASYNC(src, .proc/dump_content_at, over_object, M) + INVOKE_ASYNC(src, PROC_REF(dump_content_at), over_object, M) return if(A.loc != M) return @@ -597,15 +604,17 @@ return A.add_fingerprint(M) -/datum/component/storage/proc/user_show_to_mob(mob/M, force = FALSE) +/datum/component/storage/proc/user_show_to_mob(mob/M, force = FALSE, silent = FALSE) var/atom/A = parent if(!istype(M)) return FALSE A.add_fingerprint(M) if(locked && !force) - to_chat(M, "[parent] seems to be locked!") + to_chat(M, "[parent] seems to be [locked_flavor]!") return FALSE if(force || M.CanReach(parent, view_only = TRUE)) + if(use_sound && !silent) + playsound(A, use_sound, 50, TRUE, -5) show_to(M) /datum/component/storage/proc/mousedrop_receive(datum/source, atom/movable/O, mob/M) @@ -633,7 +642,7 @@ if(locked) if(M && !stop_messages) host.add_fingerprint(M) - to_chat(M, "[host] seems to be locked!") + to_chat(M, "[host] seems to be [locked_flavor]!") return FALSE if(real_location.contents.len >= max_items) if(!stop_messages) @@ -730,7 +739,7 @@ /datum/component/storage/proc/show_to_ghost(datum/source, mob/dead/observer/M) SIGNAL_HANDLER - return user_show_to_mob(M, TRUE) + return user_show_to_mob(M, TRUE, TRUE) /datum/component/storage/proc/signal_show_attempt(datum/source, mob/showto, force = FALSE) SIGNAL_HANDLER @@ -799,19 +808,19 @@ var/mob/living/carbon/human/H = user if(H.l_store == A && !H.get_active_held_item()) //Prevents opening if it's in a pocket. . = COMPONENT_NO_ATTACK_HAND - INVOKE_ASYNC(H, /mob.proc/put_in_hands, A) + INVOKE_ASYNC(H, TYPE_PROC_REF(/mob, put_in_hands), A) H.l_store = null return if(H.r_store == A && !H.get_active_held_item()) . = COMPONENT_NO_ATTACK_HAND - INVOKE_ASYNC(H, /mob.proc/put_in_hands, A) + INVOKE_ASYNC(H, TYPE_PROC_REF(/mob, put_in_hands), A) H.r_store = null return if(A.loc == user) . = COMPONENT_NO_ATTACK_HAND if(locked) - to_chat(user, "[parent] seems to be locked!") + to_chat(user, "[parent] seems to be [locked_flavor]!") else show_to(user) if(use_sound) @@ -844,21 +853,19 @@ /datum/component/storage/proc/on_alt_click(datum/source, mob/user) SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/on_alt_click_async, source, user) + INVOKE_ASYNC(src, PROC_REF(on_alt_click_async), source, user) /datum/component/storage/proc/on_alt_click_async(datum/source, mob/user) if(!isliving(user) || !user.CanReach(parent) || user.incapacitated()) return if(locked) - to_chat(user, "[parent] seems to be locked!") + to_chat(user, "[parent] seems to be [locked_flavor]!") return var/atom/A = parent if(!quickdraw) A.add_fingerprint(user) user_show_to_mob(user) - if(use_sound) - playsound(A, use_sound, 50, TRUE, -5) return var/obj/item/I = locate() in real_location() diff --git a/code/datums/components/summoning.dm b/code/datums/components/summoning.dm index 9109e26b3003..bd335cbcbaad 100644 --- a/code/datums/components/summoning.dm +++ b/code/datums/components/summoning.dm @@ -24,11 +24,11 @@ /datum/component/summoning/RegisterWithParent() if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc - RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit) + RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, PROC_REF(projectile_hit)) else if(isitem(parent)) - RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack) + RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(item_afterattack)) else if(ishostile(parent)) - RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget) + RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, PROC_REF(hostile_attackingtarget)) /datum/component/summoning/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT)) @@ -66,7 +66,7 @@ spawned_mobs += L if(faction != null) L.faction = faction - RegisterSignal(L, COMSIG_MOB_DEATH, .proc/on_spawned_death) // so we can remove them from the list, etc (for mobs with corpses) + RegisterSignal(L, COMSIG_MOB_DEATH, PROC_REF(on_spawned_death)) // so we can remove them from the list, etc (for mobs with corpses) playsound(spawn_location,spawn_sound, 50, TRUE) spawn_location.visible_message("[L] [spawn_text].") diff --git a/code/datums/components/swarming.dm b/code/datums/components/swarming.dm index e45c792f433e..1fa269b56f6f 100644 --- a/code/datums/components/swarming.dm +++ b/code/datums/components/swarming.dm @@ -4,8 +4,8 @@ var/is_swarming = FALSE var/list/swarm_members = list() var/static/list/swarming_loc_connections = list( - COMSIG_ATOM_EXITED =.proc/leave_swarm, \ - COMSIG_ATOM_ENTERED = .proc/join_swarm \ + COMSIG_ATOM_EXITED = PROC_REF(leave_swarm), \ + COMSIG_ATOM_ENTERED = PROC_REF(join_swarm) \ ) /datum/component/swarming/Initialize(max_x = 24, max_y = 24) diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm index 0803102bc4f8..5c99377230c0 100644 --- a/code/datums/components/tackle.dm +++ b/code/datums/components/tackle.dm @@ -30,7 +30,7 @@ ///Some gloves, generally ones that increase mobility, may have a minimum distance to fly. Rocket gloves are especially dangerous with this, be sure you'll hit your target or have a clear background if you miss, or else! var/min_distance ///The throwdatum we're currently dealing with, if we need it - var/datum/thrownthing/tackle + var/datum/weakref/tackle_ref /datum/component/tackler/Initialize(stamina_cost = 25, base_knockdown = 1 SECONDS, range = 4, speed = 1, skill_mod = 0, min_distance = min_distance) if(!iscarbon(parent)) @@ -46,26 +46,27 @@ var/mob/P = parent to_chat(P, "You are now able to launch tackles! You can do so by activating throw intent, and clicking on your target with an empty hand.") - addtimer(CALLBACK(src, .proc/resetTackle), base_knockdown, TIMER_STOPPABLE) + addtimer(CALLBACK(src, PROC_REF(resetTackle)), base_knockdown, TIMER_STOPPABLE) /datum/component/tackler/Destroy() var/mob/P = parent to_chat(P, "You can no longer tackle.") - ..() + return ..() /datum/component/tackler/RegisterWithParent() - RegisterSignal(parent, COMSIG_MOB_CLICKON, .proc/checkTackle) - RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, .proc/sack) - RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, .proc/registerTackle) + RegisterSignal(parent, COMSIG_MOB_CLICKON, PROC_REF(checkTackle)) + RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, PROC_REF(sack)) + RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, PROC_REF(registerTackle)) /datum/component/tackler/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_MOB_CLICKON, COMSIG_MOVABLE_IMPACT, COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_POST_THROW)) ///Store the thrownthing datum for later use -/datum/component/tackler/proc/registerTackle(mob/living/carbon/user, datum/thrownthing/TT) +/datum/component/tackler/proc/registerTackle(mob/living/carbon/user, datum/thrownthing/tackle) SIGNAL_HANDLER - tackle = TT + tackle_ref = WEAKREF(tackle) + tackle.thrower = user ///See if we can tackle or not. If we can, leap! /datum/component/tackler/proc/checkTackle(mob/living/carbon/user, atom/A, params) @@ -105,7 +106,7 @@ tackling = TRUE user.throw_mode_off(THROW_MODE_TOGGLE) - RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/checkObstacle) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(checkObstacle)) playsound(user, 'sound/weapons/thudswoosh.ogg', 40, TRUE, -1) if(can_see(user, A, 7)) @@ -119,7 +120,7 @@ user.Knockdown(base_knockdown, ignore_canstun = TRUE) user.adjustStaminaLoss(stamina_cost) user.throw_at(A, range, speed, user, FALSE) - addtimer(CALLBACK(src, .proc/resetTackle), base_knockdown, TIMER_STOPPABLE) + addtimer(CALLBACK(src, PROC_REF(resetTackle)), base_knockdown, TIMER_STOPPABLE) return(COMSIG_MOB_CANCEL_CLICKON) /** @@ -145,12 +146,14 @@ /datum/component/tackler/proc/sack(mob/living/carbon/user, atom/hit) SIGNAL_HANDLER + var/datum/thrownthing/tackle = tackle_ref?.resolve() if(!tackling || !tackle) + tackle = null return if(!iscarbon(hit)) if(hit.density) - INVOKE_ASYNC(src, .proc/splat, user, hit) + INVOKE_ASYNC(src, PROC_REF(splat), user, hit) return var/mob/living/carbon/target = hit @@ -180,7 +183,7 @@ user.Knockdown(30) if(ishuman(target) && !T.has_movespeed_modifier(/datum/movespeed_modifier/shove)) T.add_movespeed_modifier(/datum/movespeed_modifier/shove) // maybe define a slightly more severe/longer slowdown for this - addtimer(CALLBACK(T, /mob/living/carbon/proc/clear_shove_slowdown), SHOVE_SLOWDOWN_LENGTH) + addtimer(CALLBACK(T, TYPE_PROC_REF(/mob/living/carbon, clear_shove_slowdown)), SHOVE_SLOWDOWN_LENGTH) if(-1 to 0) // decent hit, both parties are about equally inconvenienced user.visible_message("[user] lands a passable tackle on [target], sending them both tumbling!", "You land a passable tackle on [target], sending you both tumbling!", target) @@ -210,7 +213,7 @@ target.Paralyze(5) target.Knockdown(30) if(ishuman(target) && ishuman(user)) - INVOKE_ASYNC(S.dna.species, /datum/species.proc/grab, S, T) + INVOKE_ASYNC(S.dna.species, TYPE_PROC_REF(/datum/species, grab), S, T) S.setGrabState(GRAB_PASSIVE) if(5 to INFINITY) // absolutely BODIED @@ -223,7 +226,7 @@ target.Paralyze(5) target.Knockdown(30) if(ishuman(target) && ishuman(user)) - INVOKE_ASYNC(S.dna.species, /datum/species.proc/grab, S, T) + INVOKE_ASYNC(S.dna.species, TYPE_PROC_REF(/datum/species, grab), S, T) S.setGrabState(GRAB_AGGRESSIVE) @@ -422,7 +425,7 @@ /datum/component/tackler/proc/resetTackle() tackling = FALSE - QDEL_NULL(tackle) + QDEL_NULL(tackle_ref) UnregisterSignal(parent, COMSIG_MOVABLE_MOVED) ///A special case for splatting for handling windows @@ -508,8 +511,11 @@ I.throw_at(get_ranged_target_turf(I, pick(GLOB.alldirs), range = dist), range = dist, speed = sp) I.visible_message("[I] goes flying[sp > 3 ? " dangerously fast" : ""]!") // standard embed speed + var/datum/thrownthing/tackle = tackle_ref?.resolve() + playsound(owner, 'sound/weapons/smash.ogg', 70, TRUE) - tackle.finalize(hit=TRUE) + if(tackle) + tackle.finalize(hit=TRUE) resetTackle() #undef MAX_TABLE_MESSES diff --git a/code/datums/components/tactical.dm b/code/datums/components/tactical.dm index d1941f8a72fd..f673abcf7bb0 100644 --- a/code/datums/components/tactical.dm +++ b/code/datums/components/tactical.dm @@ -8,8 +8,8 @@ src.allowed_slot = allowed_slot /datum/component/tactical/RegisterWithParent() - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/modify) - RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/unmodify) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(modify)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(unmodify)) /datum/component/tactical/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED)) diff --git a/code/datums/components/taped.dm b/code/datums/components/taped.dm index 32d5120c72e0..fc18ec5fd876 100644 --- a/code/datums/components/taped.dm +++ b/code/datums/components/taped.dm @@ -29,8 +29,8 @@ set_tape(added_integrity) /datum/component/taped/RegisterWithParent() - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/tape_rip) - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine_tape) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(tape_rip)) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine_tape)) /datum/component/taped/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_PARENT_ATTACKBY, COMSIG_PARENT_EXAMINE)) diff --git a/code/datums/components/tether.dm b/code/datums/components/tether.dm index a458db2f2571..c6d9ac02947c 100644 --- a/code/datums/components/tether.dm +++ b/code/datums/components/tether.dm @@ -14,7 +14,7 @@ src.tether_name = initial(tmp.name) else src.tether_name = tether_name - RegisterSignal(parent, list(COMSIG_MOVABLE_PRE_MOVE), .proc/checkTether) + RegisterSignal(parent, list(COMSIG_MOVABLE_PRE_MOVE), PROC_REF(checkTether)) /datum/component/tether/proc/checkTether(mob/mover, newloc) SIGNAL_HANDLER diff --git a/code/datums/components/thermite.dm b/code/datums/components/thermite.dm index 23f020adb7f0..ac9e468b10ae 100644 --- a/code/datums/components/thermite.dm +++ b/code/datums/components/thermite.dm @@ -38,9 +38,9 @@ overlay = mutable_appearance('icons/effects/effects.dmi', "thermite") master.add_overlay(overlay) - RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_react) - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attackby_react) - RegisterSignal(parent, COMSIG_ATOM_FIRE_ACT, .proc/flame_react) + RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_react)) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(attackby_react)) + RegisterSignal(parent, COMSIG_ATOM_FIRE_ACT, PROC_REF(flame_react)) /datum/component/thermite/UnregisterFromParent() UnregisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT) @@ -65,7 +65,7 @@ master.cut_overlay(overlay) playsound(master, 'sound/items/welder.ogg', 100, TRUE) var/obj/effect/overlay/thermite/fakefire = new(master) - addtimer(CALLBACK(src, .proc/burn_parent, fakefire, user), min(amount * 0.35 SECONDS, 20 SECONDS)) + addtimer(CALLBACK(src, PROC_REF(burn_parent), fakefire, user), min(amount * 0.35 SECONDS, 20 SECONDS)) UnregisterFromParent() /datum/component/thermite/proc/burn_parent(datum/fakefire, mob/user) diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm index 88cc0d190014..51c9268d13ab 100644 --- a/code/datums/components/twohanded.dm +++ b/code/datums/components/twohanded.dm @@ -69,13 +69,13 @@ // register signals withthe parent item /datum/component/two_handed/RegisterWithParent() - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) - RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) - RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/on_attack_self) - RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/on_attack) - RegisterSignal(parent, COMSIG_ATOM_UPDATE_ICON, .proc/on_update_icon) - RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_moved) - RegisterSignal(parent, COMSIG_ITEM_SHARPEN_ACT, .proc/on_sharpen) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(on_attack_self)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(on_attack)) + RegisterSignal(parent, COMSIG_ATOM_UPDATE_ICON, PROC_REF(on_update_icon)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + RegisterSignal(parent, COMSIG_ITEM_SHARPEN_ACT, PROC_REF(on_sharpen)) // Remove all siginals registered to the parent item /datum/component/two_handed/UnregisterFromParent() @@ -145,7 +145,7 @@ if(SEND_SIGNAL(parent, COMSIG_TWOHANDED_WIELD, user) & COMPONENT_TWOHANDED_BLOCK_WIELD) return // blocked wield from item wielded = TRUE - RegisterSignal(user, COMSIG_MOB_SWAP_HANDS, .proc/on_swap_hands) + RegisterSignal(user, COMSIG_MOB_SWAP_HANDS, PROC_REF(on_swap_hands)) // update item stats and name var/obj/item/parent_item = parent @@ -172,7 +172,7 @@ offhand_item.name = "[parent_item.name] - offhand" offhand_item.desc = "Your second grip on [parent_item]." offhand_item.wielded = TRUE - RegisterSignal(offhand_item, COMSIG_ITEM_DROPPED, .proc/on_drop) + RegisterSignal(offhand_item, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) user.put_in_inactive_hand(offhand_item) /** diff --git a/code/datums/components/udder.dm b/code/datums/components/udder.dm index 886b2c1b12f7..3b47efa3fcd0 100644 --- a/code/datums/components/udder.dm +++ b/code/datums/components/udder.dm @@ -17,8 +17,8 @@ src.on_milk_callback = on_milk_callback /datum/component/udder/RegisterWithParent() - RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_examine) - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/on_attackby) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(on_attackby)) /datum/component/udder/UnregisterFromParent() QDEL_NULL(udder) @@ -72,6 +72,8 @@ ///type of reagent this udder will generate /obj/item/udder/Initialize(mapload, udder_mob, on_generate_callback, reagent_produced_typepath = /datum/reagent/consumable/milk) + if(!udder_mob) + return INITIALIZE_HINT_QDEL src.udder_mob = udder_mob src.on_generate_callback = on_generate_callback create_reagents(size) @@ -82,6 +84,7 @@ /obj/item/udder/Destroy() . = ..() STOP_PROCESSING(SSobj, src) + udder_mob = null /obj/item/udder/process(delta_time) if(udder_mob.stat != DEAD) @@ -135,11 +138,12 @@ /obj/item/udder/gutlunch/initial_conditions() if(udder_mob.gender == FEMALE) START_PROCESSING(SSobj, src) - RegisterSignal(udder_mob, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/on_mob_attacking) + RegisterSignal(udder_mob, COMSIG_HOSTILE_ATTACKINGTARGET, PROC_REF(on_mob_attacking)) /obj/item/udder/gutlunch/Destroy() + if(udder_mob) + UnregisterSignal(udder_mob, COMSIG_HOSTILE_ATTACKINGTARGET) . = ..() - UnregisterSignal(udder_mob, COMSIG_HOSTILE_ATTACKINGTARGET) /obj/item/udder/gutlunch/process(delta_time) var/mob/living/simple_animal/hostile/asteroid/gutlunch/gutlunch = udder_mob diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm index 8b3e6eb16868..31a9e851a0a1 100644 --- a/code/datums/components/uplink.dm +++ b/code/datums/components/uplink.dm @@ -34,20 +34,20 @@ return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy) - RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/interact) + RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(OnAttackBy)) + RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(interact)) if(istype(parent, /obj/item/implant)) - RegisterSignal(parent, COMSIG_IMPLANT_ACTIVATED, .proc/implant_activation) - RegisterSignal(parent, COMSIG_IMPLANT_IMPLANTING, .proc/implanting) - RegisterSignal(parent, COMSIG_IMPLANT_OTHER, .proc/old_implant) - RegisterSignal(parent, COMSIG_IMPLANT_EXISTING_UPLINK, .proc/new_implant) + RegisterSignal(parent, COMSIG_IMPLANT_ACTIVATED, PROC_REF(implant_activation)) + RegisterSignal(parent, COMSIG_IMPLANT_IMPLANTING, PROC_REF(implanting)) + RegisterSignal(parent, COMSIG_IMPLANT_OTHER, PROC_REF(old_implant)) + RegisterSignal(parent, COMSIG_IMPLANT_EXISTING_UPLINK, PROC_REF(new_implant)) else if(istype(parent, /obj/item/pda)) - RegisterSignal(parent, COMSIG_PDA_CHANGE_RINGTONE, .proc/new_ringtone) - RegisterSignal(parent, COMSIG_PDA_CHECK_DETONATE, .proc/check_detonate) + RegisterSignal(parent, COMSIG_PDA_CHANGE_RINGTONE, PROC_REF(new_ringtone)) + RegisterSignal(parent, COMSIG_PDA_CHECK_DETONATE, PROC_REF(check_detonate)) else if(istype(parent, /obj/item/radio)) - RegisterSignal(parent, COMSIG_RADIO_NEW_FREQUENCY, .proc/new_frequency) + RegisterSignal(parent, COMSIG_RADIO_NEW_FREQUENCY, PROC_REF(new_frequency)) else if(istype(parent, /obj/item/pen)) - RegisterSignal(parent, COMSIG_PEN_ROTATED, .proc/pen_rotation) + RegisterSignal(parent, COMSIG_PEN_ROTATED, PROC_REF(pen_rotation)) uplink_items = get_uplink_items(_gamemode, TRUE, allow_restricted) @@ -120,7 +120,7 @@ return active = TRUE if(user) - INVOKE_ASYNC(src, .proc/ui_interact, user) + INVOKE_ASYNC(src, PROC_REF(ui_interact), user) // an unlocked uplink blocks also opening the PDA or headset menu return COMPONENT_NO_INTERACT diff --git a/code/datums/components/wearertargeting.dm b/code/datums/components/wearertargeting.dm index cbfec78d11f2..0d94e33c3d76 100644 --- a/code/datums/components/wearertargeting.dm +++ b/code/datums/components/wearertargeting.dm @@ -3,14 +3,14 @@ /datum/component/wearertargeting var/list/valid_slots = list() var/list/signals = list() - var/proctype = .proc/pass + var/proctype = PROC_REF(pass) var/mobtype = /mob/living /datum/component/wearertargeting/Initialize() if(!isitem(parent)) return COMPONENT_INCOMPATIBLE - RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip) - RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip)) + RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop)) /datum/component/wearertargeting/proc/on_equip(datum/source, mob/equipper, slot) SIGNAL_HANDLER diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index 9f723b9c07f6..f2c2b0b303ee 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -29,12 +29,12 @@ permanent = _permanent if(!permanent) START_PROCESSING(SSwet_floors, src) - addtimer(CALLBACK(src, .proc/gc, TRUE), 1) //GC after initialization. + addtimer(CALLBACK(src, PROC_REF(gc), TRUE), 1) //GC after initialization. last_process = world.time /datum/component/wet_floor/RegisterWithParent() - RegisterSignal(parent, COMSIG_TURF_IS_WET, .proc/is_wet) - RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, .proc/dry) + RegisterSignal(parent, COMSIG_TURF_IS_WET, PROC_REF(is_wet)) + RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, PROC_REF(dry)) /datum/component/wet_floor/UnregisterFromParent() UnregisterSignal(parent, list(COMSIG_TURF_IS_WET, COMSIG_TURF_MAKE_DRY)) @@ -94,7 +94,7 @@ qdel(parent.GetComponent(/datum/component/slippery)) return - parent.LoadComponent(/datum/component/slippery, intensity, lube_flags, CALLBACK(src, .proc/AfterSlip)) + parent.LoadComponent(/datum/component/slippery, intensity, lube_flags, CALLBACK(src, PROC_REF(AfterSlip))) /datum/component/wet_floor/proc/dry(datum/source, strength = TURF_WET_WATER, immediate = FALSE, duration_decrease = INFINITY) SIGNAL_HANDLER diff --git a/code/datums/dash_weapon.dm b/code/datums/dash_weapon.dm index 0e22a4f350f0..5ba239c26d7a 100644 --- a/code/datums/dash_weapon.dm +++ b/code/datums/dash_weapon.dm @@ -6,7 +6,6 @@ var/current_charges = 1 var/max_charges = 1 var/charge_rate = 250 - var/mob/living/carbon/human/holder var/obj/item/dashing_item var/dash_sound = 'sound/magic/blink.ogg' var/recharge_sound = 'sound/magic/charge.ogg' @@ -17,7 +16,10 @@ /datum/action/innate/dash/Grant(mob/user, obj/dasher) . = ..() dashing_item = dasher - holder = user + +/datum/action/innate/dash/Destroy() + dashing_item = null + return ..() /datum/action/innate/dash/IsAvailable() if(current_charges > 0) @@ -26,7 +28,7 @@ return FALSE /datum/action/innate/dash/Activate() - dashing_item.attack_self(holder) //Used to toggle dash behavior in the dashing item + dashing_item.attack_self(owner) //Used to toggle dash behavior in the dashing item /datum/action/innate/dash/proc/Teleport(mob/user, atom/target) if(!IsAvailable()) @@ -39,12 +41,12 @@ var/obj/spot2 = new phasein(get_turf(user), user.dir) spot1.Beam(spot2,beam_effect,time=20) current_charges-- - holder.update_action_buttons_icon() - addtimer(CALLBACK(src, .proc/charge), charge_rate) + owner.update_action_buttons_icon() + addtimer(CALLBACK(src, PROC_REF(charge)), charge_rate) /datum/action/innate/dash/proc/charge() current_charges = clamp(current_charges + 1, 0, max_charges) - holder.update_action_buttons_icon() + owner.update_action_buttons_icon() if(recharge_sound) playsound(dashing_item, recharge_sound, 50, TRUE) - to_chat(holder, "[src] now has [current_charges]/[max_charges] charges.") + to_chat(owner, "[src] now has [current_charges]/[max_charges] charges.") diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 01fc5d6643e0..73aab2fb8ca8 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -40,12 +40,21 @@ /// Datum level flags var/datum_flags = NONE + /// A cached version of our \ref + /// The brunt of \ref costs are in creating entries in the string tree (a tree of immutable strings) + /// This avoids doing that more then once per datum by ensuring ref strings always have a reference to them after they're first pulled + var/cached_ref + /// A weak reference to another datum var/datum/weakref/weak_reference -#ifdef TESTING +#ifdef REFERENCE_TRACKING var/running_find_references var/last_find_references = 0 + #ifdef REFERENCE_TRACKING_DEBUG + ///Stores info about where refs are found, used for sanity checks and testing + var/list/found_refs + #endif #endif #ifdef DATUMVAR_DEBUGGING_MODE @@ -83,16 +92,21 @@ datum_flags &= ~DF_USE_TAG //In case something tries to REF us weak_reference = null //ensure prompt GCing of weakref. - var/list/timers = active_timers - active_timers = null - for(var/thing as anything in timers) - var/datum/timedevent/timer = thing - if (timer.spent && !(timer.flags & TIMER_DELETE_ME)) - continue - qdel(timer) + if(active_timers) + var/list/timers = active_timers + active_timers = null + for(var/datum/timedevent/timer as anything in timers) + if (timer.spent && !(timer.flags & TIMER_DELETE_ME)) + continue + qdel(timer) - //BEGIN: ECS SHIT + #ifdef REFERENCE_TRACKING + #ifdef REFERENCE_TRACKING_DEBUG + found_refs = null + #endif + #endif + //BEGIN: ECS SHIT var/list/dc = datum_components if(dc) var/all_components = dc[/datum/component] diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm index 1ee6f7d2eb55..547e66855bf6 100644 --- a/code/datums/diseases/advance/symptoms/cough.dm +++ b/code/datums/diseases/advance/symptoms/cough.dm @@ -73,6 +73,6 @@ BONUS if(power >= 2 && prob(30)) to_chat(M, "[pick("You have a coughing fit!", "You can't stop coughing!")]") M.Immobilize(20) - addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 6) - addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 12) - addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 18) + addtimer(CALLBACK(M, TYPE_PROC_REF(/mob, emote), "cough"), 6) + addtimer(CALLBACK(M, TYPE_PROC_REF(/mob, emote), "cough"), 12) + addtimer(CALLBACK(M, TYPE_PROC_REF(/mob, emote), "cough"), 18) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index bdc47a32c3a0..c7e5b5c064ac 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -277,12 +277,12 @@ if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma) to_chat(M, "You feel yourself slip into a regenerative coma...") active_coma = TRUE - addtimer(CALLBACK(src, .proc/coma, M), 60) + addtimer(CALLBACK(src, PROC_REF(coma), M), 60) /datum/symptom/heal/coma/proc/coma(mob/living/M) M.fakedeath("regenerative_coma", !deathgasp) - addtimer(CALLBACK(src, .proc/uncoma, M), 300) + addtimer(CALLBACK(src, PROC_REF(uncoma), M), 300) /datum/symptom/heal/coma/proc/uncoma(mob/living/M) diff --git a/code/datums/diseases/advance/symptoms/shedding.dm b/code/datums/diseases/advance/symptoms/shedding.dm index d1b59edbc1c8..2423208cb072 100644 --- a/code/datums/diseases/advance/symptoms/shedding.dm +++ b/code/datums/diseases/advance/symptoms/shedding.dm @@ -40,11 +40,11 @@ BONUS if(3, 4) if(!(H.hairstyle == "Bald") && !(H.hairstyle == "Balding Hair")) to_chat(H, "Your hair starts to fall out in clumps...") - addtimer(CALLBACK(src, .proc/Shed, H, FALSE), 50) + addtimer(CALLBACK(src, PROC_REF(Shed), H, FALSE), 50) if(5) if(!(H.facial_hairstyle == "Shaved") || !(H.hairstyle == "Bald")) to_chat(H, "Your hair starts to fall out in clumps...") - addtimer(CALLBACK(src, .proc/Shed, H, TRUE), 50) + addtimer(CALLBACK(src, PROC_REF(Shed), H, TRUE), 50) /datum/symptom/shedding/proc/Shed(mob/living/carbon/human/H, fullbald) if(fullbald) diff --git a/code/datums/diseases/parrotpossession.dm b/code/datums/diseases/parrotpossession.dm index 1a3346d5658d..2fb3a3645906 100644 --- a/code/datums/diseases/parrotpossession.dm +++ b/code/datums/diseases/parrotpossession.dm @@ -13,7 +13,7 @@ severity = DISEASE_SEVERITY_MEDIUM infectable_biotypes = MOB_ORGANIC|MOB_UNDEAD|MOB_ROBOTIC|MOB_MINERAL bypasses_immunity = TRUE //2spook - var/mob/living/simple_animal/parrot/Poly/ghost/parrot + var/mob/living/simple_animal/parrot/Polly/ghost/parrot /datum/disease/parrot_possession/stage_act() ..() diff --git a/code/datums/diseases/pierrot_throat.dm b/code/datums/diseases/pierrot_throat.dm index 56261688fc2a..21a780b93665 100644 --- a/code/datums/diseases/pierrot_throat.dm +++ b/code/datums/diseases/pierrot_throat.dm @@ -28,7 +28,7 @@ affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) , forced = "pierrot's throat") /datum/disease/pierrot_throat/after_add() - RegisterSignal(affected_mob, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(affected_mob, COMSIG_MOB_SAY, PROC_REF(handle_speech)) /datum/disease/pierrot_throat/proc/handle_speech(datum/source, list/speech_args) diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index a3884dcf6d3c..6d3959753a9e 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -92,67 +92,6 @@ new_mob.ghostize(can_reenter_corpse = FALSE) new_mob.key = null -/datum/disease/transformation/jungle_fever - name = "Jungle Fever" - cure_text = "Death." - cures = list(/datum/reagent/medicine/adminordrazine) - spread_text = "Monkey Bites" - spread_flags = DISEASE_SPREAD_SPECIAL - viable_mobtypes = list(/mob/living/carbon/monkey, /mob/living/carbon/human) - permeability_mod = 1 - cure_chance = 1 - disease_flags = CAN_CARRY|CAN_RESIST - desc = "Monkeys with this disease will bite humans, causing humans to mutate into a monkey." - severity = DISEASE_SEVERITY_BIOHAZARD - stage_prob = 4 - visibility_flags = 0 - agent = "Kongey Vibrion M-909" - new_form = /mob/living/carbon/monkey - bantype = ROLE_MONKEY - - - stage1 = list() - stage2 = list() - stage3 = list() - stage4 = list("Your back hurts.", "You breathe through your mouth.", - "You have a craving for bananas.", "Your mind feels clouded.") - stage5 = list("You feel like monkeying around.") - -/datum/disease/transformation/jungle_fever/do_disease_transformation(mob/living/carbon/affected_mob) - if(affected_mob.mind && !is_monkey(affected_mob.mind)) - add_monkey(affected_mob.mind) - if(ishuman(affected_mob)) - var/mob/living/carbon/monkey/M = affected_mob.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_KEEPSE) - M.ventcrawler = VENTCRAWLER_ALWAYS - -/datum/disease/transformation/jungle_fever/stage_act() - ..() - switch(stage) - if(2) - if(prob(2)) - to_chat(affected_mob, "Your [pick("back", "arm", "leg", "elbow", "head")] itches.") - if(3) - if(prob(4)) - to_chat(affected_mob, "You feel a stabbing pain in your head.") - affected_mob.confused += 10 - if(4) - if(prob(3)) - affected_mob.say(pick("Eeek, ook ook!", "Eee-eeek!", "Eeee!", "Ungh, ungh."), forced = "jungle fever") - -/datum/disease/transformation/jungle_fever/cure() - remove_monkey(affected_mob.mind) - ..() - -/datum/disease/transformation/jungle_fever/monkeymode - visibility_flags = HIDDEN_SCANNER|HIDDEN_PANDEMIC - disease_flags = CAN_CARRY //no vaccines! no cure! - -/datum/disease/transformation/jungle_fever/monkeymode/after_add() - if(affected_mob && !is_monkey_leader(affected_mob.mind)) - visibility_flags = NONE - - - /datum/disease/transformation/robot name = "Robotic Transformation" diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 60e74d97fb7d..dde90dd5dbe8 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -339,8 +339,8 @@ for(var/datum/quirk/quirk_instance as anything in roundstart_quirks) quirks_to_remove += quirk_instance.type for(var/quirk_name in quirks_resolved) - var/datum/quirk/quirk_instance = SSquirks.quirk_instances[quirk_name] - quirks_resolved += quirk_instance.type + var/datum/quirk/quirk_type = SSquirks.quirks[quirk_name] + quirks_resolved += quirk_type quirks_resolved -= quirk_name quirks_to_remove -= quirks_resolved for(var/quirk_type in quirks_to_remove) @@ -688,12 +688,12 @@ spawn_gibs() set_species(/datum/species/skeleton) if(prob(90)) - addtimer(CALLBACK(src, .proc/death), 30) + addtimer(CALLBACK(src, PROC_REF(death)), 30) if(mind) mind.hasSoul = FALSE if(5) to_chat(src, "LOOK UP!") - addtimer(CALLBACK(src, .proc/something_horrible_mindmelt), 30) + addtimer(CALLBACK(src, PROC_REF(something_horrible_mindmelt)), 30) /mob/living/carbon/human/proc/something_horrible_mindmelt() @@ -704,4 +704,4 @@ eyes.Remove(src) qdel(eyes) visible_message("[src] looks up and their eyes melt away!", "='userdanger'>I understand now.") - addtimer(CALLBACK(src, .proc/adjustOrganLoss, ORGAN_SLOT_BRAIN, 200), 20) + addtimer(CALLBACK(src, PROC_REF(adjustOrganLoss), ORGAN_SLOT_BRAIN, 200), 20) diff --git a/code/datums/ductnet.dm b/code/datums/ductnet.dm index 14a74a67c490..3c109564815e 100644 --- a/code/datums/ductnet.dm +++ b/code/datums/ductnet.dm @@ -15,8 +15,8 @@ /datum/ductnet/proc/remove_duct(obj/machinery/duct/ducting) destroy_network(FALSE) for(var/obj/machinery/duct/D in ducting.neighbours) - addtimer(CALLBACK(D, /obj/machinery/duct/proc/reconnect), 0) //all needs to happen after the original duct that was destroyed finishes destroying itself - addtimer(CALLBACK(D, /obj/machinery/duct/proc/generate_connects), 0) + addtimer(CALLBACK(D, TYPE_PROC_REF(/obj/machinery/duct, reconnect)), 0) //all needs to happen after the original duct that was destroyed finishes destroying itself + addtimer(CALLBACK(D, TYPE_PROC_REF(/obj/machinery/duct, generate_connects)), 0) qdel(src) ///add a plumbing object to either demanders or suppliers /datum/ductnet/proc/add_plumber(datum/component/plumbing/P, dir) diff --git a/code/datums/elements/_element.dm b/code/datums/elements/_element.dm index 55abf0a85de1..e9779644c211 100644 --- a/code/datums/elements/_element.dm +++ b/code/datums/elements/_element.dm @@ -23,7 +23,7 @@ return ELEMENT_INCOMPATIBLE SEND_SIGNAL(target, COMSIG_ELEMENT_ATTACH, src) if(element_flags & ELEMENT_DETACH) - RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/Detach, override = TRUE) + RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(Detach), override = TRUE) /* The override = TRUE here is to suppress runtimes happening because of the blood decal element diff --git a/code/datums/elements/bed_tucking.dm b/code/datums/elements/bed_tucking.dm index 10135871a7ad..c094e5a5b108 100644 --- a/code/datums/elements/bed_tucking.dm +++ b/code/datums/elements/bed_tucking.dm @@ -17,7 +17,7 @@ x_offset = x y_offset = y rotation_degree = rotation - RegisterSignal(target, COMSIG_ITEM_ATTACK_OBJ, .proc/tuck_into_bed) + RegisterSignal(target, COMSIG_ITEM_ATTACK_OBJ, PROC_REF(tuck_into_bed)) /datum/element/bed_tuckable/Detach(obj/target) . = ..() @@ -44,7 +44,7 @@ tucked.pixel_y = y_offset if(rotation_degree) tucked.transform = turn(tucked.transform, rotation_degree) - RegisterSignal(tucked, COMSIG_ITEM_PICKUP, .proc/untuck) + RegisterSignal(tucked, COMSIG_ITEM_PICKUP, PROC_REF(untuck)) return COMPONENT_NO_AFTERATTACK diff --git a/code/datums/elements/bsa_blocker.dm b/code/datums/elements/bsa_blocker.dm index 5bdf4fa90912..96606a553096 100644 --- a/code/datums/elements/bsa_blocker.dm +++ b/code/datums/elements/bsa_blocker.dm @@ -3,7 +3,7 @@ /datum/element/bsa_blocker/Attach(datum/target) if(!isatom(target)) return ELEMENT_INCOMPATIBLE - RegisterSignal(target, COMSIG_ATOM_BSA_BEAM, .proc/block_bsa) + RegisterSignal(target, COMSIG_ATOM_BSA_BEAM, PROC_REF(block_bsa)) return ..() /datum/element/bsa_blocker/proc/block_bsa() diff --git a/code/datums/elements/cleaning.dm b/code/datums/elements/cleaning.dm index 1f9eb15ea1c8..c43c36902af5 100644 --- a/code/datums/elements/cleaning.dm +++ b/code/datums/elements/cleaning.dm @@ -2,7 +2,7 @@ . = ..() if(!ismovable(target)) return ELEMENT_INCOMPATIBLE - RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/Clean) + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(Clean)) /datum/element/cleaning/Detach(datum/target) . = ..() diff --git a/code/datums/elements/connect_loc.dm b/code/datums/elements/connect_loc.dm index fee9072f751d..a0614dd12e0d 100644 --- a/code/datums/elements/connect_loc.dm +++ b/code/datums/elements/connect_loc.dm @@ -1,7 +1,7 @@ /// This element hooks a signal onto the loc the current object is on. /// When the object moves, it will unhook the signal and rehook it to the new object. /datum/element/connect_loc - element_flags = ELEMENT_BESPOKE + element_flags = ELEMENT_BESPOKE | ELEMENT_DETACH id_arg_index = 2 /// An assoc list of signal -> procpath to register to the loc this object is on. @@ -14,7 +14,7 @@ src.connections = connections - RegisterSignal(listener, COMSIG_MOVABLE_MOVED, .proc/on_moved, override = TRUE) + RegisterSignal(listener, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved), override = TRUE) update_signals(listener) /datum/element/connect_loc/Detach(atom/movable/listener) diff --git a/code/datums/elements/decals/_decals.dm b/code/datums/elements/decals/_decals.dm index 17ba311bc5a3..96c5d6a5fab3 100644 --- a/code/datums/elements/decals/_decals.dm +++ b/code/datums/elements/decals/_decals.dm @@ -24,21 +24,21 @@ cleanable = _cleanable rotated = _rotated - RegisterSignal(target,COMSIG_ATOM_UPDATE_OVERLAYS,.proc/apply_overlay, TRUE) + RegisterSignal(target,COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(apply_overlay), TRUE) if(isturf(target)) - RegisterSignal(target,COMSIG_TURF_AFTER_SHUTTLE_MOVE,.proc/shuttlemove_react, TRUE) + RegisterSignal(target,COMSIG_TURF_AFTER_SHUTTLE_MOVE, PROC_REF(shuttlemove_react), TRUE) if(target.flags_1 & INITIALIZED_1) target.update_appearance() //could use some queuing here now maybe. else - RegisterSignal(target,COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE,.proc/late_update_icon, TRUE) + RegisterSignal(target,COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE, PROC_REF(late_update_icon), TRUE) if(isitem(target)) - INVOKE_ASYNC(target, /obj/item/.proc/update_slot_icon, TRUE) + INVOKE_ASYNC(target, TYPE_PROC_REF(/obj/item, update_slot_icon), TRUE) if(_dir) - RegisterSignal(target, COMSIG_ATOM_DIR_CHANGE, .proc/rotate_react,TRUE) + RegisterSignal(target, COMSIG_ATOM_DIR_CHANGE, PROC_REF(rotate_react),TRUE) if(_cleanable) - RegisterSignal(target, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_react,TRUE) + RegisterSignal(target, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_react),TRUE) if(_description) - RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/examine,TRUE) + RegisterSignal(target, COMSIG_PARENT_EXAMINE, PROC_REF(examine),TRUE) /** * ## generate_appearance @@ -63,7 +63,7 @@ UnregisterSignal(source, list(COMSIG_ATOM_DIR_CHANGE, COMSIG_COMPONENT_CLEAN_ACT, COMSIG_PARENT_EXAMINE, COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_TURF_AFTER_SHUTTLE_MOVE)) source.update_appearance() if(isitem(source)) - INVOKE_ASYNC(source, /obj/item/.proc/update_slot_icon) + INVOKE_ASYNC(source, TYPE_PROC_REF(/obj/item, update_slot_icon)) return ..() /datum/element/decal/proc/late_update_icon(atom/source) diff --git a/code/datums/elements/decals/blood.dm b/code/datums/elements/decals/blood.dm index d5f30c4d0c57..a2a7245eea9a 100644 --- a/code/datums/elements/decals/blood.dm +++ b/code/datums/elements/decals/blood.dm @@ -5,7 +5,7 @@ return ELEMENT_INCOMPATIBLE . = ..() - RegisterSignal(target, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name, TRUE) + RegisterSignal(target, COMSIG_ATOM_GET_EXAMINE_NAME, PROC_REF(get_examine_name), TRUE) /datum/element/decal/blood/Detach(atom/source, force) UnregisterSignal(source, COMSIG_ATOM_GET_EXAMINE_NAME) diff --git a/code/datums/elements/digitalcamo.dm b/code/datums/elements/digitalcamo.dm index 8c9b5e88a5a9..de0520b5bbab 100644 --- a/code/datums/elements/digitalcamo.dm +++ b/code/datums/elements/digitalcamo.dm @@ -10,8 +10,8 @@ . = ..() if(!isliving(target) || (target in attached_mobs)) return ELEMENT_INCOMPATIBLE - RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_examine) - RegisterSignal(target, COMSIG_LIVING_CAN_TRACK, .proc/can_track) + RegisterSignal(target, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(target, COMSIG_LIVING_CAN_TRACK, PROC_REF(can_track)) var/image/img = image(loc = target) img.override = TRUE attached_mobs[target] = img diff --git a/code/datums/elements/dunkable.dm b/code/datums/elements/dunkable.dm index 8ba38a515dad..1eaee1d8cbbc 100644 --- a/code/datums/elements/dunkable.dm +++ b/code/datums/elements/dunkable.dm @@ -10,7 +10,7 @@ if(!isitem(target)) return ELEMENT_INCOMPATIBLE dunk_amount = amount_per_dunk - RegisterSignal(target, COMSIG_ITEM_AFTERATTACK, .proc/get_dunked) + RegisterSignal(target, COMSIG_ITEM_AFTERATTACK, PROC_REF(get_dunked)) /datum/element/dunkable/Detach(datum/target) . = ..() diff --git a/code/datums/elements/earhealing.dm b/code/datums/elements/earhealing.dm index d62a6fb9101a..8fc916c99c14 100644 --- a/code/datums/elements/earhealing.dm +++ b/code/datums/elements/earhealing.dm @@ -10,7 +10,7 @@ if(!isitem(target)) return ELEMENT_INCOMPATIBLE - RegisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), .proc/equippedChanged) + RegisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), PROC_REF(equippedChanged)) /datum/element/earhealing/Detach(datum/target) . = ..() diff --git a/code/datums/elements/embed.dm b/code/datums/elements/embed.dm index 40b7d38d65a4..9b427b6b80c5 100644 --- a/code/datums/elements/embed.dm +++ b/code/datums/elements/embed.dm @@ -38,12 +38,12 @@ return ELEMENT_INCOMPATIBLE if(isitem(target)) - RegisterSignal(target, COMSIG_MOVABLE_IMPACT_ZONE, .proc/checkEmbedMob) - RegisterSignal(target, COMSIG_MOVABLE_IMPACT, .proc/checkEmbedOther) - RegisterSignal(target, COMSIG_ELEMENT_ATTACH, .proc/severancePackage) - RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/examined) - RegisterSignal(target, COMSIG_EMBED_TRY_FORCE, .proc/tryForceEmbed) - RegisterSignal(target, COMSIG_ITEM_DISABLE_EMBED, .proc/detachFromWeapon) + RegisterSignal(target, COMSIG_MOVABLE_IMPACT_ZONE, PROC_REF(checkEmbedMob)) + RegisterSignal(target, COMSIG_MOVABLE_IMPACT, PROC_REF(checkEmbedOther)) + RegisterSignal(target, COMSIG_ELEMENT_ATTACH, PROC_REF(severancePackage)) + RegisterSignal(target, COMSIG_PARENT_EXAMINE, PROC_REF(examined)) + RegisterSignal(target, COMSIG_EMBED_TRY_FORCE, PROC_REF(tryForceEmbed)) + RegisterSignal(target, COMSIG_ITEM_DISABLE_EMBED, PROC_REF(detachFromWeapon)) if(!initialized) src.embed_chance = embed_chance src.fall_chance = fall_chance @@ -60,7 +60,7 @@ initialized = TRUE else payload_type = projectile_payload - RegisterSignal(target, COMSIG_PROJECTILE_SELF_ON_HIT, .proc/checkEmbedProjectile) + RegisterSignal(target, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(checkEmbedProjectile)) /datum/element/embed/Detach(obj/target) diff --git a/code/datums/elements/firestacker.dm b/code/datums/elements/firestacker.dm index de829098637a..9646579a83ca 100644 --- a/code/datums/elements/firestacker.dm +++ b/code/datums/elements/firestacker.dm @@ -15,10 +15,10 @@ src.amount = amount - RegisterSignal(target, COMSIG_MOVABLE_IMPACT, .proc/impact, override = TRUE) + RegisterSignal(target, COMSIG_MOVABLE_IMPACT, PROC_REF(impact), override = TRUE) if(isitem(target)) - RegisterSignal(target, COMSIG_ITEM_ATTACK, .proc/item_attack, override = TRUE) - RegisterSignal(target, COMSIG_ITEM_ATTACK_SELF, .proc/item_attack_self, override = TRUE) + RegisterSignal(target, COMSIG_ITEM_ATTACK, PROC_REF(item_attack), override = TRUE) + RegisterSignal(target, COMSIG_ITEM_ATTACK_SELF, PROC_REF(item_attack_self), override = TRUE) /datum/element/firestacker/Detach(datum/source, force) . = ..() diff --git a/code/datums/elements/forced_gravity.dm b/code/datums/elements/forced_gravity.dm index b184aa989cb0..b7bccea7ff02 100644 --- a/code/datums/elements/forced_gravity.dm +++ b/code/datums/elements/forced_gravity.dm @@ -9,17 +9,24 @@ if(!isatom(target)) return ELEMENT_INCOMPATIBLE + var/our_ref = REF(src) + if(HAS_TRAIT_FROM(target, TRAIT_FORCED_GRAVITY, our_ref)) + return + src.gravity = gravity src.ignore_space = ignore_space - RegisterSignal(target, COMSIG_ATOM_HAS_GRAVITY, .proc/gravity_check) + RegisterSignal(target, COMSIG_ATOM_HAS_GRAVITY, PROC_REF(gravity_check)) if(isturf(target)) - RegisterSignal(target, COMSIG_TURF_HAS_GRAVITY, .proc/turf_gravity_check) + RegisterSignal(target, COMSIG_TURF_HAS_GRAVITY, PROC_REF(turf_gravity_check)) + + ADD_TRAIT(target, TRAIT_FORCED_GRAVITY, our_ref) /datum/element/forced_gravity/Detach(datum/source, force) . = ..() var/static/list/signals_b_gone = list(COMSIG_ATOM_HAS_GRAVITY, COMSIG_TURF_HAS_GRAVITY) UnregisterSignal(source, signals_b_gone) + REMOVE_TRAIT(source, TRAIT_FORCED_GRAVITY, REF(src)) /datum/element/forced_gravity/proc/gravity_check(datum/source, turf/location, list/gravs) SIGNAL_HANDLER diff --git a/code/datums/elements/lazy_fishing_spot.dm b/code/datums/elements/lazy_fishing_spot.dm index 603cd56e22fb..f8c4cfa80134 100644 --- a/code/datums/elements/lazy_fishing_spot.dm +++ b/code/datums/elements/lazy_fishing_spot.dm @@ -12,7 +12,7 @@ CRASH("Lazy fishing spot had no configuration passed in.") src.configuration = configuration - RegisterSignal(target, COMSIG_PRE_FISHING, .proc/create_fishing_spot) + RegisterSignal(target, COMSIG_PRE_FISHING, PROC_REF(create_fishing_spot)) /datum/element/lazy_fishing_spot/Detach(datum/target) UnregisterSignal(target, COMSIG_PRE_FISHING) diff --git a/code/datums/elements/light_blocking.dm b/code/datums/elements/light_blocking.dm index 69b6beffe6a1..2c73a082625a 100644 --- a/code/datums/elements/light_blocking.dm +++ b/code/datums/elements/light_blocking.dm @@ -9,7 +9,7 @@ . = ..() if(!ismovable(target)) return ELEMENT_INCOMPATIBLE - RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/on_target_move) + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_target_move)) var/atom/movable/movable_target = target if(isturf(movable_target.loc)) var/turf/turf_loc = movable_target.loc diff --git a/code/datums/elements/mobappearance.dm b/code/datums/elements/mobappearance.dm index 41b94755389f..4d8cc6eb2877 100644 --- a/code/datums/elements/mobappearance.dm +++ b/code/datums/elements/mobappearance.dm @@ -23,11 +23,11 @@ mob_appearance(target) target.RemoveElement(/datum/element/appearance_on_login) else - RegisterSignal(target, COMSIG_MOB_LOGIN, .proc/on_mob_login) + RegisterSignal(target, COMSIG_MOB_LOGIN, PROC_REF(on_mob_login)) /datum/element/appearance_on_login/proc/on_mob_login(mob/source) SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/mob_appearance, source) + INVOKE_ASYNC(src, PROC_REF(mob_appearance), source) UnregisterSignal(source, COMSIG_MOB_LOGIN) source.RemoveElement(/datum/element/appearance_on_login) @@ -40,7 +40,7 @@ /datum/element/appearance_on_login/proc/mob_appearance(mob/living/simple_animal/target) - var/picked_icon = show_radial_menu(target, target, icon_list, custom_check = CALLBACK(src, .proc/check_menu, target), radius = 38, require_near = TRUE) + var/picked_icon = show_radial_menu(target, target, icon_list, custom_check = CALLBACK(src, PROC_REF(check_menu), target), radius = 38, require_near = TRUE) if(picked_icon) target.icon_state = "[picked_icon]" target.icon_living = "[picked_icon]" diff --git a/code/datums/elements/renamemob.dm b/code/datums/elements/renamemob.dm index bbc1fb99a7c2..909f55adc3e9 100644 --- a/code/datums/elements/renamemob.dm +++ b/code/datums/elements/renamemob.dm @@ -8,11 +8,11 @@ rename_mob(target) target.RemoveElement(/datum/element/rename_on_login) else - RegisterSignal(target, COMSIG_MOB_LOGIN, .proc/on_mob_login) + RegisterSignal(target, COMSIG_MOB_LOGIN, PROC_REF(on_mob_login)) /datum/element/rename_on_login/proc/on_mob_login(mob/source) SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/rename_mob, source) + INVOKE_ASYNC(src, PROC_REF(rename_mob), source) UnregisterSignal(source, COMSIG_MOB_LOGIN) source.RemoveElement(/datum/element/rename_on_login) diff --git a/code/datums/elements/selfknockback.dm b/code/datums/elements/selfknockback.dm index c99f8ab4cc26..fe53db1d4207 100644 --- a/code/datums/elements/selfknockback.dm +++ b/code/datums/elements/selfknockback.dm @@ -11,9 +11,9 @@ clamping the Knockback_Force value below. */ /datum/element/selfknockback/Attach(datum/target, throw_amount, speed_amount) . = ..() if(isitem(target)) - RegisterSignal(target, COMSIG_ITEM_AFTERATTACK, .proc/Item_SelfKnockback) + RegisterSignal(target, COMSIG_ITEM_AFTERATTACK, PROC_REF(Item_SelfKnockback)) else if(isprojectile(target)) - RegisterSignal(target, COMSIG_PROJECTILE_FIRE, .proc/Projectile_SelfKnockback) + RegisterSignal(target, COMSIG_PROJECTILE_FIRE, PROC_REF(Projectile_SelfKnockback)) else return ELEMENT_INCOMPATIBLE diff --git a/code/datums/elements/snail_crawl.dm b/code/datums/elements/snail_crawl.dm index 2bca125f4c25..49b3e5ccf0e8 100644 --- a/code/datums/elements/snail_crawl.dm +++ b/code/datums/elements/snail_crawl.dm @@ -7,9 +7,9 @@ return ELEMENT_INCOMPATIBLE var/P if(iscarbon(target)) - P = .proc/snail_crawl + P = PROC_REF(snail_crawl) else - P = .proc/lubricate + P = PROC_REF(lubricate) RegisterSignal(target, COMSIG_MOVABLE_MOVED, P) /datum/element/snailcrawl/Detach(mob/living/carbon/target) diff --git a/code/datums/elements/squish.dm b/code/datums/elements/squish.dm index 3439d590669f..5a6c226b3142 100644 --- a/code/datums/elements/squish.dm +++ b/code/datums/elements/squish.dm @@ -18,7 +18,7 @@ var/mob/living/carbon/C = target var/was_lying = C.body_position == LYING_DOWN - addtimer(CALLBACK(src, .proc/Detach, C, was_lying, reverse), duration) + addtimer(CALLBACK(src, PROC_REF(Detach), C, was_lying, reverse), duration) if(reverse) C.transform = C.transform.Scale(SHORT, TALL) diff --git a/code/datums/elements/tool_flash.dm b/code/datums/elements/tool_flash.dm index cf03bdb502e5..53b94159e9b8 100644 --- a/code/datums/elements/tool_flash.dm +++ b/code/datums/elements/tool_flash.dm @@ -16,8 +16,8 @@ src.flash_strength = flash_strength - RegisterSignal(target, COMSIG_TOOL_IN_USE, .proc/prob_flash) - RegisterSignal(target, COMSIG_TOOL_START_USE, .proc/flash) + RegisterSignal(target, COMSIG_TOOL_IN_USE, PROC_REF(prob_flash)) + RegisterSignal(target, COMSIG_TOOL_START_USE, PROC_REF(flash)) /datum/element/tool_flash/Detach(datum/source, force) . = ..() diff --git a/code/datums/elements/turf_transparency.dm b/code/datums/elements/turf_transparency.dm index 8a2ebca136cf..715c6ab4ecbd 100644 --- a/code/datums/elements/turf_transparency.dm +++ b/code/datums/elements/turf_transparency.dm @@ -15,8 +15,8 @@ our_turf.plane = OPENSPACE_PLANE our_turf.layer = OPENSPACE_LAYER - RegisterSignal(target, COMSIG_TURF_MULTIZ_DEL, .proc/on_multiz_turf_del, TRUE) - RegisterSignal(target, COMSIG_TURF_MULTIZ_NEW, .proc/on_multiz_turf_new, TRUE) + RegisterSignal(target, COMSIG_TURF_MULTIZ_DEL, PROC_REF(on_multiz_turf_del), TRUE) + RegisterSignal(target, COMSIG_TURF_MULTIZ_NEW, PROC_REF(on_multiz_turf_new), TRUE) ADD_TRAIT(our_turf, TURF_Z_TRANSPARENT_TRAIT, TURF_TRAIT) diff --git a/code/datums/elements/undertile.dm b/code/datums/elements/undertile.dm index 3957f4632559..65301e8bdc0d 100644 --- a/code/datums/elements/undertile.dm +++ b/code/datums/elements/undertile.dm @@ -19,7 +19,7 @@ if(!ismovable(target)) return ELEMENT_INCOMPATIBLE - RegisterSignal(target, COMSIG_OBJ_HIDE, .proc/hide) + RegisterSignal(target, COMSIG_OBJ_HIDE, PROC_REF(hide)) src.invisibility_trait = invisibility_trait src.invisibility_level = invisibility_level diff --git a/code/datums/elements/update_icon_blocker.dm b/code/datums/elements/update_icon_blocker.dm index 5c84ed9886aa..674b314ec9c1 100644 --- a/code/datums/elements/update_icon_blocker.dm +++ b/code/datums/elements/update_icon_blocker.dm @@ -4,7 +4,7 @@ . = ..() if(!istype(target, /atom)) return ELEMENT_INCOMPATIBLE - RegisterSignal(target, COMSIG_ATOM_UPDATE_ICON, .proc/block_update_icon) + RegisterSignal(target, COMSIG_ATOM_UPDATE_ICON, PROC_REF(block_update_icon)) /datum/element/update_icon_blocker/proc/block_update_icon() SIGNAL_HANDLER diff --git a/code/datums/elements/update_icon_updates_onmob.dm b/code/datums/elements/update_icon_updates_onmob.dm index 7d1cb8d287d1..0ec9a472e64f 100644 --- a/code/datums/elements/update_icon_updates_onmob.dm +++ b/code/datums/elements/update_icon_updates_onmob.dm @@ -5,7 +5,7 @@ . = ..() if(!istype(target, /obj/item)) return ELEMENT_INCOMPATIBLE - RegisterSignal(target, COMSIG_ATOM_UPDATED_ICON, .proc/update_onmob) + RegisterSignal(target, COMSIG_ATOM_UPDATED_ICON, PROC_REF(update_onmob)) /datum/element/update_icon_updates_onmob/proc/update_onmob(obj/item/target) SIGNAL_HANDLER diff --git a/code/datums/elements/waddling.dm b/code/datums/elements/waddling.dm index 04a44d85f267..059546116461 100644 --- a/code/datums/elements/waddling.dm +++ b/code/datums/elements/waddling.dm @@ -5,9 +5,9 @@ if(!ismovable(target)) return ELEMENT_INCOMPATIBLE if(isliving(target)) - RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/LivingWaddle) + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(LivingWaddle)) else - RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/Waddle) + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(Waddle)) /datum/element/waddling/Detach(datum/source, force) . = ..() diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index 445d795d0024..6fd41b9df929 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -241,7 +241,7 @@ /obj/item/disk/holodisk/Initialize(mapload) . = ..() if(preset_record_text) - INVOKE_ASYNC(src, .proc/build_record) + INVOKE_ASYNC(src, PROC_REF(build_record)) /obj/item/disk/holodisk/Destroy() QDEL_NULL(record) diff --git a/code/datums/hud.dm b/code/datums/hud.dm index 68e1800d5c34..24865387794a 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -47,16 +47,17 @@ GLOBAL_LIST_INIT(huds, list( /datum/atom_hud/Destroy() for(var/v in hudusers) - remove_hud_from(v, TRUE) + remove_hud_from(v) for(var/v in hudatoms) remove_from_hud(v) GLOB.all_huds -= src return ..() -/datum/atom_hud/proc/remove_hud_from(mob/M, force = FALSE) +/datum/atom_hud/proc/remove_hud_from(mob/M, absolute = FALSE) if(!M || !hudusers[M]) return - if (force || !--hudusers[M]) + if (absolute || !--hudusers[M]) + UnregisterSignal(M, COMSIG_PARENT_QDELETING) hudusers -= M if(next_time_allowed[M]) next_time_allowed -= M @@ -67,7 +68,7 @@ GLOBAL_LIST_INIT(huds, list( remove_from_single_hud(M, A) /datum/atom_hud/proc/remove_from_hud(atom/A) - if(!A || !(A in hudatoms)) + if(!A) return FALSE for(var/mob/M in hudusers) remove_from_single_hud(M, A) @@ -78,16 +79,17 @@ GLOBAL_LIST_INIT(huds, list( if(!M || !M.client || !A) return for(var/i in hud_icons) - M.client.images -= A.hud_list[i] + M.client.images -= A.hud_list?[i] /datum/atom_hud/proc/add_hud_to(mob/M) if(!M) return if(!hudusers[M]) hudusers[M] = 1 + RegisterSignal(M, COMSIG_PARENT_QDELETING, PROC_REF(unregister_mob)) if(next_time_allowed[M] > world.time) if(!queued_to_see[M]) - addtimer(CALLBACK(src, .proc/show_hud_images_after_cooldown, M), next_time_allowed[M] - world.time) + addtimer(CALLBACK(src, PROC_REF(show_hud_images_after_cooldown), M), next_time_allowed[M] - world.time) queued_to_see[M] = TRUE else next_time_allowed[M] = world.time + ADD_HUD_TO_COOLDOWN @@ -96,6 +98,11 @@ GLOBAL_LIST_INIT(huds, list( else hudusers[M]++ +/datum/atom_hud/proc/unregister_mob(datum/source, force) + SIGNAL_HANDLER + remove_hud_from(source, TRUE) + remove_from_hud(source) + /datum/atom_hud/proc/hide_single_atomhud_from(hud_user,hidden_atom) if(hudusers[hud_user]) remove_from_single_hud(hud_user,hidden_atom) @@ -135,7 +142,7 @@ GLOBAL_LIST_INIT(huds, list( //MOB PROCS /mob/proc/reload_huds() for(var/datum/atom_hud/hud in GLOB.all_huds) - if(hud && hud.hudusers[src]) + if(hud?.hudusers[src]) for(var/atom/A in hud.hudatoms) hud.add_to_single_hud(src, A) diff --git a/code/datums/keybinding/carbon.dm b/code/datums/keybinding/carbon.dm index 29e53039fa86..568a56e368df 100644 --- a/code/datums/keybinding/carbon.dm +++ b/code/datums/keybinding/carbon.dm @@ -22,7 +22,7 @@ return TRUE /datum/keybinding/carbon/hold_throw_mode - hotkey_keys = list("Space") +// hotkey_keys = list("Space") name = "hold_throw_mode" full_name = "Hold throw mode" description = "Hold this to turn on throw mode, and release it to turn off throw mode" diff --git a/code/datums/keybinding/human.dm b/code/datums/keybinding/human.dm index 41b698059bb4..e4ce3478e73a 100644 --- a/code/datums/keybinding/human.dm +++ b/code/datums/keybinding/human.dm @@ -20,6 +20,22 @@ H.quick_equip() return TRUE +/datum/keybinding/human/unique_action + hotkey_keys = list("Space") + name = "unique_action" + full_name = "Perform unique action" + description = "" + keybind_signal = COMSIG_KB_HUMAN_UNIQUEACTION + + +/datum/keybinding/human/unique_action/down(client/user) + . = ..() + if(.) + return + var/mob/living/carbon/human/current_human = user.mob + current_human.do_unique_action() + return TRUE + /datum/keybinding/human/quick_equip_belt hotkey_keys = list("ShiftE") name = "quick_equip_belt" diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm index c1fb10f75436..bb7a33846a34 100644 --- a/code/datums/looping_sounds/_looping_sound.dm +++ b/code/datums/looping_sounds/_looping_sound.dm @@ -82,7 +82,7 @@ if(!chance || prob(chance)) play(get_sound(starttime)) if(!timerid) - timerid = addtimer(CALLBACK(src, .proc/sound_loop, world.time), mid_length, TIMER_CLIENT_TIME | TIMER_STOPPABLE | TIMER_LOOP, SSsound_loops) + timerid = addtimer(CALLBACK(src, PROC_REF(sound_loop), world.time), mid_length, TIMER_CLIENT_TIME | TIMER_STOPPABLE | TIMER_LOOP, SSsound_loops) /datum/looping_sound/proc/play(soundfile, volume_override) var/list/atoms_cache = output_atoms @@ -107,7 +107,7 @@ if(start_sound) play(start_sound, start_volume) start_wait = start_length - addtimer(CALLBACK(src, .proc/sound_loop), start_wait, TIMER_CLIENT_TIME, SSsound_loops) + addtimer(CALLBACK(src, PROC_REF(sound_loop)), start_wait, TIMER_CLIENT_TIME, SSsound_loops) /datum/looping_sound/proc/on_stop() if(end_sound) diff --git a/code/datums/map_zones.dm b/code/datums/map_zones.dm index a0f104c2fd91..c50b93cb2dd7 100644 --- a/code/datums/map_zones.dm +++ b/code/datums/map_zones.dm @@ -32,8 +32,7 @@ /datum/map_zone/Destroy() SSmapping.map_zones -= src QDEL_NULL(weather_controller) - for(var/datum/virtual_level/vlevel as anything in virtual_levels) - qdel(vlevel) + QDEL_LIST(virtual_levels) return ..() /// Clears all of what's inside the virtual levels managed by the mapzone. @@ -411,10 +410,17 @@ for(var/dir in crosslinked) if(crosslinked[dir]) //Because it could be linking with itself unlink(dir) - var/datum/space_level/level = SSmapping.z_list[z_value] - level.virtual_levels -= src + parent_level.virtual_levels -= src + parent_level = null + LAZYREMOVE(SSidlenpcpool.idle_mobs_by_virtual_level, "[id]") SSmapping.virtual_z_translation -= "[id]" parent_map_zone.remove_virtual_level(src) + if(up_linkage) + up_linkage.down_linkage = null + up_linkage = null + if(down_linkage) + down_linkage.up_linkage = null + down_linkage = null return ..() /datum/virtual_level/proc/mark_turfs() @@ -429,9 +435,14 @@ var/list/turf/block_turfs = get_block() + var/static/list/ignored_atoms = typecacheof(list(/mob/dead, /atom/movable/lighting_object)) for(var/turf/turf as anything in block_turfs) // don't waste time trying to qdelete the lighting object - for(var/datum/thing in (turf.contents - turf.lighting_object)) + for(var/atom/movable/thing as anything in turf.contents) + //There's a dedicated macro for checking in a typecache, but it has unecessary checks + //And this needs to be fast + if(ignored_atoms[thing.type]) + continue qdel(thing) // DO NOT CHECK_TICK HERE. IT CAN CAUSE ITEMS TO GET LEFT BEHIND // THIS IS REALLY IMPORTANT FOR CONSISTENCY. SORRY ABOUT THE LAG SPIKE @@ -443,6 +454,7 @@ var/area/old_area = get_area(turf) space_area.contents += turf turf.change_area(old_area, space_area) + turf.virtual_z = 0 CHECK_TICK for(var/turf/turf as anything in block_turfs) diff --git a/code/datums/mapgen/_biome.dm b/code/datums/mapgen/_biome.dm index bf97734944f2..02c527b41042 100644 --- a/code/datums/mapgen/_biome.dm +++ b/code/datums/mapgen/_biome.dm @@ -1,17 +1,26 @@ /datum/biome /// WEIGHTED list of open turfs that this biome can place - var/open_turf_types = list(/turf/open/floor/plating/asteroid = 1) + var/list/open_turf_types = list(/turf/open/floor/plating/asteroid = 1) + /// EXPANDED (no values) list of open turfs that this biome can place + var/list/open_turf_types_expanded /// WEIGHTED list of flora that this biome can spawn. /// Flora do not have any local keep-away logic; all spawns are independent. var/list/flora_spawn_list + /// EXPANDED (no values) list of flora that this biome can spawn. + var/list/flora_spawn_list_expanded /// WEIGHTED list of features that this biome can spawn. /// Features will not spawn within 7 tiles of other features of the same type. var/list/feature_spawn_list + /// EXPANDED (no values) list of features that this biome can spawn. + var/list/feature_spawn_list_expanded /// WEIGHTED list of mobs that this biome can spawn. /// Mobs have multi-layered logic for determining if they can be spawned on a given tile. /// Necropolis spawners etc. should go HERE, not in features, despite them not being mobs. var/list/mob_spawn_list + /// EXPANDED (no values) list of mobs that this biome can spawn. + var/list/mob_spawn_list_expanded + /// Percentage chance that an open turf will attempt a flora spawn. var/flora_spawn_chance = 2 @@ -20,6 +29,15 @@ /// Base percentage chance that an open turf will attempt a flora spawn. var/mob_spawn_chance = 6 +/datum/biome/New() + open_turf_types_expanded = expand_weights(open_turf_types) + if(length(flora_spawn_list)) + flora_spawn_list_expanded = expand_weights(flora_spawn_list) + if(length(feature_spawn_list)) + feature_spawn_list_expanded = expand_weights(feature_spawn_list) + if(length(mob_spawn_list)) + mob_spawn_list_expanded = expand_weights(mob_spawn_list) + /// Changes the passed turf according to the biome's internal logic, optionally using string_gen, /// and adds it to the passed area. /// The call to ChangeTurf respects changeturf_flags. @@ -41,7 +59,7 @@ return TRUE /datum/biome/proc/get_turf_type(turf/gen_turf, string_gen) - return pickweight(open_turf_types) + return pick(open_turf_types_expanded) /// Fills a turf with flora, features, and creatures based on the biome's variables. /// The features and creatures compare against and add to the lists passed to determine @@ -63,14 +81,14 @@ var/atom/spawned_mob //FLORA SPAWNING HERE - if(flora_spawn_list && prob(flora_spawn_chance) && (a_flags & FLORA_ALLOWED)) - spawned_flora = pickweight(flora_spawn_list) + if(length(flora_spawn_list_expanded) && prob(flora_spawn_chance) && (a_flags & FLORA_ALLOWED)) + spawned_flora = pick(flora_spawn_list_expanded) spawned_flora = new spawned_flora(open_turf) open_turf.flags_1 |= NO_LAVA_GEN_1 //FEATURE SPAWNING HERE - if(feature_spawn_list && prob(feature_spawn_chance) && (a_flags & FLORA_ALLOWED)) //checks the same flag because lol dunno - var/atom/feature_type = pickweight(feature_spawn_list) + if(length(feature_spawn_list_expanded) && prob(feature_spawn_chance) && (a_flags & FLORA_ALLOWED)) //checks the same flag because lol dunno + var/atom/feature_type = pick(feature_spawn_list_expanded) var/can_spawn = TRUE for(var/other_feature in feature_list) @@ -85,8 +103,8 @@ open_turf.flags_1 |= NO_LAVA_GEN_1 //MOB SPAWNING HERE - if(mob_spawn_list && !spawned_flora && !spawned_feature && prob(mob_spawn_chance) && (a_flags & MOB_SPAWN_ALLOWED)) - var/atom/picked_mob = pickweight(mob_spawn_list) + if(length(mob_spawn_list_expanded) && !spawned_flora && !spawned_feature && prob(mob_spawn_chance) && (a_flags & MOB_SPAWN_ALLOWED)) + var/atom/picked_mob = pick(mob_spawn_list_expanded) var/can_spawn = TRUE for(var/thing in mob_list) @@ -109,9 +127,15 @@ /datum/biome/cave /// WEIGHTED list of closed turfs that this biome can place - var/closed_turf_types = list(/turf/closed/mineral/random/volcanic = 1) + var/list/closed_turf_types = list(/turf/closed/mineral/random/volcanic = 1) + /// EXPANDED (no values) list of closed turfs that this biome can place + var/list/closed_turf_types_expanded + +/datum/biome/cave/New() + closed_turf_types_expanded = expand_weights(closed_turf_types) + return ..() /datum/biome/cave/get_turf_type(turf/gen_turf, string_gen) // gets the character in string_gen corresponding to gen_turf's coords. if it is nonzero, // place a closed turf; otherwise place an open turf - return pickweight(text2num(string_gen[world.maxx * (gen_turf.y - 1) + gen_turf.x]) ? closed_turf_types : open_turf_types) + return pick(text2num(string_gen[world.maxx * (gen_turf.y - 1) + gen_turf.x]) ? closed_turf_types_expanded : open_turf_types_expanded) diff --git a/code/datums/mapgen/planetary/JungleGenerator.dm b/code/datums/mapgen/planetary/JungleGenerator.dm index f4c1340f038e..ed9a676acb17 100644 --- a/code/datums/mapgen/planetary/JungleGenerator.dm +++ b/code/datums/mapgen/planetary/JungleGenerator.dm @@ -188,7 +188,7 @@ mob_spawn_list = list( /mob/living/simple_animal/hostile/asteroid/wolf/random = 1, /mob/living/simple_animal/hostile/retaliate/bat = 1, - /mob/living/simple_animal/hostile/retaliate/poison/snake + /mob/living/simple_animal/hostile/retaliate/poison/snake = 1 ) feature_spawn_chance = 1 feature_spawn_list = list( @@ -244,7 +244,7 @@ mob_spawn_list = list( /mob/living/simple_animal/hostile/poison/bees/toxin = 1, /mob/living/simple_animal/hostile/mushroom = 1, - /mob/living/simple_animal/pet/dog/corgi/capybara + /mob/living/simple_animal/pet/dog/corgi/capybara = 1 ) /datum/biome/cave/lush/bright diff --git a/code/datums/mapgen/planetary/SnowGenerator.dm b/code/datums/mapgen/planetary/SnowGenerator.dm index c9b34c2773f8..2960fca6351d 100644 --- a/code/datums/mapgen/planetary/SnowGenerator.dm +++ b/code/datums/mapgen/planetary/SnowGenerator.dm @@ -209,13 +209,13 @@ ) feature_spawn_chance = 0.6 feature_spawn_list = list( - /obj/effect/survey_point = 5, - /obj/effect/spawner/lootdrop/anomaly/ice = 1, - /obj/effect/spawner/lootdrop/anomaly/big = 0.01, - /obj/structure/spawner/ice_moon/demonic_portal/low_threat = 3, - /obj/structure/spawner/ice_moon/demonic_portal/medium_threat = 5, - /obj/structure/spawner/ice_moon/demonic_portal/high_threat = 0.5, - /obj/structure/spawner/ice_moon/demonic_portal/extreme_threat = 0.01 + /obj/effect/survey_point = 50, + /obj/effect/spawner/lootdrop/anomaly/ice = 10, + /obj/effect/spawner/lootdrop/anomaly/big = 1, + /obj/structure/spawner/ice_moon/demonic_portal/low_threat = 30, + /obj/structure/spawner/ice_moon/demonic_portal/medium_threat = 50, + /obj/structure/spawner/ice_moon/demonic_portal/high_threat = 5, + /obj/structure/spawner/ice_moon/demonic_portal/extreme_threat = 1 ) @@ -264,13 +264,13 @@ feature_spawn_chance = 0.4 feature_spawn_list = list( /obj/effect/survey_point = 4, - /obj/structure/spawner/ice_moon/demonic_portal/low_threat = 3, - /obj/structure/spawner/ice_moon/demonic_portal/medium_threat = 5, - /obj/structure/spawner/ice_moon/demonic_portal/high_threat = 0.6, - /obj/structure/spawner/ice_moon/demonic_portal/extreme_threat = 0.2, - /obj/structure/spawner/ice_moon = 3, - /obj/structure/spawner/ice_moon/polarbear = 3, - /obj/effect/spawner/lootdrop/anomaly/ice/cave = 1 + /obj/structure/spawner/ice_moon/demonic_portal/low_threat = 30, + /obj/structure/spawner/ice_moon/demonic_portal/medium_threat = 50, + /obj/structure/spawner/ice_moon/demonic_portal/high_threat = 6, + /obj/structure/spawner/ice_moon/demonic_portal/extreme_threat = 2, + /obj/structure/spawner/ice_moon = 30, + /obj/structure/spawner/ice_moon/polarbear = 30, + /obj/effect/spawner/lootdrop/anomaly/ice/cave = 10 ) /datum/biome/cave/snow/thawed diff --git a/code/datums/mapgen/planetary/WasteGenerator.dm b/code/datums/mapgen/planetary/WasteGenerator.dm index 854a71632ce8..f55432cba8c8 100644 --- a/code/datums/mapgen/planetary/WasteGenerator.dm +++ b/code/datums/mapgen/planetary/WasteGenerator.dm @@ -96,36 +96,36 @@ flora_spawn_list = list( //mech spawners - /obj/effect/spawner/lootdrop/waste/mechwreck = 10, - /obj/effect/spawner/lootdrop/waste/mechwreck/rare = 2, + /obj/effect/spawner/lootdrop/waste/mechwreck = 100, + /obj/effect/spawner/lootdrop/waste/mechwreck/rare = 20, //decals and fluff structures - /obj/effect/spawner/lootdrop/waste/trash = 180, - /obj/effect/spawner/lootdrop/waste/radiation = 8, - /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 1, + /obj/effect/spawner/lootdrop/waste/trash = 1800, + /obj/effect/spawner/lootdrop/waste/radiation = 80, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 10, //stuff you can actually use - /obj/effect/spawner/lootdrop/waste/girder = 60, - /obj/structure/reagent_dispensers/fueltank = 10, - /obj/structure/reagent_dispensers/watertank = 20, - /obj/item/stack/cable_coil/cut = 50, - /obj/structure/closet/crate/secure/loot = 3, - /obj/effect/spawner/lootdrop/waste/atmos_can = 5, - /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 0.1, - /obj/effect/spawner/lootdrop/waste/salvageable = 30, - /obj/effect/spawner/lootdrop/waste/grille_or_trash = 20, - /obj/effect/spawner/lootdrop/maintenance = 20, - /obj/effect/spawner/lootdrop/maintenance/two = 10, - /obj/effect/spawner/lootdrop/maintenance/three = 5, - /obj/effect/spawner/lootdrop/maintenance/four = 2, + /obj/effect/spawner/lootdrop/waste/girder = 600, + /obj/structure/reagent_dispensers/fueltank = 100, + /obj/structure/reagent_dispensers/watertank = 200, + /obj/item/stack/cable_coil/cut = 500, + /obj/structure/closet/crate/secure/loot = 30, + /obj/effect/spawner/lootdrop/waste/atmos_can = 50, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 300, + /obj/effect/spawner/lootdrop/waste/grille_or_trash = 200, + /obj/effect/spawner/lootdrop/maintenance = 200, + /obj/effect/spawner/lootdrop/maintenance/two = 100, + /obj/effect/spawner/lootdrop/maintenance/three = 50, + /obj/effect/spawner/lootdrop/maintenance/four = 20, //plants - /obj/structure/flora/ash/garden/waste = 7, - /obj/structure/flora/ash/glowshroom = 20, //more common in caves + /obj/structure/flora/ash/garden/waste = 70, + /obj/structure/flora/ash/glowshroom = 200, //more common in caves //the illusive shrapnel plant - /obj/effect/mine/shrapnel/human_only = 1 + /obj/effect/mine/shrapnel/human_only = 10 ) feature_spawn_list = list( @@ -159,12 +159,12 @@ ) flora_spawn_list = list( - /obj/effect/spawner/lootdrop/waste/trash = 90, - /obj/effect/spawner/lootdrop/waste/radiation = 8, - /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 1, - /obj/effect/spawner/lootdrop/waste/atmos_can = 18, - /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 0.5, - /obj/effect/spawner/lootdrop/waste/salvageable = 30, + /obj/effect/spawner/lootdrop/waste/trash = 180, + /obj/effect/spawner/lootdrop/waste/radiation = 16, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 2, + /obj/effect/spawner/lootdrop/waste/atmos_can = 36, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 60, ) mob_spawn_chance = 1 @@ -184,26 +184,26 @@ /datum/biome/waste/clearing/mushroom flora_spawn_list = list( - /obj/effect/spawner/lootdrop/waste/mechwreck = 10, - /obj/effect/spawner/lootdrop/waste/trash = 90, - /obj/effect/spawner/lootdrop/waste/radiation = 30, - /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 12, - /obj/effect/spawner/lootdrop/waste/girder = 60, - /obj/structure/reagent_dispensers/fueltank = 10, - /obj/structure/reagent_dispensers/watertank = 20, - /obj/item/stack/cable_coil/cut = 50, - /obj/structure/closet/crate/secure/loot = 3, - /obj/effect/spawner/lootdrop/waste/atmos_can = 5, - /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 0.1, - /obj/effect/spawner/lootdrop/waste/salvageable = 30, - /obj/effect/spawner/lootdrop/waste/grille_or_trash = 20, - /obj/effect/spawner/lootdrop/maintenance = 20, - /obj/effect/spawner/lootdrop/maintenance/two = 10, - /obj/effect/spawner/lootdrop/maintenance/three = 5, - /obj/effect/spawner/lootdrop/maintenance/four = 2, - /obj/structure/flora/ash/garden/waste = 30, - /obj/structure/flora/ash/glowshroom = 180, - /obj/effect/mine/shrapnel/human_only = 1 + /obj/effect/spawner/lootdrop/waste/mechwreck = 100, + /obj/effect/spawner/lootdrop/waste/trash = 900, + /obj/effect/spawner/lootdrop/waste/radiation = 300, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 120, + /obj/effect/spawner/lootdrop/waste/girder = 600, + /obj/structure/reagent_dispensers/fueltank = 100, + /obj/structure/reagent_dispensers/watertank = 200, + /obj/item/stack/cable_coil/cut = 500, + /obj/structure/closet/crate/secure/loot = 30, + /obj/effect/spawner/lootdrop/waste/atmos_can = 50, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 300, + /obj/effect/spawner/lootdrop/waste/grille_or_trash = 200, + /obj/effect/spawner/lootdrop/maintenance = 200, + /obj/effect/spawner/lootdrop/maintenance/two = 100, + /obj/effect/spawner/lootdrop/maintenance/three = 50, + /obj/effect/spawner/lootdrop/maintenance/four = 20, + /obj/structure/flora/ash/garden/waste = 300, + /obj/structure/flora/ash/glowshroom = 1800, + /obj/effect/mine/shrapnel/human_only = 10 ) /datum/biome/waste/tar_bed //tar colorings @@ -214,7 +214,7 @@ /datum/biome/waste/tar_bed/total open_turf_types = list( - /turf/open/water/tar/waste/lit + /turf/open/water/tar/waste/lit = 1 ) flora_spawn_chance = 0 @@ -226,28 +226,28 @@ ) flora_spawn_list = list( //there are no plants here - /obj/effect/spawner/lootdrop/waste/mechwreck = 20, - /obj/effect/spawner/lootdrop/waste/mechwreck/rare = 5, - /obj/effect/spawner/lootdrop/waste/trash = 90, - /obj/effect/spawner/lootdrop/waste/radiation = 8, - /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 2, - /obj/effect/spawner/lootdrop/waste/girder = 60, - /obj/structure/reagent_dispensers/fueltank = 10, - /obj/structure/reagent_dispensers/watertank = 20, - /obj/item/stack/cable_coil/cut = 50, - /obj/structure/closet/crate/secure/loot = 3, - /obj/effect/spawner/lootdrop/waste/atmos_can = 5, - /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 0.1, - /obj/effect/spawner/lootdrop/waste/salvageable = 30, - /obj/effect/spawner/lootdrop/waste/grille_or_trash = 20, - /obj/effect/spawner/lootdrop/maintenance = 20, - /obj/effect/spawner/lootdrop/maintenance/two = 10, - /obj/effect/spawner/lootdrop/maintenance/three = 5, - /obj/effect/spawner/lootdrop/maintenance/four = 2, - /obj/structure/closet/crate/secure/loot = 3, - /obj/effect/spawner/lootdrop/waste/atmos_can = 18, - /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 0.1, - /obj/effect/spawner/lootdrop/waste/salvageable = 30 + /obj/effect/spawner/lootdrop/waste/mechwreck = 200, + /obj/effect/spawner/lootdrop/waste/mechwreck/rare = 50, + /obj/effect/spawner/lootdrop/waste/trash = 900, + /obj/effect/spawner/lootdrop/waste/radiation = 80, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 20, + /obj/effect/spawner/lootdrop/waste/girder = 600, + /obj/structure/reagent_dispensers/fueltank = 100, + /obj/structure/reagent_dispensers/watertank = 200, + /obj/item/stack/cable_coil/cut = 500, + /obj/structure/closet/crate/secure/loot = 30, + /obj/effect/spawner/lootdrop/waste/atmos_can = 50, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 300, + /obj/effect/spawner/lootdrop/waste/grille_or_trash = 200, + /obj/effect/spawner/lootdrop/maintenance = 200, + /obj/effect/spawner/lootdrop/maintenance/two = 100, + /obj/effect/spawner/lootdrop/maintenance/three = 50, + /obj/effect/spawner/lootdrop/maintenance/four = 20, + /obj/structure/closet/crate/secure/loot = 30, + /obj/effect/spawner/lootdrop/waste/atmos_can = 180, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 300 ) mob_spawn_list = list( //nor organics, more biased towards hivebots though /mob/living/simple_animal/hostile/hivebot/wasteplanet/strong = 80, @@ -288,28 +288,28 @@ ) flora_spawn_list = list( - /obj/effect/spawner/lootdrop/waste/mechwreck = 10, - /obj/effect/spawner/lootdrop/waste/mechwreck/rare = 2, - /obj/effect/spawner/lootdrop/waste/trash = 180, - /obj/effect/spawner/lootdrop/waste/radiation = 8, - /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 1, - /obj/effect/spawner/lootdrop/waste/girder = 60, - /obj/structure/reagent_dispensers/fueltank = 10, - /obj/structure/reagent_dispensers/watertank = 20, - /obj/item/stack/cable_coil/cut = 50, - /obj/structure/closet/crate/secure/loot = 3, - /obj/effect/spawner/lootdrop/waste/atmos_can = 5, - /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 0.5, - /obj/effect/spawner/lootdrop/waste/salvageable = 30, - /obj/effect/spawner/lootdrop/waste/grille_or_trash = 20, - /obj/effect/spawner/lootdrop/maintenance = 2, - /obj/effect/spawner/lootdrop/maintenance/two = 5, - /obj/effect/spawner/lootdrop/maintenance/three = 10, - /obj/effect/spawner/lootdrop/maintenance/four = 20, - /obj/effect/spawner/lootdrop/waste/salvageable = 40, - /obj/structure/flora/ash/garden/waste = 7, - /obj/structure/flora/ash/glowshroom = 40, //more common in caves - /obj/effect/mine/shrapnel/human_only = 1 + /obj/effect/spawner/lootdrop/waste/mechwreck = 100, + /obj/effect/spawner/lootdrop/waste/mechwreck/rare = 20, + /obj/effect/spawner/lootdrop/waste/trash = 1800, + /obj/effect/spawner/lootdrop/waste/radiation = 80, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 10, + /obj/effect/spawner/lootdrop/waste/girder = 600, + /obj/structure/reagent_dispensers/fueltank = 100, + /obj/structure/reagent_dispensers/watertank = 200, + /obj/item/stack/cable_coil/cut = 500, + /obj/structure/closet/crate/secure/loot = 30, + /obj/effect/spawner/lootdrop/waste/atmos_can = 50, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 5, + /obj/effect/spawner/lootdrop/waste/salvageable = 300, + /obj/effect/spawner/lootdrop/waste/grille_or_trash = 200, + /obj/effect/spawner/lootdrop/maintenance = 20, + /obj/effect/spawner/lootdrop/maintenance/two = 50, + /obj/effect/spawner/lootdrop/maintenance/three = 100, + /obj/effect/spawner/lootdrop/maintenance/four = 200, + /obj/effect/spawner/lootdrop/waste/salvageable = 400, + /obj/structure/flora/ash/garden/waste = 70, + /obj/structure/flora/ash/glowshroom = 400, //more common in caves + /obj/effect/mine/shrapnel/human_only = 10 ) feature_spawn_list = list( @@ -342,29 +342,29 @@ /datum/biome/cave/waste/tar_bed/full open_turf_types = list( - /turf/open/water/tar/waste + /turf/open/water/tar/waste = 1 ) flora_spawn_chance = 0 /datum/biome/cave/waste/rad flora_spawn_list = list( - /obj/effect/spawner/lootdrop/waste/trash = 90, - /obj/effect/spawner/lootdrop/waste/radiation = 25, - /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 7, - /obj/effect/spawner/lootdrop/waste/atmos_can = 5, - /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 0.5, - /obj/effect/spawner/lootdrop/waste/salvageable = 15, - /obj/effect/spawner/lootdrop/waste/girder = 20, - /obj/structure/reagent_dispensers/fueltank = 1, - /obj/structure/reagent_dispensers/watertank = 1, - /obj/item/stack/cable_coil/cut = 50, - /obj/structure/closet/crate/secure/loot = 3, - /obj/effect/spawner/lootdrop/waste/grille_or_trash = 20, - /obj/effect/spawner/lootdrop/maintenance = 2, - /obj/effect/spawner/lootdrop/maintenance/two = 5, - /obj/effect/spawner/lootdrop/maintenance/three = 10, - /obj/effect/spawner/lootdrop/maintenance/four = 20, - /obj/structure/flora/ash/glowshroom = 180 + /obj/effect/spawner/lootdrop/waste/trash = 900, + /obj/effect/spawner/lootdrop/waste/radiation = 250, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 70, + /obj/effect/spawner/lootdrop/waste/atmos_can = 50, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 5, + /obj/effect/spawner/lootdrop/waste/salvageable = 150, + /obj/effect/spawner/lootdrop/waste/girder = 200, + /obj/structure/reagent_dispensers/fueltank = 10, + /obj/structure/reagent_dispensers/watertank = 10, + /obj/item/stack/cable_coil/cut = 500, + /obj/structure/closet/crate/secure/loot = 30, + /obj/effect/spawner/lootdrop/waste/grille_or_trash = 200, + /obj/effect/spawner/lootdrop/maintenance = 20, + /obj/effect/spawner/lootdrop/maintenance/two = 50, + /obj/effect/spawner/lootdrop/maintenance/three = 100, + /obj/effect/spawner/lootdrop/maintenance/four = 200, + /obj/structure/flora/ash/glowshroom = 1800 ) feature_spawn_chance = 12 @@ -380,25 +380,25 @@ /turf/closed/wall/rust = 10 ) flora_spawn_list = list( - /obj/effect/spawner/lootdrop/waste/mechwreck = 20, - /obj/effect/spawner/lootdrop/waste/mechwreck/rare = 5, - /obj/effect/spawner/lootdrop/waste/trash = 90, - /obj/effect/spawner/lootdrop/waste/radiation = 16, - /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 2, - /obj/effect/spawner/lootdrop/waste/girder = 60, - /obj/structure/reagent_dispensers/fueltank = 10, - /obj/structure/reagent_dispensers/watertank = 20, - /obj/item/stack/cable_coil/cut = 50, - /obj/structure/closet/crate/secure/loot = 3, - /obj/effect/spawner/lootdrop/waste/atmos_can = 5, - /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 0.5, - /obj/effect/spawner/lootdrop/waste/salvageable = 30, - /obj/effect/spawner/lootdrop/waste/grille_or_trash = 20, - /obj/effect/spawner/lootdrop/maintenance = 2, - /obj/effect/spawner/lootdrop/maintenance/two = 5, - /obj/effect/spawner/lootdrop/maintenance/three = 10, - /obj/effect/spawner/lootdrop/maintenance/four = 20, - /obj/effect/spawner/lootdrop/waste/salvageable = 40, + /obj/effect/spawner/lootdrop/waste/mechwreck = 40, + /obj/effect/spawner/lootdrop/waste/mechwreck/rare = 10, + /obj/effect/spawner/lootdrop/waste/trash = 180, + /obj/effect/spawner/lootdrop/waste/radiation = 32, + /obj/effect/spawner/lootdrop/waste/radiation/more_rads = 4, + /obj/effect/spawner/lootdrop/waste/girder = 120, + /obj/structure/reagent_dispensers/fueltank = 20, + /obj/structure/reagent_dispensers/watertank = 40, + /obj/item/stack/cable_coil/cut = 100, + /obj/structure/closet/crate/secure/loot = 6, + /obj/effect/spawner/lootdrop/waste/atmos_can = 10, + /obj/effect/spawner/lootdrop/waste/atmos_can/rare = 1, + /obj/effect/spawner/lootdrop/waste/salvageable = 60, + /obj/effect/spawner/lootdrop/waste/grille_or_trash = 40, + /obj/effect/spawner/lootdrop/maintenance = 4, + /obj/effect/spawner/lootdrop/maintenance/two = 10, + /obj/effect/spawner/lootdrop/maintenance/three = 20, + /obj/effect/spawner/lootdrop/maintenance/four = 40, + /obj/effect/spawner/lootdrop/waste/salvageable = 80, ) mob_spawn_list = list( //nor organics, more biased towards hivebots though /mob/living/simple_animal/hostile/hivebot/wasteplanet/strong = 80, diff --git a/code/datums/mapgen/single_biome/Gas_Giant.dm b/code/datums/mapgen/single_biome/Gas_Giant.dm index ff904db06853..7a99a1d8ca76 100644 --- a/code/datums/mapgen/single_biome/Gas_Giant.dm +++ b/code/datums/mapgen/single_biome/Gas_Giant.dm @@ -5,13 +5,12 @@ area_type = /area/overmap_encounter/planetoid/gas_giant /datum/biome/gas_giant - open_turf_types = list(/turf/open/chasm/gas_giant) + open_turf_types = list(/turf/open/chasm/gas_giant = 1) - flora_spawn_list = list( - ) + flora_spawn_list = null feature_spawn_list = null mob_spawn_list = list( - /mob/living/simple_animal/hostile/asteroid/basilisk/watcher + /mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 1 //in the future, I'd like to add something like. //The slylandro, or really any floating gas bag species, it'd be cool ) @@ -25,12 +24,10 @@ /datum/biome/plasma_giant - open_turf_types = list(/turf/open/chasm/gas_giant/plasma) + open_turf_types = list(/turf/open/chasm/gas_giant/plasma = 1) - flora_spawn_list = list( - ) + flora_spawn_list = null feature_spawn_list = null mob_spawn_list = list( - /mob/living/simple_animal/hostile/asteroid/basilisk/watcher - + /mob/living/simple_animal/hostile/asteroid/basilisk/watcher = 1 ) diff --git a/code/datums/martial/plasma_fist.dm b/code/datums/martial/plasma_fist.dm index f07a9f8bd47a..320bb4022222 100644 --- a/code/datums/martial/plasma_fist.dm +++ b/code/datums/martial/plasma_fist.dm @@ -36,7 +36,7 @@ /datum/martial_art/plasma_fist/proc/Tornado(mob/living/carbon/human/A, mob/living/carbon/human/D) A.say("TORNADO SWEEP!", forced="plasma fist") - dance_rotate(A, CALLBACK(GLOBAL_PROC, .proc/playsound, A.loc, 'sound/weapons/punch1.ogg', 15, TRUE, -1)) + dance_rotate(A, CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), A.loc, 'sound/weapons/punch1.ogg', 15, TRUE, -1)) var/obj/effect/proc_holder/spell/aoe_turf/repulse/R = new(null) var/list/turfs = list() for(var/turf/T in range(1,A)) @@ -107,7 +107,7 @@ A.apply_damage(rand(50,70), BRUTE) - addtimer(CALLBACK(src,.proc/Apotheosis_end, A), 6 SECONDS) + addtimer(CALLBACK(src, PROC_REF(Apotheosis_end), A), 6 SECONDS) playsound(boomspot, 'sound/weapons/punch1.ogg', 50, TRUE, -1) explosion(boomspot,plasma_power,plasma_power*2,plasma_power*4,ignorecap = TRUE) plasma_power = 1 //just in case there is any clever way to cause it to happen again diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 01c7e93ba516..72d26cf74367 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -189,8 +189,8 @@ /obj/item/staff/bostaff/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/staff/bostaff/ComponentInitialize() . = ..() diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm index b002de0abc61..e9d71398bda3 100644 --- a/code/datums/martial/wrestling.dm +++ b/code/datums/martial/wrestling.dm @@ -197,7 +197,7 @@ if (T && isturf(T)) if (!D.stat) D.emote("scream") - D.throw_at(T, 10, 4, A, TRUE, TRUE, callback = CALLBACK(D, /mob/living/carbon/human.proc/Paralyze, 20)) + D.throw_at(T, 10, 4, A, TRUE, TRUE, callback = CALLBACK(D, TYPE_PROC_REF(/mob/living/carbon/human, Paralyze), 20)) log_combat(A, D, "has thrown with wrestling") return 0 @@ -334,7 +334,7 @@ A.setDir(turn(A.dir, 90)) A.forceMove(D.loc) - addtimer(CALLBACK(src, .proc/CheckStrikeTurf, A, T), 4) + addtimer(CALLBACK(src, PROC_REF(CheckStrikeTurf), A, T), 4) D.visible_message("[A] headbutts [D]!", \ "You're headbutted by [A]!", "You hear a sickening sound of flesh hitting flesh!", COMBAT_MESSAGE_RANGE, A) diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm index 6d5c597c1ef4..79d3a5e68a89 100644 --- a/code/datums/materials/_material.dm +++ b/code/datums/materials/_material.dm @@ -65,7 +65,7 @@ Simple datum which is instanced once per type and is used for every object of sa source.name = "[name] [source.name]" if(beauty_modifier) - addtimer(CALLBACK(source, /datum.proc/_AddComponent, list(/datum/component/beauty, beauty_modifier * amount)), 0) + addtimer(CALLBACK(source, TYPE_PROC_REF(/datum, _AddComponent), list(/datum/component/beauty, beauty_modifier * amount)), 0) if(istype(source, /obj)) //objs on_applied_obj(source, amount, material_flags) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 97def620c708..f6d61833814e 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -72,8 +72,8 @@ var/list/skills_rewarded ///Assoc list of skills. Use SKILL_LVL to access level, and SKILL_EXP to access skill's exp. var/list/known_skills = list() - ///What character we joined in as- either at roundstart or latejoin, so we know for persistent scars if we ended as the same person or not - var/mob/original_character + ///Weakref to thecharacter we joined in as- either at roundstart or latejoin, so we know for persistent scars if we ended as the same person or not + var/datum/weakref/original_character /// The index for what character slot, if any, we were loaded from, so we can track persistent scars on a per-character basis. Each character slot gets PERSISTENT_SCAR_SLOTS scar slots var/original_character_slot_index /// The index for our current scar slot, so we don't have to constantly check the savefile (unlike the slots themselves, this index is independent of selected char slot, and increments whenever a valid char is joined with) @@ -87,8 +87,8 @@ /// A lazy list of statuses to add next to this mind in the traitor panel var/list/special_statuses - ///WS edit - Crew objectives variable, stores crew objective datums - var/list/crew_objectives + /// A weakref to the /datum/overmap/ship/controlled the original mob spawned on + var/datum/weakref/original_ship /datum/mind/New(_key) SSticker.minds += src @@ -102,25 +102,22 @@ if(islist(antag_datums)) QDEL_LIST(antag_datums) QDEL_NULL(language_holder) - enslaved_to = null + set_current(null) soulOwner = null - martial_art = null - current = null - original_character = null - leave_all_antag_huds() return ..() -/datum/mind/proc/handle_mob_deletion(mob/deleted_mob) - if (current == deleted_mob) - current = null - if (original_character == deleted_mob) - original_character = null - if (src == deleted_mob.mind) - deleted_mob.mind = null - if (istype(deleted_mob, /mob/living/carbon)) - var/mob/living/carbon/deleted_carbon = deleted_mob - if (src == deleted_carbon.last_mind) - deleted_carbon.last_mind = null +/datum/mind/proc/set_current(mob/new_current) + if(new_current && QDELETED(new_current)) + CRASH("Tried to set a mind's current var to a qdeleted mob, what the fuck") + if(current) + UnregisterSignal(src, COMSIG_PARENT_QDELETING) + current = new_current + if(current) + RegisterSignal(src, COMSIG_PARENT_QDELETING, PROC_REF(clear_current)) + +/datum/mind/proc/clear_current(datum/source) + SIGNAL_HANDLER + set_current(null) /datum/mind/proc/get_language_holder() if(!language_holder) @@ -128,7 +125,8 @@ return language_holder /datum/mind/proc/transfer_to(mob/new_character, force_key_move = 0) - if(current) // remove ourself from our old body's mind variable + set_original_character(null) + if(current) // remove ourself from our old body's mind variable current.mind = null UnregisterSignal(current, COMSIG_MOB_DEATH) SStgui.on_transfer(current, new_character) @@ -139,16 +137,16 @@ else key = new_character.key - if(new_character.mind) //disassociate any mind currently in our new body's mind variable - new_character.mind.current = null + if(new_character.mind) //disassociate any mind currently in our new body's mind variable + new_character.mind.set_current(null) var/datum/atom_hud/antag/hud_to_transfer = antag_hud//we need this because leave_hud() will clear this list var/mob/living/old_current = current if(current) - current.transfer_observers_to(new_character) //transfer anyone observing the old character to the new one - current = new_character //associate ourself with our new body - new_character.mind = src //and associate our new body with ourself - for(var/a in antag_datums) //Makes sure all antag datums effects are applied in the new body + current.transfer_observers_to(new_character) //transfer anyone observing the old character to the new one + set_current(new_character) //associate ourself with our new body + new_character.mind = src //and associate our new body with ourself + for(var/a in antag_datums) //Makes sure all antag datums effects are applied in the new body var/datum/antagonist/A = a A.on_body_transfer(old_current, current) if(iscarbon(new_character)) @@ -157,7 +155,7 @@ transfer_antag_huds(hud_to_transfer) //inherit the antag HUD transfer_actions(new_character) transfer_martial_arts(new_character) - RegisterSignal(new_character, COMSIG_MOB_DEATH, .proc/set_death_time) + RegisterSignal(new_character, COMSIG_MOB_DEATH, PROC_REF(set_death_time)) if(active || force_key_move) new_character.key = key //now transfer the key to link the client to our new body if(new_character.client) @@ -165,6 +163,10 @@ new_character.client.init_verbs() // re-initialize character specific verbs current.update_atom_languages() +//I cannot trust you fucks to do this properly +/datum/mind/proc/set_original_character(new_original_character) + original_character = WEAKREF(new_original_character) + /datum/mind/proc/init_known_skills() for (var/type in GLOB.skill_types) known_skills[type] = list(SKILL_LEVEL_NONE, 0) @@ -282,7 +284,7 @@ var/datum/team/antag_team = A.get_team() if(antag_team) antag_team.add_member(src) - INVOKE_ASYNC(A, /datum/antagonist.proc/on_gain) + INVOKE_ASYNC(A, TYPE_PROC_REF(/datum/antagonist, on_gain)) log_game("[key_name(src)] has gained antag datum [A.name]([A.type])") return A @@ -345,13 +347,6 @@ special_role = null remove_antag_equip() -/datum/mind/proc/remove_rev() - var/datum/antagonist/rev/rev = has_antag_datum(/datum/antagonist/rev) - if(rev) - remove_antag_datum(rev.type) - special_role = null - - /datum/mind/proc/remove_antag_equip() var/list/Mob_Contents = current.get_contents() for(var/obj/item/I in Mob_Contents) @@ -365,7 +360,6 @@ remove_nukeop() remove_wizard() remove_cultist() - remove_rev() /datum/mind/proc/equip_traitor(employer = "The Syndicate", silent = FALSE, datum/antagonist/uplink_owner) if(!current) @@ -441,10 +435,6 @@ if(iscultist(creator)) SSticker.mode.add_cultist(src) - else if(is_revolutionary(creator)) - var/datum/antagonist/rev/converter = creator.mind.has_antag_datum(/datum/antagonist/rev,TRUE) - converter.add_revolutionary(src,FALSE) - else if(is_nuclear_operative(creator)) var/datum/antagonist/nukeop/converter = creator.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE) var/datum/antagonist/nukeop/N = new() @@ -722,13 +712,6 @@ to_chat(current, "You catch a glimpse of the Realm of Nar'Sie, The Geometer of Blood. You now see how flimsy your world is, you see that it should be open to the knowledge of Nar'Sie.") to_chat(current, "Assist your new brethren in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.") -/datum/mind/proc/make_Rev() - var/datum/antagonist/rev/head/head = new() - head.give_flash = TRUE - head.give_hud = TRUE - add_antag_datum(head) - special_role = ROLE_REV_HEAD - /datum/mind/proc/AddSpell(obj/effect/proc_holder/spell/S) spell_list += S S.action.Grant(current) @@ -779,7 +762,7 @@ continue S.charge_counter = delay S.updateButtonIcon() - INVOKE_ASYNC(S, /obj/effect/proc_holder/spell.proc/start_recharge) + INVOKE_ASYNC(S, TYPE_PROC_REF(/obj/effect/proc_holder/spell, start_recharge)) /datum/mind/proc/get_ghost(even_if_they_cant_reenter, ghosts_with_clients) for(var/mob/dead/observer/G in (ghosts_with_clients ? GLOB.player_list : GLOB.dead_mob_list)) @@ -830,7 +813,7 @@ if(!mind.name) mind.name = real_name - mind.current = src + mind.set_current(src) /mob/living/carbon/mind_initialize() ..() diff --git a/code/datums/movement_detector.dm b/code/datums/movement_detector.dm index 109290a8a953..be36d62e6606 100644 --- a/code/datums/movement_detector.dm +++ b/code/datums/movement_detector.dm @@ -20,7 +20,7 @@ src.listener = listener while(ismovable(target)) - RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react) + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(move_react)) target = target.loc /// Stops tracking @@ -49,7 +49,7 @@ if(tracked.loc != newturf) var/atom/target = mover.loc while(ismovable(target)) - RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react, TRUE) + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(move_react), TRUE) target = target.loc listener.Invoke(tracked, mover, oldloc, direction) diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm index 22cc860b2cb6..032e3ab8cc8d 100644 --- a/code/datums/mutations/_mutations.dm +++ b/code/datums/mutations/_mutations.dm @@ -50,7 +50,7 @@ . = ..() class = class_ if(timer) - addtimer(CALLBACK(src, .proc/remove), timer) + addtimer(CALLBACK(src, PROC_REF(remove)), timer) timed = TRUE if(copymut && istype(copymut, /datum/mutation/human)) copy_mutation(copymut) @@ -86,7 +86,7 @@ owner.apply_overlay(layer_used) grant_spell() //we do checks here so nothing about hulk getting magic if(!modified) - addtimer(CALLBACK(src, .proc/modify, 5)) //gonna want children calling ..() to run first + addtimer(CALLBACK(src, PROC_REF(modify), 5)) //gonna want children calling ..() to run first /datum/mutation/human/proc/get_visual_indicator() return diff --git a/code/datums/mutations/actions.dm b/code/datums/mutations/actions.dm index 29abd2f0d10c..f2ffe7c25fd2 100644 --- a/code/datums/mutations/actions.dm +++ b/code/datums/mutations/actions.dm @@ -282,7 +282,7 @@ /obj/item/hardened_spike/Initialize(mapload, firedby) . = ..() fired_by = firedby - addtimer(CALLBACK(src, .proc/checkembedded), 5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(checkembedded)), 5 SECONDS) /obj/item/hardened_spike/proc/checkembedded() if(ishuman(loc)) diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index 08e8d59b0502..4b885412165a 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -15,7 +15,7 @@ owner.Unconscious(200 * GET_MUTATION_POWER(src)) owner.Jitter(1000 * GET_MUTATION_POWER(src)) SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "epilepsy", /datum/mood_event/epilepsy) - addtimer(CALLBACK(src, .proc/jitter_less), 90) + addtimer(CALLBACK(src, PROC_REF(jitter_less)), 90) /datum/mutation/human/epilepsy/proc/jitter_less() if(owner) @@ -395,7 +395,7 @@ . = ..() if(.) return - RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/on_move) + RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) /datum/mutation/human/extrastun/on_losing() . = ..() @@ -426,7 +426,7 @@ . = ..() if(.) return TRUE - RegisterSignal(owner, COMSIG_MOB_STATCHANGE, .proc/bloody_shower) + RegisterSignal(owner, COMSIG_MOB_STATCHANGE, PROC_REF(bloody_shower)) /datum/mutation/human/martyrdom/on_losing() . = ..() @@ -484,7 +484,7 @@ head.drop_organs() qdel(head) owner.regenerate_icons() - RegisterSignal(owner, COMSIG_LIVING_ATTACH_LIMB, .proc/abortattachment) + RegisterSignal(owner, COMSIG_LIVING_ATTACH_LIMB, PROC_REF(abortattachment)) /datum/mutation/human/headless/on_losing() . = ..() diff --git a/code/datums/mutations/chameleon.dm b/code/datums/mutations/chameleon.dm index ab609b54cf2a..37da2f30b232 100644 --- a/code/datums/mutations/chameleon.dm +++ b/code/datums/mutations/chameleon.dm @@ -13,8 +13,8 @@ if(..()) return owner.alpha = CHAMELEON_MUTATION_DEFAULT_TRANSPARENCY - RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/on_move) - RegisterSignal(owner, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, .proc/on_attack_hand) + RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) + RegisterSignal(owner, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, PROC_REF(on_attack_hand)) /datum/mutation/human/chameleon/on_life() owner.alpha = max(0, owner.alpha - 25) diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index 4526682c5eaa..707327f658be 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -23,8 +23,8 @@ ADD_TRAIT(owner, TRAIT_HULK, GENETIC_MUTATION) owner.update_body_parts() SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "hulk", /datum/mood_event/hulk) - RegisterSignal(owner, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, .proc/on_attack_hand) - RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(owner, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, PROC_REF(on_attack_hand)) + RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech)) /datum/mutation/human/hulk/proc/on_attack_hand(mob/living/carbon/human/source, atom/target, proximity) SIGNAL_HANDLER @@ -36,7 +36,7 @@ if(target.attack_hulk(owner)) if(world.time > (last_scream + scream_delay)) last_scream = world.time - INVOKE_ASYNC(src, .proc/scream_attack, source) + INVOKE_ASYNC(src, PROC_REF(scream_attack), source) log_combat(source, target, "punched", "hulk powers") source.do_attack_animation(target, ATTACK_EFFECT_SMASH) source.changeNext_move(CLICK_CD_MELEE) diff --git a/code/datums/mutations/sight.dm b/code/datums/mutations/sight.dm index d9b8cb18e13e..8fe2893f4de4 100644 --- a/code/datums/mutations/sight.dm +++ b/code/datums/mutations/sight.dm @@ -86,7 +86,7 @@ . = ..() if(.) return - RegisterSignal(H, COMSIG_MOB_ATTACK_RANGED, .proc/on_ranged_attack) + RegisterSignal(H, COMSIG_MOB_ATTACK_RANGED, PROC_REF(on_ranged_attack)) /datum/mutation/human/laser_eyes/on_losing(mob/living/carbon/human/H) . = ..() @@ -110,7 +110,7 @@ LE.firer = source LE.def_zone = ran_zone(source.zone_selected) LE.preparePixelProjectile(target, source, mouseparams) - INVOKE_ASYNC(LE, /obj/projectile.proc/fire) + INVOKE_ASYNC(LE, TYPE_PROC_REF(/obj/projectile, fire)) playsound(source, 'sound/weapons/taser2.ogg', 75, TRUE) ///Projectile type used by laser eyes diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm index 17014b91530f..5545c4efde53 100644 --- a/code/datums/mutations/speech.dm +++ b/code/datums/mutations/speech.dm @@ -22,7 +22,7 @@ /datum/mutation/human/wacky/on_acquiring(mob/living/carbon/human/owner) if(..()) return - RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech)) /datum/mutation/human/wacky/on_losing(mob/living/carbon/human/owner) if(..()) @@ -78,7 +78,7 @@ /datum/mutation/human/swedish/on_acquiring(mob/living/carbon/human/owner) if(..()) return - RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech)) /datum/mutation/human/swedish/on_losing(mob/living/carbon/human/owner) if(..()) @@ -109,7 +109,7 @@ /datum/mutation/human/chav/on_acquiring(mob/living/carbon/human/owner) if(..()) return - RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech)) /datum/mutation/human/chav/on_losing(mob/living/carbon/human/owner) if(..()) @@ -166,7 +166,7 @@ /datum/mutation/human/elvis/on_acquiring(mob/living/carbon/human/owner) if(..()) return - RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech)) /datum/mutation/human/elvis/on_losing(mob/living/carbon/human/owner) if(..()) diff --git a/code/datums/mutations/telekinesis.dm b/code/datums/mutations/telekinesis.dm index beee7f3537ef..0ba690c8c0c9 100644 --- a/code/datums/mutations/telekinesis.dm +++ b/code/datums/mutations/telekinesis.dm @@ -17,7 +17,7 @@ . = ..() if(.) return - RegisterSignal(H, COMSIG_MOB_ATTACK_RANGED, .proc/on_ranged_attack) + RegisterSignal(H, COMSIG_MOB_ATTACK_RANGED, PROC_REF(on_ranged_attack)) /datum/mutation/human/telekinesis/on_losing(mob/living/carbon/human/H) . = ..() @@ -32,4 +32,4 @@ /datum/mutation/human/telekinesis/proc/on_ranged_attack(datum/source, atom/target) SIGNAL_HANDLER - INVOKE_ASYNC(target, /atom.proc/attack_tk, owner) + INVOKE_ASYNC(target, TYPE_PROC_REF(/atom, attack_tk), owner) diff --git a/code/datums/position_point_vector.dm b/code/datums/position_point_vector.dm index 07fe0ed7652f..9675c337fcc8 100644 --- a/code/datums/position_point_vector.dm +++ b/code/datums/position_point_vector.dm @@ -22,7 +22,8 @@ /proc/angle_between_points(datum/point/a, datum/point/b) return ATAN2((b.y - a.y), (b.x - a.x)) -/datum/position //For positions with map x/y/z and pixel x/y so you don't have to return lists. Could use addition/subtraction in the future I guess. +/// For positions with map x/y/z and pixel x/y so you don't have to return lists. Could use addition/subtraction in the future I guess. +/datum/position var/x = 0 var/y = 0 var/z = 0 @@ -66,7 +67,8 @@ /datum/position/proc/return_point() return new /datum/point(src) -/datum/point //A precise point on the map in absolute pixel locations based on world.icon_size. Pixels are FROM THE EDGE OF THE MAP! +/// A precise point on the map in absolute pixel locations based on world.icon_size. Pixels are FROM THE EDGE OF THE MAP! +/datum/point var/x = 0 var/y = 0 var/z = 0 @@ -80,7 +82,8 @@ p.z = z return p -/datum/point/New(_x, _y, _z, _pixel_x = 0, _pixel_y = 0) //first argument can also be a /datum/position or /atom. +/// First argument can also be a /datum/position or /atom. +/datum/point/New(_x, _y, _z, _pixel_x = 0, _pixel_y = 0) if(istype(_x, /datum/position)) var/datum/position/P = _x _x = P.x @@ -107,7 +110,7 @@ /datum/point/proc/debug_out() var/turf/T = return_turf() - return "\ref[src] aX [x] aY [y] aZ [z] pX [return_px()] pY [return_py()] mX [T.x] mY [T.y] mZ [T.z]" + return "[text_ref(src)] aX [x] aY [y] aZ [z] pX [return_px()] pY [return_py()] mX [T.x] mY [T.y] mZ [T.z]" /datum/point/proc/move_atom_to_src(atom/movable/AM) AM.forceMove(return_turf()) @@ -130,10 +133,13 @@ return MODULUS(y, world.icon_size) - 16 - 1 /datum/point/vector - var/speed = 32 //pixels per iteration + /// Pixels per iteration + var/speed = 32 var/iteration = 0 var/angle = 0 - var/mpx = 0 //calculated x/y movement amounts to prevent having to do trig every step. + /// Calculated x movement amounts to prevent having to do trig every step. + var/mpx = 0 + /// Calculated y movement amounts to prevent having to do trig every step. var/mpy = 0 var/starting_x = 0 //just like before, pixels from EDGE of map! This is set in initialize_location(). var/starting_y = 0 @@ -151,6 +157,15 @@ starting_y = y starting_z = z +/// Same effect as initiliaze_location, but without setting the starting_x/y/z +/datum/point/vector/proc/set_location(tile_x, tile_y, tile_z, p_x = 0, p_y = 0) + if(!isnull(tile_x)) + x = ((tile_x - 1) * world.icon_size) + world.icon_size * 0.5 + p_x + 1 + if(!isnull(tile_y)) + y = ((tile_y - 1) * world.icon_size) + world.icon_size * 0.5 + p_y + 1 + if(!isnull(tile_z)) + z = tile_z + /datum/point/vector/copy_to(datum/point/vector/v = new) ..(v) v.speed = speed diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm index 67051686b7d2..5ffa3778edc6 100644 --- a/code/datums/progressbar.dm +++ b/code/datums/progressbar.dm @@ -45,9 +45,9 @@ user_client = user.client add_prog_bar_image_to_client() - RegisterSignal(user, COMSIG_PARENT_QDELETING, .proc/on_user_delete) - RegisterSignal(user, COMSIG_MOB_LOGOUT, .proc/clean_user_client) - RegisterSignal(user, COMSIG_MOB_LOGIN, .proc/on_user_login) + RegisterSignal(user, COMSIG_PARENT_QDELETING, PROC_REF(on_user_delete)) + RegisterSignal(user, COMSIG_MOB_LOGOUT, PROC_REF(clean_user_client)) + RegisterSignal(user, COMSIG_MOB_LOGIN, PROC_REF(on_user_login)) /datum/progressbar/Destroy() diff --git a/code/datums/proximity_monitor/field.dm b/code/datums/proximity_monitor/field.dm new file mode 100644 index 000000000000..43fdb8bb20b4 --- /dev/null +++ b/code/datums/proximity_monitor/field.dm @@ -0,0 +1,169 @@ +#define FIELD_TURFS_KEY "field_turfs" +#define EDGE_TURFS_KEY "edge_turfs" + +/** + * Movable and easily code-modified fields! Allows for custom AOE effects that affect movement + * and anything inside of them, and can do custom turf effects! + * Supports automatic recalculation/reset on movement. + */ +/datum/proximity_monitor/advanced + var/list/turf/field_turfs = list() + var/list/turf/edge_turfs = list() + +/datum/proximity_monitor/advanced/Destroy() + cleanup_field() + return ..() + +/datum/proximity_monitor/advanced/proc/cleanup_field() + for(var/turf/turf as anything in edge_turfs) + cleanup_edge_turf(turf) + for(var/turf/turf as anything in field_turfs) + cleanup_field_turf(turf) + +//Call every time the field moves (done automatically if you use update_center) or a setup specification is changed. +/datum/proximity_monitor/advanced/proc/recalculate_field() + var/list/new_turfs = update_new_turfs() + + var/list/new_field_turfs = new_turfs[FIELD_TURFS_KEY] + var/list/new_edge_turfs = new_turfs[EDGE_TURFS_KEY] + + for(var/turf/old_turf as anything in field_turfs) + if(!(old_turf in new_field_turfs)) + cleanup_field_turf(old_turf) + for(var/turf/old_turf as anything in edge_turfs) + cleanup_edge_turf(old_turf) + + for(var/turf/new_turf as anything in new_field_turfs) + setup_field_turf(new_turf) + for(var/turf/new_turf as anything in new_edge_turfs) + setup_edge_turf(new_turf) + +/datum/proximity_monitor/advanced/on_entered(turf/source, atom/movable/entered) + . = ..() + if(get_dist(source, host) == current_range) + field_edge_crossed(entered, source) + else + field_turf_crossed(entered, source) + +/datum/proximity_monitor/advanced/on_moved(atom/movable/movable, atom/old_loc) + . = ..() + if(ignore_if_not_on_turf) + //Early return if it's not the host that has moved. + if(movable != host) + return + //Cleanup the field if the host was on a turf but isn't anymore. + if(!isturf(host.loc)) + if(isturf(old_loc)) + cleanup_field() + return + recalculate_field() + +/datum/proximity_monitor/advanced/on_uncrossed(turf/source, atom/movable/gone, direction) + if(get_dist(source, host) == current_range) + field_edge_uncrossed(gone, source) + else + field_turf_uncrossed(gone, source) + +/datum/proximity_monitor/advanced/proc/setup_field_turf(turf/target) + field_turfs |= target + +/datum/proximity_monitor/advanced/proc/cleanup_field_turf(turf/target) + field_turfs -= target + +/datum/proximity_monitor/advanced/proc/setup_edge_turf(turf/target) + edge_turfs |= target + +/datum/proximity_monitor/advanced/proc/cleanup_edge_turf(turf/target) + edge_turfs -= target + +/datum/proximity_monitor/advanced/proc/update_new_turfs() + . = list(FIELD_TURFS_KEY = list(), EDGE_TURFS_KEY = list()) + if(ignore_if_not_on_turf && !isturf(host.loc)) + return + var/turf/center = get_turf(host) + for(var/turf/target in RANGE_TURFS(current_range, center)) + if(get_dist(center, target) == current_range) + .[EDGE_TURFS_KEY] += target + else + .[FIELD_TURFS_KEY] += target + +//Gets edge direction/corner, only works with square radius/WDH fields! +/datum/proximity_monitor/advanced/proc/get_edgeturf_direction(turf/T, turf/center_override = null) + var/turf/checking_from = get_turf(host) + if(istype(center_override)) + checking_from = center_override + if(!(T in edge_turfs)) + return + if(((T.x == (checking_from.x + current_range)) || (T.x == (checking_from.x - current_range))) && ((T.y == (checking_from.y + current_range)) || (T.y == (checking_from.y - current_range)))) + return get_dir(checking_from, T) + if(T.x == (checking_from.x + current_range)) + return EAST + if(T.x == (checking_from.x - current_range)) + return WEST + if(T.y == (checking_from.y - current_range)) + return SOUTH + if(T.y == (checking_from.y + current_range)) + return NORTH + +/datum/proximity_monitor/advanced/proc/field_turf_crossed(atom/movable/movable, turf/location) + return + +/datum/proximity_monitor/advanced/proc/field_turf_uncrossed(atom/movable/movable, turf/location) + return + +/datum/proximity_monitor/advanced/proc/field_edge_crossed(atom/movable/movable, turf/location) + return + +/datum/proximity_monitor/advanced/proc/field_edge_uncrossed(atom/movable/movable, turf/location) + return + + +//DEBUG FIELD ITEM +/obj/item/multitool/field_debug + name = "strange multitool" + desc = "Seems to project a colored field!" + var/operating = FALSE + var/datum/proximity_monitor/advanced/debug/current = null + +/obj/item/multitool/field_debug/Destroy() + QDEL_NULL(current) + return ..() + +/obj/item/multitool/field_debug/proc/setup_debug_field() + current = new(src, 5, FALSE) + current.set_fieldturf_color = "#aaffff" + current.set_edgeturf_color = "#ffaaff" + current.recalculate_field() + +/obj/item/multitool/field_debug/attack_self(mob/user) + operating = !operating + to_chat(user, span_notice("You turn [src] [operating? "on":"off"].")) + if(!istype(current) && operating) + setup_debug_field() + else if(!operating) + QDEL_NULL(current) + +//DEBUG FIELDS +/datum/proximity_monitor/advanced/debug + current_range = 5 + var/set_fieldturf_color = "#aaffff" + var/set_edgeturf_color = "#ffaaff" + +/datum/proximity_monitor/advanced/debug/setup_edge_turf(turf/target) + . = ..() + target.color = set_edgeturf_color + +/datum/proximity_monitor/advanced/debug/cleanup_edge_turf(turf/target) + . = ..() + target.color = initial(target.color) + +/datum/proximity_monitor/advanced/debug/setup_field_turf(turf/target) + . = ..() + target.color = set_fieldturf_color + +/datum/proximity_monitor/advanced/debug/cleanup_field_turf(turf/target) + . = ..() + target.color = initial(target.color) + +#undef FIELD_TURFS_KEY +#undef EDGE_TURFS_KEY diff --git a/code/modules/fields/gravity.dm b/code/datums/proximity_monitor/fields/gravity.dm similarity index 74% rename from code/modules/fields/gravity.dm rename to code/datums/proximity_monitor/fields/gravity.dm index 930c524081ff..ccac71a6d850 100644 --- a/code/modules/fields/gravity.dm +++ b/code/datums/proximity_monitor/fields/gravity.dm @@ -1,9 +1,11 @@ /datum/proximity_monitor/advanced/gravity - name = "modified gravity zone" - setup_field_turfs = TRUE var/gravity_value = 0 var/list/modified_turfs = list() - field_shape = FIELD_SHAPE_RADIUS_SQUARE + +/datum/proximity_monitor/advanced/gravity/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, gravity) + . = ..() + gravity_value = gravity + recalculate_field() /datum/proximity_monitor/advanced/gravity/setup_field_turf(turf/T) . = ..() diff --git a/code/modules/fields/peaceborg_dampener.dm b/code/datums/proximity_monitor/fields/peaceborg_dampener.dm similarity index 65% rename from code/modules/fields/peaceborg_dampener.dm rename to code/datums/proximity_monitor/fields/peaceborg_dampener.dm index 5a1f14916481..16b637afadad 100644 --- a/code/modules/fields/peaceborg_dampener.dm +++ b/code/datums/proximity_monitor/fields/peaceborg_dampener.dm @@ -2,11 +2,6 @@ //Projectile dampening field that slows projectiles and lowers their damage for an energy cost deducted every 1/5 second. //Only use square radius for this! /datum/proximity_monitor/advanced/peaceborg_dampener - name = "\improper Hyperkinetic Dampener Field" - setup_edge_turfs = TRUE - setup_field_turfs = TRUE - requires_processing = TRUE - field_shape = FIELD_SHAPE_RADIUS_SQUARE var/static/image/edgeturf_south = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_south") var/static/image/edgeturf_north = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_north") var/static/image/edgeturf_west = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_west") @@ -17,21 +12,26 @@ var/static/image/southeast_corner = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_southeast") var/static/image/generic_edge = image('icons/effects/fields.dmi', icon_state = "projectile_dampen_generic") var/obj/item/borg/projectile_dampen/projector = null - var/list/obj/projectile/tracked - var/list/obj/projectile/staging - use_host_turf = TRUE + var/list/obj/projectile/tracked = list() + var/list/obj/projectile/staging = list() + // lazylist that keeps track of the overlays added to the edge of the field + var/list/edgeturf_effects -/datum/proximity_monitor/advanced/peaceborg_dampener/New() - tracked = list() - staging = list() +/datum/proximity_monitor/advanced/peaceborg_dampener/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, obj/item/borg/projectile_dampen/projector) ..() + src.projector = projector + recalculate_field() + START_PROCESSING(SSfastprocess, src) /datum/proximity_monitor/advanced/peaceborg_dampener/Destroy() + projector = null + STOP_PROCESSING(SSfastprocess, src) return ..() /datum/proximity_monitor/advanced/peaceborg_dampener/process() if(!istype(projector)) qdel(src) + return var/list/ranged = list() for(var/obj/projectile/P in range(current_range, get_turf(host))) ranged += P @@ -41,23 +41,28 @@ for(var/mob/living/silicon/robot/R in range(current_range, get_turf(host))) if(R.has_buckled_mobs()) for(var/mob/living/L in R.buckled_mobs) - L.visible_message("[L] is knocked off of [R] by the charge in [R]'s chassis induced by [name]!") //I know it's bad. + L.visible_message(span_warning("[L] is knocked off of [R] by the charge in [R]'s chassis induced by the hyperkinetic dampener field!")) //I know it's bad. L.Paralyze(10) R.unbuckle_mob(L) do_sparks(5, 0, L) ..() -/datum/proximity_monitor/advanced/peaceborg_dampener/setup_edge_turf(turf/T) - ..() - var/image/I = get_edgeturf_overlay(get_edgeturf_direction(T)) - var/obj/effect/abstract/proximity_checker/advanced/F = edge_turfs[T] - F.appearance = I.appearance - F.invisibility = 0 - F.mouse_opacity = MOUSE_OPACITY_TRANSPARENT - F.layer = 5 +/datum/proximity_monitor/advanced/peaceborg_dampener/setup_edge_turf(turf/target) + . = ..() + var/image/overlay = get_edgeturf_overlay(get_edgeturf_direction(target)) + var/obj/effect/abstract/effect = new(target) // Makes the field visible to players. + effect.icon = overlay.icon + effect.icon_state = overlay.icon_state + effect.mouse_opacity = MOUSE_OPACITY_TRANSPARENT + effect.layer = ABOVE_ALL_MOB_LAYER + LAZYSET(edgeturf_effects, target, effect) -/datum/proximity_monitor/advanced/peaceborg_dampener/cleanup_edge_turf(turf/T) - ..() +/datum/proximity_monitor/advanced/peaceborg_dampener/cleanup_edge_turf(turf/target) + . = ..() + var/obj/effect/abstract/effect = LAZYACCESS(edgeturf_effects, target) + LAZYREMOVE(edgeturf_effects, target) + if(effect) + qdel(effect) /datum/proximity_monitor/advanced/peaceborg_dampener/proc/get_edgeturf_overlay(direction) switch(direction) @@ -91,24 +96,13 @@ projector.restore_projectile(P) tracked -= P -/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_uncrossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F) - if(!is_turf_in_field(get_turf(AM), src)) - if(istype(AM, /obj/projectile)) - if(AM in tracked) - release_projectile(AM) - else - capture_projectile(AM, FALSE) - return ..() - -/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_crossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F) - if(istype(AM, /obj/projectile) && !(AM in tracked) && staging[AM] && !is_turf_in_field(staging[AM], src)) - capture_projectile(AM) - staging -= AM - return ..() +/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_uncrossed(atom/movable/movable, turf/location) + if(istype(movable, /obj/projectile) && get_dist(movable, host) > current_range) + if(movable in tracked) + release_projectile(movable) + else + capture_projectile(movable, FALSE) -/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_canpass(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F, turf/entering) - if(istype(AM, /obj/projectile)) - staging[AM] = get_turf(AM) - . = ..() - if(!.) - staging -= AM //This one ain't goin' through. +/datum/proximity_monitor/advanced/peaceborg_dampener/field_edge_crossed(atom/movable/movable, turf/location) + if(istype(movable, /obj/projectile) && !(movable in tracked)) + capture_projectile(movable) diff --git a/code/modules/fields/timestop.dm b/code/datums/proximity_monitor/fields/timestop.dm similarity index 90% rename from code/modules/fields/timestop.dm rename to code/datums/proximity_monitor/fields/timestop.dm index 9bb39ff267ea..40a8c1cc947b 100644 --- a/code/modules/fields/timestop.dm +++ b/code/datums/proximity_monitor/fields/timestop.dm @@ -33,27 +33,23 @@ if(G.summoner && locate(/obj/effect/proc_holder/spell/aoe_turf/timestop) in G.summoner.mind.spell_list) //It would only make sense that a person's stand would also be immune. immune[G] = TRUE if(start) - INVOKE_ASYNC(src, .proc/timestop) + INVOKE_ASYNC(src, PROC_REF(timestop)) /obj/effect/timestop/Destroy() - qdel(chronofield) + QDEL_NULL(chronofield) playsound(src, 'sound/magic/timeparadox2.ogg', 75, TRUE, frequency = -1) //reverse! return ..() /obj/effect/timestop/proc/timestop() target = get_turf(src) playsound(src, 'sound/magic/timeparadox2.ogg', 75, TRUE, -1) - chronofield = make_field(/datum/proximity_monitor/advanced/timestop, list("current_range" = freezerange, "host" = src, "immune" = immune, "check_anti_magic" = check_anti_magic, "check_holy" = check_holy)) + chronofield = new (src, freezerange, TRUE, immune, check_anti_magic, check_holy) QDEL_IN(src, duration) /obj/effect/timestop/magic check_anti_magic = TRUE /datum/proximity_monitor/advanced/timestop - name = "chronofield" - setup_field_turfs = TRUE - field_shape = FIELD_SHAPE_RADIUS_SQUARE - requires_processing = TRUE var/list/immune = list() var/list/frozen_things = list() var/list/frozen_mobs = list() //cached separately for processing @@ -64,12 +60,21 @@ var/static/list/global_frozen_atoms = list() +/datum/proximity_monitor/advanced/timestop/New(atom/_host, range, _ignore_if_not_on_turf = TRUE, list/immune, check_anti_magic, check_holy) + ..() + src.immune = immune + src.check_anti_magic = check_anti_magic + src.check_holy = check_holy + recalculate_field() + START_PROCESSING(SSfastprocess, src) + /datum/proximity_monitor/advanced/timestop/Destroy() unfreeze_all() + STOP_PROCESSING(SSfastprocess, src) return ..() -/datum/proximity_monitor/advanced/timestop/field_turf_crossed(atom/movable/AM) - freeze_atom(AM) +/datum/proximity_monitor/advanced/timestop/field_turf_crossed(atom/movable/movable, turf/location) + freeze_atom(movable) /datum/proximity_monitor/advanced/timestop/proc/freeze_atom(atom/movable/A) if(immune[A] || global_frozen_atoms[A] || !istype(A)) @@ -100,8 +105,8 @@ A.move_resist = INFINITY global_frozen_atoms[A] = src into_the_negative_zone(A) - RegisterSignal(A, COMSIG_MOVABLE_PRE_MOVE, .proc/unfreeze_atom) - RegisterSignal(A, COMSIG_ITEM_PICKUP, .proc/unfreeze_atom) + RegisterSignal(A, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(unfreeze_atom)) + RegisterSignal(A, COMSIG_ITEM_PICKUP, PROC_REF(unfreeze_atom)) return TRUE @@ -167,10 +172,10 @@ m.Stun(20, ignore_canstun = TRUE) /datum/proximity_monitor/advanced/timestop/setup_field_turf(turf/T) + . = ..() for(var/i in T.contents) freeze_atom(i) freeze_turf(T) - return ..() /datum/proximity_monitor/advanced/timestop/proc/freeze_projectile(obj/projectile/P) diff --git a/code/datums/proximity_monitor/proximity_monitor.dm b/code/datums/proximity_monitor/proximity_monitor.dm new file mode 100644 index 000000000000..7ab65204b751 --- /dev/null +++ b/code/datums/proximity_monitor/proximity_monitor.dm @@ -0,0 +1,78 @@ +/datum/proximity_monitor + ///The atom we are tracking + var/atom/host + ///The atom that will receive HasProximity calls. + var/atom/hasprox_receiver + ///The range of the proximity monitor. Things moving wihin it will trigger HasProximity calls. + var/current_range + ///If we don't check turfs in range if the host's loc isn't a turf + var/ignore_if_not_on_turf + ///The signals of the connect range component, needed to monitor the turfs in range. + var/static/list/loc_connections = list( + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), + COMSIG_ATOM_EXITED = PROC_REF(on_uncrossed), + ) + +/datum/proximity_monitor/New(atom/_host, range, _ignore_if_not_on_turf = TRUE) + ignore_if_not_on_turf = _ignore_if_not_on_turf + current_range = range + set_host(_host) + +/datum/proximity_monitor/proc/set_host(atom/new_host, atom/new_receiver) + if(new_host == host) + return + if(host) //No need to delete the connect range and containers comps. They'll be updated with the new tracked host. + UnregisterSignal(host, list(COMSIG_MOVABLE_MOVED, COMSIG_PARENT_QDELETING)) + if(hasprox_receiver) + UnregisterSignal(hasprox_receiver, COMSIG_PARENT_QDELETING) + if(new_receiver) + hasprox_receiver = new_receiver + if(new_receiver != new_host) + RegisterSignal(new_receiver, COMSIG_PARENT_QDELETING, PROC_REF(on_host_or_receiver_del)) + else if(hasprox_receiver == host) //Default case + hasprox_receiver = new_host + host = new_host + RegisterSignal(new_host, COMSIG_PARENT_QDELETING, PROC_REF(on_host_or_receiver_del)) + var/static/list/containers_connections = list(COMSIG_MOVABLE_MOVED = PROC_REF(on_moved)) + AddComponent(/datum/component/connect_containers, host, containers_connections) + RegisterSignal(host, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) + set_range(current_range, TRUE) + +/datum/proximity_monitor/proc/on_host_or_receiver_del(datum/source) + SIGNAL_HANDLER + qdel(src) + +/datum/proximity_monitor/Destroy() + host = null + hasprox_receiver = null + return ..() + +/datum/proximity_monitor/proc/set_range(range, force_rebuild = FALSE) + if(!force_rebuild && range == current_range) + return FALSE + . = TRUE + current_range = range + + //If the connect_range component exists already, this will just update its range. No errors or duplicates. + AddComponent(/datum/component/connect_range, host, loc_connections, range, !ignore_if_not_on_turf) + +/datum/proximity_monitor/proc/on_moved(atom/movable/source, atom/old_loc) + SIGNAL_HANDLER + if(source == host) + hasprox_receiver?.HasProximity(host) + +/datum/proximity_monitor/proc/set_ignore_if_not_on_turf(does_ignore = TRUE) + if(ignore_if_not_on_turf == does_ignore) + return + ignore_if_not_on_turf = does_ignore + //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() + SIGNAL_HANDLER + return //Used by the advanced subtype for effect fields. + +/datum/proximity_monitor/proc/on_entered(atom/source, atom/movable/arrived) + SIGNAL_HANDLER + if(source != host) + hasprox_receiver?.HasProximity(arrived) diff --git a/code/datums/quixotejump.dm b/code/datums/quixotejump.dm index 8ed02f286cb5..edc2b0c2192e 100644 --- a/code/datums/quixotejump.dm +++ b/code/datums/quixotejump.dm @@ -6,13 +6,13 @@ var/charges = 3 var/max_charges = 3 var/charge_rate = 60 //3 seconds - var/mob/living/carbon/human/holder + var/datum/weakref/holder_ref var/dash_sound = 'sound/magic/blink.ogg' var/beam_effect = "blur" /datum/action/innate/quixotejump/Grant(mob/user) . = ..() - holder = user + holder_ref = WEAKREF(user) /datum/action/innate/quixotejump/IsAvailable() if(charges > 0) @@ -21,11 +21,17 @@ return FALSE /datum/action/innate/quixotejump/proc/charge() + var/mob/living/carbon/human/holder = holder_ref.resolve() + if(isnull(holder)) + return charges = clamp(charges + 1, 0, max_charges) holder.update_action_buttons_icon() to_chat(holder, "Quixote dash mechanisms now have [charges]/[max_charges] charges.") /datum/action/innate/quixotejump/Activate() + var/mob/living/carbon/human/holder = holder_ref.resolve() + if(isnull(holder)) + return if(!charges) to_chat(holder, "Quixote dash mechanisms are still recharging. Please standby.") return @@ -43,4 +49,4 @@ playsound(T, dash_sound, 25, TRUE) charges-- holder.update_action_buttons_icon() - addtimer(CALLBACK(src, .proc/charge), charge_rate) + addtimer(CALLBACK(src, PROC_REF(charge)), charge_rate) diff --git a/code/datums/ruins/beachplanet.dm b/code/datums/ruins/beachplanet.dm index b23a7524f6b5..dae334aefae1 100644 --- a/code/datums/ruins/beachplanet.dm +++ b/code/datums/ruins/beachplanet.dm @@ -1,4 +1,4 @@ -// Hey! Listen! Update \config\beachruinblacklist.txt with your new ruins! +// Hey! Listen! Update _maps\map_catalogue.txt with your new ruins! /datum/map_template/ruin/beachplanet prefix = "_maps/RandomRuins/BeachRuins/" @@ -59,3 +59,9 @@ id = "beach_crashed_engineer" description = "An abandoned camp built by a crashed engineer" suffix = "beach_crashed_engineer.dmm" + +/datum/map_template/ruin/beachplanet/floatresort + name = "Floating Beach Resort" + id = "beach_float_resort" + description = "A hidden paradise on the beach" + suffix = "beach_float_resort.dmm" diff --git a/code/datums/ruins/icemoon.dm b/code/datums/ruins/icemoon.dm index afd841ff802e..a38ad6a1f86b 100644 --- a/code/datums/ruins/icemoon.dm +++ b/code/datums/ruins/icemoon.dm @@ -1,4 +1,4 @@ -// Hey! Listen! Update \config\iceruinblacklist.txt with your new ruins! +// Hey! Listen! Update _maps\map_catalogue.txt with your new ruins! /datum/map_template/ruin/icemoon prefix = "_maps/RandomRuins/IceRuins/" diff --git a/code/datums/ruins/jungle.dm b/code/datums/ruins/jungle.dm index 4c80d0618f50..b340bf2f9ac1 100644 --- a/code/datums/ruins/jungle.dm +++ b/code/datums/ruins/jungle.dm @@ -1,4 +1,4 @@ -// Hey! Listen! Update \config\jungleruinblacklist.txt with your new ruins! +// Hey! Listen! Update _maps\map_catalogue.txt with your new ruins! /datum/map_template/ruin/jungle prefix = "_maps/RandomRuins/JungleRuins/" @@ -132,6 +132,12 @@ description = "A MedTech pharmaceutical manufacturing plant where something went terribly wrong." suffix = "jungle_medtech_outbreak.dmm" +/datum/map_template/ruin/jungle/cavecrew + name = "Frontiersmen Cave" + id = "cavecrew" + description = "A frontiersmen base, hidden within a cave. They don't seem friendly" + suffix = "jungle_cavecrew.dmm" + /datum/map_template/ruin/jungle/library name = "Abandoned Library" id = "abandoned-library" diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index ca7b7e8b3162..0c46f33ccacb 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -1,4 +1,4 @@ -// Hey! Listen! Update \config\lavaruinblacklist.txt with your new ruins! +// Hey! Listen! Update _maps\map_catalogue.txt with your new ruins! /datum/map_template/ruin/lavaland prefix = "_maps/RandomRuins/LavaRuins/" @@ -8,13 +8,6 @@ cost = 5 allow_duplicates = FALSE -/datum/map_template/ruin/lavaland/biodome/beach - name = "Biodome Beach" - id = "biodome-beach" - description = "Seemingly plucked from a tropical destination, this beach is calm and cool, with the salty waves roaring softly in the background. \ - Comes with a rustic wooden bar and suicidal bartender." - suffix = "lavaland_biodome_beach.dmm" - /datum/map_template/ruin/lavaland/biodome/winter name = "Biodome Winter" id = "biodome-winter" @@ -22,14 +15,6 @@ Includes a unique(*) laser pistol display case, and the recently introduced I.C.E(tm)." suffix = "lavaland_surface_biodome_winter.dmm" -/datum/map_template/ruin/lavaland/syndicate_base - name = "Syndicate Lava Base" - id = "lava-base" - description = "A secret base researching illegal bioweapons, it is closely guarded by an elite team of syndicate agents." - suffix = "lavaland_surface_syndicate_base1.dmm" - cost = 20 - allow_duplicates = FALSE - /datum/map_template/ruin/lavaland/free_golem name = "Free Golem Ship" id = "golem-ship" diff --git a/code/datums/ruins/rockplanet.dm b/code/datums/ruins/rockplanet.dm index 5d8e74000564..269198a16ed4 100644 --- a/code/datums/ruins/rockplanet.dm +++ b/code/datums/ruins/rockplanet.dm @@ -1,4 +1,4 @@ -// Hey! Listen! Update \config\rockruinblacklist.txt with your new ruins! +// Hey! Listen! Update _maps\map_catalogue.txt with your new ruins! /datum/map_template/ruin/rockplanet prefix = "_maps/RandomRuins/RockRuins/" @@ -93,3 +93,9 @@ description = "Nanotrasen's gotta lay off some personnel, and this facility hasn't been worth the effort so far" id = "rockplanet_budgetcuts" suffix = "rockplanet_budgetcuts.dmm" + +/datum/map_template/ruin/rockplanet/nomadcrash + name = "Nomad Crash" + description = "A Crashed Arrow & Axe Interceptor. A long forgotten Crew. They tried their best to survive..." + id = "rockplanet_nomadcrash" + suffix = "rockplanet_nomadcrash.dmm" diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm index 5aba2df7d5ce..f754aba26329 100644 --- a/code/datums/ruins/space.dm +++ b/code/datums/ruins/space.dm @@ -1,4 +1,4 @@ -// Hey! Listen! Update \config\spaceruinblacklist.txt with your new ruins! +// Hey! Listen! Update _maps\map_catalogue.txt with your new ruins! /datum/map_template/ruin/space prefix = "_maps/RandomRuins/SpaceRuins/" diff --git a/code/datums/ruins/wasteplanet.dm b/code/datums/ruins/wasteplanet.dm index 38c07d74cdfc..80bf701526be 100644 --- a/code/datums/ruins/wasteplanet.dm +++ b/code/datums/ruins/wasteplanet.dm @@ -1,4 +1,4 @@ -// Hey! Listen! Update \config\wasteruinblacklist.txt with your new ruins! +// Hey! Listen! Update _maps\map_catalogue.txt with your new ruins! /datum/map_template/ruin/wasteplanet prefix = "_maps/RandomRuins/WasteRuins/" diff --git a/code/datums/ruins/whitesands.dm b/code/datums/ruins/whitesands.dm index 062a64db559a..eaf742ce2a29 100644 --- a/code/datums/ruins/whitesands.dm +++ b/code/datums/ruins/whitesands.dm @@ -1,4 +1,4 @@ -// Hey! Listen! Update \config\sandruinblacklist.txt with your new ruins! +// Hey! Listen! Update _maps\map_catalogue.txt with your new ruins! /datum/map_template/ruin/whitesands prefix = "_maps/RandomRuins/SandRuins/" diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm index 1bcc94853456..848940d4e9d9 100644 --- a/code/datums/saymode.dm +++ b/code/datums/saymode.dm @@ -124,25 +124,3 @@ AI.holopad_talk(message, language) return FALSE return TRUE - -/datum/saymode/monkey - key = "k" - mode = MODE_MONKEY - -/datum/saymode/monkey/handle_message(mob/living/user, message, datum/language/language) - var/datum/mind = user.mind - if(!mind) - return TRUE - if(is_monkey_leader(mind) || (ismonkey(user) && is_monkey(mind))) - user.log_talk(message, LOG_SAY, tag="monkey") - if(prob(75) && ismonkey(user)) - user.visible_message("\The [user] chimpers.") - var/msg = "\[[is_monkey_leader(mind) ? "Monkey Leader" : "Monkey"]\] [user]: [message]" - for(var/_M in GLOB.mob_list) - var/mob/M = _M - if(M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, user) - to_chat(M, "[link] [msg]") - if((is_monkey_leader(M.mind) || ismonkey(M)) && (M.mind in SSticker.mode.ape_infectees)) - to_chat(M, msg) - return FALSE diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index c646f76fe1e8..c294d25dee10 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -66,7 +66,7 @@ // Finding the dir of the mobile port var/dpos = cached_map.find_next_delimiter_position(model_text, start_pos, ",","{","}") - var/cache_text = cached_map.trim_text(copytext(model_text, start_pos, dpos)) + var/cache_text = trim_reduced(copytext(model_text, start_pos, dpos)) var/variables_start = findtext(cache_text, "{") port_dir = NORTH // Incase something went wrong with variables from the cache if(variables_start) @@ -108,6 +108,8 @@ continue for(var/obj/docking_port/mobile/port in place) + if(my_port) + CRASH("[src] loaded with multiple docking ports!") my_port = port if(register) port.register() @@ -135,6 +137,9 @@ port.dwidth = port_y_offset - 1 port.dheight = width - port_x_offset + if(!my_port) + CRASH("Shuttle template loaded without a mobile port!") + for(var/turf/shuttle_turf in turfs) //Set up underlying_turf_area and update relevent towed_shuttles var/area/ship/turf_loc = turfs[shuttle_turf] @@ -310,76 +315,23 @@ /datum/map_template/shuttle/shiptest category = "shiptest" -/datum/map_template/shuttle/custom - job_slots = list(new /datum/job/assistant = 5) // There will already be a captain, probably! - file_name = "custom_shuttle" // Dummy - -/// Syndicate Infiltrator variants -/datum/map_template/shuttle/infiltrator - category = "misc" - -/datum/map_template/shuttle/infiltrator/advanced - file_name = "infiltrator_advanced" - name = "advanced syndicate infiltrator" - -/// Pirate ship templates -/datum/map_template/shuttle/pirate - category = "misc" - -/datum/map_template/shuttle/pirate/default - file_name = "pirate_default" - name = "pirate ship (Default)" - -/// Fugitive hunter ship templates -/datum/map_template/shuttle/hunter - category = "misc" - -/datum/map_template/shuttle/hunter/russian - file_name = "hunter_russian" - name = "Russian Cargo Ship" - -/datum/map_template/shuttle/hunter/bounty - file_name = "hunter_bounty" - name = "Bounty Hunter Ship" - /// Shuttles to be loaded in ruins /datum/map_template/shuttle/ruin category = "ruin" starting_funds = 0 -/datum/map_template/shuttle/ruin/caravan_victim - file_name = "ruin_caravan_victim" - name = "Small Freighter" - -/datum/map_template/shuttle/ruin/pirate_cutter - file_name = "ruin_pirate_cutter" - name = "Pirate Cutter" - -/datum/map_template/shuttle/ruin/syndicate_dropship - file_name = "ruin_syndicate_dropship" - name = "Syndicate Dropship" - -/datum/map_template/shuttle/ruin/syndicate_fighter_shiv - file_name = "ruin_syndicate_fighter_shiv" - name = "Syndicate Fighter" - -/datum/map_template/shuttle/ruin/solgov_exploration_pod - file_name = "ruin_solgov_exploration_pod" - name = "SolGov Exploration Pod" - -/datum/map_template/shuttle/ruin/syndicate_interceptor - file_name = "ruin_syndicate_interceptor" - name = "Syndicate Interceptor" - prefix = "SSV" - name_categories = list("WEAPONS") - short_name = "Dartbird" - //Subshuttles /datum/map_template/shuttle/subshuttles category = "subshuttles" starting_funds = 0 + +/datum/map_template/shuttle/subshuttles/frontiersmen_gut //i need to give this a better name at some point + file_name = "frontiersmen_gut" + name = "Gut Combat Freighter" + prefix = "ISV" + /datum/map_template/shuttle/subshuttles/pill file_name = "independent_pill" name = "Pill-Class Torture Device" @@ -397,7 +349,6 @@ name = "Superpill-Class Experimental Engineering Platform" prefix = "Pill" name_categories = list("PILLS") -//your subshuttle here /datum/map_template/shuttle/subshuttles/kunai file_name = "independent_kunai" @@ -408,3 +359,10 @@ file_name = "independent_sugarcube" name = "Sugarcube Transport" prefix = "ISV" + +//your subshuttle here +/datum/map_template/shuttle/subshuttles/heron + file_name = "nanotrasen_falcon" + name = "Falcon Dropship" + prefix = "NTSV" + diff --git a/code/datums/skills/_skill.dm b/code/datums/skills/_skill.dm index 46c3a1d2bc4d..368a1991a015 100644 --- a/code/datums/skills/_skill.dm +++ b/code/datums/skills/_skill.dm @@ -73,9 +73,9 @@ GLOBAL_LIST_INIT(skill_types, subtypesof(/datum/skill)) to_chat(mind.current, "It seems the Professional [title] Association won't send me another status symbol.") return var/obj/structure/closet/supplypod/bluespacepod/pod = new() - pod.landingDelay = 150 + pod.delays = list(POD_TRANSIT = 15, POD_FALLING = 4, POD_OPENING = 30, POD_LEAVING = 30) pod.explosionSize = list(0,0,0,0) to_chat(mind.current, "My legendary skill has attracted the attention of the Professional [title] Association. It seems they are sending me a status symbol to commemorate my abilities.") var/turf/T = get_turf(mind.current) - new /obj/effect/DPtarget(T, pod , new skill_cape_path(T)) + new /obj/effect/pod_landingzone(T, pod , new skill_cape_path(T)) LAZYADD(mind.skills_rewarded, src.type) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 03808a86d076..43c7bd3ab2ec 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -254,7 +254,7 @@ owner.add_stun_absorption("bloody bastard sword", duration, 2, "doesn't even flinch as the sword's power courses through them!", "You shrug off the stun!", " glowing with a blazing red aura!") owner.spin(duration,1) animate(owner, color = oldcolor, time = duration, easing = EASE_IN) - addtimer(CALLBACK(owner, /atom/proc/update_atom_colour), duration) + addtimer(CALLBACK(owner, TYPE_PROC_REF(/atom, update_atom_colour)), duration) playsound(owner, 'sound/weapons/fwoosh.ogg', 75, FALSE) return ..() @@ -398,7 +398,7 @@ /datum/status_effect/hippocraticOath/proc/consume_owner() owner.visible_message("[owner]'s soul is absorbed into the rod, relieving the previous snake of its duty.") var/mob/living/simple_animal/hostile/retaliate/poison/snake/healSnake = new(owner.loc) - var/list/chems = list(/datum/reagent/medicine/sal_acid, /datum/reagent/medicine/C2/convermol, /datum/reagent/medicine/oxandrolone) + var/list/chems = list(/datum/reagent/medicine/sal_acid, /datum/reagent/medicine/c2/convermol, /datum/reagent/medicine/oxandrolone) healSnake.poison_type = pick(chems) healSnake.name = "Asclepius's Snake" healSnake.real_name = "Asclepius's Snake" diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index fdc1710c9ea7..5932ee024359 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -508,7 +508,7 @@ /datum/status_effect/trance/on_apply() if(!iscarbon(owner)) return FALSE - RegisterSignal(owner, COMSIG_MOVABLE_HEAR, .proc/hypnotize) + RegisterSignal(owner, COMSIG_MOVABLE_HEAR, PROC_REF(hypnotize)) ADD_TRAIT(owner, TRAIT_MUTE, "trance") owner.add_client_colour(/datum/client_colour/monochrome) owner.visible_message("[stun ? "[owner] stands still as [owner.p_their()] eyes seem to focus on a distant point." : ""]", \ @@ -536,8 +536,8 @@ return var/mob/living/carbon/C = owner C.cure_trauma_type(/datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY) //clear previous hypnosis - addtimer(CALLBACK(C, /mob/living/carbon.proc/gain_trauma, /datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY, hearing_args[HEARING_RAW_MESSAGE]), 10) - addtimer(CALLBACK(C, /mob/living.proc/Stun, 60, TRUE, TRUE), 15) //Take some time to think about it + addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon, gain_trauma), /datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY, hearing_args[HEARING_RAW_MESSAGE]), 10) + addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living, Stun), 60, TRUE, TRUE), 15) //Take some time to think about it qdel(src) /datum/status_effect/spasms diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm index c52e3c731a4d..11037374b9b3 100644 --- a/code/datums/status_effects/gas.dm +++ b/code/datums/status_effects/gas.dm @@ -22,7 +22,7 @@ icon_state = "frozen" /datum/status_effect/freon/on_apply() - RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/owner_resist) + RegisterSignal(owner, COMSIG_LIVING_RESIST, PROC_REF(owner_resist)) if(!owner.stat) to_chat(owner, "You become frozen in a cube!") cube = icon('icons/effects/freeze.dmi', "ice_cube") @@ -34,7 +34,7 @@ /datum/status_effect/freon/proc/owner_resist() SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/do_resist) + INVOKE_ASYNC(src, PROC_REF(do_resist)) /datum/status_effect/freon/proc/do_resist() to_chat(owner, "You start breaking out of the ice cube...") diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index 4952479fa635..76a33319631f 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -132,7 +132,7 @@ /datum/status_effect/bugged/on_apply(mob/living/new_owner, mob/living/tracker) . = ..() if (.) - RegisterSignal(new_owner, COMSIG_MOVABLE_HEAR, .proc/handle_hearing) + RegisterSignal(new_owner, COMSIG_MOVABLE_HEAR, PROC_REF(handle_hearing)) /datum/status_effect/bugged/on_remove() . = ..() @@ -210,9 +210,9 @@ qdel(src) return - RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/check_owner_in_range) - RegisterSignal(offered_item, list(COMSIG_PARENT_QDELETING, COMSIG_ITEM_DROPPED), .proc/dropped_item) - //RegisterSignal(owner, COMSIG_PARENT_EXAMINE_MORE, .proc/check_fake_out) + RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(check_owner_in_range)) + RegisterSignal(offered_item, list(COMSIG_PARENT_QDELETING, COMSIG_ITEM_DROPPED), PROC_REF(dropped_item)) + //RegisterSignal(owner, COMSIG_PARENT_EXAMINE_MORE, PROC_REF(check_fake_out)) /datum/status_effect/offering/Destroy() for(var/i in possible_takers) @@ -227,7 +227,7 @@ if(!G) return LAZYADD(possible_takers, possible_candidate) - RegisterSignal(possible_candidate, COMSIG_MOVABLE_MOVED, .proc/check_taker_in_range) + RegisterSignal(possible_candidate, COMSIG_MOVABLE_MOVED, PROC_REF(check_taker_in_range)) G.setup(possible_candidate, owner, offered_item) /// Remove the alert and signals for the specified carbon mob. Automatically removes the status effect when we lost the last taker diff --git a/code/datums/tgs_event_handler.dm b/code/datums/tgs_event_handler.dm index 434450b9bec5..55c7c6427749 100644 --- a/code/datums/tgs_event_handler.dm +++ b/code/datums/tgs_event_handler.dm @@ -23,7 +23,7 @@ to_chat(world, "Server updated, changes will be applied on the next round...") if(TGS_EVENT_WATCHDOG_DETACH) message_admins("TGS restarting...") - reattach_timer = addtimer(CALLBACK(src, .proc/LateOnReattach), 1 MINUTES) + reattach_timer = addtimer(CALLBACK(src, PROC_REF(LateOnReattach)), 1 MINUTES) if(TGS_EVENT_WATCHDOG_REATTACH) var/datum/tgs_version/old_version = world.TgsVersion() var/datum/tgs_version/new_version = args[2] diff --git a/code/datums/traits/_quirk.dm b/code/datums/traits/_quirk.dm index 75d9dde5cff5..47e45a42aa67 100644 --- a/code/datums/traits/_quirk.dm +++ b/code/datums/traits/_quirk.dm @@ -1,5 +1,3 @@ -#define TRAIT_SPECIES_WHITELIST(ids...) list("type" = "allowed", ids) -#define TRAIT_SPECIES_BLACKLIST(ids...) list("type" = "blocked", ids) //every quirk in this folder should be coded around being applied on spawn //these are NOT "mob quirks" like GOTTAGOFAST, but exist as a medium to apply them and other different effects /datum/quirk @@ -12,7 +10,6 @@ var/medical_record_text //This text will appear on medical records for the trait. Not yet implemented var/mood_quirk = FALSE //if true, this quirk affects mood and is unavailable if moodlets are disabled var/list/mob_traits //if applicable, apply and remove these mob traits - var/list/species_lock = list() //List of id-based locks for species, use either TRAIT_SPECIES_WHITELIST or TRAIT_SPECIES_BLACKLIST inputting the species ids to said macros. Example: species_lock = TRAIT_SPECIES_WHITELIST(SPECIES_IPC, SPECIES_MOTH) var/mob/living/quirk_holder /datum/quirk/New(mob/living/quirk_mob, spawn_effects) @@ -34,7 +31,7 @@ if(quirk_holder.client) post_add() else - RegisterSignal(quirk_holder, COMSIG_MOB_LOGIN, .proc/on_quirk_holder_first_login) + RegisterSignal(quirk_holder, COMSIG_MOB_LOGIN, PROC_REF(on_quirk_holder_first_login)) /** diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index db6fdbd75841..dccd4e87877d 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -23,7 +23,6 @@ gain_text = "You feel your vigor slowly fading away." lose_text = "You feel vigorous again." medical_record_text = "Patient requires regular treatment for blood loss due to low production of blood." - species_lock = TRAIT_SPECIES_BLACKLIST(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE) // These bad boys have NOBLOOD and are roundstart available. /datum/quirk/blooddeficiency/on_process() var/mob/living/carbon/human/H = quirk_holder @@ -448,8 +447,8 @@ var/dumb_thing = TRUE /datum/quirk/social_anxiety/add() - RegisterSignal(quirk_holder, COMSIG_MOB_EYECONTACT, .proc/eye_contact) - RegisterSignal(quirk_holder, COMSIG_MOB_EXAMINATE, .proc/looks_at_floor) + RegisterSignal(quirk_holder, COMSIG_MOB_EYECONTACT, PROC_REF(eye_contact)) + RegisterSignal(quirk_holder, COMSIG_MOB_EXAMINATE, PROC_REF(looks_at_floor)) /datum/quirk/social_anxiety/remove() if(quirk_holder) @@ -480,7 +479,7 @@ if(prob(85) || (istype(mind_check) && mind_check.mind)) return - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, quirk_holder, "You make eye contact with [A]."), 3) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(to_chat), quirk_holder, "You make eye contact with [A]."), 3) /datum/quirk/social_anxiety/proc/eye_contact(datum/source, mob/living/other_mob, triggering_examiner) SIGNAL_HANDLER @@ -505,7 +504,7 @@ msg += "causing you to freeze up!" SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "anxiety_eyecontact", /datum/mood_event/anxiety_eyecontact) - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, quirk_holder, "[msg]"), 3) // so the examine signal has time to fire and this will print after + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(to_chat), quirk_holder, "[msg]"), 3) // so the examine signal has time to fire and this will print after return COMSIG_BLOCK_EYECONTACT /datum/mood_event/anxiety_eyecontact @@ -635,7 +634,7 @@ mood_quirk = TRUE /datum/quirk/bad_touch/add() - RegisterSignal(quirk_holder, list(COMSIG_LIVING_GET_PULLED, COMSIG_CARBON_HUGGED, COMSIG_CARBON_HEADPAT), .proc/uncomfortable_touch) + RegisterSignal(quirk_holder, list(COMSIG_LIVING_GET_PULLED, COMSIG_CARBON_HUGGED, COMSIG_CARBON_HEADPAT), PROC_REF(uncomfortable_touch)) /datum/quirk/bad_touch/remove() if(quirk_holder) diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 0705a2837b6e..b92a3d137dc9 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -185,8 +185,8 @@ old_hair = H.hairstyle H.hairstyle = "Bald" H.update_hair() - RegisterSignal(H, COMSIG_CARBON_EQUIP_HAT, .proc/equip_hat) - RegisterSignal(H, COMSIG_CARBON_UNEQUIP_HAT, .proc/unequip_hat) + RegisterSignal(H, COMSIG_CARBON_EQUIP_HAT, PROC_REF(equip_hat)) + RegisterSignal(H, COMSIG_CARBON_UNEQUIP_HAT, PROC_REF(unequip_hat)) /datum/quirk/bald/remove() if(quirk_holder) diff --git a/code/datums/verb_callbacks.dm b/code/datums/verb_callbacks.dm new file mode 100644 index 000000000000..6468974260f7 --- /dev/null +++ b/code/datums/verb_callbacks.dm @@ -0,0 +1,8 @@ +///like normal callbacks but they also record their creation time for measurement purposes +/datum/callback/verb_callback + ///the tick this callback datum was created in. used for testing latency + var/creation_time = 0 + +/datum/callback/verb_callback/New(thingtocall, proctocall, ...) + creation_time = DS2TICKS(world.time) + . = ..() diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index 142bda8a9572..e3b6f98329f5 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -164,7 +164,7 @@ to_chat(M, telegraph_message) if(telegraph_sound) SEND_SOUND(M, sound(telegraph_sound)) - addtimer(CALLBACK(src, .proc/start), telegraph_duration) + addtimer(CALLBACK(src, PROC_REF(start)), telegraph_duration) if(sound_active_outside) sound_active_outside.output_atoms = outside_areas @@ -196,7 +196,7 @@ to_chat(M, weather_message) if(weather_sound) SEND_SOUND(M, sound(weather_sound)) - addtimer(CALLBACK(src, .proc/wind_down), weather_duration) + addtimer(CALLBACK(src, PROC_REF(wind_down)), weather_duration) if(sound_weak_outside) sound_weak_outside.stop() @@ -226,7 +226,7 @@ to_chat(M, end_message) if(end_sound) SEND_SOUND(M, sound(end_sound)) - addtimer(CALLBACK(src, .proc/end), end_duration) + addtimer(CALLBACK(src, PROC_REF(end)), end_duration) if(sound_active_outside) sound_active_outside.stop() diff --git a/code/datums/wires/_wires.dm b/code/datums/wires/_wires.dm index 3562dc5d6dbb..e6db7790fd67 100644 --- a/code/datums/wires/_wires.dm +++ b/code/datums/wires/_wires.dm @@ -37,7 +37,7 @@ CRASH("Wire holder is not of the expected type!") src.holder = holder - RegisterSignal(holder, COMSIG_PARENT_QDELETING, .proc/on_holder_qdel) + RegisterSignal(holder, COMSIG_PARENT_QDELETING, PROC_REF(on_holder_qdel)) if(randomize) randomize() else diff --git a/code/datums/wires/airalarm.dm b/code/datums/wires/airalarm.dm index 6afccd547660..8297c2ab233c 100644 --- a/code/datums/wires/airalarm.dm +++ b/code/datums/wires/airalarm.dm @@ -31,13 +31,13 @@ if(!A.shorted) A.shorted = TRUE A.update_appearance() - addtimer(CALLBACK(A, /obj/machinery/airalarm.proc/reset, wire), 1200) + addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/airalarm, reset), wire), 1200) if(WIRE_IDSCAN) // Toggle lock. A.locked = !A.locked if(WIRE_AI) // Disable AI control for a while. if(!A.aidisabled) A.aidisabled = TRUE - addtimer(CALLBACK(A, /obj/machinery/airalarm.proc/reset, wire), 100) + addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/airalarm, reset), wire), 100) if(WIRE_PANIC) // Toggle panic siphon. if(!A.shorted) if(A.mode == 1) // AALARM_MODE_SCRUB diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm index c9e969a8ebd0..14e2d4f2ba1f 100644 --- a/code/datums/wires/airlock.dm +++ b/code/datums/wires/airlock.dm @@ -63,9 +63,9 @@ return if(!A.requiresID() || A.check_access(null)) if(A.density) - INVOKE_ASYNC(A, /obj/machinery/door/airlock.proc/open) + INVOKE_ASYNC(A, TYPE_PROC_REF(/obj/machinery/door/airlock, open)) else - INVOKE_ASYNC(A, /obj/machinery/door/airlock.proc/close) + INVOKE_ASYNC(A, TYPE_PROC_REF(/obj/machinery/door/airlock, close)) if(WIRE_BOLTS) // Pulse to toggle bolts (but only raise if power is on). if(!A.locked) A.bolt() @@ -84,7 +84,7 @@ A.aiControlDisabled = AI_WIRE_DISABLED else if(A.aiControlDisabled == AI_WIRE_DISABLED_HACKED) A.aiControlDisabled = AI_WIRE_HACKED - addtimer(CALLBACK(A, /obj/machinery/door/airlock.proc/reset_ai_wire), 1 SECONDS) + addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/door/airlock, reset_ai_wire)), 1 SECONDS) if(WIRE_SHOCK) // Pulse to shock the door for 10 ticks. if(!A.secondsElectrified) A.set_electrified(MACHINE_DEFAULT_ELECTRIFY_TIME, usr) diff --git a/code/datums/wires/airlock_cycle.dm b/code/datums/wires/airlock_cycle.dm index a1f942dab2e9..318eaa6e0231 100644 --- a/code/datums/wires/airlock_cycle.dm +++ b/code/datums/wires/airlock_cycle.dm @@ -30,13 +30,13 @@ if(!A.shorted) A.shorted = TRUE A.update_appearance() - addtimer(CALLBACK(A, /obj/machinery/advanced_airlock_controller.proc/reset, wire), 1200) + addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/advanced_airlock_controller, reset), wire), 1200) if(WIRE_IDSCAN) // Toggle lock. A.locked = !A.locked if(WIRE_AI) // Disable AI control for a while. if(!A.aidisabled) A.aidisabled = TRUE - addtimer(CALLBACK(A, /obj/machinery/advanced_airlock_controller.proc/reset, wire), 100) + addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/advanced_airlock_controller, reset), wire), 100) /datum/wires/advanced_airlock_controller/on_cut(wire, mend) var/obj/machinery/advanced_airlock_controller/A = holder diff --git a/code/datums/wires/apc.dm b/code/datums/wires/apc.dm index 933b9aae0222..a6a18c6d8d1c 100644 --- a/code/datums/wires/apc.dm +++ b/code/datums/wires/apc.dm @@ -29,14 +29,14 @@ if(WIRE_POWER1, WIRE_POWER2) // Short for a long while. if(!A.shorted) A.shorted = TRUE - addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 1200) + addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/power/apc, reset), wire), 1200) if(WIRE_IDSCAN) // Unlock for a little while. A.locked = FALSE - addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 300) + addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/power/apc, reset), wire), 300) if(WIRE_AI) // Disable AI control for a very short time. if(!A.aidisabled) A.aidisabled = TRUE - addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 10) + addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/power/apc, reset), wire), 10) /datum/wires/apc/on_cut(index, mend) var/obj/machinery/power/apc/A = holder diff --git a/code/datums/wires/autolathe.dm b/code/datums/wires/autolathe.dm index c14c18887a82..8f9fbc16033a 100644 --- a/code/datums/wires/autolathe.dm +++ b/code/datums/wires/autolathe.dm @@ -27,13 +27,13 @@ switch(wire) if(WIRE_HACK) A.adjust_hacked(!A.hacked) - addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60) + addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/autolathe, reset), wire), 60) if(WIRE_SHOCK) A.shocked = !A.shocked - addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60) + addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/autolathe, reset), wire), 60) if(WIRE_DISABLE) A.disabled = !A.disabled - addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60) + addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/autolathe, reset), wire), 60) /datum/wires/autolathe/on_cut(wire, mend) var/obj/machinery/autolathe/A = holder diff --git a/code/datums/wires/explosive.dm b/code/datums/wires/explosive.dm index e3f73d287b72..a8e9873150ea 100644 --- a/code/datums/wires/explosive.dm +++ b/code/datums/wires/explosive.dm @@ -31,9 +31,10 @@ var/obj/item/assembly/timer/T = S G.det_time = T.saved_time*10 else if(istype(S,/obj/item/assembly/prox_sensor)) - var/obj/item/grenade/chem_grenade/G = holder - G.landminemode = S - S.proximity_monitor.wire = TRUE + var/obj/item/assembly/prox_sensor/sensor = S + var/obj/item/grenade/chem_grenade/grenade = holder + grenade.landminemode = sensor + sensor.proximity_monitor.set_ignore_if_not_on_turf(FALSE) fingerprint = S.fingerprintslast return ..() diff --git a/code/datums/wires/shieldwallgen.dm b/code/datums/wires/shieldwallgen.dm index 58c52970c8e5..618e9871c031 100644 --- a/code/datums/wires/shieldwallgen.dm +++ b/code/datums/wires/shieldwallgen.dm @@ -28,7 +28,7 @@ switch(wire) if(WIRE_SHOCK) generator.shocked = !generator.shocked - addtimer(CALLBACK(generator, /obj/machinery/autolathe.proc/reset, wire), 60) + addtimer(CALLBACK(generator, TYPE_PROC_REF(/obj/machinery/autolathe, reset), wire), 60) if(WIRE_ACTIVATE) generator.toggle() if(WIRE_DISABLE) diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index c4e77d9e2bc1..3069a050a04d 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -152,8 +152,7 @@ .["version"] = GLOB.game_version .["mode"] = GLOB.master_mode .["respawn"] = config ? !CONFIG_GET(flag/norespawn) : FALSE - .["enter"] = GLOB.enter_allowed - .["vote"] = CONFIG_GET(flag/allow_vote_mode) + .["enter"] = !LAZYACCESS(SSlag_switch.measures, DISABLE_NON_OBSJOBS) .["ai"] = CONFIG_GET(flag/allow_ai) .["host"] = world.host ? world.host : null .["round_id"] = GLOB.round_id @@ -269,7 +268,7 @@ /datum/world_topic/manifest/Run(list/input) . = list() - var/list/manifest = SSjob.get_manifest() + var/list/manifest = SSovermap.get_manifest() for(var/department in manifest) var/list/entries = manifest[department] var/list/dept_entries = list() diff --git a/code/game/area/ai_monitored.dm b/code/game/area/ai_monitored.dm index e0d6f18a838b..0490c88def2d 100644 --- a/code/game/area/ai_monitored.dm +++ b/code/game/area/ai_monitored.dm @@ -10,7 +10,7 @@ for (var/obj/machinery/camera/M in src) if(M.isMotion()) motioncameras.Add(M) - M.area_motion = src + M.set_area_motion(src) //Only need to use one camera diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index b7d13f80d70e..35712cb768ae 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -318,7 +318,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) if(D.operating) D.nextstate = opening ? FIREDOOR_OPEN : FIREDOOR_CLOSED else if(!(D.density ^ opening) && !D.is_holding_pressure()) - INVOKE_ASYNC(D, (opening ? /obj/machinery/door/firedoor.proc/open : /obj/machinery/door/firedoor.proc/close)) + INVOKE_ASYNC(D, (opening ? TYPE_PROC_REF(/obj/machinery/door/firedoor, open) : TYPE_PROC_REF(/obj/machinery/door/firedoor, close))) /** * Generate an firealarm alert for this area @@ -435,7 +435,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) var/mob/living/silicon/SILICON = i if(SILICON.triggerAlarm("Burglar", src, cameras, trigger)) //Cancel silicon alert after 1 minute - addtimer(CALLBACK(SILICON, /mob/living/silicon.proc/cancelAlarm,"Burglar",src,trigger), 600) + addtimer(CALLBACK(SILICON, TYPE_PROC_REF(/mob/living/silicon, cancelAlarm),"Burglar",src,trigger), 600) /** * Trigger the fire alarm visual affects in an area diff --git a/code/game/area/areas/centcom.dm b/code/game/area/areas/centcom.dm index a41152d29044..8ca63ad47e4f 100644 --- a/code/game/area/areas/centcom.dm +++ b/code/game/area/areas/centcom.dm @@ -28,7 +28,7 @@ /area/centcom/holding name = "Holding Facility" -/area/centcom/supplypod/flyMeToTheMoon +/area/centcom/supplypod/supplypod_temp_holding name = "Supplypod Shipping lane" icon_state = "supplypod_flight" @@ -37,28 +37,43 @@ icon_state = "supplypod" dynamic_lighting = DYNAMIC_LIGHTING_DISABLED -/area/centcom/supplypod/podStorage +/area/centcom/supplypod/pod_storage name = "Supplypod Storage" icon_state = "supplypod_holding" /area/centcom/supplypod/loading name = "Supplypod Loading Facility" icon_state = "supplypod_loading" + var/loading_id = "" + +/area/centcom/supplypod/loading/Initialize() + . = ..() + if(!loading_id) + CRASH("[type] created without a loading_id") + if(GLOB.supplypod_loading_bays[loading_id]) + CRASH("Duplicate loading bay area: [type] ([loading_id])") + GLOB.supplypod_loading_bays[loading_id] = src /area/centcom/supplypod/loading/one name = "Bay #1" + loading_id = "1" /area/centcom/supplypod/loading/two name = "Bay #2" + loading_id = "2" /area/centcom/supplypod/loading/three name = "Bay #3" + loading_id = "3" /area/centcom/supplypod/loading/four name = "Bay #4" + loading_id = "4" /area/centcom/supplypod/loading/ert name = "ERT Bay" + loading_id = "5" + //THUNDERDOME /area/tdome diff --git a/code/game/area/areas/outpost.dm b/code/game/area/areas/outpost.dm index fec76061fb37..31d9f39c7e30 100644 --- a/code/game/area/areas/outpost.dm +++ b/code/game/area/areas/outpost.dm @@ -156,6 +156,7 @@ name = "Operations" icon_state = "bridge" sound_environment = SOUND_AREA_LARGE_ENCLOSED + area_flags = NOTELEPORT // medbay values lighting_colour_tube = "#e7f8ff" lighting_colour_bulb = "#d5f2ff" diff --git a/code/game/area/areas/ruins/_ruins.dm b/code/game/area/areas/ruins/_ruins.dm index bb57bb271356..1ba5d0e18ec6 100644 --- a/code/game/area/areas/ruins/_ruins.dm +++ b/code/game/area/areas/ruins/_ruins.dm @@ -1,7 +1,7 @@ //Parent types /area/ruin - name = "\improper Unexplored Location" + name = "unexplored location" icon_state = "away" has_gravity = STANDARD_GRAVITY area_flags = HIDDEN_AREA | BLOBS_ALLOWED diff --git a/code/game/area/areas/ruins/beachplanet.dm b/code/game/area/areas/ruins/beachplanet.dm index 3de8f16dc86b..919d2602a3d3 100644 --- a/code/game/area/areas/ruins/beachplanet.dm +++ b/code/game/area/areas/ruins/beachplanet.dm @@ -69,3 +69,14 @@ /area/ruin/beach/treasure_cove name = "Pirate Cavern" icon_state = "purple" + +//beach_float_resort --> keeping resort open for a land based ruin + +/area/ruin/beach/float_resort + name = "Beach Resort" + icon_state = "yellow" + always_unpowered = FALSE + +/area/ruin/beach/float_resort/villa + name = "Resort Villa" + icon_state = "green" diff --git a/code/game/area/areas/ruins/jungle.dm b/code/game/area/areas/ruins/jungle.dm index c25339acaf58..09d0e95f2f36 100644 --- a/code/game/area/areas/ruins/jungle.dm +++ b/code/game/area/areas/ruins/jungle.dm @@ -115,3 +115,33 @@ /area/ruin/jungle/syndifort/jerry name = "Syndicate Fort Tower" icon_state = "bridge" + +// Cave Crew + +/area/ruin/jungle/cavecrew + name = "Cave" + icon_state = "red" + +/area/ruin/jungle/cavecrew/cargo + name = "Cave Cargo" + icon_state = "dk_yellow" + +/area/ruin/jungle/cavecrew/bridge + name = "Cave Bridge" + icon_state = "bridge" + +/area/ruin/jungle/cavecrew/hallway + name = "Cave Base Hallway" + icon_state = "hallP" + +/area/ruin/jungle/cavecrew/engineering + name = "Cave Base Engineering" + icon_state = "dk_yellow" + +/area/ruin/jungle/cavecrew/security + name = "Cave Base Security" + icon_state = "red" + +/area/ruin/jungle/cavecrew/dormitories + name = "Cave Base dormitories" + icon_state = "crew_quarters" diff --git a/code/game/area/areas/ruins/rockplanet.dm b/code/game/area/areas/ruins/rockplanet.dm index cabadd3f252d..a869f0c53816 100644 --- a/code/game/area/areas/ruins/rockplanet.dm +++ b/code/game/area/areas/ruins/rockplanet.dm @@ -1,7 +1,17 @@ /**********************Rock Planet Areas**************************/ -/area/mine/rockplanet +//syndicate +/area/ruin/rockplanet/syndicate name = "Abandoned Syndicate Mining Facility" + icon_state = "green" -/area/mine/rockplanet_nanotrasen +//budgetcuts +/area/ruin/rockplanet/nanotrasen name = "Abandoned Mining Facility" + icon_state = "green" + +//nomad +/area/ruin/rockplanet/nomad + name = "Abandoned Crash Site" + always_unpowered = FALSE + icon_state = "red" diff --git a/code/game/area/areas/ruins/wasteplanet.dm b/code/game/area/areas/ruins/wasteplanet.dm index b4150a9bae38..4b1e69b456d2 100644 --- a/code/game/area/areas/ruins/wasteplanet.dm +++ b/code/game/area/areas/ruins/wasteplanet.dm @@ -29,3 +29,17 @@ /area/ruin/wasteplanet/abandoned_mechbay/engineering name = "Abandoned Mechbay Engineering" icon_state = "engine" + +//Abandoned Waste Site + +/area/ruin/wasteplanet/wasteplanet_radiation/main + name = "Abandoned Waste Site" + icon_state = "green" + +/area/ruin/wasteplanet/wasteplanet_radiation/maint + name = "Abandoned Maintenance Area" + icon_state = "engine" + +/area/ruin/wasteplanet/wasteplanet_radiation/containment + name = "Abandoned Waste Containment Vault" + icon_state = "disposal" diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm index 5587837368fb..a9d7220bd3ca 100644 --- a/code/game/area/areas/shuttles.dm +++ b/code/game/area/areas/shuttles.dm @@ -24,7 +24,7 @@ mobile_port = null . = ..() -/area/shuttle/PlaceOnTopReact(list/new_baseturfs, turf/fake_turf_type, flags) +/area/shuttle/PlaceOnTopReact(turf/T, list/new_baseturfs, turf/fake_turf_type, flags) . = ..() if(length(new_baseturfs) > 1 || fake_turf_type) return // More complicated larger changes indicate this isn't a player diff --git a/code/game/area/ship_areas.dm b/code/game/area/ship_areas.dm index 4a8d037b99f7..be8e666b60a9 100644 --- a/code/game/area/ship_areas.dm +++ b/code/game/area/ship_areas.dm @@ -328,6 +328,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Armory" icon_state = "armory" +/area/ship/security/dock + name = "Shuttle Dock" + icon_state = "security" + /// Cargo Bay /// /area/ship/cargo name = "Cargo Bay" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 38ee90a32674..350b80907f70 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -55,8 +55,6 @@ ///overlays managed by [update_overlays][/atom/proc/update_overlays] to prevent removing overlays that weren't added by the same proc var/list/managed_overlays - ///Proximity monitor associated with this atom - var/datum/proximity_monitor/proximity_monitor ///Cooldown tick timer for buckle messages var/buckle_message_cooldown = 0 ///Last fingerprints to touch this atom @@ -158,6 +156,10 @@ ///Default Y pixel offset var/base_pixel_y + ///Wanted sound when hit by a projectile + var/hitsound_type = PROJECTILE_HITSOUND_NON_LIVING + ///volume wanted for being hit + var/hitsound_volume = 50 /** * Called when an atom is created in byond (built in engine proc) * @@ -170,7 +172,7 @@ */ /atom/New(loc, ...) //atom creation method that preloads variables at creation - if(GLOB.use_preloader && (src.type == GLOB._preloader.target_path))//in case the instanciated atom is creating other atoms in New() + if(GLOB.use_preloader && src.type == GLOB._preloader_path)//in case the instanciated atom is creating other atoms in New() world.preloader_load(src) if(datum_flags & DF_USE_TAG) @@ -249,9 +251,10 @@ if (length(no_connector_typecache)) no_connector_typecache = SSicon_smooth.get_no_connector_typecache(src.type, no_connector_typecache, connector_strict_typing) - var/area/ship/current_ship_area = get_area(src) - if(!mapload && istype(current_ship_area) && current_ship_area.mobile_port) - connect_to_shuttle(current_ship_area.mobile_port, current_ship_area.mobile_port.docked) + if(!mapload) + var/area/ship/current_ship_area = get_area(src) + if(istype(current_ship_area) && current_ship_area.mobile_port) + connect_to_shuttle(current_ship_area.mobile_port, current_ship_area.mobile_port.docked) var/temp_list = list() for(var/i in custom_materials) @@ -333,19 +336,19 @@ P.setAngle(new_angle_s) return TRUE -///Can the mover object pass this atom, while heading for the target turf -/atom/proc/CanPass(atom/movable/mover, turf/target) +/// Whether the mover object can avoid being blocked by this atom, while arriving from (or leaving through) the border_dir. +/atom/proc/CanPass(atom/movable/mover, border_dir) SHOULD_CALL_PARENT(TRUE) SHOULD_BE_PURE(TRUE) if(mover.movement_type & PHASING) return TRUE - . = CanAllowThrough(mover, target) + . = CanAllowThrough(mover, border_dir) // This is cheaper than calling the proc every time since most things dont override CanPassThrough if(!mover.generic_canpass) - return mover.CanPassThrough(src, target, .) + return mover.CanPassThrough(src, REVERSE_DIR(border_dir), .) /// Returns true or false to allow the mover to move through src -/atom/proc/CanAllowThrough(atom/movable/mover, turf/target) +/atom/proc/CanAllowThrough(atom/movable/mover, border_dir) SHOULD_CALL_PARENT(TRUE) //SHOULD_BE_PURE(TRUE) if(mover.pass_flags & pass_flags_self) @@ -588,6 +591,33 @@ SEND_SIGNAL(src, COMSIG_ATOM_BULLET_ACT, P, def_zone) . = P.on_hit(src, 0, def_zone, piercing_hit) +/atom/proc/bullet_hit_sfx(obj/projectile/hitting_projectile) + var/selected_sound = "" + + if(!hitsound_volume) + return FALSE + if(!hitsound_volume) + return FALSE + + switch(hitsound_type) + if(PROJECTILE_HITSOUND_FLESH) + selected_sound = hitting_projectile.hitsound + if(PROJECTILE_HITSOUND_NON_LIVING) + selected_sound = hitting_projectile.hitsound_non_living + if(PROJECTILE_HITSOUND_GLASS) + selected_sound = hitting_projectile.hitsound_glass + if(PROJECTILE_HITSOUND_STONE) + selected_sound = hitting_projectile.hitsound_stone + if(PROJECTILE_HITSOUND_METAL) + selected_sound = hitting_projectile.hitsound_metal + if(PROJECTILE_HITSOUND_WOOD) + selected_sound = hitting_projectile.hitsound_wood + if(PROJECTILE_HITSOUND_SNOW) + selected_sound = hitting_projectile.hitsound_snow + + playsound(src, selected_sound, hitsound_volume, TRUE) + return TRUE + ///Return true if we're inside the passed in atom /atom/proc/in_contents_of(container)//can take class or object instance as argument if(ispath(container)) @@ -781,7 +811,7 @@ */ /atom/proc/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) if(density && !has_gravity(AM)) //thrown stuff bounces off dense stuff in no grav, unless the thrown stuff ends up inside what it hit(embedding, bola, etc...). - addtimer(CALLBACK(src, .proc/hitby_react, AM), 2) + addtimer(CALLBACK(src, PROC_REF(hitby_react), AM), 2) /** * We have have actually hit the passed in atom @@ -945,7 +975,7 @@ var/list/things = src_object.contents() var/datum/progressbar/progress = new(user, things.len, src) var/datum/component/storage/STR = GetComponent(/datum/component/storage) - while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(STR, /datum/component/storage.proc/handle_mass_item_insertion, things, src_object, user, progress))) + while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(STR, TYPE_PROC_REF(/datum/component/storage, handle_mass_item_insertion), things, src_object, user, progress))) stoplag(1) progress.end_progress() to_chat(user, "You dump as much of [src_object.parent]'s contents [STR.insert_preposition]to [src] as you can.") @@ -968,16 +998,6 @@ /atom/proc/handle_atom_del(atom/A) SEND_SIGNAL(src, COMSIG_ATOM_CONTENTS_DEL, A) -/** - * called when the turf the atom resides on is ChangeTurfed - * - * Default behaviour is to loop through atom contents and call their HandleTurfChange() proc - */ -/atom/proc/HandleTurfChange(turf/T) - for(var/atom in src) - var/atom/A = atom - A.HandleTurfChange(T) - /** * the vision impairment to give to the mob whose perspective is set to that atom * @@ -1320,6 +1340,9 @@ /atom/proc/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock) return +/atom/proc/disconnect_from_shuttle(obj/docking_port/mobile/port) + return + /// Generic logging helper /atom/proc/log_message(message, message_type, color=null, log_globally=TRUE) if(!log_globally) @@ -1564,7 +1587,7 @@ else // See if there's a gravity generator on our map zone var/datum/map_zone/mapzone = T.get_map_zone() - if(mapzone.gravity_generators.len) + if(mapzone?.gravity_generators.len) var/max_grav = 0 for(var/obj/machinery/gravity_generator/main/G as anything in mapzone.gravity_generators) max_grav = max(G.setting,max_grav) @@ -1651,3 +1674,24 @@ else //We inline a MAPTEXT() here, because there's no good way to statically add to a string like this active_hud.screentip_text.maptext = "[name]" + +///Called whenever a player is spawned on the same turf as this atom. +/atom/proc/join_player_here(mob/M) + // By default, just place the mob on the same turf as the marker or whatever. + M.forceMove(get_turf(src)) + +/* +* Used to set something as 'open' if it's being used as a supplypod +* +* Override this if you want an atom to be usable as a supplypod. +*/ +/atom/proc/setOpened() + return + +/* +* Used to set something as 'closed' if it's being used as a supplypod +* +* Override this if you want an atom to be usable as a supplypod. +*/ +/atom/proc/setClosed() + return diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index ad45018cec39..54ac77bb0a8c 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -94,12 +94,8 @@ /atom/movable/Destroy(force) - if(proximity_monitor) - QDEL_NULL(proximity_monitor) - if(language_holder) - QDEL_NULL(language_holder) - if(em_block) - QDEL_NULL(em_block) + QDEL_NULL(language_holder) + QDEL_NULL(em_block) unbuckle_all_mobs(force = TRUE) @@ -171,7 +167,7 @@ if(isobj(A) || ismob(A)) if(A.layer > highest.layer) highest = A - INVOKE_ASYNC(src, .proc/SpinAnimation, 5, 2) + INVOKE_ASYNC(src, PROC_REF(SpinAnimation), 5, 2) throw_impact(highest) return TRUE @@ -551,6 +547,7 @@ return TRUE +/// Called when an atom moves to a different virtual z. Warning, it will pass z-level 0 in new_virtual_z on creation and 0 in previous_virtual_z whenever moved to nullspace /atom/movable/proc/on_virtual_z_change(new_virtual_z, previous_virtual_z) SHOULD_NOT_SLEEP(TRUE) SHOULD_CALL_PARENT(TRUE) @@ -580,7 +577,7 @@ /atom/movable/Cross(atom/movable/AM) . = TRUE SEND_SIGNAL(src, COMSIG_MOVABLE_CROSS, AM) - return CanPass(AM, AM.loc, TRUE) + return CanPass(AM, get_dir(src, AM)) ///default byond proc that is deprecated for us in lieu of signals. do not call /atom/movable/Crossed(atom/movable/crossed_atom, oldloc) @@ -886,13 +883,13 @@ /atom/movable/proc/move_crushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction) return FALSE -/atom/movable/CanAllowThrough(atom/movable/mover, turf/target) +/atom/movable/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(mover in buckled_mobs) return TRUE /// Returns true or false to allow src to move through the blocker, mover has final say -/atom/movable/proc/CanPassThrough(atom/blocker, turf/target, blocker_opinion) +/atom/movable/proc/CanPassThrough(atom/blocker, movement_dir, blocker_opinion) SHOULD_CALL_PARENT(TRUE) SHOULD_BE_PURE(TRUE) return blocker_opinion @@ -917,7 +914,7 @@ return turf else var/atom/movable/AM = A - if(!AM.CanPass(src) || AM.density) + if(AM.density || !AM.CanPass(src, get_dir(src, AM))) if(AM.anchored) return AM dense_object_backup = AM diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index eac7e341fd6b..fe95ea3c5988 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -155,8 +155,9 @@ if(iscarbon(hit_atom) && !caught)//if they are a carbon and they didn't catch it var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(src, hit_atom) - if(thrownby && !caught) - addtimer(CALLBACK(src, /atom/movable.proc/throw_at, thrownby, throw_range+2, throw_speed, null, TRUE), 1) + var/mob/thrown_by = thrownby?.resolve() + if(thrown_by && !caught) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, throw_at), thrown_by, throw_range+2, throw_speed, null, TRUE), 1) else return ..() @@ -216,7 +217,7 @@ /obj/item/clothing/mask/fakemoustache/sticky/Initialize() . = ..() ADD_TRAIT(src, TRAIT_NODROP, STICKY_MOUSTACHE_TRAIT) - addtimer(CALLBACK(src, .proc/unstick), unstick_time) + addtimer(CALLBACK(src, PROC_REF(unstick)), unstick_time) /obj/item/clothing/mask/fakemoustache/sticky/proc/unstick() REMOVE_TRAIT(src, TRAIT_NODROP, STICKY_MOUSTACHE_TRAIT) diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm index 3b139bba78e9..78f19dbf1a89 100644 --- a/code/game/gamemodes/dynamic/dynamic.dm +++ b/code/game/gamemodes/dynamic/dynamic.dm @@ -111,22 +111,22 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) /datum/game_mode/dynamic/admin_panel() var/list/dat = list("Game Mode Panel

Game Mode Panel

") - dat += "Dynamic Mode \[VV\]\[Refresh\]
" + dat += "Dynamic Mode \[VV\]\[Refresh\]
" dat += "Threat Level: [threat_level]
" - dat += "Threat to Spend: [threat] \[Adjust\] \[View Log\]
" + dat += "Threat to Spend: [threat] \[Adjust\] \[View Log\]
" dat += "
" dat += "Parameters: centre = [GLOB.dynamic_curve_centre] ; width = [GLOB.dynamic_curve_width].
" dat += "On average, [peaceful_percentage]% of the rounds are more peaceful.
" - dat += "Forced extended: [GLOB.dynamic_forced_extended ? "On" : "Off"]
" - dat += "Classic secret (only autotraitor): [GLOB.dynamic_classic_secret ? "On" : "Off"]
" - dat += "No stacking (only one round-ender): [GLOB.dynamic_no_stacking ? "On" : "Off"]
" - dat += "Stacking limit: [GLOB.dynamic_stacking_limit] \[Adjust\]" + dat += "Forced extended: [GLOB.dynamic_forced_extended ? "On" : "Off"]
" + dat += "Classic secret (only autotraitor): [GLOB.dynamic_classic_secret ? "On" : "Off"]
" + dat += "No stacking (only one round-ender): [GLOB.dynamic_no_stacking ? "On" : "Off"]
" + dat += "Stacking limit: [GLOB.dynamic_stacking_limit] \[Adjust\]" dat += "
" - dat += "\[Force Next Latejoin Ruleset\]
" + dat += "\[Force Next Latejoin Ruleset\]
" if (forced_latejoin_rule) - dat += {"-> [forced_latejoin_rule.name] <-
"} - dat += "\[Execute Midround Ruleset\]
" + dat += {"-> [forced_latejoin_rule.name] <-
"} + dat += "\[Execute Midround Ruleset\]
" dat += "
" dat += "Executed rulesets: " if (executed_rules.len > 0) @@ -136,8 +136,8 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) else dat += "none.
" dat += "
Injection Timers: ([get_injection_chance(TRUE)]% chance)
" - dat += "Latejoin: [(latejoin_injection_cooldown-world.time)>60*10 ? "[round((latejoin_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(latejoin_injection_cooldown-world.time)] seconds"] \[Now!\]
" - dat += "Midround: [(midround_injection_cooldown-world.time)>60*10 ? "[round((midround_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(midround_injection_cooldown-world.time)] seconds"] \[Now!\]
" + dat += "Latejoin: [(latejoin_injection_cooldown-world.time)>60*10 ? "[round((latejoin_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(latejoin_injection_cooldown-world.time)] seconds"] \[Now!\]
" + dat += "Midround: [(midround_injection_cooldown-world.time)>60*10 ? "[round((midround_injection_cooldown-world.time)/60/10,0.1)] minutes" : "[(midround_injection_cooldown-world.time)] seconds"] \[Now!\]
" usr << browse(dat.Join(), "window=gamemode_panel;size=500x500") /datum/game_mode/dynamic/Topic(href, href_list) @@ -367,7 +367,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) /datum/game_mode/dynamic/post_setup(report) for(var/datum/dynamic_ruleset/roundstart/rule in executed_rules) rule.candidates.Cut() // The rule should not use candidates at this point as they all are null. - addtimer(CALLBACK(src, /datum/game_mode/dynamic/.proc/execute_roundstart_rule, rule), rule.delay) + addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/game_mode/dynamic, execute_roundstart_rule), rule), rule.delay) ..() /// A simple roundstart proc used when dynamic_forced_roundstart_ruleset has rules in it. @@ -540,7 +540,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1) else if(rule.ruletype == "Midround") midround_rules = remove_from_list(midround_rules, rule.type) - addtimer(CALLBACK(src, /datum/game_mode/dynamic/.proc/execute_midround_latejoin_rule, rule), rule.delay) + addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/game_mode/dynamic, execute_midround_latejoin_rule), rule), rule.delay) return TRUE /// An experimental proc to allow admins to call rules on the fly or have rules call other rules. diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm index 04d7a42f4373..228df9bd35f1 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_latejoin.dm @@ -68,79 +68,3 @@ high_population_requirement = 10 repeatable = TRUE flags = TRAITOR_RULESET - -////////////////////////////////////////////// -// // -// REVOLUTIONARY PROVOCATEUR // -// // -////////////////////////////////////////////// - -/datum/dynamic_ruleset/latejoin/provocateur - name = "Provocateur" - persistent = TRUE - antag_datum = /datum/antagonist/rev/head - antag_flag = ROLE_REV_HEAD - antag_flag_override = ROLE_REV - restricted_roles = list("AI", "Cyborg", "Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "SolGov Representative") - enemy_roles = list("AI", "Cyborg", "Security Officer","Detective","Head of Security", "Captain", "Warden") - required_enemies = list(2,2,1,1,1,1,1,0,0,0) - required_candidates = 1 - weight = 2 - delay = 1 MINUTES // Prevents rule start while head is offstation. - cost = 20 - requirements = list(101,101,70,40,30,20,20,20,20,20) - high_population_requirement = 50 - flags = HIGHLANDER_RULESET - blocking_rules = list(/datum/dynamic_ruleset/roundstart/revs) - var/required_heads_of_staff = 3 - var/finished = FALSE - /// How much threat should be injected when the revolution wins? - var/revs_win_threat_injection = 20 - var/datum/team/revolution/revolution - -/datum/dynamic_ruleset/latejoin/provocateur/ready(forced=FALSE) - if (forced) - required_heads_of_staff = 1 - if(!..()) - return FALSE - var/head_check = 0 - for(var/mob/player in mode.current_players[CURRENT_LIVING_PLAYERS]) - if (player.mind.assigned_role in GLOB.command_positions) - head_check++ - return (head_check >= required_heads_of_staff) - -/datum/dynamic_ruleset/latejoin/provocateur/execute() - var/mob/M = pick(candidates) // This should contain a single player, but in case. - if(check_eligible(M.mind)) // Didnt die/run off z-level/get implanted since leaving shuttle. - assigned += M.mind - M.mind.special_role = antag_flag - revolution = new() - var/datum/antagonist/rev/head/new_head = new() - new_head.give_flash = TRUE - new_head.give_hud = TRUE - new_head.remove_clumsy = TRUE - new_head = M.mind.add_antag_datum(new_head, revolution) - revolution.update_objectives() - revolution.update_heads() - return TRUE - else - log_game("DYNAMIC: [ruletype] [name] discarded [M.name] from head revolutionary due to ineligibility.") - log_game("DYNAMIC: [ruletype] [name] failed to get any eligible headrevs. Refunding [cost] threat.") - return FALSE - -/datum/dynamic_ruleset/latejoin/provocateur/rule_process() - var/winner = revolution.process_victory(revs_win_threat_injection) - if (isnull(winner)) - return - - finished = winner - return RULESET_STOP_PROCESSING - -/// Checks for revhead loss conditions and other antag datums. -/datum/dynamic_ruleset/latejoin/provocateur/proc/check_eligible(datum/mind/M) - if(!considered_afk(M) && considered_alive(M) && !M.antag_datums?.len && !HAS_TRAIT(M, TRAIT_MINDSHIELD)) - return TRUE - return FALSE - -/datum/dynamic_ruleset/latejoin/provocateur/round_result() - revolution.round_result(finished) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 1ca947178911..29333ce332d4 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -330,90 +330,6 @@ SSticker.mode_result = "halfwin - interrupted" SSticker.news_report = OPERATIVE_SKIRMISH -////////////////////////////////////////////// -// // -// REVS // -// // -////////////////////////////////////////////// - -/datum/dynamic_ruleset/roundstart/revs - name = "Revolution" - persistent = TRUE - antag_flag = ROLE_REV_HEAD - antag_flag_override = ROLE_REV - antag_datum = /datum/antagonist/rev/head - minimum_required_age = 14 - restricted_roles = list("AI", "Cyborg", "Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Chief Medical Officer", "Research Director", "SolGov Representative") - required_candidates = 3 - weight = 2 - delay = 7 MINUTES - cost = 35 - requirements = list(101,101,70,40,30,20,10,10,10,10) - high_population_requirement = 10 - antag_cap = list(3,3,3,3,3,3,3,3,3,3) - flags = HIGHLANDER_RULESET - blocking_rules = list(/datum/dynamic_ruleset/latejoin/provocateur) - // I give up, just there should be enough heads with 35 players... - minimum_players = 35 - /// How much threat should be injected when the revolution wins? - var/revs_win_threat_injection = 20 - var/datum/team/revolution/revolution - var/finished = FALSE - -/datum/dynamic_ruleset/roundstart/revs/pre_execute() - . = ..() - var/max_candidates = antag_cap[indice_pop] - mode.antags_rolled += max_candidates - for(var/i = 1 to max_candidates) - if(candidates.len <= 0) - break - var/mob/M = pick_n_take(candidates) - assigned += M.mind - M.mind.restricted_roles = restricted_roles - M.mind.special_role = antag_flag - GLOB.pre_setup_antags += M.mind - return TRUE - -/datum/dynamic_ruleset/roundstart/revs/execute() - revolution = new() - for(var/datum/mind/M in assigned) - GLOB.pre_setup_antags -= M - if(check_eligible(M)) - var/datum/antagonist/rev/head/new_head = new antag_datum() - new_head.give_flash = TRUE - new_head.give_hud = TRUE - new_head.remove_clumsy = TRUE - M.add_antag_datum(new_head,revolution) - else - assigned -= M - log_game("DYNAMIC: [ruletype] [name] discarded [M.name] from head revolutionary due to ineligibility.") - if(revolution.members.len) - revolution.update_objectives() - revolution.update_heads() - return TRUE - log_game("DYNAMIC: [ruletype] [name] failed to get any eligible headrevs. Refunding [cost] threat.") - return FALSE - -/datum/dynamic_ruleset/roundstart/revs/clean_up() - qdel(revolution) - ..() - -/datum/dynamic_ruleset/roundstart/revs/rule_process() - var/winner = revolution.process_victory(revs_win_threat_injection) - if (isnull(winner)) - return - - finished = winner - return RULESET_STOP_PROCESSING - -/// Checks for revhead loss conditions and other antag datums. -/datum/dynamic_ruleset/roundstart/revs/proc/check_eligible(datum/mind/M) - if(!considered_afk(M) && considered_alive(M) && !M.antag_datums?.len && !HAS_TRAIT(M, TRAIT_MINDSHIELD)) - return TRUE - return FALSE - -/datum/dynamic_ruleset/roundstart/revs/round_result() - revolution.round_result(finished) // Admin only rulesets. The threat requirement is 101 so it is not possible to roll them. @@ -522,69 +438,6 @@ else objective.find_target() -////////////////////////////////////////////// -// // -// MONKEY // -// // -////////////////////////////////////////////// - -/datum/dynamic_ruleset/roundstart/monkey - name = "Monkey" - antag_flag = ROLE_MONKEY - antag_datum = /datum/antagonist/monkey/leader - restricted_roles = list("Cyborg", "AI", "Prisoner") - required_candidates = 1 - weight = 3 - cost = 0 - requirements = list(101,101,101,101,101,101,101,101,101,101) - high_population_requirement = 101 - var/players_per_carrier = 30 - var/monkeys_to_win = 1 - var/escaped_monkeys = 0 - var/datum/team/monkey/monkey_team - -/datum/dynamic_ruleset/roundstart/monkey/pre_execute() - . = ..() - var/carriers_to_make = max(round(mode.roundstart_pop_ready / players_per_carrier, 1), 1) - mode.antags_rolled += carriers_to_make - - for(var/j = 0, j < carriers_to_make, j++) - if (!candidates.len) - break - var/mob/carrier = pick_n_take(candidates) - assigned += carrier.mind - carrier.mind.special_role = "Monkey Leader" - carrier.mind.restricted_roles = restricted_roles - log_game("[key_name(carrier)] has been selected as a Jungle Fever carrier") - return TRUE - -/datum/dynamic_ruleset/roundstart/monkey/execute() - for(var/datum/mind/carrier in assigned) - var/datum/antagonist/monkey/M = add_monkey_leader(carrier) - if(M) - monkey_team = M.monkey_team - return TRUE - -/datum/dynamic_ruleset/roundstart/monkey/proc/check_monkey_victory() - if(SSshuttle.jump_mode != BS_JUMP_COMPLETED) - return FALSE - var/datum/disease/D = new /datum/disease/transformation/jungle_fever() - for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list) - if (M.HasDisease(D)) - if(M.onCentCom() || M.onSyndieBase()) - escaped_monkeys++ - if(escaped_monkeys >= monkeys_to_win) - return TRUE - else - return FALSE - -// This does not get called. Look into making it work. -/datum/dynamic_ruleset/roundstart/monkey/round_result() - if(check_monkey_victory()) - SSticker.mode_result = "win - monkey win" - else - SSticker.mode_result = "loss - staff stopped the monkeys" - ////////////////////////////////////////////// // // // METEOR // diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 61c3efab9582..391ad852664f 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -110,7 +110,7 @@ query_round_game_mode.Execute() qdel(query_round_game_mode) if(report) - addtimer(CALLBACK(src, .proc/send_intercept, 0), rand(waittime_l, waittime_h)) + addtimer(CALLBACK(src, PROC_REF(send_intercept), 0), rand(waittime_l, waittime_h)) generate_station_goals() gamemode_ready = TRUE return 1 @@ -420,9 +420,6 @@ /datum/game_mode/proc/remove_antag_for_borging(datum/mind/newborgie) SSticker.mode.remove_cultist(newborgie, 0, 0) - var/datum/antagonist/rev/rev = newborgie.has_antag_datum(/datum/antagonist/rev) - if(rev) - rev.remove_revolutionary(TRUE) /datum/game_mode/proc/generate_station_goals() var/list/possible = list() diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm deleted file mode 100644 index 1682a27584fd..000000000000 --- a/code/game/gamemodes/gang/gang.dm +++ /dev/null @@ -1,498 +0,0 @@ -#define LOWPOP_FAMILIES_COUNT 50 - -#define TWO_STARS_HIGHPOP 11 -#define THREE_STARS_HIGHPOP 16 -#define FOUR_STARS_HIGHPOP 21 -#define FIVE_STARS_HIGHPOP 31 - -#define TWO_STARS_LOW 6 -#define THREE_STARS_LOW 9 -#define FOUR_STARS_LOW 12 -#define FIVE_STARS_LOW 15 - -#define CREW_SIZE_MIN 4 -#define CREW_SIZE_MAX 8 - - -GLOBAL_VAR_INIT(deaths_during_shift, 0) -/datum/game_mode/gang - name = "Families" - config_tag = "families" - antag_flag = ROLE_FAMILIES - false_report_weight = 5 - required_players = 40 - required_enemies = 6 - recommended_enemies = 6 - announce_span = "danger" - announce_text = "Grove For Lyfe!" - reroll_friendly = FALSE - restricted_jobs = list("Cyborg", "AI", "Prisoner","Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel")//N O - protected_jobs = list() - var/check_counter = 0 - var/endtime = null - var/start_time = null - var/fuckingdone = FALSE - var/time_to_end = 60 MINUTES - var/gangs_to_generate = 3 - var/list/gangs_to_use - var/list/datum/mind/gangbangers = list() - var/list/datum/mind/pigs = list() - var/list/datum/mind/undercover_cops = list() - var/list/gangs = list() - var/gangs_still_alive = 0 - var/sent_announcement = FALSE - var/list/gang_locations = list() - var/cops_arrived = FALSE - var/gang_balance_cap = 5 - var/wanted_level = 0 - -/datum/game_mode/gang/warriors - name = "Warriors" - config_tag = "warriors" - announce_text = "Can you survive this onslaught?" - gangs_to_generate = 11 - gang_balance_cap = 3 - -/datum/game_mode/gang/warriors/pre_setup() - gangs_to_use = subtypesof(/datum/antagonist/gang) - gangs_to_generate = gangs_to_use.len - . = ..() - -/datum/game_mode/gang/pre_setup() - gangs_to_use = subtypesof(/datum/antagonist/gang) - for(var/j = 0, j < gangs_to_generate, j++) - if (!antag_candidates.len) - break - var/datum/mind/gangbanger = antag_pick(antag_candidates) - gangbangers += gangbanger - gangbanger.restricted_roles = restricted_jobs - log_game("[key_name(gangbanger)] has been selected as a starting gangster!") - antag_candidates.Remove(gangbanger) - for(var/j = 0, j < gangs_to_generate, j++) - if(!antag_candidates.len) - break - var/datum/mind/one_eight_seven_on_an_undercover_cop = antag_pick(antag_candidates) - pigs += one_eight_seven_on_an_undercover_cop - undercover_cops += one_eight_seven_on_an_undercover_cop - one_eight_seven_on_an_undercover_cop.restricted_roles = restricted_jobs - log_game("[key_name(one_eight_seven_on_an_undercover_cop)] has been selected as a starting undercover cop!") - antag_candidates.Remove(one_eight_seven_on_an_undercover_cop) - endtime = world.time + time_to_end - start_time = world.time - return TRUE - -/datum/game_mode/gang/post_setup() - var/replacement_gangsters = 0 - var/replacement_cops = 0 - for(var/datum/mind/gangbanger in gangbangers) - if(!ishuman(gangbanger.current)) - gangbangers.Remove(gangbanger) - log_game("[gangbanger] was not a human, and thus has lost their gangster role.") - replacement_gangsters++ - if(replacement_gangsters) - for(var/j = 0, j < replacement_gangsters, j++) - if(!antag_candidates.len) - log_game("Unable to find more replacement gangsters. Not all of the gangs will spawn.") - break - var/datum/mind/gangbanger = antag_pick(antag_candidates) - gangbangers += gangbanger - log_game("[key_name(gangbanger)] has been selected as a replacement gangster!") - for(var/datum/mind/undercover_cop in undercover_cops) - if(!ishuman(undercover_cop.current)) - undercover_cops.Remove(undercover_cop) - pigs.Remove(undercover_cop) - log_game("[undercover_cop] was not a human, and thus has lost their undercover cop role.") - replacement_cops++ - if(replacement_cops) - for(var/j = 0, j < replacement_cops, j++) - if(!antag_candidates.len) - log_game("Unable to find more replacement undercover cops. Not all of the gangs will spawn.") - break - var/datum/mind/undercover_cop = antag_pick(antag_candidates) - undercover_cops += undercover_cop - pigs += undercover_cop - log_game("[key_name(undercover_cop)] has been selected as a replacement undercover cop!") - for(var/datum/mind/undercover_cop in undercover_cops) - var/datum/antagonist/ert/families/undercover_cop/one_eight_seven_on_an_undercover_cop = new() - undercover_cop.add_antag_datum(one_eight_seven_on_an_undercover_cop) - - for(var/datum/mind/gangbanger in gangbangers) - var/gang_to_use = pick_n_take(gangs_to_use) - var/datum/antagonist/gang/new_gangster = new gang_to_use() - var/datum/team/gang/ballas = new /datum/team/gang() - new_gangster.my_gang = ballas - new_gangster.starter_gangster = TRUE - gangs += ballas - ballas.add_member(gangbanger) - ballas.name = new_gangster.gang_name - - ballas.acceptable_clothes = new_gangster.acceptable_clothes.Copy() - ballas.free_clothes = new_gangster.free_clothes.Copy() - ballas.my_gang_datum = new_gangster - - for(var/C in ballas.free_clothes) - var/obj/O = new C(gangbanger.current) - var/list/slots = list ( - "backpack" = ITEM_SLOT_BACKPACK, - "left pocket" = ITEM_SLOT_LPOCKET, - "right pocket" = ITEM_SLOT_RPOCKET - ) - var/mob/living/carbon/human/H = gangbanger.current - var/equipped = H.equip_in_one_of_slots(O, slots) - if(!equipped) - to_chat(gangbanger.current, "Unfortunately, you could not bring your [O] to this shift. You will need to find one.") - qdel(O) - - gangbanger.add_antag_datum(new_gangster) - gangbanger.current.playsound_local(gangbanger.current, 'sound/ambience/antag/thatshowfamiliesworks.ogg', 100, FALSE, pressure_affected = FALSE) - to_chat(gangbanger.current, "As you're the first gangster, your uniform and spraycan are in your inventory!") - addtimer(CALLBACK(src, .proc/announce_gang_locations), 5 MINUTES) - addtimer(CALLBACK(src, .proc/five_minute_warning), time_to_end - 5 MINUTES) - gamemode_ready = TRUE - ..() - -/datum/game_mode/gang/proc/announce_gang_locations() - var/list/readable_gang_names = list() - for(var/GG in gangs) - var/datum/team/gang/G = GG - readable_gang_names += "[G.name]" - var/finalized_gang_names = english_list(readable_gang_names) - priority_announce("Julio G coming to you live from Radio Los Spess! We've been hearing reports of gang activity on [station_name()], with the [finalized_gang_names] duking it out, looking for fresh territory and drugs to sling! Stay safe out there for the hour 'till the space cops get there, and keep it cool, yeah?\n\n The local jump gates are shut down for about an hour due to some maintenance troubles, so if you wanna split from the area you're gonna have to wait an hour. \n Play music, not gunshots, I say. Peace out!", "Radio Los Spess", 'sound/voice/beepsky/radio.ogg') - sent_announcement = TRUE - -/datum/game_mode/gang/proc/five_minute_warning() - priority_announce("Julio G coming to you live from Radio Los Spess! The space cops are closing in on [station_name()] and will arrive in about 5 minutes! Better clear on out of there if you don't want to get hurt!", "Radio Los Spess", 'sound/voice/beepsky/radio.ogg') - -/datum/game_mode/gang/check_win() - var/alive_gangsters = 0 - var/alive_cops = 0 - for(var/datum/mind/gangbanger in gangbangers) - if(!ishuman(gangbanger.current)) - continue - var/mob/living/carbon/human/H = gangbanger.current - if(H.stat) - continue - alive_gangsters++ - for(var/datum/mind/bacon in pigs) - if(!ishuman(bacon.current)) // always returns false - continue - var/mob/living/carbon/human/H = bacon.current - if(H.stat) - continue - alive_cops++ - if(alive_gangsters > alive_cops) - SSticker.mode_result = "win - gangs survived" - SSticker.news_report = GANG_OPERATING - return TRUE - SSticker.mode_result = "loss - police destroyed the gangs" - SSticker.news_report = GANG_DESTROYED - return FALSE - -/datum/game_mode/gang/process() - check_wanted_level() - check_counter++ - if(check_counter >= 5) - if (world.time > endtime && !fuckingdone) - fuckingdone = TRUE - send_in_the_fuzz() - check_counter = 0 - SSticker.mode.check_win() - - check_tagged_turfs() - check_gang_clothes() - check_rollin_with_crews() - -///Checks if our wanted level has changed. Only actually does something post the initial announcement and until the cops are here. After that its locked. -/datum/game_mode/gang/proc/check_wanted_level() - if(!sent_announcement || cops_arrived) - return - var/new_wanted_level - if(GLOB.joined_player_list.len > LOWPOP_FAMILIES_COUNT) - switch(GLOB.deaths_during_shift) - if(0 to TWO_STARS_HIGHPOP-1) - new_wanted_level = 1 - if(TWO_STARS_HIGHPOP to THREE_STARS_HIGHPOP-1) - new_wanted_level = 2 - if(THREE_STARS_HIGHPOP to FOUR_STARS_HIGHPOP-1) - new_wanted_level = 3 - if(FOUR_STARS_HIGHPOP to FIVE_STARS_HIGHPOP-1) - new_wanted_level = 4 - if(FIVE_STARS_HIGHPOP to INFINITY) - new_wanted_level = 5 - else - switch(GLOB.deaths_during_shift) - if(0 to TWO_STARS_LOW-1) - new_wanted_level = 1 - if(TWO_STARS_LOW to THREE_STARS_LOW-1) - new_wanted_level = 2 - if(THREE_STARS_LOW to FOUR_STARS_LOW-1) - new_wanted_level = 3 - if(FOUR_STARS_LOW to FIVE_STARS_LOW-1) - new_wanted_level = 4 - if(FIVE_STARS_LOW to INFINITY) - new_wanted_level = 5 - update_wanted_level(new_wanted_level) - -///Updates the icon states for everyone and sends outs announcements regarding the police. -/datum/game_mode/gang/proc/update_wanted_level(newlevel) - if(newlevel > wanted_level) - on_gain_wanted_level(newlevel) - else if (newlevel < wanted_level) - on_lower_wanted_level(newlevel) - wanted_level = newlevel - for(var/i in GLOB.player_list) - var/mob/M = i - if(!M.hud_used?.wanted_lvl) - continue - var/datum/hud/H = M.hud_used - H.wanted_lvl.level = newlevel - H.wanted_lvl.cops_arrived = cops_arrived - H.wanted_lvl.update_appearance() - -/datum/game_mode/gang/proc/on_gain_wanted_level(newlevel) - var/announcement_message - switch(newlevel) - if(2) - announcement_message = "Small amount of police vehicles have been spotted en route towards [station_name()]. They will arrive at the 50 minute mark." - endtime = start_time + 50 MINUTES - if(3) - announcement_message = "A large detachment police vehicles have been spotted en route towards [station_name()]. They will arrive at the 40 minute mark." - endtime = start_time + 40 MINUTES - if(4) - announcement_message = "A detachment of top-trained agents has been spotted on their way to [station_name()]. They will arrive at the 35 minute mark." - endtime = start_time + 35 MINUTES - if(5) - announcement_message = "The fleet enroute to [station_name()] now consists of national guard personnel. They will arrive at the 30 minute mark." - endtime = start_time + 30 MINUTES - priority_announce(announcement_message, "Station Spaceship Detection Systems") - -/datum/game_mode/gang/proc/on_lower_wanted_level(newlevel) - var/announcement_message - switch(newlevel) - if(1) - announcement_message = "There are now only a few police vehicle headed towards [station_name()]. They will arrive at the 60 minute mark." - endtime = start_time + 60 MINUTES - if(2) - announcement_message = "There seem to be fewer police vehicles headed towards [station_name()]. They will arrive at the 50 minute mark." - endtime = start_time + 50 MINUTES - if(3) - announcement_message = "There are no longer top-trained agents in the fleet headed towards [station_name()]. They will arrive at the 40 minute mark." - endtime = start_time + 40 MINUTES - if(4) - announcement_message = "The convoy enroute to [station_name()] seems to no longer consist of national guard personnel. They will arrive at the 35 minute mark." - endtime = start_time + 35 MINUTES - priority_announce(announcement_message, "Station Spaceship Detection Systems") - -/datum/game_mode/gang/proc/send_in_the_fuzz() - var/team_size - var/cops_to_send - var/announcement_message = "PUNK ASS BALLA BITCH" - var/announcer = "Spinward Stellar Coalition" - if(GLOB.joined_player_list.len > LOWPOP_FAMILIES_COUNT) - switch(wanted_level) - if(1) - team_size = 8 - cops_to_send = /datum/antagonist/ert/families/beatcop - announcement_message = "Hello, crewmembers of [station_name()]! We've received a few calls about some potential violent gang activity on board your station, so we're sending some beat cops to check things out. Nothing extreme, just a courtesy call. However, while they check things out for about 10 minutes, we're going to have to ask that you keep your escape shuttle parked.\n\nHave a pleasant day!" - announcer = "Spinward Stellar Coalition Police Department" - if(2) - team_size = 9 - cops_to_send = /datum/antagonist/ert/families/beatcop/armored - announcement_message = "Crewmembers of [station_name()]. We have received confirmed reports of violent gang activity from your station. We are dispatching some armed officers to help keep the peace and investigate matters. Do not get in their way, and comply with any and all requests from them. We have blockaded the local warp gate, and your shuttle cannot depart for another 10 minutes.\n\nHave a secure day." - announcer = "Spinward Stellar Coalition Police Department" - if(3) - team_size = 10 - cops_to_send = /datum/antagonist/ert/families/beatcop/swat - announcement_message = "Crewmembers of [station_name()]. We have received confirmed reports of extreme gang activity from your station resulting in heavy civilian casualties. The Spinward Stellar Coalition does not tolerate abuse towards our citizens, and we will be responding in force to keep the peace and reduce civilian casualties. We have your station surrounded, and all gangsters must drop their weapons and surrender peacefully.\n\nHave a secure day." - announcer = "Spinward Stellar Coalition Police Department" - if(4) - team_size = 11 - cops_to_send = /datum/antagonist/ert/families/beatcop/fbi - announcement_message = "We are dispatching our top agents to [station_name()] at the request of the Spinward Stellar Coalition government due to an extreme terrorist level threat against this Nanotrasen owned station. All gangsters must surrender IMMEDIATELY. Failure to comply can and will result in death. We have blockaded your warp gates and will not allow any escape until the situation is resolved within our standard response time of 10 minutes.\n\nSurrender now or face the consequences of your actions." - announcer = "Federal Bureau of Investigation" - if(5) - team_size = 12 - cops_to_send = /datum/antagonist/ert/families/beatcop/military - announcement_message = "Due to an insane level of civilian casualties aboard [station_name()], we have dispatched the National Guard to curb any and all gang activity on board the station. We have heavy cruisers watching the shuttle. Attempt to leave before we allow you to, and we will obliterate your station and your escape shuttle.\n\nYou brought this on yourselves by murdering so many civilians." - announcer = "Spinward Stellar Coalition National Guard" - else - switch(wanted_level) - if(1) - team_size = 5 - cops_to_send = /datum/antagonist/ert/families/beatcop - announcement_message = "Hello, crewmembers of [station_name()]! We've received a few calls about some potential violent gang activity on board your station, so we're sending some beat cops to check things out. Nothing extreme, just a courtesy call. However, while they check things out for about 10 minutes, we're going to have to ask that you keep your escape shuttle parked.\n\nHave a pleasant day!" - announcer = "Spinward Stellar Coalition Police Department" - if(2) - team_size = 6 - cops_to_send = /datum/antagonist/ert/families/beatcop/armored - announcement_message = "Crewmembers of [station_name()]. We have received confirmed reports of violent gang activity from your station. We are dispatching some armed officers to help keep the peace and investigate matters. Do not get in their way, and comply with any and all requests from them. We have blockaded the local warp gate, and your shuttle cannot depart for another 10 minutes.\n\nHave a secure day." - announcer = "Spinward Stellar Coalition Police Department" - if(3) - team_size = 7 - cops_to_send = /datum/antagonist/ert/families/beatcop/swat - announcement_message = "Crewmembers of [station_name()]. We have received confirmed reports of extreme gang activity from your station resulting in heavy civilian casualties. The Spinward Stellar Coalition does not tolerate abuse towards our citizens, and we will be responding in force to keep the peace and reduce civilian casualties. We have your station surrounded, and all gangsters must drop their weapons and surrender peacefully.\n\nHave a secure day." - announcer = "Spinward Stellar Coalition Police Department" - if(4) - team_size = 8 - cops_to_send = /datum/antagonist/ert/families/beatcop/fbi - announcement_message = "We are dispatching our top agents to [station_name()] at the request of the Spinward Stellar Coalition government due to an extreme terrorist level threat against this Nanotrasen owned station. All gangsters must surrender IMMEDIATELY. Failure to comply can and will result in death. We have blockaded your warp gates and will not allow any escape until the situation is resolved within our standard response time of 10 minutes.\n\nSurrender now or face the consequences of your actions." - announcer = "Federal Bureau of Investigation" - if(5) - team_size = 10 - cops_to_send = /datum/antagonist/ert/families/beatcop/military - announcement_message = "Due to an insane level of civilian casualties aboard [station_name()], we have dispatched the National Guard to curb any and all gang activity on board the station. We have heavy cruisers watching the shuttle. Attempt to leave before we allow you to, and we will obliterate your station and your escape shuttle.\n\nYou brought this on yourselves by murdering so many civilians." - announcer = "Spinward Stellar Coalition National Guard" - - priority_announce(announcement_message, announcer, 'sound/effects/families_police.ogg') - var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to help clean up crime on this station?", "deathsquad", null) - - - if(candidates.len) - //Pick the (un)lucky players - var/numagents = min(team_size,candidates.len) - - var/list/spawnpoints = GLOB.emergencyresponseteamspawn - var/index = 0 - while(numagents && candidates.len) - var/spawnloc = spawnpoints[index+1] - //loop through spawnpoints one at a time - index = (index + 1) % spawnpoints.len - var/mob/dead/observer/chosen_candidate = pick(candidates) - candidates -= chosen_candidate - if(!chosen_candidate.key) - continue - - //Spawn the body - var/mob/living/carbon/human/cop = new(spawnloc) - chosen_candidate.client.prefs.copy_to(cop) - cop.key = chosen_candidate.key - - //Give antag datum - var/datum/antagonist/ert/ert_antag = new cops_to_send - - cop.mind.add_antag_datum(ert_antag) - cop.mind.assigned_role = ert_antag.name - SSjob.SendToLateJoin(cop) - - //Logging and cleanup - log_game("[key_name(cop)] has been selected as an [ert_antag.name]") - numagents-- - cops_arrived = TRUE - update_wanted_level() //Will make sure our icon updates properly - return TRUE - -/datum/game_mode/gang/proc/check_tagged_turfs() - for(var/T in GLOB.gang_tags) - var/obj/effect/decal/cleanable/crayon/gang/tag = T - if(tag.my_gang) - tag.my_gang.adjust_points(50) - CHECK_TICK - -/datum/game_mode/gang/proc/check_gang_clothes() // TODO: make this grab the sprite itself, average out what the primary color would be, then compare how close it is to the gang color so I don't have to manually fill shit out for 5 years for every gang type - for(var/mob/living/carbon/human/H in GLOB.player_list) - if(!H.mind || !H.client) - continue - var/datum/antagonist/gang/is_gangster = H.mind.has_antag_datum(/datum/antagonist/gang) - for(var/clothing in list(H.head, H.wear_mask, H.wear_suit, H.w_uniform, H.back, H.gloves, H.shoes, H.belt, H.s_store, H.glasses, H.ears, H.wear_id)) - if(is_gangster) - if(is_type_in_list(clothing, is_gangster.acceptable_clothes)) - is_gangster.add_gang_points(10) - else - for(var/G in gangs) - var/datum/team/gang/gang_clothes = G - if(is_type_in_list(clothing, gang_clothes.acceptable_clothes)) - gang_clothes.adjust_points(5) - - CHECK_TICK - -/datum/game_mode/gang/proc/check_rollin_with_crews() - var/list/areas_to_check = list() - for(var/G in gangbangers) - var/datum/mind/gangster = G - areas_to_check += get_area(gangster.current) - for(var/AA in areas_to_check) - var/area/A = AA - var/list/gang_members = list() - for(var/mob/living/carbon/human/H in A) - if(H.stat || !H.mind || !H.client) - continue - var/datum/antagonist/gang/is_gangster = H.mind.has_antag_datum(/datum/antagonist/gang) - if(is_gangster) - gang_members[is_gangster.my_gang]++ - CHECK_TICK - if(gang_members.len) - for(var/datum/team/gang/gangsters in gang_members) - if(gang_members[gangsters] >= CREW_SIZE_MIN) - if(gang_members[gangsters] >= CREW_SIZE_MAX) - gangsters.adjust_points(5) // Discourage larger clumps, spread ur people out - else - gangsters.adjust_points(10) - - -/datum/game_mode/gang/generate_report() - return "Potential violent criminal activity has been detected on board your station, and we believe the Spinward Stellar Coalition may be conducting an audit of us. Keep an eye out for tagging of turf, color coordination, and suspicious people asking you to say things a little closer to their chest." - -/datum/game_mode/gang/send_intercept(report = 0) - return - -/datum/game_mode/gang/special_report() - var/list/report = list() - var/highest_point_value = 0 - var/highest_gang = "Leet Like Jeff K" - report += "The families in the round were:" - var/objective_failures = TRUE - for(var/datum/team/gang/GG in gangs) - if(GG.my_gang_datum.check_gang_objective()) - objective_failures = FALSE - break - for(var/datum/team/gang/G in gangs) - report += "[G.name]:" - if(G.members.len) - report += "[G.my_gang_datum.roundend_category] were:" - report += printplayerlist(G.members) - report += "Points: [G.points]" - report += "Objective: [G.my_gang_datum.gang_objective]" - if(G.my_gang_datum.check_gang_objective()) - report += "The family completed their objective!" - else - report += "The family failed their objective!" - else - report += "The family was wiped out!" - if(!objective_failures) - if(G.points >= highest_point_value && G.members.len && G.my_gang_datum.check_gang_objective()) - highest_point_value = G.points - highest_gang = G.name - else - if(G.points >= highest_point_value && G.members.len) - highest_point_value = G.points - highest_gang = G.name - var/alive_gangsters = 0 - var/alive_cops = 0 - for(var/datum/mind/gangbanger in gangbangers) - if(gangbanger.current) - if(!ishuman(gangbanger.current)) - continue - var/mob/living/carbon/human/H = gangbanger.current - if(H.stat) - continue - alive_gangsters++ - for(var/datum/mind/bacon in pigs) - if(bacon.current) - if(!ishuman(bacon.current)) // always returns false - continue - var/mob/living/carbon/human/H = bacon.current - if(H.stat) - continue - alive_cops++ - if(alive_gangsters > alive_cops) - if(!objective_failures) - report += "[highest_gang] won the round by completing their objective and having the most points!" - else - report += "[highest_gang] won the round by having the most points!" - else if(alive_gangsters == alive_cops) - report += "Legend has it the police and the families are still duking it out to this day!" - else - report += "The police put the boots to the families, medium style!" - - - return "
[report.Join("
")]
" diff --git a/code/game/gamemodes/gang/gang_things.dm b/code/game/gamemodes/gang/gang_things.dm deleted file mode 100644 index 5871ed6a24cf..000000000000 --- a/code/game/gamemodes/gang/gang_things.dm +++ /dev/null @@ -1,57 +0,0 @@ -/obj/item/gang_induction_package - name = "family signup package" - icon = 'icons/obj/gang/signup_points.dmi' - icon_state = "signup_book" - var/gang_to_use - var/datum/team/gang/team_to_use - - -/obj/item/gang_induction_package/attack_self(mob/living/user) - ..() - if(HAS_TRAIT(user, TRAIT_MINDSHIELD)) - to_chat(user, "You attended a seminar on not signing up for a gang, and are not interested.") - return - if(user.mind.has_antag_datum(/datum/antagonist/ert/families)) - to_chat(user, "As a police officer, you can't join this family. However, you pretend to accept it to keep your cover up.") - for(var/threads in team_to_use.free_clothes) - new threads(get_turf(user)) - qdel(src) - return - var/datum/antagonist/gang/is_gangster = user.mind.has_antag_datum(/datum/antagonist/gang) - if(is_gangster && is_gangster.starter_gangster) - to_chat(user, "You started your family. You can't turn your back on it now.") - return - attempt_join_gang(user) - -/obj/item/gang_induction_package/proc/add_to_gang(mob/living/user) - var/datum/game_mode/gang/F = SSticker.mode - var/datum/antagonist/gang/swappin_sides = new gang_to_use() - user.mind.add_antag_datum(swappin_sides) - var/policy = get_policy(ROLE_FAMILIES) - if(policy) - to_chat(user, policy) - swappin_sides.my_gang = team_to_use - user.playsound_local(user, 'sound/ambience/antag/thatshowfamiliesworks.ogg', 100, FALSE, pressure_affected = FALSE) - team_to_use.add_member(user.mind) - for(var/threads in team_to_use.free_clothes) - new threads(get_turf(user)) - if (!F.gangbangers.Find(user.mind)) - F.gangbangers += user.mind - team_to_use.adjust_points(30) - - -/obj/item/gang_induction_package/proc/attempt_join_gang(mob/living/user) - if(user && user.mind) - var/datum/antagonist/gang/is_gangster = user.mind.has_antag_datum(/datum/antagonist/gang) - if(is_gangster) - if(is_gangster.my_gang == team_to_use) - return - else - is_gangster.my_gang.adjust_points(-30) - is_gangster.my_gang.remove_member(user.mind) - user.mind.remove_antag_datum(/datum/antagonist/gang) - add_to_gang(user) - qdel(src) - else - add_to_gang(user) - qdel(src) diff --git a/code/game/gamemodes/monkey/monkey.dm b/code/game/gamemodes/monkey/monkey.dm deleted file mode 100644 index 639f0c5c87b2..000000000000 --- a/code/game/gamemodes/monkey/monkey.dm +++ /dev/null @@ -1,130 +0,0 @@ -/datum/game_mode - var/list/ape_infectees = list() - var/list/ape_leaders = list() - -/datum/game_mode/monkey - name = "monkey" - config_tag = "monkey" - report_type = "monkey" - antag_flag = ROLE_MONKEY - false_report_weight = 1 - - required_players = 20 - required_enemies = 1 - recommended_enemies = 1 - - restricted_jobs = list("Prisoner", "Cyborg", "AI") - - announce_span = "Monkey" - announce_text = "One or more crewmembers have been infected with Jungle Fever! Crew: Contain the outbreak. None of the infected monkeys may escape alive to CentCom. Monkeys: Ensure that your kind lives on! Rise up against your captors!" - - var/carriers_to_make = 1 - var/list/carriers = list() - - var/monkeys_to_win = 1 - var/escaped_monkeys = 0 - - var/players_per_carrier = 30 - - var/datum/team/monkey/monkey_team - - - -/datum/game_mode/monkey/pre_setup() - carriers_to_make = max(round(num_players()/players_per_carrier, 1), 1) - - for(var/j = 0, j < carriers_to_make, j++) - if (!antag_candidates.len) - break - var/datum/mind/carrier = pick(antag_candidates) - carriers += carrier - carrier.special_role = "Monkey Leader" - carrier.restricted_roles = restricted_jobs - log_game("[key_name(carrier)] has been selected as a Jungle Fever carrier") - antag_candidates -= carrier - - if(!carriers.len) - setup_error = "No monkey candidates" - return FALSE - return TRUE - -/datum/game_mode/monkey/post_setup() - for(var/datum/mind/carriermind in carriers) - var/datum/antagonist/monkey/M = add_monkey_leader(carriermind, monkey_team) - if(M) - monkey_team = M.monkey_team - return ..() - -/datum/game_mode/monkey/check_finished() - if(SSshuttle.jump_mode == BS_JUMP_COMPLETED) - return TRUE - - if(!round_converted) - for(var/datum/mind/monkey_mind in ape_infectees) - continuous_sanity_checked = TRUE - if(monkey_mind.current && monkey_mind.current.stat != DEAD) - return FALSE - - var/datum/disease/D = new /datum/disease/transformation/jungle_fever() //ugly but unfortunately needed - for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - if(H.mind && H.client && H.stat != DEAD) - if(H.HasDisease(D)) - return FALSE - - return ..() - -/datum/game_mode/monkey/proc/check_monkey_victory() - if(SSshuttle.jump_mode != BS_JUMP_COMPLETED) - return FALSE - var/datum/disease/D = new /datum/disease/transformation/jungle_fever() - for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list) - if (M.HasDisease(D)) - if(M.onCentCom() || M.onSyndieBase()) - escaped_monkeys++ - if(escaped_monkeys >= monkeys_to_win) - return TRUE - else - return FALSE - - -/datum/game_mode/monkey/set_round_result() - ..() - if(check_monkey_victory()) - SSticker.mode_result = "win - monkey win" - else - SSticker.mode_result = "loss - staff stopped the monkeys" - -/datum/game_mode/monkey/special_report() - if(check_monkey_victory()) - return "
The monkeys have overthrown their captors! Eeek eeeek!!
" - else - return "
The staff managed to contain the monkey infestation!
" - -/datum/game_mode/monkey/generate_report() - return "Reports of an ancient [pick("retrovirus", "flesh eating bacteria", "disease", "magical curse blamed on viruses", "banana blight")] outbreak that turn humans into monkeys has been reported in your quadrant. Due to strain mutation, such infections are no longer curable by any known means. If an outbreak occurs, ensure the station is quarantined to prevent a largescale outbreak at CentCom." - -/proc/add_monkey_leader(datum/mind/monkey_mind) - if(is_monkey_leader(monkey_mind)) - return FALSE - var/datum/antagonist/monkey/leader/M = monkey_mind.add_antag_datum(/datum/antagonist/monkey/leader) - return M - -/proc/add_monkey(datum/mind/monkey_mind) - if(is_monkey(monkey_mind)) - return FALSE - var/datum/antagonist/monkey/M = monkey_mind.add_antag_datum(/datum/antagonist/monkey) - return M - -/proc/remove_monkey(datum/mind/monkey_mind) - if(!is_monkey(monkey_mind)) - return FALSE - var/datum/antagonist/monkey/M = monkey_mind.has_antag_datum(/datum/antagonist/monkey) - M.on_removal() - return TRUE - -/proc/is_monkey_leader(datum/mind/monkey_mind) - return monkey_mind && monkey_mind.has_antag_datum(/datum/antagonist/monkey/leader) - -/proc/is_monkey(datum/mind/monkey_mind) - return monkey_mind && (monkey_mind.has_antag_datum(/datum/antagonist/monkey) || is_monkey_leader(monkey_mind)) - diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 01150fac7f3b..82735ff9d522 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -17,6 +17,11 @@ GLOBAL_LIST_EMPTY(objectives) if(text) explanation_text = text +//Apparently objectives can be qdel'd. Learn a new thing every day +/datum/objective/Destroy() + GLOB.objectives -= src + return ..() + /datum/objective/proc/get_owners() // Combine owner and team into a single list. . = (team && team.members) ? team.members.Copy() : list() if(owner) diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm deleted file mode 100644 index 9c0d6fc8c905..000000000000 --- a/code/game/gamemodes/revolution/revolution.dm +++ /dev/null @@ -1,232 +0,0 @@ -// To add a rev to the list of revolutionaries, make sure it's rev (with if(SSticker.mode.name == "revolution)), -// then call SSticker.mode:add_revolutionary(_THE_PLAYERS_MIND_) -// nothing else needs to be done, as that proc will check if they are a valid target. -// Just make sure the converter is a head before you call it! -// To remove a rev (from brainwashing or w/e), call SSticker.mode:remove_revolutionary(_THE_PLAYERS_MIND_), -// this will also check they're not a head, so it can just be called freely -// If the game somtimes isn't registering a win properly, then SSticker.mode.check_win() isn't being called somewhere. - - -/datum/game_mode/revolution - name = "revolution" - config_tag = "revolution" - report_type = "revolution" - antag_flag = ROLE_REV - false_report_weight = 10 - restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Brig Physician", "SolGov Representative", "Prisoner") //WS edit - Brig Physicians, SolGov Rep - required_jobs = list(list("Captain"=1),list("Head of Personnel"=1),list("Head of Security"=1),list("Chief Engineer"=1),list("Research Director"=1),list("Chief Medical Officer"=1)) //Any head present - required_players = 20 - required_enemies = 1 - recommended_enemies = 3 - enemy_minimum_age = 14 - - announce_span = "Revolution" - announce_text = "Some crewmembers are attempting a coup!\n\ - Revolutionaries: Expand your cause and overthrow the heads of staff by execution or otherwise.\n\ - Crew: Prevent the revolutionaries from taking over the station." - - var/finished = 0 - var/check_counter = 0 - var/max_headrevs = 3 - var/datum/team/revolution/revolution - var/list/datum/mind/headrev_candidates = list() - var/end_when_heads_dead = TRUE - -/////////////////////////////////////////////////////////////////////////////// -//Gets the round setup, cancelling if there's not enough players at the start// -/////////////////////////////////////////////////////////////////////////////// -/datum/game_mode/revolution/pre_setup() - - if(CONFIG_GET(flag/protect_roles_from_antagonist)) - restricted_jobs += protected_jobs - - if(CONFIG_GET(flag/protect_assistant_from_antagonist)) - restricted_jobs += "Assistant" - - for (var/i=1 to max_headrevs) - if (antag_candidates.len==0) - break - var/datum/mind/lenin = antag_pick(antag_candidates) - antag_candidates -= lenin - headrev_candidates += lenin - lenin.restricted_roles = restricted_jobs - - if(headrev_candidates.len < required_enemies) - setup_error = "Not enough headrev candidates" - return FALSE - - for(var/antag in headrev_candidates) - GLOB.pre_setup_antags += antag - return TRUE - -/datum/game_mode/revolution/post_setup() - var/list/heads = SSjob.get_living_heads() - var/list/sec = SSjob.get_living_sec() - var/weighted_score = min(max(round(heads.len - ((8 - sec.len) / 3)),1),max_headrevs) - - for(var/datum/mind/rev_mind in headrev_candidates) //People with return to lobby may still be in the lobby. Let's pick someone else in that case. - if(isnewplayer(rev_mind.current)) - headrev_candidates -= rev_mind - var/list/newcandidates = shuffle(antag_candidates) - if(newcandidates.len == 0) - continue - for(var/M in newcandidates) - var/datum/mind/lenin = M - antag_candidates -= lenin - newcandidates -= lenin - if(isnewplayer(lenin.current)) //We don't want to make the same mistake again - continue - else - var/mob/Nm = lenin.current - if(Nm.job in restricted_jobs) //Don't make the HOS a replacement revhead - antag_candidates += lenin //Let's let them keep antag chance for other antags - continue - - headrev_candidates += lenin - break - - while(weighted_score < headrev_candidates.len) //das vi danya - var/datum/mind/trotsky = pick(headrev_candidates) - antag_candidates += trotsky - headrev_candidates -= trotsky - - revolution = new() - - for(var/datum/mind/rev_mind in headrev_candidates) - log_game("[key_name(rev_mind)] has been selected as a head rev") - var/datum/antagonist/rev/head/new_head = new() - new_head.give_flash = TRUE - new_head.give_hud = TRUE - new_head.remove_clumsy = TRUE - rev_mind.add_antag_datum(new_head,revolution) - GLOB.pre_setup_antags -= rev_mind - - revolution.update_objectives() - revolution.update_heads() - - ..() - - -/datum/game_mode/revolution/process() - check_counter++ - if(check_counter >= 5) - if(!finished) - SSticker.mode.check_win() - check_counter = 0 - return FALSE - -////////////////////////////////////// -//Checks if the revs have won or not// -////////////////////////////////////// -/datum/game_mode/revolution/check_win() - if(check_rev_victory()) - finished = 1 - else if(check_heads_victory()) - finished = 2 - return - -/////////////////////////////// -//Checks if the round is over// -/////////////////////////////// -/datum/game_mode/revolution/check_finished() - if(CONFIG_GET(keyed_list/continuous)["revolution"]) - return ..() - if(finished != 0 && end_when_heads_dead) - return TRUE - else - return ..() - -/////////////////////////////////////////////////// -//Deals with converting players to the revolution// -/////////////////////////////////////////////////// -/proc/is_revolutionary(mob/M) - return M.mind?.has_antag_datum(/datum/antagonist/rev) - -/proc/is_head_revolutionary(mob/M) - return M.mind?.has_antag_datum(/datum/antagonist/rev/head) - -////////////////////////// -//Checks for rev victory// -////////////////////////// -/datum/game_mode/revolution/proc/check_rev_victory() - for(var/datum/objective/mutiny/objective in revolution.objectives) - if(!(objective.check_completion())) - return FALSE - return TRUE - -///////////////////////////// -//Checks for a head victory// -///////////////////////////// -/datum/game_mode/revolution/proc/check_heads_victory() - for(var/datum/mind/rev_mind in revolution.head_revolutionaries()) - if(!considered_afk(rev_mind) && considered_alive(rev_mind)) - if(ishuman(rev_mind.current) || ismonkey(rev_mind.current)) - return FALSE - return TRUE - - -/datum/game_mode/revolution/set_round_result() - ..() - if(finished == 1) - SSticker.mode_result = "win - heads killed" - SSticker.news_report = REVS_WIN - else if(finished == 2) - SSticker.mode_result = "loss - rev heads killed" - SSticker.news_report = REVS_LOSE - -//TODO What should be displayed for revs in non-rev rounds -/datum/game_mode/revolution/special_report() - if(finished == 1) - return "
The heads of staff were killed or exiled! The revolutionaries win!
" - else if(finished == 2) - return "
The heads of staff managed to stop the revolution!
" - -/datum/game_mode/revolution/generate_report() - return "Employee unrest has spiked in recent weeks, with several attempted mutinies on heads of staff. Some crew have been observed using flashbulb devices to blind their colleagues, \ - who then follow their orders without question and work towards dethroning departmental leaders. Watch for behavior such as this with caution. If the crew attempts a mutiny, you and \ - your heads of staff are fully authorized to execute them using lethal weaponry - they will be later cloned and interrogated at Central Command." - -/datum/game_mode/revolution/extended - name = "extended_revolution" - config_tag = "extended_revolution" - end_when_heads_dead = FALSE - -/datum/game_mode/revolution/speedy - name = "speedy_revolution" - config_tag = "speedy_revolution" - end_when_heads_dead = FALSE - var/endtime = null - var/fuckingdone = FALSE - -/datum/game_mode/revolution/speedy/pre_setup() - endtime = world.time + 20 MINUTES - return ..() - -/datum/game_mode/revolution/speedy/process() - . = ..() - if(check_counter == 0) - if (world.time > endtime && !fuckingdone) - fuckingdone = TRUE - for (var/obj/machinery/nuclearbomb/N in GLOB.nuke_list) - if (!N.timing) - N.timer_set = 200 - N.set_safety() - N.set_active() - - -/datum/game_mode/revolution/generate_credit_text() - var/list/round_credits = list() - var/len_before_addition - - round_credits += "

The Disgruntled Revolutionaries:

" - len_before_addition = round_credits.len - for(var/datum/mind/headrev in revolution.head_revolutionaries()) - round_credits += "

[headrev.name] as a revolutionary leader

" - for(var/datum/mind/grunt in (revolution.members - revolution.head_revolutionaries())) - round_credits += "

[grunt.name] as a grunt of the revolution

" - if(len_before_addition == round_credits.len) - round_credits += list("

The revolutionaries were all destroyed as martyrs!

", "

We couldn't identify their remains!

") - round_credits += "
" - - round_credits += ..() - return round_credits diff --git a/code/game/gamemodes/sandbox/airlock_maker.dm b/code/game/gamemodes/sandbox/airlock_maker.dm index da1db44bb251..17f6f474e5ea 100644 --- a/code/game/gamemodes/sandbox/airlock_maker.dm +++ b/code/game/gamemodes/sandbox/airlock_maker.dm @@ -16,7 +16,7 @@ /obj/structure/door_assembly/ComponentInitialize() . = ..() - AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated)) + AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, PROC_REF(can_be_rotated))) /obj/structure/door_assembly/proc/can_be_rotated(mob/user, rotation_type) return !anchored diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index b46449a43748..1aaf853fc000 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -90,7 +90,7 @@ /datum/game_mode/traitor/post_setup() for(var/datum/mind/traitor in pre_traitors) var/datum/antagonist/traitor/new_antag = new antag_datum() - addtimer(CALLBACK(traitor, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100)) + addtimer(CALLBACK(traitor, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100)) GLOB.pre_setup_antags -= traitor if(!exchange_blue) exchange_blue = -1 //Block latejoiners from getting exchange objectives diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index b1d790677317..c81a58ad73b9 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -95,6 +95,8 @@ Class Procs: anchored = TRUE interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT + hitsound_type = PROJECTILE_HITSOUND_METAL + var/machine_stat = NONE var/use_power = IDLE_POWER_USE //0 = dont run the auto @@ -138,10 +140,11 @@ Class Procs: armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70) . = ..() GLOB.machines += src - RegisterSignal(src, COMSIG_MOVABLE_Z_CHANGED, .proc/power_change) - if(ispath(circuit, /obj/item/circuitboard) && (mapload || apply_default_parts)) + RegisterSignal(src, COMSIG_MOVABLE_Z_CHANGED, PROC_REF(power_change)) + if(ispath(circuit, /obj/item/circuitboard)) circuit = new circuit - circuit.apply_default_parts(src) + if(mapload || apply_default_parts) + circuit.apply_default_parts(src) if(processing_flags & START_PROCESSING_ON_INIT) begin_processing() @@ -164,16 +167,14 @@ Class Procs: /obj/machinery/LateInitialize() . = ..() power_change() - RegisterSignal(src, COMSIG_ENTER_AREA, .proc/power_change) + RegisterSignal(src, COMSIG_ENTER_AREA, PROC_REF(power_change)) /obj/machinery/Destroy() GLOB.machines.Remove(src) end_processing() dropContents() - if(length(component_parts)) - for(var/atom/A in component_parts) - qdel(A) - component_parts.Cut() + QDEL_NULL(circuit) + QDEL_LIST(component_parts) return ..() /obj/machinery/proc/locate_machinery() @@ -410,7 +411,10 @@ Class Procs: /obj/machinery/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) on_deconstruction() - if(component_parts && component_parts.len) + if(circuit) + circuit.forceMove(loc) + circuit = null + if(length(component_parts)) spawn_frame(disassembled) for(var/obj/item/I in component_parts) I.forceMove(loc) @@ -517,7 +521,7 @@ Class Procs: I.play_tool_sound(src, 50) var/prev_anchored = anchored //as long as we're the same anchored state and we're either on a floor or are anchored, toggle our anchored state - if(I.use_tool(src, user, time, extra_checks = CALLBACK(src, .proc/unfasten_wrench_check, prev_anchored, user))) + if(I.use_tool(src, user, time, extra_checks = CALLBACK(src, PROC_REF(unfasten_wrench_check), prev_anchored, user))) if(!anchored && ground.is_blocked_turf(exclude_mobs = TRUE, source_atom = src)) to_chat(user, "You fail to secure [src].") return CANT_UNFASTEN diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index eb46da7f568b..0423794a560d 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -42,4 +42,4 @@ to_chat(user, "You activate [src]. It now has [uses] uses of foam remaining.") cooldown = world.time + cooldown_time power_change() - addtimer(CALLBACK(src, .proc/power_change), cooldown_time) + addtimer(CALLBACK(src, PROC_REF(power_change)), cooldown_time) diff --git a/code/game/machinery/airlock_cycle_control.dm b/code/game/machinery/airlock_cycle_control.dm index c2d9e0da07cb..76094e803cd3 100644 --- a/code/game/machinery/airlock_cycle_control.dm +++ b/code/game/machinery/airlock_cycle_control.dm @@ -139,7 +139,7 @@ /obj/machinery/advanced_airlock_controller/Initialize(mapload) . = ..() - SSair.start_processing_machine(src) + SSair.start_processing_machine(src, mapload) scan_on_late_init = mapload if(mapload && (. != INITIALIZE_HINT_QDEL)) return INITIALIZE_HINT_LATELOAD @@ -167,7 +167,7 @@ var/maxpressure = (exterior_pressure && (cyclestate == AIRLOCK_CYCLESTATE_OUTCLOSING || cyclestate == AIRLOCK_CYCLESTATE_OUTOPENING || cyclestate == AIRLOCK_CYCLESTATE_OUTOPEN)) ? exterior_pressure : interior_pressure var/pressure_bars = round(pressure / maxpressure * 5 + 0.01) - var/new_overlays_hash = "[pressure_bars]-[cyclestate]-[buildstage]-[panel_open]-[machine_stat]-[shorted]-[locked]-\ref[vis_target]" + var/new_overlays_hash = "[pressure_bars]-[cyclestate]-[buildstage]-[panel_open]-[machine_stat]-[shorted]-[locked]-[text_ref(vis_target)]" if(use_hash && new_overlays_hash == overlays_hash) return ..() overlays_hash = new_overlays_hash @@ -645,7 +645,7 @@ "airlocks" = list(), "skip_timer" = (world.time - skip_timer), "skip_delay" = skip_delay, - "vis_target" = "\ref[vis_target]" + "vis_target" = "[text_ref(vis_target)]" ) if((locked && !user.has_unlimited_silicon_privilege) || (user.has_unlimited_silicon_privilege && aidisabled)) @@ -661,7 +661,7 @@ var/obj/machinery/atmospherics/components/unary/vent_pump/vent = V data["vents"] += list(list( "role" = vents[vent], - "vent_id" = "\ref[vent]", + "vent_id" = "[text_ref(vent)]", "name" = vent.name )) for(var/A in airlocks) @@ -683,7 +683,7 @@ data["airlocks"] += list(list( "role" = airlocks[airlock], - "airlock_id" = "\ref[airlock]", + "airlock_id" = "[text_ref(airlock)]", "name" = airlock.name, "access" = access_str )) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 811064d6d193..5f8412ff25a3 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -49,7 +49,7 @@ ) /obj/machinery/autolathe/Initialize() - AddComponent(/datum/component/material_container,list(/datum/material/iron, /datum/material/glass, /datum/material/plastic, /datum/material/silver, /datum/material/gold, /datum/material/plasma, /datum/material/uranium, /datum/material/titanium), 0, TRUE, null, null, CALLBACK(src, .proc/AfterMaterialInsert)) + AddComponent(/datum/component/material_container,list(/datum/material/iron, /datum/material/glass, /datum/material/plastic, /datum/material/silver, /datum/material/gold, /datum/material/plasma, /datum/material/uranium, /datum/material/titanium), 0, TRUE, null, null, CALLBACK(src, PROC_REF(AfterMaterialInsert))) . = ..() wires = new /datum/wires/autolathe(src) @@ -57,9 +57,7 @@ matching_designs = list() /obj/machinery/autolathe/Destroy() - if(d_disk) // Drops the design disk on the floor when destroyed - d_disk.forceMove(get_turf(src)) - d_disk = null + QDEL_NULL(d_disk) QDEL_NULL(wires) return ..() @@ -253,7 +251,7 @@ use_power(power) icon_state = "autolathe_n" var/time = is_stack ? 32 : (32 * coeff * multiplier) ** 0.8 - addtimer(CALLBACK(src, .proc/make_item, power, materials_used, custom_materials, multiplier, coeff, is_stack, usr), time) + addtimer(CALLBACK(src, PROC_REF(make_item), power, materials_used, custom_materials, multiplier, coeff, is_stack, usr), time) . = TRUE else to_chat(usr, "Not enough materials for this operation.") diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 3e04893bf8a9..efaa9454d307 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -181,7 +181,7 @@ device.pulsed() SEND_GLOBAL_SIGNAL(COMSIG_GLOB_BUTTON_PRESSED,src) - addtimer(CALLBACK(src, /atom/.proc/update_appearance), 15) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_appearance)), 15) /obj/machinery/button/door name = "door button" diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 5b31770af80c..c1cca432efd4 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -42,6 +42,8 @@ var/datum/component/empprotection/emp_component var/internal_light = TRUE //Whether it can light up when an AI views it + ///Proximity monitor associated with this atom, for motion sensitive cameras. + var/datum/proximity_monitor/proximity_monitor /// A copy of the last paper object that was shown to this camera. var/obj/item/paper/last_shown_paper @@ -83,7 +85,6 @@ if (isturf(loc)) myarea = get_area(src) LAZYADD(myarea.cameras, src) - proximity_monitor = new(src, 1) if(mapload && prob(3) && !start_active) toggle_cam() @@ -95,6 +96,14 @@ network -= i network += "[REF(port)][i]" +/obj/machinery/camera/proc/create_prox_monitor() + if(!proximity_monitor) + proximity_monitor = new(src, 1) + +/obj/machinery/camera/proc/set_area_motion(area/A) + area_motion = A + create_prox_monitor() + /obj/machinery/camera/Destroy() if(can_use()) toggle_cam(null, 0) //kick anyone viewing out and remove from the camera chunks @@ -149,7 +158,7 @@ set_light(0) emped = emped+1 //Increase the number of consecutive EMP's update_appearance() - addtimer(CALLBACK(src, .proc/post_emp_reset, emped, network), 90 SECONDS) + addtimer(CALLBACK(src, PROC_REF(post_emp_reset), emped, network), 90 SECONDS) for(var/i in GLOB.player_list) var/mob/M = i if (M.client.eye == src) @@ -169,7 +178,7 @@ if(can_use()) GLOB.cameranet.addCamera(src) emped = 0 //Resets the consecutive EMP count - addtimer(CALLBACK(src, .proc/cancelCameraAlarm), 100) + addtimer(CALLBACK(src, PROC_REF(cancelCameraAlarm)), 100) /obj/machinery/camera/ex_act(severity, target) if(invuln) @@ -428,7 +437,7 @@ change_msg = "reactivates" triggerCameraAlarm() if(!QDELETED(src)) //We'll be doing it anyway in destroy - addtimer(CALLBACK(src, .proc/cancelCameraAlarm), 100) + addtimer(CALLBACK(src, PROC_REF(cancelCameraAlarm)), 100) if(displaymessage) if(user) visible_message("[user] [change_msg] [src]!") diff --git a/code/game/machinery/camera/motion.dm b/code/game/machinery/camera/motion.dm index a5f531cfd603..a3e73db90863 100644 --- a/code/game/machinery/camera/motion.dm +++ b/code/game/machinery/camera/motion.dm @@ -84,7 +84,7 @@ /obj/machinery/camera/motion/thunderdome/Initialize() . = ..() - proximity_monitor.SetRange(7) + proximity_monitor.set_range(7) /obj/machinery/camera/motion/thunderdome/HasProximity(atom/movable/AM as mob|obj) if (!isliving(AM) || get_area(AM) != get_area(src)) diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index 6b2bf6859049..8f57ad09203a 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -133,8 +133,11 @@ if(!assembly.proxy_module) assembly.proxy_module = new(assembly) upgrades |= CAMERA_UPGRADE_MOTION + create_prox_monitor() /obj/machinery/camera/proc/removeMotion() if(name == "motion-sensitive security camera") name = "security camera" upgrades &= ~CAMERA_UPGRADE_MOTION + if(!area_motion) + QDEL_NULL(proximity_monitor) diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index 47b9a845b598..cdfb48edc2e9 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -49,9 +49,9 @@ track.namecounts[name] = 1 if(ishuman(L)) - track.humans[name] = L + track.humans[name] = WEAKREF(L) else - track.others[name] = L + track.others[name] = WEAKREF(L) var/list/targets = sortList(track.humans) + sortList(track.others) @@ -67,9 +67,9 @@ if(!track.initialized) trackable_mobs() - var/mob/target = (isnull(track.humans[target_name]) ? track.others[target_name] : track.humans[target_name]) + var/datum/weakref/target = (isnull(track.humans[target_name]) ? track.others[target_name] : track.humans[target_name]) - ai_actual_track(target) + ai_actual_track(target.resolve()) /mob/living/silicon/ai/proc/ai_actual_track(mob/living/target) if(!istype(target)) @@ -86,7 +86,7 @@ to_chat(U, "Now tracking [target.get_visible_name()] on camera.") - INVOKE_ASYNC(src, .proc/do_track, target, U) + INVOKE_ASYNC(src, PROC_REF(do_track), target, U) /mob/living/silicon/ai/proc/do_track(mob/living/target, mob/living/silicon/ai/U) var/cameraticks = 0 diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 60c41eeeb921..c71e94a0948a 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -206,7 +206,7 @@ if(!G) return NONE if(clonemind.damnation_type) //Can't clone the damned. - INVOKE_ASYNC(src, .proc/horrifyingsound) + INVOKE_ASYNC(src, PROC_REF(horrifyingsound)) mess = TRUE icon_state = "pod_g" update_appearance() diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm index 811e7d5c100a..d014b33010d7 100644 --- a/code/game/machinery/computer/Operating.dm +++ b/code/game/machinery/computer/Operating.dm @@ -8,7 +8,6 @@ icon_keyboard = "med_key" circuit = /obj/item/circuitboard/computer/operating - var/mob/living/carbon/human/patient var/obj/structure/table/optable/table var/obj/machinery/stasis/sbed var/list/advanced_surgeries = list() @@ -103,23 +102,18 @@ surgery["desc"] = initial(S.desc) surgeries += list(surgery) data["surgeries"] = surgeries - data["patient"] = null - if(table) - data["table"] = table - if(!table.check_eligible_patient()) - return data - data["patient"] = list() - patient = table.patient - else - if(sbed) - data["table"] = sbed - if(!ishuman(sbed.occupant) && !ismonkey(sbed.occupant)) - return data - data["patient"] = list() - patient = sbed.occupant - else - data["patient"] = null - return data + + //If there's no patient just hop to it yeah? + if(!table) + data["patient"] = null + return data + + data["table"] = table + if(!table.check_eligible_patient()) + return data + data["patient"] = list() + var/mob/living/carbon/human/patient = table.patient + switch(patient.stat) if(CONSCIOUS) data["patient"]["stat"] = "Conscious" diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index e782bd209c22..bdbadf79a943 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -21,6 +21,8 @@ ///Does this computer have a unique icon_state? Prevents the changing of icons from alternative computer construction var/unique_icon = FALSE + hitsound_type = PROJECTILE_HITSOUND_GLASS + /obj/machinery/computer/Initialize(mapload, obj/item/circuitboard/C) . = ..() power_change() @@ -29,10 +31,6 @@ circuit = C C.moveToNullspace() -/obj/machinery/computer/Destroy() - QDEL_NULL(circuit) - return ..() - /obj/machinery/computer/process() if(machine_stat & (NOPOWER|BROKEN)) return 0 diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index eb43515d6e47..1ca0c97d5223 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -114,7 +114,7 @@ log_game("[key_name(operator)] set the logs of [src] in [AREACOORD(src)] [should_log ? "On" : "Off"]") if("restore-console") restoring = TRUE - addtimer(CALLBACK(src, .proc/restore_comp), rand(3,5) * 9) + addtimer(CALLBACK(src, PROC_REF(restore_comp)), rand(3,5) * 9) if("access-apc") var/ref = params["ref"] playsound(src, "terminal_type", 50, FALSE) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 94b57a2d9f57..571d5b090da9 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -773,7 +773,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( var/mob/living/L = usr L.Stun(200, ignore_canstun = TRUE) //you can't run :^) var/S = new /obj/singularity/academy(usr.loc) - addtimer(CALLBACK(src, /atom/movable/proc/say, "[S] winks out, just as suddenly as it appeared."), 50) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, say), "[S] winks out, just as suddenly as it appeared."), 50) QDEL_IN(S, 50) else event = null diff --git a/code/game/machinery/computer/arena.dm b/code/game/machinery/computer/arena.dm index 5c4a62abe683..428d553ee068 100644 --- a/code/game/machinery/computer/arena.dm +++ b/code/game/machinery/computer/arena.dm @@ -88,7 +88,7 @@ var/list/default_arenas = flist(arena_dir) for(var/arena_file in default_arenas) var/simple_name = replacetext(replacetext(arena_file,arena_dir,""),".dmm","") - INVOKE_ASYNC(src, .proc/add_new_arena_template, null, arena_dir + arena_file, simple_name) + INVOKE_ASYNC(src, PROC_REF(add_new_arena_template), null, arena_dir + arena_file, simple_name) /obj/machinery/computer/arena/proc/get_landmark_turf(landmark_tag) for(var/obj/effect/landmark/arena/L in GLOB.landmarks_list) @@ -234,7 +234,7 @@ for(var/mob/M in all_contestants()) to_chat(M,"The gates will open in [timetext]!") start_time = world.time + start_delay - addtimer(CALLBACK(src,.proc/begin),start_delay) + addtimer(CALLBACK(src, PROC_REF(begin)),start_delay) for(var/team in teams) var/obj/machinery/arena_spawn/team_spawn = get_spawn(team) var/obj/effect/countdown/arena/A = new(team_spawn) @@ -261,9 +261,9 @@ if(D.id != arena_id) continue if(closed) - INVOKE_ASYNC(D, /obj/machinery/door/poddoor.proc/close) + INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door/poddoor, close)) else - INVOKE_ASYNC(D, /obj/machinery/door/poddoor.proc/open) + INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door/poddoor, open)) /obj/machinery/computer/arena/Topic(href, href_list) if(..()) diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 23937947d80c..81d2860473c7 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -73,9 +73,9 @@ frequency = new_frequency radio_connection = SSradio.add_object(src, frequency, RADIO_ATMOSIA) -/obj/machinery/air_sensor/Initialize() +/obj/machinery/air_sensor/Initialize(mapload) . = ..() - SSair.start_processing_machine(src) + SSair.start_processing_machine(src, mapload) set_frequency(frequency) /obj/machinery/air_sensor/Destroy() diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 3275bb33f272..50ed20ae619e 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -270,13 +270,13 @@ /obj/machinery/computer/security/telescreen/entertainment/Initialize() . = ..() - RegisterSignal(src, COMSIG_CLICK, .proc/BigClick) + RegisterSignal(src, COMSIG_CLICK, PROC_REF(BigClick)) // Bypass clickchain to allow humans to use the telescreen from a distance /obj/machinery/computer/security/telescreen/entertainment/proc/BigClick() SIGNAL_HANDLER - INVOKE_ASYNC(src, /atom.proc/interact, usr) + INVOKE_ASYNC(src, TYPE_PROC_REF(/atom, interact), usr) /obj/machinery/computer/security/telescreen/entertainment/proc/notify(on) if(on && icon_state == icon_state_off) diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 39f86e7ca889..2f8e066a74ba 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -123,31 +123,6 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) /obj/machinery/computer/card/proc/job_blacklisted(jobtitle) return (jobtitle in blacklisted) -//Logic check for Topic() if you can open the job -/obj/machinery/computer/card/proc/can_open_job(datum/job/job) - if(job) - if(!job_blacklisted(job.name)) - if((job.total_positions <= GLOB.player_list.len * (max_relative_positions / 100))) - var/delta = (world.time / 10) - GLOB.time_last_changed_position - if((change_position_cooldown < delta) || (opened_positions[job.name] < 0)) - return JOB_ALLOWED - return JOB_COOLDOWN - return JOB_MAX_POSITIONS - return JOB_DENIED - -//Logic check for Topic() if you can close the job -/obj/machinery/computer/card/proc/can_close_job(datum/job/job) - if(job) - if(!job_blacklisted(job.name)) - if(job.total_positions > job.current_positions) - var/delta = (world.time / 10) - GLOB.time_last_changed_position - if((change_position_cooldown < delta) || (opened_positions[job.name] > 0)) - return JOB_ALLOWED - return JOB_COOLDOWN - return JOB_MAX_POSITIONS - return JOB_DENIED - - /obj/machinery/computer/card/proc/id_insert(mob/user, obj/item/inserting_item, obj/item/target) var/obj/item/card/id/card_to_insert = inserting_item var/holder_item = FALSE @@ -209,63 +184,6 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) dat += {"[t.fields["name"]] - [t.fields["rank"]]
"} dat += "Print

Access ID modification console.
" - else if(mode == 2) - // JOB MANAGEMENT - dat += {"Return - - "} - for(var/datum/job/job in SSjob.occupations) - dat += "" - if(job.name in blacklisted) - continue - dat += {" - - " - dat += "
JobSlotsOpen jobClose jobPrioritize
[job.name][job.current_positions]/[job.total_positions]"} - switch(can_open_job(job)) - if(JOB_ALLOWED) - if(authenticated == AUTHENTICATED_ALL) - dat += "Open Position
" - else - dat += "Open Position" - if(JOB_COOLDOWN) - var/time_to_wait = round(change_position_cooldown - ((world.time / 10) - GLOB.time_last_changed_position), 1) - var/mins = round(time_to_wait / 60) - var/seconds = time_to_wait - (60*mins) - dat += "Cooldown ongoing: [mins]:[(seconds < 10) ? "0[seconds]" : "[seconds]"]" - else - dat += "Denied" - dat += "
" - switch(can_close_job(job)) - if(JOB_ALLOWED) - if(authenticated == AUTHENTICATED_ALL) - dat += "Close Position" - else - dat += "Close Position" - if(JOB_COOLDOWN) - var/time_to_wait = round(change_position_cooldown - ((world.time / 10) - GLOB.time_last_changed_position), 1) - var/mins = round(time_to_wait / 60) - var/seconds = time_to_wait - (60*mins) - dat += "Cooldown ongoing: [mins]:[(seconds < 10) ? "0[seconds]" : "[seconds]"]" - else - dat += "Denied" - dat += "" - switch(job.total_positions) - if(0) - dat += "Denied" - else - if(authenticated == AUTHENTICATED_ALL) - if(job in SSjob.prioritized_jobs) - dat += "Deprioritize" - else - if(SSjob.prioritized_jobs.len < 5) - dat += "Prioritize" - else - dat += "Denied" - else - dat += "Prioritize" - - dat += "
" else var/list/header = list() @@ -286,7 +204,6 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) Target: Remove [target_name] || Confirm Identity: Remove [scan_name]
Access Crew Manifest
- [!target_dept ? "Job Management
" : ""] Unique Ship Access: [ship.unique_ship_access?"Enabled":"Disabled"] [ship.unique_ship_access?"Disable":"Enable"]
Print Silicon Access Chip Print Log Out"} @@ -370,8 +287,6 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) else if (!authenticated) body = {"Log In

Access Crew Manifest

"} - if(!target_dept) - body += "Job Management
" dat = list("", header.Join(), body, "
") var/datum/browser/popup = new(user, "id_com", src.name, 900, 620) @@ -545,62 +460,6 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) mode = 3; playsound(src, "terminal_type", 25, FALSE) - if("make_job_available") - // MAKE ANOTHER JOB POSITION AVAILABLE FOR LATE JOINERS - if(authenticated && !target_dept) - var/edit_job_target = href_list["job"] - var/datum/job/j = SSjob.GetJob(edit_job_target) - if(!j) - updateUsrDialog() - return 0 - if(can_open_job(j) != 1) - updateUsrDialog() - return 0 - if(opened_positions[edit_job_target] >= 0) - GLOB.time_last_changed_position = world.time / 10 - j.total_positions++ - opened_positions[edit_job_target]++ - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) - - if("make_job_unavailable") - // MAKE JOB POSITION UNAVAILABLE FOR LATE JOINERS - if(authenticated && !target_dept) - var/edit_job_target = href_list["job"] - var/datum/job/j = SSjob.GetJob(edit_job_target) - if(!j) - updateUsrDialog() - return 0 - if(can_close_job(j) != 1) - updateUsrDialog() - return 0 - //Allow instant closing without cooldown if a position has been opened before - if(opened_positions[edit_job_target] <= 0) - GLOB.time_last_changed_position = world.time / 10 - j.total_positions-- - opened_positions[edit_job_target]-- - playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE) - - if ("prioritize_job") - // TOGGLE WHETHER JOB APPEARS AS PRIORITIZED IN THE LOBBY - if(authenticated && !target_dept) - var/priority_target = href_list["job"] - var/datum/job/j = SSjob.GetJob(priority_target) - if(!j) - updateUsrDialog() - return 0 - var/priority = TRUE - if(j in SSjob.prioritized_jobs) - SSjob.prioritized_jobs -= j - priority = FALSE - else if(j.total_positions <= j.current_positions) - to_chat(usr, "[j.name] has had all positions filled. Open up more slots before prioritizing it.") - updateUsrDialog() - return - else - SSjob.prioritized_jobs += j - to_chat(usr, "[j.name] has been successfully [priority ? "prioritized" : "unprioritized"]. Potential employees will notice your request.") - playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) - if ("print") if (!(printing)) printing = 1 diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 426e393e5bb8..0fe059653d5c 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -356,7 +356,7 @@ playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE) say("Initiating scan...") - addtimer(CALLBACK(src, .proc/do_scan, usr, body_only), 2 SECONDS) + addtimer(CALLBACK(src, PROC_REF(do_scan), usr, body_only), 2 SECONDS) //No locking an open scanner. else if ((href_list["lock"]) && !isnull(scanner) && scanner.is_operational) diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 7c97e4fa6d8e..589289c595db 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -32,60 +32,9 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) /datum/crewmonitor var/list/ui_sources = list() //List of user -> ui source - var/list/jobs var/list/data_by_z = list() var/list/last_update = list() -/datum/crewmonitor/New() - . = ..() - - var/list/jobs = new/list() - jobs["Captain"] = 00 - jobs["Head of Personnel"] = 02 - jobs["SolGov Representative"] = 05 //WS Edit - SolGov Rep - jobs["Head of Security"] = 10 - jobs["Warden"] = 11 - jobs["Security Officer"] = 12 - jobs["Detective"] = 13 - jobs["Brig Physician"] = 14 - jobs["Chief Medical Officer"] = 20 - jobs["Chemist"] = 21 - jobs["Virologist"] = 22 - jobs["Medical Doctor"] = 23 - jobs["Paramedic"] = 24 - jobs["Research Director"] = 30 - jobs["Scientist"] = 31 - jobs["Roboticist"] = 32 - jobs["Geneticist"] = 33 - jobs["Chief Engineer"] = 40 - jobs["Station Engineer"] = 41 - jobs["Atmospheric Technician"] = 42 - jobs["Quartermaster"] = 51 - jobs["Shaft Miner"] = 52 - jobs["Cargo Technician"] = 53 - jobs["Bartender"] = 61 - jobs["Cook"] = 62 - jobs["Botanist"] = 63 - jobs["Curator"] = 64 - jobs["Chaplain"] = 65 - jobs["Clown"] = 66 - jobs["Mime"] = 67 - jobs["Janitor"] = 68 - jobs["Lawyer"] = 69 - jobs["Psychologist"] = 70 - jobs["Admiral"] = 200 - jobs["CentCom Commander"] = 210 - jobs["Custodian"] = 211 - jobs["Medical Officer"] = 212 - jobs["Research Officer"] = 213 - jobs["Emergency Response Team Commander"] = 220 - jobs["Security Response Officer"] = 221 - jobs["Engineer Response Officer"] = 222 - jobs["Medical Response Officer"] = 223 - jobs["Assistant"] = 999 //Unknowns/custom jobs should appear after civilians, and before assistants - - src.jobs = jobs - /datum/crewmonitor/Destroy() return ..() @@ -117,22 +66,23 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) return data_by_z["[z]"] var/list/results = list() - var/obj/item/clothing/under/U - var/obj/item/card/id/I - var/turf/pos - var/ijob - var/name - var/assignment - var/oxydam - var/toxdam - var/burndam - var/brutedam - var/area - var/pos_x - var/pos_y - var/life_status for(var/i in GLOB.human_list) + var/obj/item/clothing/under/U + var/obj/item/card/id/I + var/turf/pos + var/ijob = JOB_DISPLAY_ORDER_DEFAULT + var/name = "Unknown" + var/assignment + var/oxydam + var/toxdam + var/burndam + var/brutedam + var/area + var/pos_x + var/pos_y + var/life_status + var/mob/living/carbon/human/H = i var/nanite_sensors = FALSE if(H in SSnanites.nanite_monitored_mobs) @@ -156,30 +106,18 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) if (I) name = I.registered_name assignment = I.assignment - if(I.assignment in jobs) - ijob = jobs[I.assignment] - else - ijob = jobs["Unknown"] - else - name = "Unknown" - assignment = "" - ijob = 80 + if(I.assignment in GLOB.name_occupations) + var/datum/job/assigned_job = GLOB.name_occupations[I.assignment] + ijob = assigned_job.display_order if (nanite_sensors || U.sensor_mode >= SENSOR_LIVING) life_status = ((H.stat < DEAD) ? TRUE : FALSE) //So anything less that dead is marked as alive. (Soft crit, concious, unconcious) - else - life_status = null if (nanite_sensors || U.sensor_mode >= SENSOR_VITALS) oxydam = round(H.getOxyLoss(),1) toxdam = round(H.getToxLoss(),1) burndam = round(H.getFireLoss(),1) brutedam = round(H.getBruteLoss(),1) - else - oxydam = null - toxdam = null - burndam = null - brutedam = null if (nanite_sensors || U.sensor_mode >= SENSOR_COORDS) if (!pos) @@ -187,14 +125,10 @@ GLOBAL_DATUM_INIT(crewmonitor, /datum/crewmonitor, new) area = get_area_name(H, TRUE) pos_x = pos.x pos_y = pos.y - else - area = null - pos_x = null - pos_y = null results[++results.len] = list("name" = name, "assignment" = assignment, "ijob" = ijob, "life_status" = life_status, "oxydam" = oxydam, "toxdam" = toxdam, "burndam" = burndam, "brutedam" = brutedam, "area" = area, "pos_x" = pos_x, "pos_y" = pos_y, "can_track" = H.can_track(null)) - data_by_z["[z]"] = sortTim(results,/proc/sensor_compare) + data_by_z["[z]"] = sortTim(results, /proc/sensor_compare) last_update["[z]"] = world.time return results diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index 951901d2258d..ffeabbdc4e0a 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -225,7 +225,7 @@ can_use_scanner = TRUE else can_use_scanner = FALSE - connected_scanner = null + set_connected_scanner(null) is_viable_occupant = FALSE // Check for a viable occupant in the scanner. @@ -1540,8 +1540,7 @@ test_scanner = locate(/obj/machinery/dna_scannernew, get_step(src, direction)) if(!isnull(test_scanner)) if(test_scanner.is_operational) - connected_scanner = test_scanner - connected_scanner.linked_console = src + set_connected_scanner(test_scanner) return else broken_scanner = test_scanner @@ -1549,8 +1548,7 @@ // Ultimately, if we have a broken scanner, we'll attempt to connect to it as // a fallback case, but the code above will prefer a working scanner if(!isnull(broken_scanner)) - connected_scanner = broken_scanner - connected_scanner.linked_console = src + set_connected_scanner(broken_scanner) /** * Called by connected DNA Scanners when their doors close. @@ -1991,6 +1989,21 @@ tgui_view_state["storageDiskSubMode"] = "mutations" + +/obj/machinery/computer/scan_consolenew/proc/set_connected_scanner(new_scanner) + if(connected_scanner) + UnregisterSignal(connected_scanner, COMSIG_PARENT_QDELETING) + if(connected_scanner.linked_console == src) + connected_scanner.set_linked_console(null) + connected_scanner = new_scanner + if(connected_scanner) + RegisterSignal(connected_scanner, COMSIG_PARENT_QDELETING, PROC_REF(react_to_scanner_del)) + connected_scanner.set_linked_console(src) + +/obj/machinery/computer/scan_consolenew/proc/react_to_scanner_del(datum/source) + SIGNAL_HANDLER + set_connected_scanner(null) + #undef INJECTOR_TIMEOUT #undef NUMBER_OF_BUFFERS #undef SCRAMBLE_TIMEOUT diff --git a/code/game/machinery/computer/prisoner/gulag_teleporter.dm b/code/game/machinery/computer/prisoner/gulag_teleporter.dm index 9eba87108291..f05ab6b8dea9 100644 --- a/code/game/machinery/computer/prisoner/gulag_teleporter.dm +++ b/code/game/machinery/computer/prisoner/gulag_teleporter.dm @@ -112,7 +112,7 @@ if("teleport") if(!teleporter || !beacon) return - addtimer(CALLBACK(src, .proc/teleport, usr), 5) + addtimer(CALLBACK(src, PROC_REF(teleport), usr), 5) return TRUE /obj/machinery/computer/prisoner/gulag_teleporter_computer/proc/scan_machinery() diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm index 6c83c0389487..fe1d87c2c89a 100644 --- a/code/game/machinery/computer/teleporter.dm +++ b/code/game/machinery/computer/teleporter.dm @@ -90,7 +90,7 @@ say("Processing hub calibration to target...") calibrating = TRUE power_station.update_appearance() - addtimer(CALLBACK(src, .proc/finish_calibration), 50 * (3 - power_station.teleporter_hub.accuracy)) //Better parts mean faster calibration + addtimer(CALLBACK(src, PROC_REF(finish_calibration)), 50 * (3 - power_station.teleporter_hub.accuracy)) //Better parts mean faster calibration . = TRUE /obj/machinery/computer/teleporter/proc/finish_calibration() diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index dfdc2969d119..f196fc6dc770 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -183,7 +183,7 @@ break if(component_check) P.play_tool_sound(src) - var/obj/machinery/new_machine = new circuit.build_path(loc) //Let this comment be a reminder that literally 100% of the problems with fundamental code have been because we're chained to Whitesands' desecrated, rotting corpse. + var/obj/machinery/new_machine = new circuit.build_path(loc) if(new_machine.circuit) QDEL_NULL(new_machine.circuit) new_machine.circuit = circuit diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 8b2ef4b1169c..48a1cedc2afa 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -175,6 +175,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod/retro, 17) /obj/machinery/cryopod/Destroy() linked_ship?.spawn_points -= src + linked_ship = null return ..() /obj/machinery/cryopod/LateInitialize() @@ -194,7 +195,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod/retro, 17) message_admins("Cryopod in [get_area(src)] could not find control computer!") last_no_computer_message = world.time -/obj/machinery/cryopod/JoinPlayerHere(mob/M, buckle) +/obj/machinery/cryopod/join_player_here(mob/M) . = ..() close_machine(M, TRUE) @@ -212,7 +213,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod/retro, 17) var/mob/living/mob_occupant = occupant if(mob_occupant && mob_occupant.stat != DEAD) to_chat(occupant, "You feel cool air surround you. You go numb as your senses turn inward.") - addtimer(CALLBACK(src, .proc/try_despawn_occupant, mob_occupant), mob_occupant.client ? time_till_despawn * 0.1 : time_till_despawn) // If they're logged in, reduce the timer + addtimer(CALLBACK(src, PROC_REF(try_despawn_occupant), mob_occupant), mob_occupant.client ? time_till_despawn * 0.1 : time_till_despawn) // If they're logged in, reduce the timer icon_state = close_state if(close_sound) playsound(src, close_sound, 40) @@ -253,7 +254,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod/retro, 17) despawn_occupant() else - addtimer(CALLBACK(src, .proc/try_despawn_occupant, mob_occupant), time_till_despawn) //try again with normal delay + addtimer(CALLBACK(src, PROC_REF(try_despawn_occupant), mob_occupant), time_till_despawn) //try again with normal delay /obj/machinery/cryopod/proc/handle_objectives() var/mob/living/mob_occupant = occupant diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index dc66649c0aa9..20c3d66e8585 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -2,7 +2,7 @@ name = "jukebox" desc = "A classic music player." icon = 'icons/obj/stationobjs.dmi' - icon_state = "jukebox" + icon_state = "jukebox-" verb_say = "states" density = TRUE var/active = FALSE @@ -15,14 +15,14 @@ /obj/machinery/jukebox/boombox name = "boombox" desc = "A theoretically-portable music player that's much larger and heavier than it really needs to be." - icon_state = "boombox" + icon_state = "boombox-" density = FALSE /obj/machinery/jukebox/disco name = "radiant dance machine mark IV" desc = "The first three prototypes were discontinued after mass casualty incidents." - icon_state = "disco" + icon_state = "disco-" anchored = FALSE var/list/spotlights = list() var/list/sparkles = list() @@ -54,7 +54,7 @@ return ..() /obj/machinery/jukebox/update_icon_state() - icon_state = "[initial(icon_state)]-[active ? "active" : null]" + icon_state = "[initial(icon_state)][active ? "active" : null]" return ..() /obj/machinery/jukebox/ui_status(mob/user) @@ -294,7 +294,7 @@ glow.set_light_color(COLOR_SOFT_RED) glow.even_cycle = !glow.even_cycle if(prob(2)) // Unique effects for the dance floor that show up randomly to mix things up - INVOKE_ASYNC(src, .proc/hierofunk) + INVOKE_ASYNC(src, PROC_REF(hierofunk)) sleep(selection.song_beat) if(QDELETED(src)) return diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index c738256030db..589393479ff5 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -37,7 +37,7 @@ else return ..() -/obj/structure/barricade/CanAllowThrough(atom/movable/mover, turf/target)//So bullets will fly over and stuff. +/obj/structure/barricade/CanAllowThrough(atom/movable/mover, border_dir)//So bullets will fly over and stuff. . = ..() if(locate(/obj/structure/barricade) in get_turf(mover)) return TRUE @@ -128,7 +128,7 @@ /obj/structure/barricade/security/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/deploy), deploy_time) + addtimer(CALLBACK(src, PROC_REF(deploy)), deploy_time) /obj/structure/barricade/security/proc/deploy() icon_state = "barrier1" diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 51e7562c49db..7f61dde6ef79 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -146,6 +146,18 @@ return close_machine(target) +//This is only called by the scanner. if you ever want to use this outside of that context you'll need to refactor things a bit +/obj/machinery/dna_scannernew/proc/set_linked_console(new_console) + if(linked_console) + UnregisterSignal(linked_console, COMSIG_PARENT_QDELETING) + linked_console = new_console + if(linked_console) + RegisterSignal(linked_console, COMSIG_PARENT_QDELETING, PROC_REF(react_to_console_del)) + +/obj/machinery/dna_scannernew/proc/react_to_console_del(datum/source) + SIGNAL_HANDLER + set_linked_console(null) + //Just for transferring between genetics machines. /obj/item/disk/data diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 98e546ddefac..6bb5a4bab561 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -129,7 +129,7 @@ set_frequency(frequency) if(closeOtherId != null) - addtimer(CALLBACK(.proc/update_other_id), 5) + addtimer(CALLBACK(PROC_REF(update_other_id)), 5) if(glass) airlock_material = "glass" if(security_level > AIRLOCK_SECURITY_METAL) @@ -145,13 +145,13 @@ diag_hud.add_to_hud(src) diag_hud_set_electrified() - RegisterSignal(src, COMSIG_MACHINERY_BROKEN, .proc/on_break) + RegisterSignal(src, COMSIG_MACHINERY_BROKEN, PROC_REF(on_break)) update_appearance() var/static/list/connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, - COMSIG_ATOM_EXITED = .proc/on_exited + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), + COMSIG_ATOM_EXITED = PROC_REF(on_exited) ) AddElement(/datum/element/connect_loc, connections) @@ -322,9 +322,9 @@ return if(density) - INVOKE_ASYNC(src, .proc/open) + INVOKE_ASYNC(src, PROC_REF(open)) else - INVOKE_ASYNC(src, .proc/close) + INVOKE_ASYNC(src, PROC_REF(close)) if("bolt") if(command_value == "on" && locked) @@ -393,6 +393,9 @@ /obj/machinery/door/airlock/Destroy() QDEL_NULL(wires) QDEL_NULL(electronics) + if(closeOther) + closeOther.closeOther = null + closeOther = null if (cyclelinkedairlock) if (cyclelinkedairlock.cyclelinkedairlock == src) cyclelinkedairlock.cyclelinkedairlock = null @@ -436,7 +439,7 @@ if(cyclelinkedairlock.operating) cyclelinkedairlock.delayed_close_requested = TRUE else - addtimer(CALLBACK(cyclelinkedairlock, .proc/close), 2) + addtimer(CALLBACK(cyclelinkedairlock, PROC_REF(close)), 2) if(locked && allowed(user) && aac) aac.request_from_door(src) return @@ -496,7 +499,7 @@ secondsBackupPowerLost = 10 if(!spawnPowerRestoreRunning) spawnPowerRestoreRunning = TRUE - INVOKE_ASYNC(src, .proc/handlePowerRestore) + INVOKE_ASYNC(src, PROC_REF(handlePowerRestore)) update_appearance() /obj/machinery/door/airlock/proc/loseBackupPower() @@ -504,7 +507,7 @@ secondsBackupPowerLost = 60 if(!spawnPowerRestoreRunning) spawnPowerRestoreRunning = TRUE - INVOKE_ASYNC(src, .proc/handlePowerRestore) + INVOKE_ASYNC(src, PROC_REF(handlePowerRestore)) update_appearance() /obj/machinery/door/airlock/proc/regainBackupPower() @@ -1136,7 +1139,7 @@ user.visible_message("[user] begins [welded ? "unwelding":"welding"] the airlock.", \ "You begin [welded ? "unwelding":"welding"] the airlock...", \ "You hear welding.") - if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, .proc/weld_checks, W, user))) + if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, PROC_REF(weld_checks), W, user))) welded = !welded user.visible_message("[user] [welded? "welds shut":"unwelds"] [src].", \ "You [welded ? "weld the airlock shut":"unweld the airlock"].") @@ -1148,7 +1151,7 @@ user.visible_message("[user] begins welding the airlock.", \ "You begin repairing the airlock...", \ "You hear welding.") - if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, .proc/weld_checks, W, user))) + if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, PROC_REF(weld_checks), W, user))) obj_integrity = max_integrity set_machine_stat(machine_stat & ~BROKEN) user.visible_message("[user] finishes welding [src].", \ @@ -1238,11 +1241,11 @@ if(axe && !axe.wielded) to_chat(user, "You need to be wielding \the [axe] to do that!") return - INVOKE_ASYNC(src, (density ? .proc/open : .proc/close), 2) + INVOKE_ASYNC(src, (density ? PROC_REF(open) : PROC_REF(close)), 2) /obj/machinery/door/airlock/open(forced=0) - if(operating || welded || locked || seal) + if(operating || welded || locked || seal || !wires) return FALSE if(!forced) if(!hasPower() || wires.is_cut(WIRE_OPEN)) @@ -1277,7 +1280,7 @@ operating = FALSE if(delayed_close_requested) delayed_close_requested = FALSE - addtimer(CALLBACK(src, .proc/close), 1) + addtimer(CALLBACK(src, PROC_REF(close)), 1) return TRUE @@ -1447,7 +1450,7 @@ secondsElectrified = seconds diag_hud_set_electrified() if(secondsElectrified > MACHINE_NOT_ELECTRIFIED) - INVOKE_ASYNC(src, .proc/electrified_loop) + INVOKE_ASYNC(src, PROC_REF(electrified_loop)) if(user) var/message diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 1d9525cf014f..92fb368bdc19 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -605,3 +605,23 @@ /obj/machinery/door/airlock/glass_large/narsie_act() return + +////////////////////////////////// +/* + Outpost Airlocks +*/ + +/obj/machinery/door/airlock/outpost //secure anti-tiding airlock + icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi' + overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi' + assemblytype = /obj/structure/door_assembly/door_assembly_centcom //all of the above needs to be changed if editing the icon + desc = "It opens and closes. Effectively impervious to conventional methods of destruction." + normal_integrity = INFINITY + explosion_block = INFINITY + has_hatch = FALSE + req_one_access_txt = "101" //109 for command areas + +/obj/machinery/door/airlock/outpost/attackby(obj/item/C, mob/user, params) //maintenance panel cannot be opened + if(C.tool_behaviour == TOOL_SCREWDRIVER) + return + ..() diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm index 3fc9a30033ce..3972998da809 100644 --- a/code/game/machinery/doors/alarmlock.dm +++ b/code/game/machinery/doors/alarmlock.dm @@ -23,7 +23,7 @@ . = ..() SSradio.remove_object(src, air_frequency) air_connection = SSradio.add_object(src, air_frequency, RADIO_TO_AIRALARM) - INVOKE_ASYNC(src, .proc/open) + INVOKE_ASYNC(src, PROC_REF(open)) /obj/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal) ..() diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 7013d3f68a7a..213b15c00ced 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -92,12 +92,12 @@ for(var/obj/machinery/door/window/brigdoor/door in targets) if(door.density) continue - INVOKE_ASYNC(door, /obj/machinery/door/window/brigdoor.proc/close) + INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/machinery/door/window/brigdoor, close)) for(var/obj/machinery/door/airlock/security/brig/airlock in targets) if(airlock.density) continue - INVOKE_ASYNC(airlock, /obj/machinery/door/airlock/security/brig.proc/close) + INVOKE_ASYNC(airlock, TYPE_PROC_REF(/obj/machinery/door/airlock/security/brig, close)) for(var/obj/structure/closet/secure_closet/brig/C in targets) if(C.broken) @@ -126,12 +126,12 @@ for(var/obj/machinery/door/window/brigdoor/door in targets) if(!door.density) continue - INVOKE_ASYNC(door, /obj/machinery/door/window/brigdoor.proc/open) + INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/machinery/door/window/brigdoor, open)) for(var/obj/machinery/door/airlock/security/brig/airlock in targets) if(!airlock.density) continue - INVOKE_ASYNC(airlock, /obj/machinery/door/airlock/security/brig.proc/open) + INVOKE_ASYNC(airlock, TYPE_PROC_REF(/obj/machinery/door/airlock/security/brig, open)) for(var/obj/structure/closet/secure_closet/brig/C in targets) if(C.broken) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index f2e1200564b9..8dbc880f740a 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -159,7 +159,7 @@ . = ..() move_update_air(T) -/obj/machinery/door/CanAllowThrough(atom/movable/mover, turf/target) +/obj/machinery/door/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(.) return @@ -291,12 +291,12 @@ if (. & EMP_PROTECT_SELF) return if(prob(20/severity) && (istype(src, /obj/machinery/door/airlock) || istype(src, /obj/machinery/door/window))) - INVOKE_ASYNC(src, .proc/open) + INVOKE_ASYNC(src, PROC_REF(open)) if(prob(severity*10 - 20)) if(secondsElectrified == MACHINE_NOT_ELECTRIFIED) secondsElectrified = MACHINE_ELECTRIFIED_PERMANENT LAZYADD(shockedby, "\[[time_stamp()]\]EM Pulse") - addtimer(CALLBACK(src, .proc/unelectrify), 300) + addtimer(CALLBACK(src, PROC_REF(unelectrify)), 300) /obj/machinery/door/proc/unelectrify() secondsElectrified = MACHINE_NOT_ELECTRIFIED @@ -341,7 +341,7 @@ air_update_turf(1) update_freelook_sight() if(autoclose) - addtimer(CALLBACK(src, .proc/close), autoclose) + addtimer(CALLBACK(src, PROC_REF(close)), autoclose) return 1 /obj/machinery/door/proc/close() @@ -415,7 +415,7 @@ close() /obj/machinery/door/proc/autoclose_in(wait) - addtimer(CALLBACK(src, .proc/autoclose), wait, TIMER_UNIQUE | TIMER_NO_HASH_WAIT | TIMER_OVERRIDE) + addtimer(CALLBACK(src, PROC_REF(autoclose)), wait, TIMER_UNIQUE | TIMER_NO_HASH_WAIT | TIMER_OVERRIDE) /obj/machinery/door/proc/requiresID() return 1 diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index fed9d49239e7..a18550033d04 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -71,6 +71,7 @@ /obj/machinery/door/firedoor/Destroy() remove_from_areas() + density = FALSE air_update_turf(1) affecting_areas.Cut() return ..() @@ -94,7 +95,7 @@ /obj/machinery/door/firedoor/power_change() . = ..() - INVOKE_ASYNC(src, .proc/latetoggle) + INVOKE_ASYNC(src, PROC_REF(latetoggle)) /obj/machinery/door/firedoor/attack_hand(mob/user) . = ..() @@ -331,7 +332,7 @@ . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_EXIT = .proc/on_exit, + COMSIG_ATOM_EXIT = PROC_REF(on_exit), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -393,10 +394,16 @@ return 0 // not big enough to matter return start_point.air.return_pressure() < 20 ? -1 : 1 -/obj/machinery/door/firedoor/border_only/CanAllowThrough(atom/movable/mover, turf/target) +/obj/machinery/door/firedoor/border_only/CanAllowThrough(atom/movable/mover, border_dir) . = ..() - if(!(get_dir(loc, target) == dir)) //Make sure looking at appropriate border - return TRUE + + if(.) + return + + if(border_dir == dir) //Make sure looking at appropriate border + return FALSE + + return TRUE /obj/machinery/door/firedoor/border_only/proc/on_exit(datum/source, atom/movable/leaving, direction) SIGNAL_HANDLER @@ -411,10 +418,9 @@ return COMPONENT_ATOM_BLOCK_EXIT /obj/machinery/door/firedoor/border_only/CanAtmosPass(turf/T) - if(get_dir(loc, T) == dir) - return !density - else + if(!density) return TRUE + return !(dir == get_dir(loc, T)) /obj/machinery/door/firedoor/proc/emergency_pressure_close() SHOULD_NOT_SLEEP(TRUE) @@ -429,7 +435,7 @@ update_freelook_sight() if(!(flags_1 & ON_BORDER_1)) crush() - addtimer(CALLBACK(src, /atom/.proc/update_icon), 5) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 5) /obj/machinery/door/firedoor/border_only/emergency_pressure_close() if(density) @@ -444,14 +450,14 @@ if(!istype(M2) || !M2.buckled || !M2.buckled.buckle_prevents_pull) to_chat(M, "You pull [M.pulling] through [src] right as it closes.") M.pulling.forceMove(T1) - INVOKE_ASYNC(M, /atom/movable/.proc/start_pulling) + INVOKE_ASYNC(M, TYPE_PROC_REF(/atom/movable, start_pulling)) for(var/mob/living/M in T2) if(M.stat == CONSCIOUS && M.pulling && M.pulling.loc == T1 && !M.pulling.anchored && M.pulling.move_resist <= M.move_force) var/mob/living/M2 = M.pulling if(!istype(M2) || !M2.buckled || !M2.buckled.buckle_prevents_pull) to_chat(M, "You pull [M.pulling] through [src] right as it closes.") M.pulling.forceMove(T2) - INVOKE_ASYNC(M, /atom/movable/.proc/start_pulling) + INVOKE_ASYNC(M, TYPE_PROC_REF(/atom/movable, start_pulling)) return ..() /obj/machinery/door/firedoor/heavy @@ -489,7 +495,7 @@ density = TRUE var/constructionStep = CONSTRUCTION_NOCIRCUIT var/reinforced = 0 - var/firelock_type + var/firelock_type = /obj/machinery/door/firedoor/closed /obj/structure/firelock_frame/examine(mob/user) . = ..() @@ -726,18 +732,18 @@ firelock_type = /obj/machinery/door/firedoor/border_only/closed flags_1 = ON_BORDER_1 -/obj/machinery/door/firedoor/border_only/Initialize() +/obj/structure/firelock_frame/border/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_EXIT = .proc/on_exit, + COMSIG_ATOM_EXIT = PROC_REF(on_exit), ) AddElement(/datum/element/connect_loc, loc_connections) /obj/structure/firelock_frame/border/ComponentInitialize() . = ..() - AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated)) + AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, PROC_REF(can_be_rotated))) /obj/structure/firelock_frame/border/proc/can_be_rotated(mob/user, rotation_type) if (anchored) diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 56418d523b1d..95410818cbcb 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -90,9 +90,9 @@ /obj/machinery/door/poddoor/shuttledock/proc/check() var/turf/T = get_step(src, checkdir) if(!istype(T, turftype)) - INVOKE_ASYNC(src, .proc/open) + INVOKE_ASYNC(src, PROC_REF(open)) else - INVOKE_ASYNC(src, .proc/close) + INVOKE_ASYNC(src, PROC_REF(close)) /obj/machinery/door/poddoor/incinerator_toxmix name = "Combustion Chamber Vent" diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index f4cc13e5eeff..fa2ddefb7279 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -24,6 +24,8 @@ var/cable = 1 var/list/debris = list() + hitsound_type = PROJECTILE_HITSOUND_GLASS + /obj/machinery/door/window/Initialize(mapload, set_dir) . = ..() flags_1 &= ~PREVENT_CLICK_UNDER_1 @@ -40,7 +42,7 @@ debris += new /obj/item/stack/cable_coil(src, cable) var/static/list/loc_connections = list( - COMSIG_ATOM_EXIT = .proc/on_exit, + COMSIG_ATOM_EXIT = PROC_REF(on_exit), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -103,11 +105,12 @@ do_animate("deny") return -/obj/machinery/door/window/CanAllowThrough(atom/movable/mover, turf/target) +/obj/machinery/door/window/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(.) return - if(get_dir(loc, target) == dir) //Make sure looking at appropriate border + + if(border_dir == dir) return FALSE if(istype(mover, /obj/structure/window)) @@ -340,11 +343,11 @@ return if(density) - INVOKE_ASYNC(src, .proc/open) + INVOKE_ASYNC(src, PROC_REF(open)) else - INVOKE_ASYNC(src, .proc/close) + INVOKE_ASYNC(src, PROC_REF(close)) if("touch") - INVOKE_ASYNC(src, .proc/open_and_close) + INVOKE_ASYNC(src, PROC_REF(open_and_close)) /obj/machinery/door/window/brigdoor name = "secure door" diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 8af3908ec531..0b538d1ce109 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -19,13 +19,13 @@ /obj/machinery/doppler_array/Initialize() . = ..() - RegisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION, .proc/sense_explosion) - RegisterSignal(src, COMSIG_MOVABLE_SET_ANCHORED, .proc/power_change) + RegisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION, PROC_REF(sense_explosion)) + RegisterSignal(src, COMSIG_MOVABLE_SET_ANCHORED, PROC_REF(power_change)) printer_ready = world.time + PRINTER_TIMEOUT /obj/machinery/doppler_array/ComponentInitialize() . = ..() - AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE,null,null,CALLBACK(src,.proc/rot_message)) + AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE,null,null,CALLBACK(src, PROC_REF(rot_message))) /datum/data/tachyon_record name = "Log Recording" diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index 34ffe2c9d6ea..d54bc3c476af 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -85,17 +85,6 @@ power_used = 2000 starting_amount = 10000 -// If the derelict gets lonely, make more friends. -/obj/machinery/droneDispenser/derelict - name = "derelict drone shell dispenser" - desc = "A rusty machine that, when supplied with metal and glass, will periodically create a derelict drone shell. Does not need to be manually operated." - dispense_type = /obj/effect/mob_spawn/drone/derelict - end_create_message = "dispenses a derelict drone shell." - metal_cost = 10000 - glass_cost = 5000 - starting_amount = 0 - cooldownTime = 600 - // An example of a custom drone dispenser. // This one requires no materials and creates basic hivebots /obj/machinery/droneDispenser/hivebot diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm index 3b1bfbd4b351..9d190b2e1369 100644 --- a/code/game/machinery/embedded_controller/access_controller.dm +++ b/code/game/machinery/embedded_controller/access_controller.dm @@ -79,7 +79,7 @@ controller.cycleClose(door) else controller.onlyClose(door) - addtimer(CALLBACK(src, .proc/not_busy), 2 SECONDS) + addtimer(CALLBACK(src, PROC_REF(not_busy)), 2 SECONDS) /obj/machinery/doorButtons/access_button/proc/not_busy() busy = FALSE @@ -207,7 +207,7 @@ goIdle(TRUE) return A.unbolt() - INVOKE_ASYNC(src, .proc/do_openDoor, A) + INVOKE_ASYNC(src, PROC_REF(do_openDoor), A) /obj/machinery/doorButtons/airlock_controller/proc/do_openDoor(obj/machinery/door/airlock/A) if(A && A.open()) diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 315f2e128303..602b239bf020 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -56,10 +56,10 @@ if(program) program.receive_user_command(href_list["command"]) - addtimer(CALLBACK(program, /datum/computer/file/embedded_program.proc/process), 5) + addtimer(CALLBACK(program, TYPE_PROC_REF(/datum/computer/file/embedded_program, process)), 5) usr.set_machine(src) - addtimer(CALLBACK(src, .proc/updateDialog), 5) + addtimer(CALLBACK(src, PROC_REF(updateDialog)), 5) /obj/machinery/embedded_controller/process() if(program) diff --git a/code/game/machinery/exp_cloner.dm b/code/game/machinery/exp_cloner.dm index 3b2b414b0bf2..01f9b00e9785 100644 --- a/code/game/machinery/exp_cloner.dm +++ b/code/game/machinery/exp_cloner.dm @@ -232,7 +232,7 @@ playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE) say("Initiating scan...") - addtimer(CALLBACK(src, .proc/do_clone), 2 SECONDS) + addtimer(CALLBACK(src, PROC_REF(do_clone)), 2 SECONDS) //No locking an open scanner. else if ((href_list["lock"]) && !isnull(scanner) && scanner.is_operational) diff --git a/code/game/machinery/fat_sucker.dm b/code/game/machinery/fat_sucker.dm index 28218a366f0b..9d556bf422ed 100644 --- a/code/game/machinery/fat_sucker.dm +++ b/code/game/machinery/fat_sucker.dm @@ -32,6 +32,10 @@ soundloop = new(list(src), FALSE) update_appearance() +/obj/machinery/fat_sucker/Destroy() + QDEL_NULL(soundloop) + return ..() + /obj/machinery/fat_sucker/RefreshParts() ..() var/rating = 0 @@ -58,7 +62,7 @@ occupant = null return to_chat(occupant, "You enter [src].") - addtimer(CALLBACK(src, .proc/start_extracting), 20, TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(start_extracting)), 20, TIMER_OVERRIDE|TIMER_UNIQUE) update_appearance() /obj/machinery/fat_sucker/open_machine(mob/user) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index e68b3e0837f9..d4a59cb27c31 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -28,6 +28,8 @@ light_system = MOVABLE_LIGHT //Used as a flash here. light_range = FLASH_LIGHT_RANGE light_on = FALSE + ///Proximity monitor associated with this atom, needed for proximity checks. + var/datum/proximity_monitor/proximity_monitor /obj/machinery/flasher/Initialize(mapload, ndir = 0, built = 0) . = ..() // ..() is EXTREMELY IMPORTANT, never forget to add it @@ -107,7 +109,7 @@ playsound(src.loc, 'sound/weapons/flash.ogg', 100, TRUE) flick("[base_icon_state]_flash", src) set_light_on(TRUE) - addtimer(CALLBACK(src, .proc/flash_end), FLASH_LIGHT_DURATION, TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(flash_end)), FLASH_LIGHT_DURATION, TIMER_OVERRIDE|TIMER_UNIQUE) last_flash = world.time use_power(1000) @@ -181,13 +183,13 @@ add_overlay("[base_icon_state]-s") set_anchored(TRUE) power_change() - proximity_monitor.SetRange(range) + proximity_monitor.set_range(range) else to_chat(user, "[src] can now be moved.") cut_overlays() set_anchored(FALSE) power_change() - proximity_monitor.SetRange(0) + proximity_monitor.set_range(0) else return ..() diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm index 82ef63c3d738..9cf4470cab5c 100644 --- a/code/game/machinery/harvester.dm +++ b/code/game/machinery/harvester.dm @@ -94,7 +94,7 @@ visible_message("The [name] begins warming up!") say("Initializing harvest protocol.") update_appearance() - addtimer(CALLBACK(src, .proc/harvest), interval) + addtimer(CALLBACK(src, PROC_REF(harvest)), interval) /obj/machinery/harvester/proc/harvest() warming_up = FALSE @@ -129,7 +129,7 @@ operation_order.Remove(BP) break use_power(5000) - addtimer(CALLBACK(src, .proc/harvest), interval) + addtimer(CALLBACK(src, PROC_REF(harvest)), interval) /obj/machinery/harvester/proc/end_harvesting() warming_up = FALSE diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index e41be5ede09a..4a31d650f9a1 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -98,6 +98,8 @@ Possible to do for anyone motivated enough: resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF flags_1 = NODECONSTRUCT_1 on_network = FALSE + ///Proximity monitor associated with this atom, needed for proximity checks. + var/datum/proximity_monitor/proximity_monitor var/proximity_range = 1 /obj/machinery/holopad/tutorial/Initialize(mapload) @@ -651,7 +653,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ if(HOLORECORD_SOUND) playsound(src,entry[2],50,TRUE) if(HOLORECORD_DELAY) - addtimer(CALLBACK(src,.proc/replay_entry,entry_number+1),entry[2]) + addtimer(CALLBACK(src, PROC_REF(replay_entry),entry_number+1),entry[2]) return if(HOLORECORD_LANGUAGE) var/datum/language_holder/holder = replay_holo.get_language_holder() diff --git a/code/game/machinery/hypnochair.dm b/code/game/machinery/hypnochair.dm index 8e86447f6060..b31dd9925375 100644 --- a/code/game/machinery/hypnochair.dm +++ b/code/game/machinery/hypnochair.dm @@ -98,7 +98,7 @@ START_PROCESSING(SSobj, src) start_time = world.time update_appearance() - timerid = addtimer(CALLBACK(src, .proc/finish_interrogation), 450, TIMER_STOPPABLE) + timerid = addtimer(CALLBACK(src, PROC_REF(finish_interrogation)), 450, TIMER_STOPPABLE) /obj/machinery/hypnochair/process() var/mob/living/carbon/C = occupant diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index 60825b3e51f6..c7752a8cbfaa 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -43,7 +43,8 @@ update_indicator() /obj/machinery/launchpad/Destroy() - qdel(hud_list[DIAG_LAUNCHPAD_HUD]) + for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) + diag_hud.remove_from_hud(src) return ..() /obj/machinery/launchpad/examine(mob/user) @@ -232,7 +233,9 @@ src.briefcase = briefcase /obj/machinery/launchpad/briefcase/Destroy() - QDEL_NULL(briefcase) + if(!QDELETED(briefcase)) + qdel(briefcase) + briefcase = null return ..() /obj/machinery/launchpad/briefcase/isAvailable() @@ -257,9 +260,9 @@ /obj/machinery/launchpad/briefcase/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/launchpad_remote)) var/obj/item/launchpad_remote/L = I - if(L.pad == src) //do not attempt to link when already linked + if(L.pad == WEAKREF(src)) //do not attempt to link when already linked return ..() - L.pad = src + L.pad = WEAKREF(src) to_chat(user, "You link [src] to [L].") else return ..() @@ -274,7 +277,8 @@ /obj/item/storage/briefcase/launchpad/Destroy() if(!QDELETED(pad)) - QDEL_NULL(pad) + qdel(pad) + pad = null return ..() /obj/item/storage/briefcase/launchpad/PopulateContents() @@ -296,9 +300,9 @@ /obj/item/storage/briefcase/launchpad/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/launchpad_remote)) var/obj/item/launchpad_remote/L = I - if(L.pad == src.pad) //do not attempt to link when already linked + if(L.pad == WEAKREF(src.pad)) //do not attempt to link when already linked return ..() - L.pad = src.pad + L.pad = WEAKREF(src.pad) to_chat(user, "You link [pad] to [L].") else return ..() @@ -310,11 +314,12 @@ icon_state = "folder" w_class = WEIGHT_CLASS_SMALL var/sending = TRUE - var/obj/machinery/launchpad/briefcase/pad + //A weakref to our linked pad + var/datum/weakref/pad /obj/item/launchpad_remote/Initialize(mapload, pad) //remote spawns linked to the briefcase pad . = ..() - src.pad = pad + src.pad = WEAKREF(pad) /obj/item/launchpad_remote/attack_self(mob/user) . = ..() @@ -334,16 +339,17 @@ /obj/item/launchpad_remote/ui_data(mob/user) var/list/data = list() - data["has_pad"] = pad ? TRUE : FALSE - if(pad) - data["pad_closed"] = pad.closed - if(!pad || pad.closed) + var/obj/machinery/launchpad/briefcase/our_pad = pad.resolve() + data["has_pad"] = our_pad ? TRUE : FALSE + if(our_pad) + data["pad_closed"] = our_pad.closed + if(!our_pad || our_pad.closed) return data - data["pad_name"] = pad.display_name - data["range"] = pad.range - data["x"] = pad.x_offset - data["y"] = pad.y_offset + data["pad_name"] = our_pad.display_name + data["range"] = our_pad.range + data["x"] = our_pad.x_offset + data["y"] = our_pad.y_offset return data /obj/item/launchpad_remote/proc/teleport(mob/user, obj/machinery/launchpad/pad) @@ -359,19 +365,22 @@ . = ..() if(.) return - + var/obj/machinery/launchpad/briefcase/our_pad = pad.resolve() + if(!our_pad) + pad = null + return TRUE switch(action) if("set_pos") var/new_x = text2num(params["x"]) var/new_y = text2num(params["y"]) - pad.set_offset(new_x, new_y) + our_pad.set_offset(new_x, new_y) . = TRUE if("move_pos") var/plus_x = text2num(params["x"]) var/plus_y = text2num(params["y"]) - pad.set_offset( - x = pad.x_offset + plus_x, - y = pad.y_offset + plus_y + our_pad.set_offset( + x = our_pad.x_offset + plus_x, + y = our_pad.y_offset + plus_y ) . = TRUE if("rename") @@ -379,16 +388,16 @@ var/new_name = params["name"] if(!new_name) return - pad.display_name = new_name + our_pad.display_name = new_name if("remove") . = TRUE - if(usr && alert(usr, "Are you sure?", "Unlink Launchpad", "I'm Sure", "Abort") != "Abort") - pad = null + if(usr && tgui_alert(usr, "Are you sure?", "Unlink Launchpad", list("I'm Sure", "Abort")) != "Abort") + our_pad = null if("launch") sending = TRUE - teleport(usr, pad) + teleport(usr, our_pad) . = TRUE if("pull") sending = FALSE - teleport(usr, pad) + teleport(usr, our_pad) . = TRUE diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 5861b88dd173..dc5b41ee3821 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -196,7 +196,7 @@ flick("limbgrower_fill",src) icon_state = "limbgrower_idleon" selected_category = params["active_tab"] - addtimer(CALLBACK(src, .proc/build_item, consumed_reagents_list), production_speed * production_coefficient) + addtimer(CALLBACK(src, PROC_REF(build_item), consumed_reagents_list), production_speed * production_coefficient) . = TRUE return @@ -251,16 +251,16 @@ ///Returns a valid limb typepath based on the selected option /obj/machinery/limbgrower/proc/create_buildpath() - var/part_type = being_built.id //their ids match bodypart typepaths var/species = selected_category var/path if(species == SPECIES_HUMAN) //Humans use the parent type. - path = "/obj/item/bodypart/[part_type]" + path = being_built.build_path + return path else if(istype(being_built,/datum/design/digitigrade)) path = being_built.build_path return path else - path = "/obj/item/bodypart/[part_type]/[species]" + path = "[being_built.build_path]/[species]" return text2path(path) /obj/machinery/limbgrower/RefreshParts() diff --git a/code/game/machinery/medipen_refiller.dm b/code/game/machinery/medipen_refiller.dm index d6acc545da03..4dac48d6cfd4 100644 --- a/code/game/machinery/medipen_refiller.dm +++ b/code/game/machinery/medipen_refiller.dm @@ -60,7 +60,7 @@ if(reagents.has_reagent(allowed[P.type], 10)) busy = TRUE add_overlay("active") - addtimer(CALLBACK(src, .proc/refill, P, user), 20) + addtimer(CALLBACK(src, PROC_REF(refill), P, user), 20) qdel(P) return to_chat(user, "There aren't enough reagents to finish this operation.") diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 1f97013e1262..a847b44d39a1 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -46,8 +46,10 @@ return ..() /obj/machinery/navbeacon/on_virtual_z_change(new_virtual_z, previous_virtual_z) - LAZYADDASSOC(GLOB.navbeacons, "[new_virtual_z]", src) - LAZYREMOVEASSOC(GLOB.navbeacons, "[previous_virtual_z]", src) + if(previous_virtual_z) + LAZYREMOVEASSOC(GLOB.navbeacons, "[previous_virtual_z]", src) + if(new_virtual_z) + LAZYADDASSOC(GLOB.navbeacons, "[new_virtual_z]", src) ..() // set the transponder codes assoc list from codes_txt @@ -69,8 +71,7 @@ codes[e] = "1" /obj/machinery/navbeacon/proc/glob_lists_deregister() - if (GLOB.navbeacons["[z]"]) - GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one. + LAZYREMOVE(GLOB.navbeacons["[virtual_z()]"], src) GLOB.deliverybeacons -= src GLOB.deliverybeacontags -= location GLOB.wayfindingbeacons -= src @@ -78,10 +79,10 @@ /obj/machinery/navbeacon/proc/glob_lists_register(init=FALSE) if(!init) glob_lists_deregister() + if(!codes) + return if(codes["patrol"]) - if(!GLOB.navbeacons["[z]"]) - GLOB.navbeacons["[z]"] = list() - GLOB.navbeacons["[z]"] += src //Register with the patrol list! + LAZYADD(GLOB.navbeacons["[virtual_z()]"], src) if(codes["delivery"]) GLOB.deliverybeacons += src GLOB.deliverybeacontags += location diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 2711ee9ee61a..c53b256b04de 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -855,7 +855,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/newscaster/security_unit, 30) say("Breaking news from [channel]!") alert = TRUE update_appearance() - addtimer(CALLBACK(src,.proc/remove_alert),alert_delay,TIMER_UNIQUE|TIMER_OVERRIDE) + addtimer(CALLBACK(src, PROC_REF(remove_alert)),alert_delay,TIMER_UNIQUE|TIMER_OVERRIDE) playsound(loc, 'sound/machines/twobeep_high.ogg', 75, TRUE) else say("Attention! Wanted issue distributed!") diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 64b7fb47edd0..693ff2af3329 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -120,7 +120,7 @@ DEFINE_BITFIELD(turret_flags, list( base.layer = NOT_HIGH_OBJ_LAYER underlays += base if(!has_cover) - INVOKE_ASYNC(src, .proc/popUp) + INVOKE_ASYNC(src, PROC_REF(popUp)) /obj/machinery/porta_turret/proc/toggle_on(set_to) var/current = on @@ -369,7 +369,7 @@ DEFINE_BITFIELD(turret_flags, list( toggle_on(FALSE) //turns off the turret temporarily update_appearance() //6 seconds for the traitor to gtfo of the area before the turret decides to ruin his shit - addtimer(CALLBACK(src, .proc/toggle_on, TRUE), 6 SECONDS) + addtimer(CALLBACK(src, PROC_REF(toggle_on), TRUE), 6 SECONDS) //turns it back on. The cover popUp() popDown() are automatically called in process(), no need to define it here /obj/machinery/porta_turret/emp_act(severity) @@ -389,7 +389,7 @@ DEFINE_BITFIELD(turret_flags, list( toggle_on(FALSE) remove_control() - addtimer(CALLBACK(src, .proc/toggle_on, TRUE), rand(60,600)) + addtimer(CALLBACK(src, PROC_REF(toggle_on), TRUE), rand(60,600)) /obj/machinery/porta_turret/take_damage(damage, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) . = ..() @@ -398,7 +398,7 @@ DEFINE_BITFIELD(turret_flags, list( spark_system.start() if(on && !(turret_flags & TURRET_FLAG_SHOOT_ALL_REACT) && !(obj_flags & EMAGGED)) turret_flags |= TURRET_FLAG_SHOOT_ALL_REACT - addtimer(CALLBACK(src, .proc/reset_attacked), 60) + addtimer(CALLBACK(src, PROC_REF(reset_attacked)), 60) /obj/machinery/porta_turret/proc/reset_attacked() turret_flags &= ~TURRET_FLAG_SHOOT_ALL_REACT @@ -778,9 +778,9 @@ DEFINE_BITFIELD(turret_flags, list( if(target) setDir(get_dir(base, target))//even if you can't shoot, follow the target shootAt(target) - addtimer(CALLBACK(src, .proc/shootAt, target), 5) - addtimer(CALLBACK(src, .proc/shootAt, target), 10) - addtimer(CALLBACK(src, .proc/shootAt, target), 15) + addtimer(CALLBACK(src, PROC_REF(shootAt), target), 5) + addtimer(CALLBACK(src, PROC_REF(shootAt), target), 10) + addtimer(CALLBACK(src, PROC_REF(shootAt), target), 15) return TRUE /obj/machinery/porta_turret/ai diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index b602624eb7e6..b548ecf73125 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -25,7 +25,7 @@ req_one_access = get_all_accesses() + get_all_centcom_access() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -83,17 +83,16 @@ icon_state = icon_name + "[is_powered]" + "[(blood ? "bld" : "")]" // add the blood tag at the end return ..() -/obj/machinery/recycler/CanAllowThrough(atom/movable/AM) +/obj/machinery/recycler/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(!anchored) return - var/move_dir = get_dir(loc, AM.loc) - if(move_dir == eat_dir) + if(border_dir == eat_dir) return TRUE /obj/machinery/recycler/proc/on_entered(datum/source, atom/movable/AM) SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/eat, AM) + INVOKE_ASYNC(src, PROC_REF(eat), AM) /obj/machinery/recycler/proc/eat(atom/movable/AM0, sound=TRUE) if(machine_stat & (BROKEN|NOPOWER)) @@ -167,7 +166,7 @@ playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE) safety_mode = TRUE update_appearance() - addtimer(CALLBACK(src, .proc/reboot), SAFETY_COOLDOWN) + addtimer(CALLBACK(src, PROC_REF(reboot)), SAFETY_COOLDOWN) /obj/machinery/recycler/proc/reboot() playsound(src, 'sound/machines/ping.ogg', 50, FALSE) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 3a03453a2ce3..ed3a35c1e228 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -298,7 +298,7 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments) Radio.set_frequency(radio_freq) Radio.talk_into(src,"[emergency] emergency in [department]!!",radio_freq) update_appearance() - addtimer(CALLBACK(src, .proc/clear_emergency), 5 MINUTES) + addtimer(CALLBACK(src, PROC_REF(clear_emergency)), 5 MINUTES) if(href_list["send"] && message && to_department && priority) diff --git a/code/game/machinery/roulette_machine.dm b/code/game/machinery/roulette_machine.dm index 2cc1dd2dafb3..c9e1d108c1e5 100644 --- a/code/game/machinery/roulette_machine.dm +++ b/code/game/machinery/roulette_machine.dm @@ -54,6 +54,11 @@ jackpot_loop = new(list(src), FALSE) wires = new /datum/wires/roulette(src) +/obj/machinery/roulette/Destroy() + QDEL_NULL(jackpot_loop) + QDEL_NULL(wires) + return ..() + /obj/machinery/roulette/obj_break(damage_flag) prize_theft(0.05) . = ..() @@ -159,7 +164,7 @@ playsound(src, 'sound/machines/piston_raise.ogg', 70) playsound(src, 'sound/machines/chime.ogg', 50) - addtimer(CALLBACK(src, .proc/play, user, player_card, chosen_bet_type, chosen_bet_amount, potential_payout), 4) //Animation first + addtimer(CALLBACK(src, PROC_REF(play), user, player_card, chosen_bet_type, chosen_bet_amount, potential_payout), 4) //Animation first return TRUE else var/obj/item/card/id/new_card = W @@ -189,8 +194,8 @@ var/rolled_number = rand(0, 36) playsound(src, 'sound/machines/roulettewheel.ogg', 50) - addtimer(CALLBACK(src, .proc/finish_play, player_id, bet_type, bet_amount, payout, rolled_number), 34) //4 deciseconds more so the animation can play - addtimer(CALLBACK(src, .proc/finish_play_animation), 30) + addtimer(CALLBACK(src, PROC_REF(finish_play), player_id, bet_type, bet_amount, payout, rolled_number), 34) //4 deciseconds more so the animation can play + addtimer(CALLBACK(src, PROC_REF(finish_play_animation)), 30) /obj/machinery/roulette/proc/finish_play_animation() icon_state = "idle" @@ -264,7 +269,7 @@ var/obj/item/cash = new bundle_to_drop(drop_loc) playsound(cash, pick(list('sound/machines/coindrop.ogg', 'sound/machines/coindrop2.ogg')), 40, TRUE) - addtimer(CALLBACK(src, .proc/drop_cash), 3) //Recursion time + addtimer(CALLBACK(src, PROC_REF(drop_cash)), 3) //Recursion time ///Fills a list of bundles that should be dropped. @@ -408,14 +413,14 @@ return loc.visible_message("\The [src] begins to beep loudly!") used = TRUE - addtimer(CALLBACK(src, .proc/launch_payload), 40) + addtimer(CALLBACK(src, PROC_REF(launch_payload)), 40) /obj/item/roulette_wheel_beacon/proc/launch_payload() var/obj/structure/closet/supplypod/centcompod/toLaunch = new() new /obj/machinery/roulette(toLaunch) - new /obj/effect/DPtarget(drop_location(), toLaunch) + new /obj/effect/pod_landingzone(drop_location(), toLaunch) qdel(src) #undef ROULETTE_SINGLES_PAYOUT diff --git a/code/game/machinery/scan_gate.dm b/code/game/machinery/scan_gate.dm index 1b0736a2951f..bc7ffd566340 100644 --- a/code/game/machinery/scan_gate.dm +++ b/code/game/machinery/scan_gate.dm @@ -45,7 +45,7 @@ . = ..() set_scanline("passive") var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -59,7 +59,7 @@ /obj/machinery/scanner_gate/proc/on_entered(datum/source, atom/movable/AM) SIGNAL_HANDLER - INVOKE_ASYNC(src, .proc/auto_scan, AM) + INVOKE_ASYNC(src, PROC_REF(auto_scan), AM) /obj/machinery/scanner_gate/proc/auto_scan(atom/movable/AM) if(!(machine_stat & (BROKEN|NOPOWER)) && isliving(AM)) @@ -70,7 +70,7 @@ deltimer(scanline_timer) add_overlay(type) if(duration) - scanline_timer = addtimer(CALLBACK(src, .proc/set_scanline, "passive"), duration, TIMER_STOPPABLE) + scanline_timer = addtimer(CALLBACK(src, PROC_REF(set_scanline), "passive"), duration, TIMER_STOPPABLE) /obj/machinery/scanner_gate/attackby(obj/item/W, mob/user, params) var/obj/item/card/id/card = W.GetID() diff --git a/code/game/machinery/sheetifier.dm b/code/game/machinery/sheetifier.dm index b80cca3864ff..569bfa4b6f9e 100644 --- a/code/game/machinery/sheetifier.dm +++ b/code/game/machinery/sheetifier.dm @@ -13,7 +13,7 @@ /obj/machinery/sheetifier/Initialize() . = ..() - AddComponent(/datum/component/material_container, list(/datum/material/meat), MINERAL_MATERIAL_AMOUNT * MAX_STACK_SIZE * 2, TRUE, /obj/item/reagent_containers/food/snacks/meat/slab, CALLBACK(src, .proc/CanInsertMaterials), CALLBACK(src, .proc/AfterInsertMaterials)) + AddComponent(/datum/component/material_container, list(/datum/material/meat), MINERAL_MATERIAL_AMOUNT * MAX_STACK_SIZE * 2, TRUE, /obj/item/reagent_containers/food/snacks/meat/slab, CALLBACK(src, PROC_REF(CanInsertMaterials)), CALLBACK(src, PROC_REF(AfterInsertMaterials))) /obj/machinery/sheetifier/update_overlays() . = ..() @@ -36,7 +36,7 @@ var/mutable_appearance/processing_overlay = mutable_appearance(icon, "processing") processing_overlay.color = last_inserted_material.color flick_overlay_static(processing_overlay, src, 64) - addtimer(CALLBACK(src, .proc/finish_processing), 64) + addtimer(CALLBACK(src, PROC_REF(finish_processing)), 64) /obj/machinery/sheetifier/proc/finish_processing() busy_processing = FALSE diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index bdb167ee1732..bc578a856300 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -507,7 +507,7 @@ /obj/machinery/power/shieldwallgen/atmos/ComponentInitialize() . = ..() - AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated)) + AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, PROC_REF(can_be_rotated))) /obj/machinery/power/shieldwallgen/atmos/proc/can_be_rotated(mob/user, rotation_type) if (anchored) @@ -631,7 +631,7 @@ if(gen_secondary) //using power may cause us to be destroyed gen_secondary.add_load(drain_amount * 0.5) -/obj/machinery/shieldwall/CanAllowThrough(atom/movable/mover, turf/target) +/obj/machinery/shieldwall/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(hardshield == TRUE) if(istype(mover) && (mover.pass_flags & PASSGLASS)) diff --git a/code/game/machinery/shuttle/shuttle_engine.dm b/code/game/machinery/shuttle/shuttle_engine.dm index ad6695c8b812..267c8d102918 100644 --- a/code/game/machinery/shuttle/shuttle_engine.dm +++ b/code/game/machinery/shuttle/shuttle_engine.dm @@ -14,8 +14,6 @@ var/thrust = 0 ///I don't really know what this is but it's used a lot var/thruster_active = FALSE - ///Used to store which ship currently has this engine in their thruster list, for Destroy() reasons - var/obj/docking_port/mobile/parent_shuttle /** * Uses up a specified percentage of the fuel cost, and returns the amount of thrust if successful. @@ -42,6 +40,8 @@ * All functions should return if the parent function returns false. */ /obj/machinery/power/shuttle/engine/proc/update_engine() + if(!(flags_1 & INITIALIZED_1)) + return FALSE thruster_active = TRUE if(panel_open) thruster_active = FALSE @@ -69,13 +69,7 @@ /obj/machinery/power/shuttle/engine/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock) . = ..() - port.engine_list |= src - parent_shuttle = port - -/obj/machinery/power/shuttle/engine/Destroy() - if(parent_shuttle) - parent_shuttle.engine_list -= src - return ..() + port.engine_list |= WEAKREF(src) /obj/machinery/power/shuttle/engine/on_construction() . = ..() diff --git a/code/game/machinery/shuttle/shuttle_engine_types.dm b/code/game/machinery/shuttle/shuttle_engine_types.dm index bdb9e44cf8dc..e5e3d812c098 100644 --- a/code/game/machinery/shuttle/shuttle_engine_types.dm +++ b/code/game/machinery/shuttle/shuttle_engine_types.dm @@ -208,8 +208,6 @@ reagent_amount_holder += fuel_reagents[reagent] /obj/machinery/power/shuttle/engine/liquid/burn_engine(percentage = 100) - if(!(INITIALIZED_1 & flags_1)) - CRASH("Attempted to fire an uninitialized liquid engine") . = ..() var/true_percentage = 1 for(var/reagent in fuel_reagents) @@ -217,16 +215,12 @@ return thrust * true_percentage /obj/machinery/power/shuttle/engine/liquid/return_fuel() - if(!(INITIALIZED_1 & flags_1)) - CRASH("Attempted to read the fuel value an uninitialized liquid engine") var/true_percentage = INFINITY for(var/reagent in fuel_reagents) true_percentage = min(reagents?.get_reagent_amount(reagent) / fuel_reagents[reagent], true_percentage) return reagent_amount_holder * true_percentage //Multiplies the total amount needed by the smallest percentage of any reagent in the recipe /obj/machinery/power/shuttle/engine/liquid/return_fuel_cap() - if(!(INITIALIZED_1 & flags_1)) - CRASH("Attempted to read the fuel cap of an uninitialized liquid engine") return reagents.maximum_volume /obj/machinery/power/shuttle/engine/liquid/oil diff --git a/code/game/machinery/shuttle/shuttle_heater.dm b/code/game/machinery/shuttle/shuttle_heater.dm index 1862c3728e2f..706898eac4c6 100644 --- a/code/game/machinery/shuttle/shuttle_heater.dm +++ b/code/game/machinery/shuttle/shuttle_heater.dm @@ -160,17 +160,8 @@ icon_state_open = use_tank ? "heater_open" : "[initial(icon_state)]_open" /obj/machinery/atmospherics/components/unary/shuttle/heater/proc/update_adjacent_engines() - var/engine_turf - switch(dir) - if(NORTH) - engine_turf = get_offset_target_turf(src, 0, -1) - if(SOUTH) - engine_turf = get_offset_target_turf(src, 0, 1) - if(EAST) - engine_turf = get_offset_target_turf(src, -1, 0) - if(WEST) - engine_turf = get_offset_target_turf(src, 1, 0) - if(!engine_turf) + var/engine_turf = get_step(src, dir) + if(!isturf(engine_turf)) return for(var/obj/machinery/power/shuttle/engine/E in engine_turf) E.update_icon_state() diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index b05b0a2c2a18..0ae88638d5b3 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -43,13 +43,13 @@ jackpots = rand(1, 4) //false hope plays = rand(75, 200) - INVOKE_ASYNC(src, .proc/toggle_reel_spin, TRUE)//The reels won't spin unless we activate them + INVOKE_ASYNC(src, PROC_REF(toggle_reel_spin), TRUE)//The reels won't spin unless we activate them var/list/reel = reels[1] for(var/i = 0, i < reel.len, i++) //Populate the reels. randomize_reels() - INVOKE_ASYNC(src, .proc/toggle_reel_spin, FALSE) + INVOKE_ASYNC(src, PROC_REF(toggle_reel_spin), FALSE) for(cointype in typesof(/obj/item/coin)) var/obj/item/coin/C = cointype @@ -211,9 +211,9 @@ update_appearance() updateDialog() - var/spin_loop = addtimer(CALLBACK(src, .proc/do_spin), 2, TIMER_LOOP|TIMER_STOPPABLE) + var/spin_loop = addtimer(CALLBACK(src, PROC_REF(do_spin)), 2, TIMER_LOOP|TIMER_STOPPABLE) - addtimer(CALLBACK(src, .proc/finish_spinning, spin_loop, user, the_name), SPIN_TIME - (REEL_DEACTIVATE_DELAY * reels.len)) + addtimer(CALLBACK(src, PROC_REF(finish_spinning), spin_loop, user, the_name), SPIN_TIME - (REEL_DEACTIVATE_DELAY * reels.len)) //WARNING: no sanity checking for user since it's not needed and would complicate things (machine should still spin even if user is gone), be wary of this if you're changing this code. /obj/machinery/computer/slot_machine/proc/do_spin() diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 231e36282bdc..e86d4ae9f0f9 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -294,7 +294,7 @@ user, src, choices, - custom_check = CALLBACK(src, .proc/check_interactable, user), + custom_check = CALLBACK(src, PROC_REF(check_interactable), user), require_near = !issilicon(user), ) @@ -409,7 +409,7 @@ else mob_occupant.adjustFireLoss(rand(10, 16)) mob_occupant.emote("scream") - addtimer(CALLBACK(src, .proc/cook), 50) + addtimer(CALLBACK(src, PROC_REF(cook)), 50) else uv_cycles = initial(uv_cycles) uv = FALSE @@ -496,7 +496,7 @@ if(locked) visible_message("You see [user] kicking against the doors of [src]!", \ "You start kicking against the doors...") - addtimer(CALLBACK(src, .proc/resist_open, user), 300) + addtimer(CALLBACK(src, PROC_REF(resist_open), user), 300) else open_machine() dump_contents() diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 83182bedb942..b3bd14af5a07 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -401,7 +401,7 @@ chem_splash(get_turf(src), spread_range, list(reactants), temp_boost) // Detonate it again in one second, until it's out of juice. - addtimer(CALLBACK(src, .proc/detonate), 10) + addtimer(CALLBACK(src, PROC_REF(detonate)), 10) // If it's not a time release bomb, do normal explosion diff --git a/code/game/machinery/teambuilder.dm b/code/game/machinery/teambuilder.dm index 66a384036c35..153035a39374 100644 --- a/code/game/machinery/teambuilder.dm +++ b/code/game/machinery/teambuilder.dm @@ -17,7 +17,7 @@ /obj/machinery/teambuilder/Initialize(mapload, apply_default_parts) . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/game/machinery/telecomms/broadcasting.dm b/code/game/machinery/telecomms/broadcasting.dm index e3e9534a384f..9f2711ebb7a7 100644 --- a/code/game/machinery/telecomms/broadcasting.dm +++ b/code/game/machinery/telecomms/broadcasting.dm @@ -179,7 +179,14 @@ if(radio.last_chatter_time + 1 SECONDS < world.time && source != radio) playsound(radio, "sound/effects/radio_chatter.ogg", 20, FALSE) radio.last_chatter_time = world.time - //WS edit end + if(radio.log) + var/name = data["name"] + var/list/log_details = list() + log_details["name"] = "[name]▸" + log_details["message"] = "\"[html_decode(message)]\"" + log_details["time"] = station_time_timestamp() + radio.loglist.Insert(1, list(log_details)) + radio.log_trim() // From the list of radios, find all mobs who can hear those. var/list/receive = get_mobs_in_radio_ranges(radios) diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index d3bf1657273f..96c0af2b7787 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -59,7 +59,7 @@ // Will help make emagging the console not so easy to get away with. monitor_key_paper.add_raw_text("

£%@%(*$%&(£&?*(%&£/{}") var/time = 100 * length(linkedServer.decryptkey) - addtimer(CALLBACK(src, .proc/UnmagConsole), time) + addtimer(CALLBACK(src, PROC_REF(UnmagConsole)), time) message = rebootmsg else to_chat(user, "A no server error appears on the screen.") @@ -347,7 +347,7 @@ hacking = TRUE screen = MSG_MON_SCREEN_HACKED //Time it takes to bruteforce is dependant on the password length. - addtimer(CALLBACK(src, .proc/finish_bruteforce, usr), 100*length(linkedServer.decryptkey)) + addtimer(CALLBACK(src, PROC_REF(finish_bruteforce), usr), 100*length(linkedServer.decryptkey)) //Delete the log. if (href_list["delete_logs"]) diff --git a/code/game/machinery/telecomms/machines/broadcaster.dm b/code/game/machinery/telecomms/machines/broadcaster.dm index 1d29e99b27f4..ce44158cdcc8 100644 --- a/code/game/machinery/telecomms/machines/broadcaster.dm +++ b/code/game/machinery/telecomms/machines/broadcaster.dm @@ -49,7 +49,7 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages if(!GLOB.message_delay) GLOB.message_delay = TRUE - addtimer(CALLBACK(GLOBAL_PROC, .proc/end_message_delay), 1 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(end_message_delay)), 1 SECONDS) /* --- Do a snazzy animation! --- */ flick("broadcaster_send", src) diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 20a5b823a230..d11067c290fd 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -46,12 +46,17 @@ return return ..() -/obj/machinery/blackbox_recorder/Destroy() +/obj/machinery/blackbox_recorder/deconstruct(disassembled) if(stored) - stored.forceMove(loc) + stored.forceMove(drop_location()) new /obj/effect/decal/cleanable/oil(loc) return ..() +/obj/machinery/blackbox_recorder/Destroy() + if(stored) + QDEL_NULL(stored) + return ..() + /obj/machinery/blackbox_recorder/update_icon_state() icon_state = "blackbox[stored ? null : "_b"]" return ..() diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index dec15ed3013b..11f3d7b34f58 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -140,7 +140,7 @@ GLOBAL_LIST_EMPTY(telecomms_list) if(prob(100/severity) && !(machine_stat & EMPED)) set_machine_stat(machine_stat | EMPED) var/duration = (300 * 10)/severity - addtimer(CALLBACK(src, .proc/de_emp), rand(duration - 20, duration + 20)) + addtimer(CALLBACK(src, PROC_REF(de_emp)), rand(duration - 20, duration + 20)) /obj/machinery/telecomms/proc/de_emp() set_machine_stat(machine_stat & ~EMPED) diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm index 8f49c9758f57..da5a006de0b5 100644 --- a/code/game/machinery/transformer.dm +++ b/code/game/machinery/transformer.dm @@ -55,7 +55,7 @@ do_transform(AM) -/obj/machinery/transformer/CanAllowThrough(atom/movable/mover, turf/target) +/obj/machinery/transformer/CanAllowThrough(atom/movable/mover, border_dir) . = ..() // Allows items to go through, // to stop them from blocking the conveyor belt. @@ -101,7 +101,7 @@ R.set_connected_ai(masterAI) R.lawsync() R.lawupdate = 1 - addtimer(CALLBACK(src, .proc/unlock_new_robot, R), 50) + addtimer(CALLBACK(src, PROC_REF(unlock_new_robot), R), 50) /obj/machinery/transformer/proc/unlock_new_robot(mob/living/silicon/robot/R) playsound(src.loc, 'sound/machines/ping.ogg', 50, FALSE) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index a437c59c9352..1d6a9e3845b8 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -160,7 +160,7 @@ GLOBAL_LIST_INIT(dye_registry, list( return busy = TRUE update_appearance() - addtimer(CALLBACK(src, .proc/wash_cycle), 200) + addtimer(CALLBACK(src, PROC_REF(wash_cycle)), 200) START_PROCESSING(SSfastprocess, src) diff --git a/code/game/machinery/wishgranter.dm b/code/game/machinery/wishgranter.dm deleted file mode 100644 index 2cf51ada2f3e..000000000000 --- a/code/game/machinery/wishgranter.dm +++ /dev/null @@ -1,43 +0,0 @@ -/obj/machinery/wish_granter - name = "wish granter" - desc = "You're not so sure about this, anymore..." - icon = 'icons/obj/device.dmi' - icon_state = "syndbeacon" - - use_power = NO_POWER_USE - density = TRUE - - var/charges = 1 - var/insisting = 0 - -/obj/machinery/wish_granter/attack_hand(mob/living/carbon/user) - . = ..() - if(.) - return - if(charges <= 0) - to_chat(user, "The Wish Granter lies silent.") - return - - else if(!ishuman(user)) - to_chat(user, "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's.") - return - - else if(is_special_character(user)) - to_chat(user, "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away.") - - else if (!insisting) - to_chat(user, "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?") - insisting++ - - else - to_chat(user, "You speak. [pick("I want the sector to disappear","Humanity is corrupt, mankind must be destroyed","I want to be rich", "I want to rule the world","I want immortality.")]. The Wish Granter answers.") - to_chat(user, "Your head pounds for a moment, before your vision clears. You are the avatar of the Wish Granter, and your power is LIMITLESS! And it's all yours. You need to make sure no one can take it from you. No one can know, first.") - - charges-- - insisting = 0 - - user.mind.add_antag_datum(/datum/antagonist/wishgranter) - - to_chat(user, "You have a very bad feeling about this.") - - return diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm index ac8920367620..728bacdb671d 100644 --- a/code/game/mecha/combat/durand.dm +++ b/code/game/mecha/combat/durand.dm @@ -26,8 +26,8 @@ /obj/mecha/combat/durand/Initialize() . = ..() shield = new /obj/durand_shield(loc, src, layer, dir) - RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE, .proc/relay) - RegisterSignal(src, COMSIG_PROJECTILE_PREHIT, .proc/prehit) + RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE, PROC_REF(relay)) + RegisterSignal(src, COMSIG_PROJECTILE_PREHIT, PROC_REF(prehit)) /obj/mecha/combat/durand/Destroy() @@ -165,7 +165,7 @@ own integrity back to max. Shield is automatically dropped if we run out of powe chassis = _chassis layer = _layer setDir(_dir) - RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE, .proc/activate) + RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE, PROC_REF(activate)) /obj/durand_shield/Destroy() @@ -204,11 +204,11 @@ the shield is disabled by means other than the action button (like running out o invisibility = 0 flick("shield_raise", src) playsound(src, 'sound/mecha/mech_shield_raise.ogg', 50, FALSE) - addtimer(CALLBACK(src, .proc/shield_icon_enable), 3) + addtimer(CALLBACK(src, PROC_REF(shield_icon_enable)), 3) else flick("shield_drop", src) playsound(src, 'sound/mecha/mech_shield_drop.ogg', 50, FALSE) - addtimer(CALLBACK(src, .proc/shield_icon_reset), 5) + addtimer(CALLBACK(src, PROC_REF(shield_icon_reset)), 5) switching = FALSE /obj/durand_shield/proc/shield_icon_enable() diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index e9e3b335ffcc..63d308f69558 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -99,7 +99,7 @@ /obj/item/mecha_parts/mecha_equipment/proc/start_cooldown() set_ready_state(0) chassis.use_power(energy_drain) - addtimer(CALLBACK(src, .proc/set_ready_state, 1), equip_cooldown) + addtimer(CALLBACK(src, PROC_REF(set_ready_state), 1), equip_cooldown) /obj/item/mecha_parts/mecha_equipment/proc/do_after_cooldown(atom/target) if(!chassis) @@ -134,7 +134,7 @@ /obj/item/mecha_parts/mecha_equipment/proc/detach(atom/moveto=null) moveto = moveto || get_turf(chassis) - if(src.Move(moveto)) + if(src.forceMove(moveto)) chassis.equipment -= src if(chassis.selected == src) chassis.selected = null diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index ee5dd4db846d..6a36a0ee01d6 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -443,27 +443,19 @@ output += "Total: [round(reagents.total_volume,0.001)]/[reagents.maximum_volume] - Purge All" return output || "None" -/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/load_syringe(obj/item/reagent_containers/syringe/S) - if(syringes.len= 2) - occupant_message("The syringe is too far away!") - return 0 - for(var/obj/structure/D in S.loc)//Basic level check for structures in the way (Like grilles and windows) - if(!(D.CanPass(S,src.loc))) - occupant_message("Unable to load syringe!") - return 0 - for(var/obj/machinery/door/D in S.loc)//Checks for doors - if(!(D.CanPass(S,src.loc))) - occupant_message("Unable to load syringe!") - return 0 - S.reagents.trans_to(src, S.reagents.total_volume, transfered_by = chassis.occupant) - S.forceMove(src) - syringes += S - occupant_message("Syringe loaded.") - update_equip_info() - return 1 - occupant_message("[src]'s syringe chamber is full!") - return 0 +/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/load_syringe(obj/item/reagent_containers/syringe/S, mob/user) + if(length(syringes) >= max_syringes) + occupant_message("[src]'s syringe chamber is full!") + return FALSE + if(!chassis.Adjacent(S)) + occupant_message("Unable to load syringe!") + return FALSE + S.reagents.trans_to(src, S.reagents.total_volume, transfered_by = user) + S.forceMove(src) + syringes += S + occupant_message("Syringe loaded.") + update_equip_info() + return TRUE /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/proc/analyze_reagents(atom/A) if(get_dist(src,A) >= 4) diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 2beaf9129ff6..1b33de31b54e 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -122,7 +122,7 @@ var/mob/M = A if(M.mob_negates_gravity()) continue - INVOKE_ASYNC(src, .proc/do_scatter, A, target) + INVOKE_ASYNC(src, PROC_REF(do_scatter), A, target) var/turf/T = get_turf(target) log_game("[key_name(chassis.occupant)] used a Gravitational Catapult repulse wave on [AREACOORD(T)]") diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index fe48f4ead497..b1f8d126705c 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -377,7 +377,7 @@ /obj/item/mecha_parts/mecha_equipment/cable_layer/attach() ..() - event = chassis.events.addEvent("onMove", CALLBACK(src, .proc/layCable)) + event = chassis.events.addEvent("onMove", CALLBACK(src, PROC_REF(layCable))) return /obj/item/mecha_parts/mecha_equipment/cable_layer/detach() diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index e342defadf1b..4a16a6f9b249 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -72,7 +72,7 @@ /obj/item/mecha_parts/mecha_equipment/weapon/energy/start_cooldown() set_ready_state(0) chassis.use_power(energy_drain*get_shot_amount()) - addtimer(CALLBACK(src, .proc/set_ready_state, 1), equip_cooldown) + addtimer(CALLBACK(src, PROC_REF(set_ready_state), 1), equip_cooldown) /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser equip_cooldown = 8 @@ -439,7 +439,7 @@ var/turf/T = get_turf(src) message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] fired a [src] in [ADMIN_VERBOSEJMP(T)]") log_game("[key_name(chassis.occupant)] fired a [src] in [AREACOORD(T)]") - addtimer(CALLBACK(F, /obj/item/grenade/flashbang.proc/prime), det_time) + addtimer(CALLBACK(F, TYPE_PROC_REF(/obj/item/grenade/flashbang, prime)), det_time) /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang //Because I am a heartless bastard -Sieve //Heartless? for making the poor man's honkblast? - Kaze name = "\improper SOB-3 grenade launcher" diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index c547b9385296..6814f0cc2e7f 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -12,7 +12,7 @@ var/time_coeff = 1 var/component_coeff = 1 var/datum/techweb/specialized/autounlocking/exofab/stored_research - var/sync = 0 + var/linked_to_server = FALSE //if a server is linked to the exofab var/part_set var/datum/design/being_built var/list/queue = list() @@ -113,11 +113,11 @@ var/output output += "
Mecha Fabricator
" output += "Security protocols: [(obj_flags & EMAGGED)? "Disabled" : "Enabled"]
" + output += "Linked to server: [(linked_to_server == FALSE)? "Unlinked" : "Linked"]
" if (rmat.mat_container) output += "Material Amount: [rmat.format_amount()]" else output += "No material storage connected, please contact the quartermaster." - output += "
Sync with R&D servers
" output += "Main Screen" output += "
" output += "
\ @@ -277,17 +277,6 @@ output += "Process queue | Clear queue" return output -/obj/machinery/mecha_part_fabricator/proc/sync() - for(var/obj/machinery/computer/rdconsole/RDC in oview(7,src)) - RDC.stored_research.copy_research_to(stored_research) - updateUsrDialog() - say("Successfully synchronized with R&D server.") - return - - temp = "Unable to connect to local R&D Database.
Please check your connections and try again.
Return" - updateUsrDialog() - return - /obj/machinery/mecha_part_fabricator/proc/get_resource_cost_w_coeff(datum/design/D, datum/material/resource, roundto = 1) return round(D.materials[resource]*component_coeff, roundto) @@ -397,7 +386,7 @@ add_part_set_to_queue(href_list["partset_to_queue"]) return update_queue_on_page() if(href_list["process_queue"]) - INVOKE_ASYNC(src, .proc/do_process_queue) + INVOKE_ASYNC(src, PROC_REF(do_process_queue)) if(href_list["clear_temp"]) temp = null if(href_list["screen"]) @@ -412,8 +401,6 @@ if(href_list["clear_queue"]) queue = list() return update_queue_on_page() - if(href_list["sync"]) - sync() if(href_list["part_desc"]) var/T = href_list["part_desc"] for(var/v in stored_research.researched_designs) @@ -461,7 +448,7 @@ /obj/machinery/mecha_part_fabricator/proc/AfterMaterialInsert(item_inserted, id_inserted, amount_inserted) var/datum/material/M = id_inserted add_overlay("fab-load-[M.name]") - addtimer(CALLBACK(src, /atom/proc/cut_overlay, "fab-load-[M.name]"), 10) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, cut_overlay), "fab-load-[M.name]"), 10) updateUsrDialog() /obj/machinery/mecha_part_fabricator/attackby(obj/item/W, mob/user, params) @@ -471,7 +458,15 @@ if(default_deconstruction_crowbar(W)) return TRUE - return ..() + if(istype(W, /obj/item/multitool)) + var/obj/item/multitool/multi = W + if(multi.buffer && istype(multi.buffer, /obj/machinery/rnd/server) && multi.buffer != src) + var/obj/machinery/rnd/server/server = multi.buffer + stored_research = server.stored_research + visible_message("Linked to [server]!") + linked_to_server = TRUE + else + return ..() /obj/machinery/mecha_part_fabricator/proc/is_insertion_ready(mob/user) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 62e8f10455a8..d2c712d32ea8 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -171,29 +171,40 @@ for(var/obj/item/mecha_parts/mecha_equipment/E in equipment) E.detach(loc) qdel(E) - if(cell) - qdel(cell) - if(scanmod) - qdel(scanmod) - if(capacitor) - qdel(capacitor) - if(internal_tank) - qdel(internal_tank) if(AI) AI.gib() //No wreck, no AI to recover + AI = null STOP_PROCESSING(SSobj, src) GLOB.poi_list.Remove(src) equipment.Cut() - cell = null - scanmod = null - capacitor = null - internal_tank = null + + for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) + diag_hud.remove_from_hud(src) + + QDEL_NULL(cell) + QDEL_NULL(scanmod) + QDEL_NULL(capacitor) + QDEL_NULL(internal_tank) + QDEL_NULL(spark_system) + QDEL_NULL(smoke_system) + QDEL_NULL(radio) + + QDEL_NULL(eject_action) + QDEL_NULL(internals_action) + QDEL_NULL(cycle_action) + QDEL_NULL(lights_action) + QDEL_NULL(stats_action) + QDEL_NULL(defense_action) + QDEL_NULL(overload_action) + QDEL_NULL(smoke_system) + QDEL_NULL(smoke_action) + QDEL_NULL(zoom_action) + QDEL_NULL(switch_damtype_action) + QDEL_NULL(phasing_action) + QDEL_NULL(strafing_action) + assume_air(cabin_air) - cabin_air = null - qdel(spark_system) - spark_system = null - qdel(smoke_system) - smoke_system = null + QDEL_NULL(cabin_air) GLOB.mechas_list -= src //global mech list return ..() @@ -447,7 +458,7 @@ for(var/mob/M in get_hearers_in_view(7,src)) if(M.client) speech_bubble_recipients.Add(M.client) - INVOKE_ASYNC(GLOBAL_PROC, /proc/flick_overlay, image('icons/mob/talk.dmi', src, "machine[say_test(raw_message)]",MOB_LAYER+1), speech_bubble_recipients, 30) + INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay), image('icons/mob/talk.dmi', src, "machine[say_test(raw_message)]",MOB_LAYER+1), speech_bubble_recipients, 30) //////////////////////////// ///// Action processing //// diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 83f44f536b56..5172619ba022 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -421,7 +421,7 @@ outer_plating_amount=1 /datum/component/construction/mecha/gygax/action(datum/source, atom/used_atom, mob/user) - return INVOKE_ASYNC(src, .proc/check_step, used_atom, user) + return INVOKE_ASYNC(src, PROC_REF(check_step), used_atom, user) /datum/component/construction/mecha/gygax/custom_action(obj/item/I, mob/living/user, diff) if(!..()) diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 3aac1d0468ae..de051d5b355e 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -133,7 +133,7 @@ return if(chassis) chassis.emp_act(EMP_HEAVY) - addtimer(CALLBACK(src, /obj/item/mecha_parts/mecha_tracking/proc/recharge), 5 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/mecha_parts/mecha_tracking, recharge)), 5 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) recharging = TRUE /** diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index d10b2e878a61..50652434c6f6 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -167,7 +167,7 @@ occupant?.update_mouse_pointer() if(!equipment_disabled && occupant) //prevent spamming this message with back-to-back EMPs to_chat(occupant, "Error -- Connection to equipment control unit has been lost.") - addtimer(CALLBACK(src, /obj/mecha/proc/restore_equipment), 3 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/mecha, restore_equipment)), 3 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) equipment_disabled = 1 /obj/mecha/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) diff --git a/code/game/mecha/mecha_topic.dm b/code/game/mecha/mecha_topic.dm index 9b7a5e65c9e5..f2028def7b45 100644 --- a/code/game/mecha/mecha_topic.dm +++ b/code/game/mecha/mecha_topic.dm @@ -408,7 +408,7 @@ if(href_list["repair_int_control_lost"]) occupant_message("Recalibrating coordination system...") log_message("Recalibration of coordination system started.", LOG_MECHA) - addtimer(CALLBACK(src, .proc/stationary_repair, loc), 100, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(stationary_repair), loc), 100, TIMER_UNIQUE) ///Repairs internal damage if the mech hasn't moved. /obj/mecha/proc/stationary_repair(location) diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index ef47a3fa0fed..bf11c24b0d88 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -32,7 +32,7 @@ return AI = AI_pilot AI.apply_damage(150, BURN) //Give the AI a bit of damage from the "shock" of being suddenly shut down - INVOKE_ASYNC(AI, /mob/living/silicon.proc/death) //The damage is not enough to kill the AI, but to be 'corrupted files' in need of repair. + INVOKE_ASYNC(AI, TYPE_PROC_REF(/mob/living/silicon, death)) //The damage is not enough to kill the AI, but to be 'corrupted files' in need of repair. AI.forceMove(src) //Put the dead AI inside the wreckage for recovery add_overlay(mutable_appearance('icons/obj/projectiles.dmi', "green_laser")) //Overlay for the recovery beacon AI.controlled_mech = null diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 845db56a794f..42c32e04fa98 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -74,8 +74,11 @@ var/mob/living/L = M.pulledby L.reset_pull_offsets(M, TRUE) - if(!check_loc && M.loc != loc) - M.forceMove(loc) + if (CanPass(M, get_dir(loc, M))) + M.Move(loc) + else + if (!check_loc && M.loc != loc) + M.forceMove(loc) M.buckling = null M.set_buckled(src) diff --git a/code/game/objects/effects/alien_acid.dm b/code/game/objects/effects/alien_acid.dm index e9b6487d9480..52a69d47cb5e 100644 --- a/code/game/objects/effects/alien_acid.dm +++ b/code/game/objects/effects/alien_acid.dm @@ -26,7 +26,7 @@ START_PROCESSING(SSobj, src) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/game/objects/effects/anomalies/anomalies_flux.dm b/code/game/objects/effects/anomalies/anomalies_flux.dm index 56e6f2c4c15e..b1318953f4a6 100644 --- a/code/game/objects/effects/anomalies/anomalies_flux.dm +++ b/code/game/objects/effects/anomalies/anomalies_flux.dm @@ -35,6 +35,9 @@ /obj/effect/anomaly/flux/proc/on_entered(datum/source, atom/movable/AM) SIGNAL_HANDLER + //the countdown effect, lmao + if(iseffect(AM)) + return mobShock(AM) tesla_zap(src, zap_range, zap_power, zap_flags) new /obj/effect/particle_effect/sparks(loc) diff --git a/code/game/objects/effects/anomalies/anomalies_gravity.dm b/code/game/objects/effects/anomalies/anomalies_gravity.dm index b5668732f52b..1dea7049fc97 100644 --- a/code/game/objects/effects/anomalies/anomalies_gravity.dm +++ b/code/game/objects/effects/anomalies/anomalies_gravity.dm @@ -21,7 +21,7 @@ /obj/effect/anomaly/grav/Initialize(mapload, new_lifespan, drops_core) . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -84,14 +84,14 @@ /obj/effect/anomaly/grav/high effectrange = 5 - var/grav_field + var/datum/proximity_monitor/advanced/gravity/grav_field /obj/effect/anomaly/grav/high/Initialize(mapload, new_lifespan) . = ..() - INVOKE_ASYNC(src, .proc/setup_grav_field) + INVOKE_ASYNC(src, PROC_REF(setup_grav_field)) /obj/effect/anomaly/grav/high/proc/setup_grav_field() - grav_field = make_field(/datum/proximity_monitor/advanced/gravity, list("current_range" = effectrange, "host" = src, "gravity_value" = 2)) + grav_field = new(src, effectrange, TRUE, 2) /obj/effect/anomaly/grav/high/Destroy() QDEL_NULL(grav_field) diff --git a/code/game/objects/effects/anomalies/anomalies_heartbeat.dm b/code/game/objects/effects/anomalies/anomalies_heartbeat.dm index 33a2983fcff4..1b691d898436 100644 --- a/code/game/objects/effects/anomalies/anomalies_heartbeat.dm +++ b/code/game/objects/effects/anomalies/anomalies_heartbeat.dm @@ -24,6 +24,9 @@ COOLDOWN_START(src, pulse_secondary_cooldown, pulse_delay*4) var/turf/spot = locate(rand(src.x-effectrange, src.x+effectrange), rand(src.y-effectrange, src.y+effectrange), src.z) + if(!spot) + return + playsound(spot, 'sound/health/slowbeat2.ogg', 100) radiation_pulse(spot, 200, effectrange) for(var/mob/living/carbon/nearby in range(effectrange, spot)) diff --git a/code/game/objects/effects/blessing.dm b/code/game/objects/effects/blessing.dm index 2bb45924dfdd..be2d89707882 100644 --- a/code/game/objects/effects/blessing.dm +++ b/code/game/objects/effects/blessing.dm @@ -16,7 +16,7 @@ I.alpha = 64 I.appearance_flags = RESET_ALPHA add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/blessedAware, "blessing", I) - RegisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT, .proc/block_cult_teleport) + RegisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT, PROC_REF(block_cult_teleport)) /obj/effect/blessing/Destroy() UnregisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT) diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm index 60bdcb7c1546..4c5553c4bfbc 100644 --- a/code/game/objects/effects/contraband.dm +++ b/code/game/objects/effects/contraband.dm @@ -92,7 +92,7 @@ name = "poster - [name]" desc = "A large piece of space-resistant printed paper. [desc]" - addtimer(CALLBACK(src, /datum.proc/_AddComponent, list(/datum/component/beauty, 300)), 0) + addtimer(CALLBACK(src, TYPE_PROC_REF(/datum, _AddComponent), list(/datum/component/beauty, 300)), 0) /obj/structure/sign/poster/proc/randomise() var/obj/structure/sign/poster/selected diff --git a/code/game/objects/effects/countdown.dm b/code/game/objects/effects/countdown.dm index df26388b9ddb..c47b95e99b49 100644 --- a/code/game/objects/effects/countdown.dm +++ b/code/game/objects/effects/countdown.dm @@ -146,11 +146,13 @@ return round(time_left) /obj/effect/countdown/holosign/Destroy(...) - if(attached_to) - var/obj/structure/holosign/H = attached_to - if(H.countdown) - H.countdown = null - return ..() + if(!attached_to) + return ..() + var/obj/structure/holosign/H = attached_to + if(!istype(H) || !H.countdown) + return ..() + H.countdown = null + return ..() /obj/effect/countdown/hourglass name = "hourglass countdown" diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 57c871ed4c00..a0909bb0b994 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -27,12 +27,11 @@ AddComponent(/datum/component/infective, diseases_to_add) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, - COMSIG_ATOM_EXITED = .proc/on_uncrossed, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) - addtimer(CALLBACK(src, /datum.proc/_AddComponent, list(/datum/component/beauty, beauty)), 0) + addtimer(CALLBACK(src, TYPE_PROC_REF(/datum, _AddComponent), list(/datum/component/beauty, beauty)), 0) SSblackbox.record_feedback("tally", "station_mess_created", 1, name) @@ -80,10 +79,6 @@ reagents.expose_temperature(exposed_temperature) ..() -/obj/effect/decal/cleanable/proc/on_uncrossed(datum/source, atom/movable/O) - SIGNAL_HANDLER - return - //Add "bloodiness" of this blood's type, to the human's shoes //This is on /cleanable because fuck this ancient mess /obj/effect/decal/cleanable/proc/on_entered(datum/source, atom/movable/AM) @@ -94,6 +89,8 @@ /obj/effect/decal/cleanable/wash(clean_types) ..() + if(!(flags_1 & INITIALIZED_1)) + return FALSE qdel(src) return TRUE diff --git a/code/game/objects/effects/decals/cleanable/food.dm b/code/game/objects/effects/decals/cleanable/food.dm index a5769f887160..709d7ca12102 100644 --- a/code/game/objects/effects/decals/cleanable/food.dm +++ b/code/game/objects/effects/decals/cleanable/food.dm @@ -32,9 +32,9 @@ icon_state = "salt_pile" var/safepasses = 3 //how many times can this salt pile be passed before dissipating -/obj/effect/decal/cleanable/food/salt/CanAllowThrough(atom/movable/AM, turf/target) +/obj/effect/decal/cleanable/food/salt/CanAllowThrough(atom/movable/mover, border_dir) . = ..() - if(is_species(AM, /datum/species/snail)) + if(is_species(mover, /datum/species/snail)) return FALSE /obj/effect/decal/cleanable/food/salt/Bumped(atom/movable/AM) diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index d1f65a592091..5610e6a19efa 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -268,7 +268,7 @@ /obj/effect/decal/cleanable/squid_ink/ComponentInitialize() . = ..() - AddComponent(/datum/component/slippery, 5SECONDS, NO_SLIP_WHEN_WALKING, CALLBACK(src, .proc/AfterSlip), 3SECONDS) + AddComponent(/datum/component/slippery, 5SECONDS, NO_SLIP_WHEN_WALKING, CALLBACK(src, PROC_REF(AfterSlip)), 3SECONDS) /obj/effect/decal/cleanable/squid_ink/proc/AfterSlip(mob/living/M) M.AddComponent(/datum/component/outline) diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 79059b51f351..f283de309cc8 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -52,10 +52,6 @@ bloodiness = BLOOD_AMOUNT_PER_DECAL beauty = -100 -/obj/effect/decal/cleanable/oil/Initialize() - . = ..() - reagents.add_reagent(/datum/reagent/fuel/oil, 30) - /obj/effect/decal/cleanable/oil/attackby(obj/item/I, mob/living/user) var/attacked_by_hot_thing = I.get_temperature() if(attacked_by_hot_thing) diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 4bb99fe98b22..173764fdf198 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -46,4 +46,4 @@ GLOBAL_LIST(gang_tags) /obj/effect/decal/cleanable/crayon/gang/Destroy() LAZYREMOVE(GLOB.gang_tags, src) - ..() + return ..() diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index 7aea2fcb4c7d..a3ad1f1af13d 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -9,6 +9,10 @@ . = ..() if(turf_loc_check && (!isturf(loc) || NeverShouldHaveComeHere(loc))) return INITIALIZE_HINT_QDEL + var/static/list/loc_connections = list( + COMSIG_TURF_CHANGED = PROC_REF(handle_turf_change), + ) + AddElement(/datum/element/connect_loc, loc_connections) /obj/effect/decal/blob_act(obj/structure/blob/B) if(B && B.loc == loc) @@ -24,9 +28,12 @@ if(!(resistance_flags & FIRE_PROOF)) //non fire proof decal or being burned by lava qdel(src) -/obj/effect/decal/HandleTurfChange(turf/T) - ..() - if(T == loc && NeverShouldHaveComeHere(T)) +/obj/effect/decal/proc/handle_turf_change(turf/source, path, list/new_baseturfs, flags, list/post_change_callbacks) + SIGNAL_HANDLER + post_change_callbacks += CALLBACK(src, PROC_REF(sanity_check_self)) + +/obj/effect/decal/proc/sanity_check_self(turf/changed) + if(changed == loc && NeverShouldHaveComeHere(changed)) qdel(src) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -34,19 +41,29 @@ /obj/effect/turf_decal icon = 'icons/turf/decals.dmi' icon_state = "warningline" + plane = FLOOR_PLANE layer = TURF_DECAL_LAYER var/detail_overlay var/detail_color -/obj/effect/turf_decal/Initialize() - ..() - return INITIALIZE_HINT_QDEL +// This is with the intent of optimizing mapload +// See spawners for more details since we use the same pattern +// Basically rather then creating and deleting ourselves, why not just do the bare minimum? +/obj/effect/turf_decal/Initialize(mapload) + SHOULD_CALL_PARENT(FALSE) + if(flags_1 & INITIALIZED_1) + stack_trace("Warning: [src]([type]) initialized multiple times!") + flags_1 |= INITIALIZED_1 -/obj/effect/turf_decal/ComponentInitialize() - . = ..() var/turf/T = loc if(!istype(T)) //you know this will happen somehow CRASH("Turf decal initialized in an object/nullspace") T.AddElement(/datum/element/decal, icon, icon_state, dir, FALSE, color, null, null, alpha, FALSE) if(detail_overlay) T.AddElement(/datum/element/decal, icon, detail_overlay, dir, FALSE, detail_color, null, null, alpha, appearance_flags) + return INITIALIZE_HINT_QDEL + +/obj/effect/turf_decal/Destroy(force) + SHOULD_CALL_PARENT(FALSE) + moveToNullspace() + return QDEL_HINT_QUEUE diff --git a/code/game/objects/effects/decals/turfdecal/flooring_decals.dm b/code/game/objects/effects/decals/turfdecal/flooring_decals.dm index cfbc81a631a1..b5c6f9fe0eec 100644 --- a/code/game/objects/effects/decals/turfdecal/flooring_decals.dm +++ b/code/game/objects/effects/decals/turfdecal/flooring_decals.dm @@ -1092,3 +1092,17 @@ TURF_DECAL_COLOR_HELPER(transparent/inteqbrown, "#4b2a18", 140) /obj/effect/turf_decal/hardline_big/seven icon_state = "hardline_big-7" + +//ARROW & AXE DOCKYARDS + +/obj/effect/turf_decal/arrowaxe_small + name = "small arrow & axe logo" + +/obj/effect/turf_decal/arrowaxe_small/left + icon_state = "arrowaxe-left" + +/obj/effect/turf_decal/arrowaxe_small/center + icon_state = "arrowaxe-center" + +/obj/effect/turf_decal/arrowaxe_small/right + icon_state = "arrowaxe-right" diff --git a/code/game/objects/effects/decals/turfdecal/weather.dm b/code/game/objects/effects/decals/turfdecal/weather.dm index d73af55ef7e9..04dcf807314a 100644 --- a/code/game/objects/effects/decals/turfdecal/weather.dm +++ b/code/game/objects/effects/decals/turfdecal/weather.dm @@ -2,14 +2,14 @@ name = "sandy floor" icon_state = "sandyfloor" -/obj/effect/turf_decal/weather/snow - name = "snowy floor" - icon_state = "snowyfloor" - -/obj/effect/turf_decal/weather/snow/corner - name = "snow corner piece" +/obj/effect/turf_decal/weather/snow //add a corner decal if you resprite this to look like the other sidings + name = "snow siding" icon = 'icons/turf/snow.dmi' - icon_state = "snow_corner" + icon_state = "snow_side" + +/obj/effect/turf_decal/weather/snow/surround + name = "surround" + icon_state = "snow_surround" /obj/effect/turf_decal/weather/dirt name = "dirt siding" diff --git a/code/game/objects/effects/effect_system/effect_shield.dm b/code/game/objects/effects/effect_system/effect_shield.dm index 4344fbb26076..00f943aa138e 100644 --- a/code/game/objects/effects/effect_system/effect_shield.dm +++ b/code/game/objects/effects/effect_system/effect_shield.dm @@ -16,7 +16,7 @@ /obj/effect/shield/Destroy() var/turf/location = get_turf(src) location.heat_capacity=old_heat_capacity - ..() + return ..() /obj/effect/shield/singularity_act() return diff --git a/code/game/objects/effects/effect_system/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm index 1093f078966d..8e2db3706ca3 100644 --- a/code/game/objects/effects/effect_system/effect_system.dm +++ b/code/game/objects/effects/effect_system/effect_system.dm @@ -56,7 +56,7 @@ would spawn and follow the beaker, even if it is carried or thrown. for(var/i in 1 to number) if(total_effects > 20) return - INVOKE_ASYNC(src, .proc/generate_effect) + INVOKE_ASYNC(src, PROC_REF(generate_effect)) /datum/effect_system/proc/generate_effect() if(holder) @@ -73,7 +73,7 @@ would spawn and follow the beaker, even if it is carried or thrown. sleep(5) step(E,direction) if(!QDELETED(src)) - addtimer(CALLBACK(src, .proc/decrement_total_effect), 20) + addtimer(CALLBACK(src, PROC_REF(decrement_total_effect)), 20) /datum/effect_system/proc/decrement_total_effect() total_effects-- diff --git a/code/game/objects/effects/effect_system/effects_explosion.dm b/code/game/objects/effects/effect_system/effects_explosion.dm index 98ac62f095a5..f8ed47a9b273 100644 --- a/code/game/objects/effects/effect_system/effects_explosion.dm +++ b/code/game/objects/effects/effect_system/effects_explosion.dm @@ -13,6 +13,8 @@ var/steps_amt = pick(1;25,2;50,3,4;200) for(var/j in 1 to steps_amt) step(src, direct) + if(QDELETED(src)) + return sleep(1) qdel(src) @@ -59,4 +61,4 @@ S.start() /datum/effect_system/explosion/smoke/start() ..() - addtimer(CALLBACK(src, .proc/create_smoke), 5) + addtimer(CALLBACK(src, PROC_REF(create_smoke)), 5) diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index a19ab7781269..29edfe40d4fd 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -42,7 +42,7 @@ /obj/effect/particle_effect/smoke/proc/kill_smoke() STOP_PROCESSING(SSobj, src) - INVOKE_ASYNC(src, .proc/fade_out) + INVOKE_ASYNC(src, PROC_REF(fade_out)) QDEL_IN(src, 10) /obj/effect/particle_effect/smoke/process() @@ -64,7 +64,7 @@ if(C.smoke_delay) return 0 C.smoke_delay++ - addtimer(CALLBACK(src, .proc/remove_smoke_delay, C), 10) + addtimer(CALLBACK(src, PROC_REF(remove_smoke_delay), C), 10) return 1 /obj/effect/particle_effect/smoke/proc/remove_smoke_delay(mob/living/carbon/C) @@ -95,7 +95,7 @@ //the smoke spreads rapidly but not instantly for(var/obj/effect/particle_effect/smoke/SM in newsmokes) - addtimer(CALLBACK(SM, /obj/effect/particle_effect/smoke.proc/spread_smoke), 1) + addtimer(CALLBACK(SM, TYPE_PROC_REF(/obj/effect/particle_effect/smoke, spread_smoke)), 1) /datum/effect_system/smoke_spread diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm index 7e18077c841b..fea67e7341b4 100644 --- a/code/game/objects/effects/effects.dm +++ b/code/game/objects/effects/effects.dm @@ -3,7 +3,7 @@ //Effects are mostly temporary visual effects like sparks, smoke, as well as decals, etc... /obj/effect icon = 'icons/effects/effects.dmi' - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF | HYPERSPACE_PROOF move_resist = INFINITY obj_flags = 0 vis_flags = VIS_INHERIT_PLANE diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 327f77545d8b..f880b95497c4 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -80,7 +80,7 @@ else //if on the floor, glowshroom on-floor sprite icon_state = base_icon_state - addtimer(CALLBACK(src, .proc/Spread), delay) + addtimer(CALLBACK(src, PROC_REF(Spread)), delay) /obj/structure/glowshroom/proc/Spread() var/turf/ownturf = get_turf(src) @@ -127,7 +127,7 @@ shrooms_planted++ //if we failed due to generation, don't try to plant one later if(shrooms_planted < myseed.yield) //if we didn't get all possible shrooms planted, try again later myseed.yield -= shrooms_planted - addtimer(CALLBACK(src, .proc/Spread), delay) + addtimer(CALLBACK(src, PROC_REF(Spread)), delay) /obj/structure/glowshroom/proc/CalcDir(turf/location = loc) var/direction = 16 diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 4af986b79cbe..0ca73652857c 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -11,7 +11,7 @@ /obj/effect/mine/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -24,9 +24,9 @@ if(ismob(AM)) var/mob/MM = AM if(!(MM.movement_type & FLYING)) - INVOKE_ASYNC(src, .proc/triggermine, AM) + INVOKE_ASYNC(src, PROC_REF(triggermine), AM) else - INVOKE_ASYNC(src, .proc/triggermine, AM) + INVOKE_ASYNC(src, PROC_REF(triggermine), AM) /obj/effect/mine/proc/triggermine(mob/victim) if(triggered) @@ -161,7 +161,7 @@ return to_chat(victim, "RIP AND TEAR") - INVOKE_ASYNC(src, .proc/blood_delusion, victim) + INVOKE_ASYNC(src, PROC_REF(blood_delusion), victim) chainsaw = new(victim.loc) victim.log_message("entered a marg frenzy", LOG_ATTACK) @@ -176,7 +176,7 @@ var/datum/client_colour/colour = victim.add_client_colour(/datum/client_colour/bloodlust) QDEL_IN(colour, 11) doomslayer = victim - RegisterSignal(src, COMSIG_PARENT_QDELETING, .proc/end_blood_frenzy) + RegisterSignal(src, COMSIG_PARENT_QDELETING, PROC_REF(end_blood_frenzy)) QDEL_IN(WEAKREF(src), duration) /obj/effect/mine/pickup/bloodbath/proc/end_blood_frenzy() @@ -210,7 +210,7 @@ return to_chat(victim, "You feel fast!") victim.add_movespeed_modifier(/datum/movespeed_modifier/yellow_orb) - addtimer(CALLBACK(src, .proc/finish_effect, victim), duration) + addtimer(CALLBACK(src, PROC_REF(finish_effect), victim), duration) /obj/effect/mine/pickup/speed/proc/finish_effect(mob/living/carbon/victim) victim.remove_movespeed_modifier(/datum/movespeed_modifier/yellow_orb) diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index f9f7d19d161f..b21c0b7073d5 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -21,6 +21,23 @@ /obj/effect/spawner name = "object spawner" +// Brief explanation: +// Rather then setting up and then deleting spawners, we block all atomlike setup +// and do the absolute bare minimum +// This is with the intent of optimizing mapload +/obj/effect/spawner/Initialize(mapload) + SHOULD_CALL_PARENT(FALSE) + if(flags_1 & INITIALIZED_1) + stack_trace("Warning: [src]([type]) initialized multiple times!") + flags_1 |= INITIALIZED_1 + + return INITIALIZE_HINT_QDEL + +/obj/effect/spawner/Destroy(force) + SHOULD_CALL_PARENT(FALSE) + moveToNullspace() + return QDEL_HINT_QUEUE + /obj/effect/list_container name = "list container" @@ -40,10 +57,6 @@ density = TRUE layer = FLY_LAYER -/obj/effect/supplypod_selector - icon_state = "supplypod_selector" - layer = FLY_LAYER - //Makes a tile fully lit no matter what /obj/effect/fullbright icon = 'icons/effects/alphacolors.dmi' @@ -100,5 +113,6 @@ return INITIALIZE_HINT_QDEL /obj/effect/abstract/directional_lighting + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF | LANDING_PROOF | HYPERSPACE_PROOF mouse_opacity = MOUSE_OPACITY_TRANSPARENT vis_flags = VIS_HIDE diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 5331e0b466db..f5f28c60c80f 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -49,9 +49,11 @@ /obj/effect/overlay/vis mouse_opacity = MOUSE_OPACITY_TRANSPARENT anchored = TRUE - vis_flags = NONE - var/unused = 0 //When detected to be unused it gets set to world.time, after a while it gets removed - var/cache_expiration = 2 MINUTES // overlays which go unused for 2 minutes get cleaned up + vis_flags = VIS_INHERIT_DIR + ///When detected to be unused it gets set to world.time, after a while it gets removed + var/unused = 0 + ///overlays which go unused for this amount of time get cleaned up + var/cache_expiration = 2 MINUTES /obj/effect/overlay/light_visible name = "" diff --git a/code/game/objects/effects/proximity.dm b/code/game/objects/effects/proximity.dm deleted file mode 100644 index 7af165868ecb..000000000000 --- a/code/game/objects/effects/proximity.dm +++ /dev/null @@ -1,129 +0,0 @@ -/datum/proximity_monitor - var/atom/host //the atom we are tracking - var/atom/hasprox_receiver //the atom that will receive HasProximity calls. - var/atom/last_host_loc - var/list/checkers //list of /obj/effect/abstract/proximity_checkers - var/current_range - var/ignore_if_not_on_turf //don't check turfs in range if the host's loc isn't a turf - var/wire = FALSE - -/datum/proximity_monitor/New(atom/_host, range, _ignore_if_not_on_turf = TRUE) - checkers = list() - last_host_loc = _host.loc - ignore_if_not_on_turf = _ignore_if_not_on_turf - current_range = range - SetHost(_host) - -/datum/proximity_monitor/proc/SetHost(atom/H,atom/R) - if(H == host) - return - if(host) - UnregisterSignal(host, COMSIG_MOVABLE_MOVED) - if(R) - hasprox_receiver = R - else if(hasprox_receiver == host) //Default case - hasprox_receiver = H - host = H - RegisterSignal(host, COMSIG_MOVABLE_MOVED, .proc/HandleMove) - last_host_loc = host.loc - SetRange(current_range,TRUE) - -/datum/proximity_monitor/Destroy() - host = null - last_host_loc = null - hasprox_receiver = null - QDEL_LAZYLIST(checkers) - return ..() - -/datum/proximity_monitor/proc/HandleMove() - SIGNAL_HANDLER - - var/atom/_host = host - var/atom/new_host_loc = _host.loc - if(last_host_loc != new_host_loc) - last_host_loc = new_host_loc //hopefully this won't cause GC issues with containers - var/curr_range = current_range - SetRange(curr_range, TRUE) - if(curr_range) - testing("HasProx: [host] -> [host]") - hasprox_receiver.HasProximity(host) //if we are processing, we're guaranteed to be a movable - -/datum/proximity_monitor/proc/SetRange(range, force_rebuild = FALSE) - if(!force_rebuild && range == current_range) - return FALSE - . = TRUE - - current_range = range - - var/list/checkers_local = checkers - var/old_checkers_len = checkers_local.len - - var/atom/_host = host - - var/atom/loc_to_use = ignore_if_not_on_turf ? _host.loc : get_turf(_host) - if(wire && !isturf(loc_to_use)) //it makes assemblies attached on wires work - loc_to_use = get_turf(loc_to_use) - if(!isturf(loc_to_use)) //only check the host's loc - if(range) - var/obj/effect/abstract/proximity_checker/pc - if(old_checkers_len) - pc = checkers_local[old_checkers_len] - --checkers_local.len - QDEL_LAZYLIST(checkers_local) - else - pc = new(loc_to_use, src) - - checkers_local += pc //only check the host's loc - return - - var/list/turfs = RANGE_TURFS(range, loc_to_use) - var/turfs_len = turfs.len - var/old_checkers_used = min(turfs_len, old_checkers_len) - - //reuse what we can - for(var/I in 1 to old_checkers_len) - var/obj/effect/abstract/proximity_checker/pc = checkers_local[I] - if(I > old_checkers_used) - qdel(pc) //delete the leftovers - else if(QDELETED(pc)) - checkers_local[I] = new /obj/effect/abstract/proximity_checker(turfs[I], src) - else - pc.forceMove(turfs[I]) - - if(old_checkers_len < turfs_len) - //create what we lack - for(var/I in (old_checkers_used + 1) to turfs_len) - checkers_local += new /obj/effect/abstract/proximity_checker(turfs[I], src) - else - checkers_local.Cut(old_checkers_used + 1, old_checkers_len) - -/obj/effect/abstract/proximity_checker - invisibility = INVISIBILITY_ABSTRACT - anchored = TRUE - var/datum/proximity_monitor/monitor - -/obj/effect/abstract/proximity_checker/Initialize(mapload, datum/proximity_monitor/_monitor) - . = ..() - if(_monitor) - monitor = _monitor - else - stack_trace("proximity_checker created without host") - return INITIALIZE_HINT_QDEL - var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, - COMSIG_ATOM_EXITED =.proc/on_uncrossed - ) - AddElement(/datum/element/connect_loc, loc_connections) - -/obj/effect/abstract/proximity_checker/proc/on_uncrossed(datum/source, atom/movable/gone, direction) - SIGNAL_HANDLER - return - -/obj/effect/abstract/proximity_checker/Destroy() - monitor = null - return ..() - -/obj/effect/abstract/proximity_checker/proc/on_entered(datum/source, atom/movable/AM) - SIGNAL_HANDLER - - monitor?.hasprox_receiver?.HasProximity(AM) diff --git a/code/game/objects/effects/spawners/bombspawner.dm b/code/game/objects/effects/spawners/bombspawner.dm index 914b910d9830..e1df4ff4ad18 100644 --- a/code/game/objects/effects/spawners/bombspawner.dm +++ b/code/game/objects/effects/spawners/bombspawner.dm @@ -37,8 +37,6 @@ V.update_appearance() - return INITIALIZE_HINT_QDEL - /obj/effect/spawner/newbomb/timer/syndicate/Initialize() temp_p = (OPTIMAL_TEMP_K_PLA_BURN_SCALE(pressure_p, pressure_o, temp_o)/2 + OPTIMAL_TEMP_K_PLA_BURN_RATIO(pressure_p, pressure_o, temp_o)/2) - T0C . = ..() diff --git a/code/game/objects/effects/spawners/bundle.dm b/code/game/objects/effects/spawners/bundle.dm index 41faf88745b2..19e7b1c957fa 100644 --- a/code/game/objects/effects/spawners/bundle.dm +++ b/code/game/objects/effects/spawners/bundle.dm @@ -7,11 +7,10 @@ var/list/items /obj/effect/spawner/bundle/Initialize(mapload) - ..() + . = ..() if(items && items.len) for(var/path in items) new path(loc) - return INITIALIZE_HINT_QDEL /obj/effect/spawner/bundle/costume/chicken name = "chicken costume spawner" @@ -109,12 +108,6 @@ /obj/effect/spawner/lootdrop/minor/pirate_or_bandana, /obj/item/clothing/glasses/eyepatch) -/obj/effect/spawner/bundle/costume/commie - name = "commie costume spawner" - items = list( - /obj/item/clothing/under/costume/soviet, - /obj/item/clothing/head/trapper) - /obj/effect/spawner/bundle/costume/imperium_monk name = "imperium monk costume spawner" items = list( diff --git a/code/game/objects/effects/spawners/gibspawner.dm b/code/game/objects/effects/spawners/gibspawner.dm index 28d9a16e0545..e8f94bc8e3ab 100644 --- a/code/game/objects/effects/spawners/gibspawner.dm +++ b/code/game/objects/effects/spawners/gibspawner.dm @@ -20,8 +20,6 @@ stack_trace("Gib list dir length mismatch!") return - var/obj/effect/decal/cleanable/blood/gibs/gib = null - if(sound_to_play && isnum(sound_vol)) playsound(src, sound_to_play, sound_vol, TRUE) @@ -46,14 +44,13 @@ if(gibamounts[i]) for(var/j = 1, j<= gibamounts[i], j++) var/gibType = gibtypes[i] - gib = new gibType(loc, diseases) + var/obj/effect/decal/cleanable/blood/gibs/gib = new gibType(loc, diseases) gib.add_blood_DNA(dna_to_add) var/list/directions = gibdirections[i] - if(isturf(loc)) - if(directions.len) - gib.streak(directions) + if(isturf(loc) && length(directions) && istype(gib)) + gib.streak(directions) return INITIALIZE_HINT_QDEL @@ -153,14 +150,19 @@ return ..() /obj/effect/gibspawner/robot/bodypartless - gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris) - gibamounts = list(1, 1, 1, 1, 1) + gibtypes = list(/obj/effect/decal/cleanable/robot_debris/up, /obj/effect/decal/cleanable/robot_debris/down, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/robot_debris) + gibamounts = list(1, 1, 1, 1, 1, 1) /obj/effect/gibspawner/robot/bodypartless/Initialize() if(!gibdirections.len) - gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),list(EAST, NORTHEAST, SOUTHEAST), GLOB.alldirs, GLOB.alldirs) return ..() /obj/effect/gibspawner/generic/crystal gibtypes = list(/obj/effect/decal/cleanable/glass/strange, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs/core) gibamounts = list(5, 2, 2, 1) + +/obj/effect/gibspawner/generic/crystal/Initialize() + if(!gibdirections.len) + gibdirections = list(list(NORTH, NORTHEAST, NORTHWEST),list(SOUTH, SOUTHEAST, SOUTHWEST),list(WEST, NORTHWEST, SOUTHWEST),GLOB.alldirs) + return ..() diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 41003679c894..1e349fd17abb 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -8,7 +8,7 @@ var/fan_out_items = FALSE //Whether the items should be distributed to offsets 0,1,-1,2,-2,3,-3.. This overrides pixel_x/y on the spawner itself /obj/effect/spawner/lootdrop/Initialize(mapload) - ..() + . = ..() if(loot && loot.len) var/loot_spawned = 0 while((lootcount-loot_spawned) && loot.len) @@ -31,7 +31,6 @@ else break // WS edit - Support spawn weights of 0 in loot tables and ruins loot_spawned++ - return INITIALIZE_HINT_QDEL /obj/effect/spawner/lootdrop/donkpockets name = "donk pocket box spawner" @@ -1250,3 +1249,28 @@ 4 )) return ..() + +/obj/effect/spawner/lootdrop/ration + loot = list ( + /obj/item/storage/ration/vegan_chili = 5, + /obj/item/storage/ration/shredded_beef = 5, + /obj/item/storage/ration/pork_spaghetti = 5, + /obj/item/storage/ration/fried_fish = 5, + /obj/item/storage/ration/beef_strips = 5, + /obj/item/storage/ration/chili_macaroni = 5, + /obj/item/storage/ration/chicken_wings_hot_sauce = 5, + /obj/item/storage/ration/fish_stew = 5, + /obj/item/storage/ration/lemon_pepper_chicken = 5, + /obj/item/storage/ration/sausage_peppers_onions = 5, + /obj/item/storage/ration/pork_dumplings_chili_sauce = 5, + /obj/item/storage/ration/battered_fish_sticks = 5, + /obj/item/storage/ration/assorted_salted_offal = 5, + /obj/item/storage/ration/maple_pork_sausage_patty = 5, + /obj/item/storage/ration/pepper_jack_beef_patty = 5, + /obj/item/storage/ration/beef_goulash = 5, + /obj/item/storage/ration/pepperoni_pizza_slice = 5, + /obj/item/storage/ration/blackened_calamari = 5, + /obj/item/storage/ration/elbow_macaroni = 5, + /obj/item/storage/ration/cheese_pizza_slice = 5, + /obj/item/storage/ration/crayons = 2 // :) + ) diff --git a/code/game/objects/effects/spawners/structure.dm b/code/game/objects/effects/spawners/structure.dm index cd2a3d7cc134..ec893399630b 100644 --- a/code/game/objects/effects/spawners/structure.dm +++ b/code/game/objects/effects/spawners/structure.dm @@ -4,17 +4,19 @@ Because mapping is already tedious enough this spawner let you spawn generic again. */ +//These NEED to spawn immediately, because windows are important for keeping the space out +INITIALIZE_IMMEDIATE(/obj/effect/spawner/structure) + /obj/effect/spawner/structure name = "map structure spawner" + //Just so stuff doesn't leak out while it's initializing + CanAtmosPass = ATMOS_PASS_NO var/list/spawn_list /obj/effect/spawner/structure/Initialize() . = ..() - if(spawn_list && spawn_list.len) - for(var/I in spawn_list) - new I(get_turf(src)) - return INITIALIZE_HINT_QDEL - + for(var/spawn_type in spawn_list) + new spawn_type(loc) //normal windows diff --git a/code/game/objects/effects/spawners/traps.dm b/code/game/objects/effects/spawners/traps.dm index 731b4efc1d98..0409d9944b9b 100644 --- a/code/game/objects/effects/spawners/traps.dm +++ b/code/game/objects/effects/spawners/traps.dm @@ -4,7 +4,6 @@ icon_state = "trap_rand" /obj/effect/spawner/trap/Initialize(mapload) - ..() + . = ..() var/new_type = pick(subtypesof(/obj/structure/trap) - typesof(/obj/structure/trap/ctf)) new new_type(get_turf(src)) - return INITIALIZE_HINT_QDEL diff --git a/code/game/objects/effects/spawners/xeno_egg_delivery.dm b/code/game/objects/effects/spawners/xeno_egg_delivery.dm index d0e99d0f9036..1eb4fd0dda94 100644 --- a/code/game/objects/effects/spawners/xeno_egg_delivery.dm +++ b/code/game/objects/effects/spawners/xeno_egg_delivery.dm @@ -5,7 +5,7 @@ var/announcement_time = 1200 /obj/effect/spawner/xeno_egg_delivery/Initialize(mapload) - ..() + . = ..() var/turf/T = get_turf(src) new /obj/structure/alien/egg(T) @@ -15,5 +15,4 @@ message_admins("An alien egg has been delivered to [ADMIN_VERBOSEJMP(T)].") log_game("An alien egg has been delivered to [AREACOORD(T)]") var/message = "Attention [station_name()], we have entrusted you with a research specimen in [get_area_name(T, TRUE)]. Remember to follow all safety precautions when dealing with the specimen." - SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/_addtimer, CALLBACK(GLOBAL_PROC, /proc/print_command_report, message), announcement_time)) - return INITIALIZE_HINT_QDEL + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_addtimer), CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(print_command_report), message), announcement_time)) diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index cc968a6a6b0a..b986ae41808b 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -36,7 +36,7 @@ icon_state = "stickyweb2" . = ..() -/obj/structure/spider/stickyweb/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/spider/stickyweb/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(genetic) return @@ -53,18 +53,19 @@ /obj/structure/spider/stickyweb/genetic //for the spider genes in genetics genetic = TRUE - var/mob/living/allowed_mob + //Reference to the mob that created this + var/allowed_mob_reference /obj/structure/spider/stickyweb/genetic/Initialize(mapload, allowedmob) - allowed_mob = allowedmob + allowed_mob_reference = REF(allowedmob) . = ..() -/obj/structure/spider/stickyweb/genetic/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/spider/stickyweb/genetic/CanAllowThrough(atom/movable/mover, border_dir) . = ..() //this is the normal spider web return aka a spider would make this TRUE - if(mover == allowed_mob) + if(REF(mover) == allowed_mob_reference) return TRUE else if(isliving(mover)) //we change the spider to not be able to go through here - if(mover.pulledby == allowed_mob) + if(REF(mover.pulledby) == allowed_mob_reference) return TRUE if(prob(50)) to_chat(mover, "You get stuck in \the [src] for a moment.") @@ -118,6 +119,7 @@ /obj/structure/spider/spiderling/Destroy() new/obj/item/reagent_containers/food/snacks/spiderling(get_turf(src)) + walk(src, 0) //Clean up reference for pathing . = ..() /obj/structure/spider/spiderling/Initialize() @@ -159,7 +161,7 @@ forceMove(exit_vent) var/travel_time = round(get_dist(loc, exit_vent.loc) / 2) - addtimer(CALLBACK(src, .proc/do_vent_move, exit_vent, travel_time), travel_time) + addtimer(CALLBACK(src, PROC_REF(do_vent_move), exit_vent, travel_time), travel_time) /obj/structure/spider/spiderling/proc/do_vent_move(obj/machinery/atmospherics/components/unary/vent_pump/exit_vent, travel_time) if(QDELETED(exit_vent) || exit_vent.welded) @@ -169,7 +171,7 @@ if(prob(50)) audible_message("You hear something scampering through the ventilation ducts.") - addtimer(CALLBACK(src, .proc/finish_vent_move, exit_vent), travel_time) + addtimer(CALLBACK(src, PROC_REF(finish_vent_move), exit_vent), travel_time) /obj/structure/spider/spiderling/proc/finish_vent_move(obj/machinery/atmospherics/components/unary/vent_pump/exit_vent) if(QDELETED(exit_vent) || exit_vent.welded) @@ -197,7 +199,7 @@ visible_message("[src] scrambles into the ventilation ducts!", \ "You hear something scampering through the ventilation ducts.") - addtimer(CALLBACK(src, .proc/vent_move, exit_vent), rand(20,60)) + addtimer(CALLBACK(src, PROC_REF(vent_move), exit_vent), rand(20,60)) //================= diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 7d0612a8da65..76412acf2a5b 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -10,7 +10,7 @@ /obj/effect/step_trigger/Initialize(mapload) . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -26,7 +26,7 @@ return if(!ismob(H) && mobs_only) return - INVOKE_ASYNC(src, .proc/Trigger, H) + INVOKE_ASYNC(src, PROC_REF(Trigger), H) /obj/effect/step_trigger/singularity_act() diff --git a/code/game/objects/effects/temporary_visuals/miscellaneous.dm b/code/game/objects/effects/temporary_visuals/miscellaneous.dm index d825f49c811d..8c8c8f900aab 100644 --- a/code/game/objects/effects/temporary_visuals/miscellaneous.dm +++ b/code/game/objects/effects/temporary_visuals/miscellaneous.dm @@ -514,7 +514,7 @@ status = rcd_status delay = rcd_delay if (status == RCD_DECONSTRUCT) - addtimer(CALLBACK(src, /atom/.proc/update_appearance), 1.1 SECONDS) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_appearance)), 1.1 SECONDS) delay -= 11 icon_state = "rcd_end_reverse" else @@ -540,7 +540,20 @@ qdel(src) else icon_state = "rcd_end" - addtimer(CALLBACK(src, .proc/end), 15) + addtimer(CALLBACK(src, PROC_REF(end)), 15) /obj/effect/constructing_effect/proc/end() qdel(src) + +/obj/effect/muzzle_flash + icon = 'icons/obj/projectiles.dmi' + icon_state = "muzzle_flash" + layer = ABOVE_MOB_LAYER + plane = GAME_PLANE + appearance_flags = KEEP_APART|TILE_BOUND + var/applied = FALSE + +/obj/effect/muzzle_flash/Initialize(mapload, new_icon_state) + . = ..() + if(new_icon_state) + icon_state = new_icon_state diff --git a/code/game/objects/effects/turf_fire.dm b/code/game/objects/effects/turf_fire.dm index 01973670d608..a0c9e0f95a9b 100644 --- a/code/game/objects/effects/turf_fire.dm +++ b/code/game/objects/effects/turf_fire.dm @@ -71,7 +71,7 @@ return INITIALIZE_HINT_QDEL var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 03ac738b3396..df7c5ae431c5 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -133,8 +133,8 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb ///A bitfield of bodytypes that the item cannot be worn by. var/restricted_bodytypes = null - ///Who threw the item - var/mob/thrownby = null + ///A weakref to the mob who threw the item + var/datum/weakref/thrownby = null //I cannot verbally describe how much I hate this var ///the icon to indicate this object is being dragged mouse_drag_pointer = MOUSE_ACTIVE_POINTER @@ -453,14 +453,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb SEND_SIGNAL(src, COMSIG_ITEM_HIT_REACT, args) if((prob(final_block_chance) && COOLDOWN_FINISHED(src, block_cooldown)) || (prob(final_block_chance) && istype(src, /obj/item/shield))) owner.visible_message("[owner] blocks [attack_text] with [src]!") - var/rand_ricochet = pick(list( - 'sound/weapons/effects/ric1.ogg', - 'sound/weapons/effects/ric2.ogg', - 'sound/weapons/effects/ric3.ogg', - 'sound/weapons/effects/ric4.ogg', - 'sound/weapons/effects/ric5.ogg' - )) - playsound(src, rand_ricochet, 100) + playsound(src, 'sound/weapons/effects/deflect.ogg', 100) if(!istype(src, /obj/item/shield)) COOLDOWN_START(src, block_cooldown, block_cooldown_time) return 1 @@ -683,11 +676,10 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb /obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, force, gentle = FALSE, quickstart = TRUE) if(HAS_TRAIT(src, TRAIT_NODROP)) return - thrownby = thrower - callback = CALLBACK(src, .proc/after_throw, callback) //replace their callback with our own + thrownby = WEAKREF(thrower) + callback = CALLBACK(src, PROC_REF(after_throw), callback) //replace their callback with our own . = ..(target, range, speed, thrower, spin, diagonals_first, callback, force, gentle, quickstart = quickstart) - /obj/item/proc/after_throw(datum/callback/callback) if (callback) //call the original callback . = callback.Invoke() @@ -853,7 +845,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb if((item_flags & IN_INVENTORY || item_flags & IN_STORAGE) && usr.client.prefs.enable_tips && !QDELETED(src)) var/timedelay = usr.client.prefs.tip_delay/100 var/user = usr - tip_timer = addtimer(CALLBACK(src, .proc/openTip, location, control, params, user), timedelay, TIMER_STOPPABLE)//timer takes delay in deciseconds, but the pref is in milliseconds. dividing by 100 converts it. + tip_timer = addtimer(CALLBACK(src, PROC_REF(openTip), location, control, params, user), timedelay, TIMER_STOPPABLE)//timer takes delay in deciseconds, but the pref is in milliseconds. dividing by 100 converts it. var/mob/living/L = usr if(istype(L) && L.incapacitated()) apply_outline(COLOR_RED_GRAY) @@ -912,7 +904,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb if(delay) // Create a callback with checks that would be called every tick by do_after. - var/datum/callback/tool_check = CALLBACK(src, .proc/tool_check_callback, user, amount, extra_checks) + var/datum/callback/tool_check = CALLBACK(src, PROC_REF(tool_check_callback), user, amount, extra_checks) if(ismob(target)) if(!do_mob(user, target, delay, extra_checks=tool_check)) @@ -1100,6 +1092,10 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb if(SEND_SIGNAL(src, COMSIG_ITEM_OFFER_TAKEN, offerer, taker) & COMPONENT_OFFER_INTERRUPT) return TRUE +///Intended for interactions with guns, like racking +/obj/item/proc/unique_action(mob/living/user) + return + /** * Returns null if this object cannot be used to interact with physical writing mediums such as paper. * Returns a list of key attributes for this object interacting with paper otherwise. diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index b84ccff2b8c9..7548625b31f6 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -256,7 +256,7 @@ RLD "SOUTH" = image(icon = 'icons/mob/radial.dmi', icon_state = "csouth"), "WEST" = image(icon = 'icons/mob/radial.dmi', icon_state = "cwest") ) - var/computerdirs = show_radial_menu(user, src, computer_dirs, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/computerdirs = show_radial_menu(user, src, computer_dirs, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) if(!check_menu(user)) return switch(computerdirs) @@ -313,13 +313,13 @@ RLD "External Maintenance" = get_airlock_image(/obj/machinery/door/airlock/maintenance/external/glass) ) - var/airlockcat = show_radial_menu(user, src, solid_or_glass_choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/airlockcat = show_radial_menu(user, src, solid_or_glass_choices, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) if(!check_menu(user)) return switch(airlockcat) if("Solid") if(advanced_airlock_setting == 1) - var/airlockpaint = show_radial_menu(user, src, solid_choices, radius = 42, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/airlockpaint = show_radial_menu(user, src, solid_choices, radius = 42, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) if(!check_menu(user)) return switch(airlockpaint) @@ -362,7 +362,7 @@ RLD if("Glass") if(advanced_airlock_setting == 1) - var/airlockpaint = show_radial_menu(user, src , glass_choices, radius = 42, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/airlockpaint = show_radial_menu(user, src , glass_choices, radius = 42, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) if(!check_menu(user)) return switch(airlockpaint) @@ -455,7 +455,7 @@ RLD choices += list( "Change Window Type" = image(icon = 'icons/mob/radial.dmi', icon_state = "windowtype") ) - var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) if(!check_menu(user)) return switch(choice) @@ -507,7 +507,7 @@ RLD buzz loudly!","[src] begins \ vibrating violently!") // 5 seconds to get rid of it - addtimer(CALLBACK(src, .proc/detonate_pulse_explode), 50) + addtimer(CALLBACK(src, PROC_REF(detonate_pulse_explode)), 50) /obj/item/construction/rcd/proc/detonate_pulse_explode() explosion(src, 0, 0, 3, 1, flame_range = 1) @@ -822,7 +822,7 @@ RLD machinery_data["cost"][A] = initial(M.rcd_cost) machinery_data["delay"][A] = initial(M.rcd_delay) - var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) if(!check_menu(user)) return diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm index 18661712b6e4..be7cafe22df9 100644 --- a/code/game/objects/items/RCL.dm +++ b/code/game/objects/items/RCL.dm @@ -25,8 +25,8 @@ /obj/item/rcl/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/rcl/ComponentInitialize() . = ..() @@ -171,7 +171,7 @@ return if(listeningTo) UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) - RegisterSignal(to_hook, COMSIG_MOVABLE_MOVED, .proc/trigger) + RegisterSignal(to_hook, COMSIG_MOVABLE_MOVED, PROC_REF(trigger)) listeningTo = to_hook /obj/item/rcl/proc/trigger(mob/user) @@ -255,7 +255,7 @@ /obj/item/rcl/proc/showWiringGui(mob/user) var/list/choices = wiringGuiGenerateChoices(user) - wiring_gui_menu = show_radial_menu_persistent(user, src , choices, select_proc = CALLBACK(src, .proc/wiringGuiReact, user), radius = 42) + wiring_gui_menu = show_radial_menu_persistent(user, src , choices, select_proc = CALLBACK(src, PROC_REF(wiringGuiReact), user), radius = 42) /obj/item/rcl/proc/wiringGuiUpdate(mob/user) if(!wiring_gui_menu) diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm index 9a0f8d069ab8..d82a37d5ee6d 100644 --- a/code/game/objects/items/RSF.dm +++ b/code/game/objects/items/RSF.dm @@ -46,7 +46,7 @@ RSF /obj/item/rsf/Initialize() . = ..() - to_dispense = cost_by_item[1] + to_dispense ||= cost_by_item[1] /obj/item/rsf/examine(mob/user) . = ..() @@ -75,7 +75,7 @@ RSF var/cost = 0 //Warning, prepare for bodgecode while(islist(target))//While target is a list we continue the loop - var/picked = show_radial_menu(user, src, formRadial(target), custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE) + var/picked = show_radial_menu(user, src, formRadial(target), custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE) if(!check_menu(user) || picked == null) return for(var/emem in target)//Back through target agian @@ -152,6 +152,7 @@ RSF dispense_cost = 100 discriptor = "cookie-units" action_type = "Fabricates" + to_dispense = /obj/item/reagent_containers/food/snacks/cookie ///Tracks whether or not the cookiesynth is about to print a poisoned cookie var/toxin = FALSE //This might be better suited to some initialize fuckery, but I don't have a good "poisoned" sprite ///Holds a copy of world.time taken the last time the synth gained a charge. Used with cooldowndelay to track when the next charge should be gained diff --git a/code/game/objects/items/binoculars.dm b/code/game/objects/items/binoculars.dm index 97c3419f6fac..6d04e2e505ff 100644 --- a/code/game/objects/items/binoculars.dm +++ b/code/game/objects/items/binoculars.dm @@ -13,8 +13,8 @@ /obj/item/binoculars/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/binoculars/ComponentInitialize() . = ..() @@ -27,8 +27,8 @@ /obj/item/binoculars/proc/on_wield(obj/item/source, mob/user) SIGNAL_HANDLER - RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_walk) - RegisterSignal(user, COMSIG_ATOM_DIR_CHANGE, .proc/rotate) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_walk)) + RegisterSignal(user, COMSIG_ATOM_DIR_CHANGE, PROC_REF(rotate)) listeningTo = user user.visible_message("[user] holds [src] up to [user.p_their()] eyes.", "You hold [src] up to your eyes.") item_state = "binoculars_wielded" diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm index cc4fd287c8b7..59fef712b505 100644 --- a/code/game/objects/items/body_egg.dm +++ b/code/game/objects/items/body_egg.dm @@ -19,14 +19,14 @@ ADD_TRAIT(owner, TRAIT_XENO_HOST, TRAIT_GENERIC) ADD_TRAIT(owner, TRAIT_XENO_IMMUNE, "xeno immune") owner.med_hud_set_status() - INVOKE_ASYNC(src, .proc/AddInfectionImages, owner) + INVOKE_ASYNC(src, PROC_REF(AddInfectionImages), owner) /obj/item/organ/body_egg/Remove(mob/living/carbon/M, special = 0) if(owner) REMOVE_TRAIT(owner, TRAIT_XENO_HOST, TRAIT_GENERIC) REMOVE_TRAIT(owner, TRAIT_XENO_IMMUNE, "xeno immune") owner.med_hud_set_status() - INVOKE_ASYNC(src, .proc/RemoveInfectionImages, owner) + INVOKE_ASYNC(src, PROC_REF(RemoveInfectionImages), owner) ..() /obj/item/organ/body_egg/on_death() diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 2013c1e4e77e..52af9852be5c 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -5,6 +5,7 @@ icon = 'icons/obj/bodybag.dmi' icon_state = "bodybag_folded" w_class = WEIGHT_CLASS_SMALL + custom_materials = list(/datum/material/plastic = 4000) var/unfoldedbag_path = /obj/structure/closet/body_bag /obj/item/bodybag/attack_self(mob/user) @@ -44,7 +45,7 @@ /obj/item/bodybag/bluespace/Initialize() . = ..() - RegisterSignal(src, COMSIG_ATOM_CANREACH, .proc/CanReachReact) + RegisterSignal(src, COMSIG_ATOM_CANREACH, PROC_REF(CanReachReact)) /obj/item/bodybag/bluespace/examine(mob/user) . = ..() diff --git a/code/game/objects/items/broom.dm b/code/game/objects/items/broom.dm index 78ee6cc25d3c..b370c5ebc6c3 100644 --- a/code/game/objects/items/broom.dm +++ b/code/game/objects/items/broom.dm @@ -17,8 +17,8 @@ /obj/item/pushbroom/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/pushbroom/ComponentInitialize() . = ..() @@ -33,7 +33,7 @@ SIGNAL_HANDLER to_chat(user, "You brace the [src] against the ground in a firm sweeping stance.") - RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, .proc/sweep) + RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(sweep)) /// triggered on unwield of two handed item /obj/item/pushbroom/proc/on_unwield(obj/item/source, mob/user) diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index 8a84ae2b3a35..f44359ca656c 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -101,7 +101,7 @@ * * user The mob choosing a skin of the cardboard cutout */ /obj/item/cardboard_cutout/proc/change_appearance(obj/item/toy/crayon/crayon, mob/living/user) - var/new_appearance = show_radial_menu(user, src, possible_appearances, custom_check = CALLBACK(src, .proc/check_menu, user, crayon), radius = 36, require_near = TRUE) + var/new_appearance = show_radial_menu(user, src, possible_appearances, custom_check = CALLBACK(src, PROC_REF(check_menu), user, crayon), radius = 36, require_near = TRUE) if(!new_appearance) return FALSE if(!do_after(user, 10, FALSE, src, TRUE)) diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 58eba6e70e88..c4e48f1a629a 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -167,7 +167,7 @@ if(mapload && access_txt) access = text2access(access_txt) update_label() - RegisterSignal(src, COMSIG_ATOM_UPDATED_ICON, .proc/update_in_wallet) + RegisterSignal(src, COMSIG_ATOM_UPDATED_ICON, PROC_REF(update_in_wallet)) /obj/item/card/id/Destroy() if (registered_account) diff --git a/code/game/objects/items/cash.dm b/code/game/objects/items/cash.dm index 53a809d1cd0c..c906da16b606 100644 --- a/code/game/objects/items/cash.dm +++ b/code/game/objects/items/cash.dm @@ -17,7 +17,7 @@ grind_results = list(/datum/reagent/iron = 10) /obj/item/spacecash/Initialize(mapload, amount) - ..() + . = ..() if(amount) value = amount update_appearance() diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/chainsaw.dm index 8d0d89a88638..f9181ef3ac6a 100644 --- a/code/game/objects/items/chainsaw.dm +++ b/code/game/objects/items/chainsaw.dm @@ -25,8 +25,8 @@ /obj/item/chainsaw/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/chainsaw/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm index 772a80d6c0e4..29a8ff25c38a 100644 --- a/code/game/objects/items/charter.dm +++ b/code/game/objects/items/charter.dm @@ -57,7 +57,7 @@ to_chat(user, "Your name has been sent to your employers for approval.") // Autoapproves after a certain time - response_timer_id = addtimer(CALLBACK(src, .proc/rename_station, new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE) + response_timer_id = addtimer(CALLBACK(src, PROC_REF(rename_station), new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE) to_chat(GLOB.admins, "CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]") /obj/item/sector_charter/proc/reject_proposed(user) diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm index 61a174871de5..888bebac8095 100644 --- a/code/game/objects/items/chrono_eraser.dm +++ b/code/game/objects/items/chrono_eraser.dm @@ -134,6 +134,10 @@ if(istype(C)) gun = C.gun +/obj/projectile/energy/chrono_beam/Destroy() + gun = null + return ..() + /obj/projectile/energy/chrono_beam/on_hit(atom/target) if(target && gun && isliving(target)) var/obj/structure/chrono_field/F = new(target.loc, target, gun) @@ -152,7 +156,9 @@ gun = loc . = ..() - +/obj/item/ammo_casing/energy/chrono_beam/Destroy() + gun = null + return ..() diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 595c45ff9a9b..5ca8fa313c60 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -336,14 +336,6 @@ else if(drawing in graffiti|oriented) temp = "graffiti" - var/gang_mode - if(user.mind) - gang_mode = user.mind.has_antag_datum(/datum/antagonist/gang) - - if(gang_mode && (!can_claim_for_gang(user, target))) - return - - var/graf_rot if(drawing in oriented) switch(user.dir) @@ -375,9 +367,8 @@ if(paint_mode == PAINT_LARGE_HORIZONTAL) wait_time *= 3 - if(gang_mode || !instant) - if(!do_after(user, 50, target = target)) - return + if(!instant && !do_after(user, 50, target = target)) + return if(length(text_buffer)) drawing = text_buffer[1] @@ -387,34 +378,28 @@ if(actually_paints) var/obj/effect/decal/cleanable/crayon/C - if(gang_mode) - if(!can_claim_for_gang(user, target)) - return - tag_for_gang(user, target, gang_mode) - affected_turfs += target - else - switch(paint_mode) - if(PAINT_NORMAL) - C = new(target, paint_color, drawing, temp, graf_rot) - C.pixel_x = clickx - C.pixel_y = clicky + switch(paint_mode) + if(PAINT_NORMAL) + C = new(target, paint_color, drawing, temp, graf_rot) + C.pixel_x = clickx + C.pixel_y = clicky + affected_turfs += target + if(PAINT_LARGE_HORIZONTAL) + var/turf/left = locate(target.x-1,target.y,target.z) + var/turf/right = locate(target.x+1,target.y,target.z) + if(isValidSurface(left) && isValidSurface(right)) + C = new(left, paint_color, drawing, temp, graf_rot, PAINT_LARGE_HORIZONTAL_ICON) + affected_turfs += left + affected_turfs += right affected_turfs += target - if(PAINT_LARGE_HORIZONTAL) - var/turf/left = locate(target.x-1,target.y,target.z) - var/turf/right = locate(target.x+1,target.y,target.z) - if(isValidSurface(left) && isValidSurface(right)) - C = new(left, paint_color, drawing, temp, graf_rot, PAINT_LARGE_HORIZONTAL_ICON) - affected_turfs += left - affected_turfs += right - affected_turfs += target - else - to_chat(user, "There isn't enough space to paint!") - return - C.add_hiddenprint(user) - if(istagger) - C.AddComponent(/datum/component/art, GOOD_ART) - else - C.AddComponent(/datum/component/art, BAD_ART) + else + to_chat(user, "There isn't enough space to paint!") + return + C.add_hiddenprint(user) + if(istagger) + C.AddComponent(/datum/component/art, GOOD_ART) + else + C.AddComponent(/datum/component/art, BAD_ART) if(!instant) to_chat(user, "You finish drawing \the [temp].") @@ -479,19 +464,6 @@ // stolen from oldgang lmao return TRUE -/obj/item/toy/crayon/proc/tag_for_gang(mob/user, atom/target, datum/antagonist/gang/user_gang) - for(var/obj/effect/decal/cleanable/crayon/old_marking in target) - qdel(old_marking) - - var/area/territory = get_area(target) - - var/obj/effect/decal/cleanable/crayon/gang/tag = new /obj/effect/decal/cleanable/crayon/gang(target) - tag.my_gang = user_gang.my_gang - tag.icon_state = "[user_gang.gang_id]_tag" - tag.name = "[tag.my_gang.name] gang tag" - tag.desc = "Looks like someone's claimed this area for [tag.my_gang.name]." - to_chat(user, "You tagged [territory] for [tag.my_gang.name]!") - /obj/item/toy/crayon/proc/territory_claimed(area/territory, mob/user) for(var/obj/effect/decal/cleanable/crayon/gang/G in GLOB.gang_tags) if(get_area(G) == territory) diff --git a/code/game/objects/items/debug_items.dm b/code/game/objects/items/debug_items.dm index e800eaed6846..14edc15f7d18 100644 --- a/code/game/objects/items/debug_items.dm +++ b/code/game/objects/items/debug_items.dm @@ -64,7 +64,7 @@ "Scalpel" = image(icon = 'icons/obj/surgery.dmi', icon_state = "scalpel"), "Saw" = image(icon = 'icons/obj/surgery.dmi', icon_state = "saw") ) - var/tool_result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/tool_result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) if(!check_menu(user)) return switch(tool_result) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index bf61f194b9b7..32a62880d69c 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -221,7 +221,7 @@ return FALSE /obj/item/defibrillator/proc/cooldowncheck(mob/user) - addtimer(CALLBACK(src, .proc/finish_charging), cooldown_duration) + addtimer(CALLBACK(src, PROC_REF(finish_charging)), cooldown_duration) /obj/item/defibrillator/proc/finish_charging() if(cell) @@ -329,7 +329,7 @@ . = ..() if(!req_defib) return - RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/check_range) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(check_range)) /obj/item/shockpaddles/Moved() . = ..() @@ -369,8 +369,8 @@ /obj/item/shockpaddles/Initialize() . = ..() ADD_TRAIT(src, TRAIT_NO_STORAGE_INSERT, GENERIC_ITEM_TRAIT) //stops shockpaddles from being inserted in BoH - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) if(!req_defib) return //If it doesn't need a defib, just say it exists if (!loc || !istype(loc, /obj/item/defibrillator)) //To avoid weird issues from admin spawns diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index e7da99ab87e7..dff96fd8076d 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -364,7 +364,7 @@ GLOBAL_LIST_EMPTY(PDAs) if(41) //crew manifest dat += "

Crew Manifest

" dat += "
" - dat += SSjob.get_manifest_html() + dat += SSovermap.get_manifest_html() dat += "
" if(3) @@ -1097,7 +1097,7 @@ GLOBAL_LIST_EMPTY(PDAs) AM.emp_act(severity) if (!(. & EMP_PROTECT_SELF)) emped++ - addtimer(CALLBACK(src, .proc/emp_end), 200 * severity) + addtimer(CALLBACK(src, PROC_REF(emp_end)), 200 * severity) /obj/item/pda/proc/emp_end() emped-- diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm index 39b3545c1400..3b2d44d9d838 100644 --- a/code/game/objects/items/devices/PDA/PDA_types.dm +++ b/code/game/objects/items/devices/PDA/PDA_types.dm @@ -10,8 +10,8 @@ /obj/item/pda/clown/ComponentInitialize() . = ..() - AddComponent(/datum/component/slippery/clowning, 120, NO_SLIP_WHEN_WALKING, CALLBACK(src, .proc/AfterSlip)) - AddComponent(/datum/component/wearertargeting/sitcomlaughter, CALLBACK(src, .proc/after_sitcom_laugh)) + AddComponent(/datum/component/slippery/clowning, 120, NO_SLIP_WHEN_WALKING, CALLBACK(src, PROC_REF(AfterSlip))) + AddComponent(/datum/component/wearertargeting/sitcomlaughter, CALLBACK(src, PROC_REF(after_sitcom_laugh))) /obj/item/pda/clown/proc/AfterSlip(mob/living/carbon/human/M) if (istype(M) && (M.real_name != owner)) @@ -61,7 +61,7 @@ /obj/item/pda/ai/Initialize() . = ..() - RegisterSignal(src, COMSIG_PDA_CHECK_DETONATE, .proc/pda_no_detonate) + RegisterSignal(src, COMSIG_PDA_CHECK_DETONATE, PROC_REF(pda_no_detonate)) /obj/item/pda/medical name = "medical PDA" @@ -144,7 +144,7 @@ /obj/item/pda/captain/Initialize() . = ..() - RegisterSignal(src, COMSIG_PDA_CHECK_DETONATE, .proc/pda_no_detonate) + RegisterSignal(src, COMSIG_PDA_CHECK_DETONATE, PROC_REF(pda_no_detonate)) /obj/item/pda/cargo name = "cargo technician PDA" diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index d07a356107ff..65bda2aa1f54 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -233,7 +233,7 @@ Code: Send Signal
"} if (41) //crew manifest menu = "

[PDAIMG(notes)] Crew Manifest

" - menu += "
[SSjob.get_manifest_html()]
" + menu += "
[SSovermap.get_manifest_html()]
" if (42) //status displays @@ -486,7 +486,7 @@ Code: active1 = null if("Send Signal") - INVOKE_ASYNC(radio, /obj/item/integrated_signaler.proc/send_activation) + INVOKE_ASYNC(radio, TYPE_PROC_REF(/obj/item/integrated_signaler, send_activation)) if("Signal Frequency") var/new_frequency = sanitize_frequency(radio.frequency + text2num(href_list["sfreq"])) diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index f0714b01dddd..ce1860a53e87 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -60,7 +60,7 @@ /obj/item/aicard/ui_data() var/list/data = list() - if(AI) + if(!QDELETED(AI)) data["name"] = AI.name data["laws"] = AI.laws.get_law_list(include_zeroth = TRUE, render_html = FALSE) data["health"] = (AI.health + 100) / 2 diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 40a52a23c6c1..18038aadfe05 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -176,5 +176,7 @@ return /obj/effect/dummy/chameleon/Destroy() - master.disrupt(0) + if(master) + master.disrupt(0) + master = null return ..() diff --git a/code/game/objects/items/devices/desynchronizer.dm b/code/game/objects/items/devices/desynchronizer.dm index f5b7cd58fddb..ae57fe3d61eb 100644 --- a/code/game/objects/items/devices/desynchronizer.dm +++ b/code/game/objects/items/devices/desynchronizer.dm @@ -55,7 +55,7 @@ SEND_SIGNAL(AM, COMSIG_MOVABLE_SECLUDED_LOCATION) last_use = world.time icon_state = "desynchronizer-on" - resync_timer = addtimer(CALLBACK(src, .proc/resync), duration , TIMER_STOPPABLE) + resync_timer = addtimer(CALLBACK(src, PROC_REF(resync)), duration , TIMER_STOPPABLE) /obj/item/desynchronizer/proc/resync() new /obj/effect/temp_visual/desynchronizer(sync_holder.drop_location()) diff --git a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm index 3833b63d7ac7..8986f8443698 100644 --- a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm +++ b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm @@ -43,7 +43,7 @@ maptext = "[circuits]" icon_state = "[initial(icon_state)]_recharging" var/recharge_time = min(600, circuit_cost * 5) //40W of cost for one fabrication = 20 seconds of recharge time; this is to prevent spamming - addtimer(CALLBACK(src, .proc/recharge), recharge_time) + addtimer(CALLBACK(src, PROC_REF(recharge)), recharge_time) return TRUE //The actual circuit magic itself is done on a per-object basis /obj/item/electroadaptive_pseudocircuit/afterattack(atom/target, mob/living/user, proximity) diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm index 39d06ab5a8b6..6f489b706af6 100644 --- a/code/game/objects/items/devices/forcefieldprojector.dm +++ b/code/game/objects/items/devices/forcefieldprojector.dm @@ -95,8 +95,9 @@ /obj/structure/projected_forcefield/Destroy() visible_message("[src] flickers and disappears!") playsound(src,'sound/weapons/resonator_blast.ogg',25,TRUE) - generator.current_fields -= src - generator = null + if(generator) + generator.current_fields -= src + generator = null return ..() /obj/structure/projected_forcefield/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) @@ -105,4 +106,5 @@ /obj/structure/projected_forcefield/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) if(sound_effect) play_attack_sound(damage_amount, damage_type, damage_flag) - generator.shield_integrity = max(generator.shield_integrity - damage_amount, 0) + if(generator) + generator.shield_integrity = max(generator.shield_integrity - damage_amount, 0) diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 1b1177e137a7..4abc1a3786bb 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -38,6 +38,7 @@ soundloop = new(list(src), FALSE) /obj/item/geiger_counter/Destroy() + QDEL_NULL(soundloop) STOP_PROCESSING(SSobj, src) return ..() @@ -111,15 +112,14 @@ return ..() /obj/item/geiger_counter/proc/update_sound() - var/datum/looping_sound/geiger/loop = soundloop if(!scanning) - loop.stop() + soundloop.stop() return if(!radiation_count) - loop.stop() + soundloop.stop() return - loop.last_radiation = radiation_count - loop.start() + soundloop.last_radiation = radiation_count + soundloop.start() /obj/item/geiger_counter/rad_act(amount) . = ..() @@ -138,7 +138,7 @@ if(user.a_intent == INTENT_HELP) if(!(obj_flags & EMAGGED)) user.visible_message("[user] scans [target] with [src].", "You scan [target]'s radiation levels with [src]...") - addtimer(CALLBACK(src, .proc/scan, target, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents + addtimer(CALLBACK(src, PROC_REF(scan), target, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents else user.visible_message("[user] scans [target] with [src].", "You project [src]'s stored radiation into [target]!") target.rad_act(radiation_count) @@ -212,7 +212,7 @@ return if(listeningTo) UnregisterSignal(listeningTo, COMSIG_ATOM_RAD_ACT) - RegisterSignal(user, COMSIG_ATOM_RAD_ACT, .proc/redirect_rad_act) + RegisterSignal(user, COMSIG_ATOM_RAD_ACT, PROC_REF(redirect_rad_act)) listeningTo = user /obj/item/geiger_counter/cyborg/proc/redirect_rad_act(datum/source, amount) diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 2f3429995845..fa95991750ec 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -14,7 +14,7 @@ /obj/item/megaphone/equipped(mob/M, slot) . = ..() if (slot == ITEM_SLOT_HANDS) - RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech)) else UnregisterSignal(M, COMSIG_MOB_SAY) diff --git a/code/game/objects/items/devices/polycircuit.dm b/code/game/objects/items/devices/polycircuit.dm index 60027e378a88..be41de2c8411 100644 --- a/code/game/objects/items/devices/polycircuit.dm +++ b/code/game/objects/items/devices/polycircuit.dm @@ -1,5 +1,6 @@ /obj/item/stack/circuit_stack name = "polycircuit aggregate" + singular_name = "polycircuit" desc = "A dense, overdesigned cluster of electronics which attempted to function as a multipurpose circuit electronic. Circuits can be removed from it... if you don't bleed out in the process." icon_state = "circuit_mess" item_state = "rods" diff --git a/code/game/objects/items/devices/pressureplates.dm b/code/game/objects/items/devices/pressureplates.dm index 6368a4b3d17f..60cfe4eb89b3 100644 --- a/code/game/objects/items/devices/pressureplates.dm +++ b/code/game/objects/items/devices/pressureplates.dm @@ -31,10 +31,10 @@ sigdev.frequency = roundstart_signaller_freq AddElement(/datum/element/undertile, tile_overlay = tile_overlay, use_anchor = TRUE) - RegisterSignal(src, COMSIG_OBJ_HIDE, .proc/ToggleActive) + RegisterSignal(src, COMSIG_OBJ_HIDE, PROC_REF(ToggleActive)) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -50,7 +50,7 @@ else if(!trigger_item) return can_trigger = FALSE - addtimer(CALLBACK(src, .proc/trigger), trigger_delay) + addtimer(CALLBACK(src, PROC_REF(trigger)), trigger_delay) /obj/item/pressure_plate/proc/trigger() can_trigger = TRUE diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 35d8be6efa55..a91789c542cd 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -22,7 +22,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/item/radio/intercom, 31) var/area/current_area = get_area(src) if(!current_area) return - RegisterSignal(current_area, COMSIG_AREA_POWER_CHANGE, .proc/AreaPowerCheck) + RegisterSignal(current_area, COMSIG_AREA_POWER_CHANGE, PROC_REF(AreaPowerCheck)) /obj/item/radio/intercom/examine(mob/user) . = ..() @@ -167,6 +167,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/item/radio/intercom, 31) frequency = FREQ_WIDEBAND freqlock = TRUE freerange = TRUE + log = TRUE wallframe = /obj/item/wallframe/intercom/wideband /obj/item/radio/intercom/wideband/Initialize(mapload, ndir, building) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index a46f6e2ea55d..e95ab85cda9d 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -34,6 +34,8 @@ var/freqlock = FALSE // Frequency lock to stop the user from untuning specialist radios. var/use_command = FALSE // If true, broadcasts will be large and BOLD. var/command = FALSE // If true, use_command can be toggled at will. + var/log = FALSE // If true, the UI will display the voice log for the frequency + var/list/loglist = list() //the voice log // Encryption key handling var/obj/item/encryptionkey/keyslot @@ -140,6 +142,8 @@ data["useCommand"] = use_command data["subspace"] = subspace_transmission data["subspaceSwitchable"] = subspace_switchable + data["chatlog"] = log + data["chatloglist"] = loglist data["headset"] = FALSE return data @@ -196,7 +200,7 @@ spans = list(M.speech_span) if(!language) language = M.get_selected_language() - INVOKE_ASYNC(src, .proc/talk_into_impl, M, message, channel, spans.Copy(), language, message_mods) + INVOKE_ASYNC(src, PROC_REF(talk_into_impl), M, message, channel, spans.Copy(), language, message_mods) return ITALICS | REDUCE_RANGE /obj/item/radio/proc/talk_into_impl(atom/movable/M, message, channel, list/spans, datum/language/language, list/message_mods) @@ -268,7 +272,7 @@ // Non-subspace radios will check in a couple of seconds, and if the signal // was never received, send a mundane broadcast (no headsets). - addtimer(CALLBACK(src, .proc/backup_transmission, signal), 20) + addtimer(CALLBACK(src, PROC_REF(backup_transmission), signal), 20) /obj/item/radio/proc/backup_transmission(datum/signal/subspace/vocal/signal) var/turf/T = get_turf(src) @@ -363,7 +367,7 @@ for (var/ch_name in channels) channels[ch_name] = 0 on = FALSE - addtimer(CALLBACK(src, .proc/end_emp_effect, curremp), 200) + addtimer(CALLBACK(src, PROC_REF(end_emp_effect), curremp), 200) /obj/item/radio/proc/end_emp_effect(curremp) if(emped != curremp) //Don't fix it if it's been EMP'd again @@ -372,6 +376,11 @@ on = TRUE return TRUE +/obj/item/radio/proc/log_trim() + if(loglist.len <= 50) + return + loglist.Cut(51) + /////////////////////////////// //////////Borg Radios////////// /////////////////////////////// diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm index e04e2bdc422b..5d90c839bebf 100644 --- a/code/game/objects/items/devices/reverse_bear_trap.dm +++ b/code/game/objects/items/devices/reverse_bear_trap.dm @@ -43,7 +43,7 @@ soundloop.stop() soundloop2.stop() to_chat(loc, "*ding*") - addtimer(CALLBACK(src, .proc/snap), 2) + addtimer(CALLBACK(src, PROC_REF(snap)), 2) /obj/item/reverse_bear_trap/attack_hand(mob/user) if(iscarbon(user)) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index a082d6666de9..bb61ab2ef9af 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -592,19 +592,19 @@ GENE SCANNER if (T.slime_mutation[3] == T.slime_mutation[4]) if (T.slime_mutation[2] == T.slime_mutation[1]) to_render += "\nPossible mutation: [T.slime_mutation[3]]\ - \nGenetic destability: [T.mutation_chance/2] % chance of mutation on splitting" + \nGenetic destability: [T.mutation_chance/2] % chance of mutation on splitting" else to_render += "\nPossible mutations: [T.slime_mutation[1]], [T.slime_mutation[2]], [T.slime_mutation[3]] (x2)\ - \nGenetic destability: [T.mutation_chance] % chance of mutation on splitting" + \nGenetic destability: [T.mutation_chance] % chance of mutation on splitting" else to_render += "\nPossible mutations: [T.slime_mutation[1]], [T.slime_mutation[2]], [T.slime_mutation[3]], [T.slime_mutation[4]]\ - \nGenetic destability: [T.mutation_chance] % chance of mutation on splitting" + \nGenetic destability: [T.mutation_chance] % chance of mutation on splitting" if (T.cores > 1) to_render += "\nMultiple cores detected" to_render += "\nGrowth progress: [T.amount_grown]/[SLIME_EVOLUTION_THRESHOLD]" if(T.effectmod) to_render += "\nCore mutation in progress: [T.effectmod]\ - \nProgress in core mutation: [T.applied] / [(SLIME_EXTRACT_CROSSING_REQUIRED * T.crossbreed_modifier)]" + \nProgress in core mutation: [T.applied] / [(SLIME_EXTRACT_CROSSING_REQUIRED * T.crossbreed_modifier)]" to_chat(user, examine_block(to_render)) @@ -726,7 +726,7 @@ GENE SCANNER ready = FALSE icon_state = "[icon_state]_recharging" - addtimer(CALLBACK(src, .proc/recharge), cooldown, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(recharge)), cooldown, TIMER_UNIQUE) /obj/item/sequence_scanner/proc/recharge() icon_state = initial(icon_state) diff --git a/code/game/objects/items/devices/spyglasses.dm b/code/game/objects/items/devices/spyglasses.dm index 1c103b1dd950..1edec8edb7db 100644 --- a/code/game/objects/items/devices/spyglasses.dm +++ b/code/game/objects/items/devices/spyglasses.dm @@ -54,7 +54,7 @@ /obj/item/spy_bug/Initialize() . = ..() - tracker = new /datum/movement_detector(src, CALLBACK(src, .proc/update_view)) + tracker = new /datum/movement_detector(src, CALLBACK(src, PROC_REF(update_view))) cam_screen = new cam_screen.name = "screen" diff --git a/code/game/objects/items/devices/swapper.dm b/code/game/objects/items/devices/swapper.dm index b152504a3431..e1a5cbaf02e9 100644 --- a/code/game/objects/items/devices/swapper.dm +++ b/code/game/objects/items/devices/swapper.dm @@ -55,7 +55,7 @@ var/mob/holder = linked_swapper.loc to_chat(holder, "[linked_swapper] starts buzzing.") next_use = world.time + cooldown //only the one used goes on cooldown - addtimer(CALLBACK(src, .proc/swap, user), 25) + addtimer(CALLBACK(src, PROC_REF(swap), user), 25) /obj/item/swapper/examine(mob/user) . = ..() diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 3d054927d2c8..4f034824e2f4 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -89,7 +89,7 @@ effective or pretty fucking useless. addtimer(VARSET_CALLBACK(src, used, FALSE), cooldown) addtimer(VARSET_CALLBACK(src, icon_state, "health"), cooldown) to_chat(user, "Successfully irradiated [M].") - addtimer(CALLBACK(src, .proc/radiation_aftereffect, M), (wavelength+(intensity*4))*5) + addtimer(CALLBACK(src, PROC_REF(radiation_aftereffect), M), (wavelength+(intensity*4))*5) else to_chat(user, "The radioactive microlaser is still recharging.") diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 438b37fe5944..f6687ffec110 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -12,10 +12,16 @@ var/obj/item/tank/tank_one var/obj/item/tank/tank_two var/obj/item/assembly/attached_device - var/mob/attacher = null + var/datum/weakref/attacher_ref = null var/valve_open = FALSE var/toggle = TRUE +/obj/item/transfer_valve/Destroy() + QDEL_NULL(tank_one) + QDEL_NULL(tank_two) + QDEL_NULL(attached_device) + return ..() + /obj/item/transfer_valve/IsAssemblyHolder() return TRUE @@ -54,7 +60,7 @@ A.holder = src A.toggle_secure() //this calls update_appearance(), which calls update_appearance() on the holder (i.e. the bomb). log_bomber(user, "attached a [item.name] to a ttv -", src, null, FALSE) - attacher = user + attacher_ref = WEAKREF(user) return //These keep attached devices synced up, for example a TTV with a mouse trap being found in a bag so it's triggered, or moving the TTV with an infrared beam sensor to update the beam's direction. @@ -84,7 +90,7 @@ if(toggle) toggle = FALSE toggle_valve() - addtimer(CALLBACK(src, .proc/toggle_off), 5) //To stop a signal being spammed from a proxy sensor constantly going off or whatever + addtimer(CALLBACK(src, PROC_REF(toggle_off)), 5) //To stop a signal being spammed from a proxy sensor constantly going off or whatever /obj/item/transfer_valve/proc/toggle_off() toggle = TRUE @@ -157,6 +163,7 @@ var/admin_attachment_message var/attachment_message if(attachment) + var/mob/attacher = attacher_ref.resolve() admin_attachment_message = " with [attachment] attached by [attacher ? ADMIN_LOOKUPFLW(attacher) : "Unknown"]" attachment_message = " with [attachment] attached by [attacher ? key_name_admin(attacher) : "Unknown"]" @@ -174,7 +181,7 @@ merge_gases() for(var/i in 1 to 6) - addtimer(CALLBACK(src, /atom/.proc/update_appearance), 20 + (i - 1) * 10) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_appearance)), 20 + (i - 1) * 10) else if(valve_open && tank_one && tank_two) split_gases() diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm index 631466b3240a..c81cbd02bf2b 100644 --- a/code/game/objects/items/dice.dm +++ b/code/game/objects/items/dice.dm @@ -175,8 +175,10 @@ diceroll(user) /obj/item/dice/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - diceroll(thrownby) - . = ..() + var/mob/thrown_by = thrownby?.resolve() + if(thrown_by) + diceroll(thrown_by) + return ..() /obj/item/dice/proc/diceroll(mob/user) result = roll(sides) diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm index 39fe7d490320..dc49ee2dc6ae 100644 --- a/code/game/objects/items/dualsaber.dm +++ b/code/game/objects/items/dualsaber.dm @@ -70,8 +70,8 @@ /obj/item/dualsaber/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) if(LAZYLEN(possible_colors)) saber_color = pick(possible_colors) switch(saber_color) @@ -102,10 +102,10 @@ impale(user) return if(wielded && prob(50)) - INVOKE_ASYNC(src, .proc/jedi_spin, user) + INVOKE_ASYNC(src, PROC_REF(jedi_spin), user) /obj/item/dualsaber/proc/jedi_spin(mob/living/user) - dance_rotate(user, CALLBACK(user, /mob.proc/dance_flip)) + dance_rotate(user, CALLBACK(user, TYPE_PROC_REF(/mob, dance_flip))) /obj/item/dualsaber/proc/impale(mob/living/user) to_chat(user, "You twirl around a bit before losing your balance and impaling yourself on [src].") @@ -144,7 +144,7 @@ playsound(loc, hitsound, get_clamped_volume(), TRUE, -1) add_fingerprint(user) // Light your candles while spinning around the room - INVOKE_ASYNC(src, .proc/jedi_spin, user) + INVOKE_ASYNC(src, PROC_REF(jedi_spin), user) /obj/item/dualsaber/green possible_colors = list("green") diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm index 7554614495ae..111dd3aa96bc 100644 --- a/code/game/objects/items/eightball.dm +++ b/code/game/objects/items/eightball.dm @@ -64,7 +64,7 @@ say(answer) on_cooldown = TRUE - addtimer(CALLBACK(src, .proc/clear_cooldown), cooldown_time) + addtimer(CALLBACK(src, PROC_REF(clear_cooldown)), cooldown_time) shaking = FALSE diff --git a/code/game/objects/items/energyhalberd.dm b/code/game/objects/items/energyhalberd.dm index fb03f24fbeb6..416964bbfded 100644 --- a/code/game/objects/items/energyhalberd.dm +++ b/code/game/objects/items/energyhalberd.dm @@ -76,8 +76,8 @@ /obj/item/energyhalberd/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_halberdwield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_halberdunwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_halberdwield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_halberdunwield)) if(LAZYLEN(possible_colors)) halberd_color = pick(possible_colors) switch(halberd_color) diff --git a/code/game/objects/items/etherealdiscoball.dm b/code/game/objects/items/etherealdiscoball.dm index a695bd70e410..94f1ae2a6062 100644 --- a/code/game/objects/items/etherealdiscoball.dm +++ b/code/game/objects/items/etherealdiscoball.dm @@ -59,7 +59,7 @@ set_light(range, power, current_color) add_atom_colour("#[current_color]", FIXED_COLOUR_PRIORITY) update_appearance() - TimerID = addtimer(CALLBACK(src, .proc/DiscoFever), 5, TIMER_STOPPABLE) //Call ourselves every 0.5 seconds to change colors + TimerID = addtimer(CALLBACK(src, PROC_REF(DiscoFever)), 5, TIMER_STOPPABLE) //Call ourselves every 0.5 seconds to change colors /obj/structure/etherealball/update_icon_state() icon_state = "ethdisco_head_[TurnedOn]" diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index 75f96e4786ad..106ee2a50525 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -148,7 +148,7 @@ if(user.buckled && isobj(user.buckled) && !user.buckled.anchored) var/obj/B = user.buckled var/movementdirection = turn(direction,180) - addtimer(CALLBACK(src, /obj/item/extinguisher/proc/move_chair, B, movementdirection), 1) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/extinguisher, move_chair), B, movementdirection), 1) else user.newtonian_move(turn(direction, 180)) @@ -176,7 +176,7 @@ reagents.trans_to(W,1, transfered_by = user) //Make em move dat ass, hun - addtimer(CALLBACK(src, /obj/item/extinguisher/proc/move_particles, water_particles), 2) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/extinguisher, move_particles), water_particles), 2) //Particle movement loop /obj/item/extinguisher/proc/move_particles(list/particles, repetition=0) @@ -198,7 +198,7 @@ particles -= W if(repetition < power) repetition++ - addtimer(CALLBACK(src, /obj/item/extinguisher/proc/move_particles, particles, repetition), 2) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/extinguisher, move_particles), particles, repetition), 2) //Chair movement loop /obj/item/extinguisher/proc/move_chair(obj/B, movementdirection, repetition=0) @@ -216,7 +216,7 @@ return repetition++ - addtimer(CALLBACK(src, /obj/item/extinguisher/proc/move_chair, B, movementdirection, repetition), timer_seconds) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/extinguisher, move_chair), B, movementdirection, repetition), timer_seconds) /obj/item/extinguisher/AltClick(mob/user) if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user))) diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/fireaxe.dm index 8203880b2b27..b2e5534a92b0 100644 --- a/code/game/objects/items/fireaxe.dm +++ b/code/game/objects/items/fireaxe.dm @@ -23,8 +23,8 @@ /obj/item/fireaxe/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/fireaxe/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index 7412c1892676..6a1e439422a4 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -213,8 +213,8 @@ if(get_dist(src, turf_target) > FLAMETHROWER_RANGE) //thiss shit doesnt work aaaaa flamer_proj.range = FLAMETHROWER_RANGE - RegisterSignal(flamer_proj, COMSIG_MOVABLE_MOVED, .proc/handle_flaming) - RegisterSignal(flamer_proj, COMSIG_PARENT_QDELETING, .proc/stop_operating) + RegisterSignal(flamer_proj, COMSIG_MOVABLE_MOVED, PROC_REF(handle_flaming)) + RegisterSignal(flamer_proj, COMSIG_PARENT_QDELETING, PROC_REF(stop_operating)) flamer_proj.fire() //off it goes diff --git a/code/game/objects/items/grenades/antigravity.dm b/code/game/objects/items/grenades/antigravity.dm index 313b91acd71b..1c3bc9d5034c 100644 --- a/code/game/objects/items/grenades/antigravity.dm +++ b/code/game/objects/items/grenades/antigravity.dm @@ -13,6 +13,6 @@ for(var/turf/T in view(range,src)) T.AddElement(/datum/element/forced_gravity, forced_value) - addtimer(CALLBACK(T, /datum/.proc/_RemoveElement, list(forced_value)), duration) + addtimer(CALLBACK(T, TYPE_PROC_REF(/datum, _RemoveElement), list(forced_value)), duration) resolve() diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 5d42e6b7d469..b675a0012152 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -172,7 +172,7 @@ landminemode.activate() return active = TRUE - addtimer(CALLBACK(src, .proc/prime), isnull(delayoverride)? det_time : delayoverride) + addtimer(CALLBACK(src, PROC_REF(prime)), isnull(delayoverride)? det_time : delayoverride) /obj/item/grenade/chem_grenade/prime() if(stage != GRENADE_READY) @@ -298,7 +298,7 @@ chem_splash(get_turf(src), affected_area, list(reactants), ignition_temp, threatscale) var/turf/DT = get_turf(src) - addtimer(CALLBACK(src, .proc/prime), det_time) + addtimer(CALLBACK(src, PROC_REF(prime)), det_time) log_game("A grenade detonated at [AREACOORD(DT)]") diff --git a/code/game/objects/items/grenades/clusterbuster.dm b/code/game/objects/items/grenades/clusterbuster.dm index 6e4687d72c32..5326b303d977 100644 --- a/code/game/objects/items/grenades/clusterbuster.dm +++ b/code/game/objects/items/grenades/clusterbuster.dm @@ -58,7 +58,7 @@ var/steps = rand(1,4) for(var/i in 1 to steps) step_away(src,loc) - addtimer(CALLBACK(src, .proc/prime), rand(15,60)) + addtimer(CALLBACK(src, PROC_REF(prime)), rand(15,60)) /obj/item/grenade/clusterbuster/segment/prime() new payload_spawner(drop_location(), payload, rand(min_spawned,max_spawned)) @@ -70,7 +70,8 @@ ///////////////////////////////// /obj/effect/payload_spawner/Initialize(mapload, type, numspawned) ..() - spawn_payload(type, numspawned) + if(type && isnum(numspawned)) + spawn_payload(type, numspawned) return INITIALIZE_HINT_QDEL /obj/effect/payload_spawner/proc/spawn_payload(type, numspawned) @@ -78,7 +79,7 @@ var/obj/item/grenade/P = new type(loc) if(istype(P)) P.active = TRUE - addtimer(CALLBACK(P, /obj/item/grenade/proc/prime), rand(15,60)) + addtimer(CALLBACK(P, TYPE_PROC_REF(/obj/item/grenade, prime)), rand(15,60)) var/steps = rand(1,4) for(var/i in 1 to steps) step_away(src,loc) @@ -107,7 +108,7 @@ var/chosen = pick(subtypesof(/obj/item/slime_extract)) var/obj/item/slime_extract/P = new chosen(loc) if(volatile) - addtimer(CALLBACK(P, /obj/item/slime_extract/proc/activate_slime), rand(15,60)) + addtimer(CALLBACK(P, TYPE_PROC_REF(/obj/item/slime_extract, activate_slime)), rand(15,60)) var/steps = rand(1,4) for(var/i in 1 to steps) step_away(src,loc) diff --git a/code/game/objects/items/grenades/discogrenade.dm b/code/game/objects/items/grenades/discogrenade.dm index 181feff62147..be2ec68f0cb1 100644 --- a/code/game/objects/items/grenades/discogrenade.dm +++ b/code/game/objects/items/grenades/discogrenade.dm @@ -55,7 +55,7 @@ var/launch_distance = rand(2, 6) for(var/i in 1 to launch_distance) step_away(src, loc) - addtimer(CALLBACK(src, .proc/prime), rand(10, 60)) + addtimer(CALLBACK(src, PROC_REF(prime)), rand(10, 60)) randomiseLightColor() /obj/item/grenade/discogrenade/subgrenade/prime(mob/living/lanced_by) @@ -84,7 +84,7 @@ set_light(range, power, lightcolor) add_atom_colour("#[lightcolor]", FIXED_COLOUR_PRIORITY) update_appearance() - timerID = addtimer(CALLBACK(src, .proc/randomiseLightColor), 2, TIMER_STOPPABLE) + timerID = addtimer(CALLBACK(src, PROC_REF(randomiseLightColor)), 2, TIMER_STOPPABLE) /obj/item/grenade/discogrenade/subgrenade/proc/forcedance(turf/target_turf , mob/living/carbon/human/target) if(!target_turf) diff --git a/code/game/objects/items/grenades/festive.dm b/code/game/objects/items/grenades/festive.dm index bffc31db28fd..c6200d69ae9e 100644 --- a/code/game/objects/items/grenades/festive.dm +++ b/code/game/objects/items/grenades/festive.dm @@ -47,7 +47,7 @@ /obj/item/sparkler/Destroy() STOP_PROCESSING(SSobj, src) - ..() + return ..() /obj/item/sparkler/ignition_effect(atom/A, mob/user) . = "[user] gracefully lights [A] with [src]." @@ -106,7 +106,7 @@ playsound(src, 'sound/effects/fuse.ogg', volume, TRUE) active = TRUE icon_state = initial(icon_state) + "_active" - addtimer(CALLBACK(src, .proc/prime), isnull(delayoverride)? det_time : delayoverride) + addtimer(CALLBACK(src, PROC_REF(prime)), isnull(delayoverride)? det_time : delayoverride) /obj/item/grenade/firecracker/prime() . = ..() diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index cf5fab1d4a0a..f0198b7f1a0b 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -95,7 +95,7 @@ active = TRUE icon_state = initial(icon_state) + "_active" SEND_SIGNAL(src, COMSIG_GRENADE_ARMED, det_time, delayoverride) - addtimer(CALLBACK(src, .proc/prime), isnull(delayoverride)? det_time : delayoverride) + addtimer(CALLBACK(src, PROC_REF(prime)), isnull(delayoverride)? det_time : delayoverride) /obj/item/grenade/proc/prime() if(shrapnel_type && shrapnel_radius && !shrapnel_initialized) // add a second check for adding the component in case whatever triggered the grenade went straight to prime (badminnery for example) diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index 87dd83ffbcf2..f3f891bad11d 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -28,10 +28,9 @@ AddComponent(/datum/component/empprotection, EMP_PROTECT_WIRES) /obj/item/grenade/c4/Destroy() - qdel(wires) - wires = null + QDEL_NULL(wires) target = null - ..() + return ..() /obj/item/grenade/c4/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_SCREWDRIVER) @@ -110,7 +109,7 @@ target.add_overlay(plastic_overlay) to_chat(user, "You plant the bomb. Timer counting down from [det_time].") - addtimer(CALLBACK(src, .proc/prime), det_time*10) + addtimer(CALLBACK(src, PROC_REF(prime)), det_time*10) // X4 is an upgraded directional variant of c4 which is relatively safe to be standing next to. And much less safe to be standing on the other side of. // C4 is intended to be used for infiltration, and destroying tech. X4 is intended to be used for heavy breaching and tight spaces. diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 764bf8a61ccd..627f3298ccd4 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -240,7 +240,7 @@ update_appearance() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -309,7 +309,7 @@ /obj/item/restraints/legcuffs/beartrap/energy/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/dissipate), 100) + addtimer(CALLBACK(src, PROC_REF(dissipate)), 100) /obj/item/restraints/legcuffs/beartrap/energy/proc/dissipate() if(!ismob(loc)) diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index a1612fd7c4dd..a9f9e792c962 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -230,7 +230,7 @@ nullrod_icons += list(initial(rodtype.name) = image(icon = initial(rodtype.icon), icon_state = initial(rodtype.icon_state))) nullrod_icons = sortList(nullrod_icons) - var/choice = show_radial_menu(M, src , nullrod_icons, custom_check = CALLBACK(src, .proc/check_menu, M), radius = 42, require_near = TRUE) + var/choice = show_radial_menu(M, src , nullrod_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), M), radius = 42, require_near = TRUE) if(!choice || !check_menu(M)) return diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index 915c7e36cc90..e3f21a70463e 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -139,7 +139,7 @@ ADD_TRAIT(src, TRAIT_NODROP, HOT_POTATO_TRAIT) name = "primed [name]" activation_time = timer + world.time - detonation_timerid = addtimer(CALLBACK(src, .proc/detonate), delay, TIMER_STOPPABLE) + detonation_timerid = addtimer(CALLBACK(src, PROC_REF(detonate)), delay, TIMER_STOPPABLE) START_PROCESSING(SSfastprocess, src) if(user) log_bomber(user, "has primed a", src, "for detonation (Timer:[delay],Explosive:[detonate_explosion],Range:[detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range])") diff --git a/code/game/objects/items/hourglass.dm b/code/game/objects/items/hourglass.dm index acfe971b0337..8dd464481a15 100644 --- a/code/game/objects/items/hourglass.dm +++ b/code/game/objects/items/hourglass.dm @@ -35,7 +35,7 @@ /obj/item/hourglass/proc/start() finish_time = world.time + time - timing_id = addtimer(CALLBACK(src, .proc/finish), time, TIMER_STOPPABLE) + timing_id = addtimer(CALLBACK(src, PROC_REF(finish)), time, TIMER_STOPPABLE) countdown.start() timing_animation() diff --git a/code/game/objects/items/implants/implant_mindshield.dm b/code/game/objects/items/implants/implant_mindshield.dm index 78732e7e944c..121fa9f0c234 100644 --- a/code/game/objects/items/implants/implant_mindshield.dm +++ b/code/game/objects/items/implants/implant_mindshield.dm @@ -27,17 +27,6 @@ target.mind.remove_antag_datum(/datum/antagonist/brainwashed) deconverted = TRUE - if(target.mind.has_antag_datum(/datum/antagonist/rev/head)|| target.mind.unconvertable) - if(!silent) - target.visible_message("[target] seems to resist the implant!", "You feel something interfering with your mental conditioning, but you resist it!") - removed(target, 1) - qdel(src) - return TRUE //the implant is still used - - var/datum/antagonist/rev/rev = target.mind.has_antag_datum(/datum/antagonist/rev) - if(rev) - deconverted = TRUE - rev.remove_revolutionary(FALSE, user) if(!silent) if(target.mind in SSticker.mode.cult) to_chat(target, "You feel something interfering with your mental conditioning, but you resist it!") diff --git a/code/game/objects/items/implants/implant_stealth.dm b/code/game/objects/items/implants/implant_stealth.dm index d225e7180db8..893721e7a49b 100644 --- a/code/game/objects/items/implants/implant_stealth.dm +++ b/code/game/objects/items/implants/implant_stealth.dm @@ -33,7 +33,7 @@ /obj/structure/closet/cardboard/agent/proc/reveal() alpha = 255 - addtimer(CALLBACK(src, .proc/go_invisible), 10, TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(go_invisible)), 10, TIMER_OVERRIDE|TIMER_UNIQUE) /obj/structure/closet/cardboard/agent/Bump(atom/A) . = ..() diff --git a/code/game/objects/items/implants/implant_track.dm b/code/game/objects/items/implants/implant_track.dm index d0455905eb9b..a83d69c53145 100644 --- a/code/game/objects/items/implants/implant_track.dm +++ b/code/game/objects/items/implants/implant_track.dm @@ -2,8 +2,12 @@ name = "tracking implant" desc = "Track with this." activated = FALSE - var/lifespan_postmortem = 6000 //for how many deciseconds after user death will the implant work? - var/allow_teleport = TRUE //will people implanted with this act as teleporter beacons? + ///for how many deciseconds after user death will the implant work? + var/lifespan_postmortem = 6000 + ///will people implanted with this act as teleporter beacons? + var/allow_teleport = TRUE + ///The id of the timer that's qdeleting us + var/timerid /obj/item/implant/tracking/c38 name = "TRAC implant" @@ -13,7 +17,11 @@ /obj/item/implant/tracking/c38/Initialize() . = ..() - QDEL_IN(src, lifespan) + timerid = QDEL_IN(src, lifespan) + +/obj/item/implant/tracking/c38/Destroy() + deltimer(timerid) + return ..() /obj/item/implant/tracking/New() ..() diff --git a/code/game/objects/items/implants/implantchair.dm b/code/game/objects/items/implants/implantchair.dm index e8122bd34263..504c07299c45 100644 --- a/code/game/objects/items/implants/implantchair.dm +++ b/code/game/objects/items/implants/implantchair.dm @@ -77,10 +77,10 @@ ready_implants-- if(!replenishing && auto_replenish) replenishing = TRUE - addtimer(CALLBACK(src,.proc/replenish),replenish_cooldown) + addtimer(CALLBACK(src, PROC_REF(replenish)),replenish_cooldown) if(injection_cooldown > 0) ready = FALSE - addtimer(CALLBACK(src,.proc/set_ready),injection_cooldown) + addtimer(CALLBACK(src, PROC_REF(set_ready)),injection_cooldown) else playsound(get_turf(src), 'sound/machines/buzz-sigh.ogg', 25, TRUE) update_appearance() diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 0775e43d93f7..b500eadca2f2 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -239,6 +239,10 @@ spark_system.set_up(5, 0, src) spark_system.attach(src) +/obj/item/melee/transforming/energy/blade/Destroy() + QDEL_NULL(spark_system) + return ..() + /obj/item/melee/transforming/energy/blade/transform_weapon(mob/living/user, supress_message_text) return diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 16404d1d13bd..153c3a75564d 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -254,7 +254,7 @@ if(!iscarbon(user)) target.LAssailant = null else - target.LAssailant = user + target.LAssailant = WEAKREF(user) cooldown_check = world.time + cooldown else var/wait_desc = get_wait_description() diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index 8ae9a34e2dee..487d5d2c96ca 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -61,7 +61,7 @@ msg = "You hear something crackle in your ears for a moment before a voice speaks. \"Please stand by for a message from Central Command. Message as follows: Item request received. Your package is inbound, please stand back from the landing site. Message ends.\"" to_chat(M, msg) - new /obj/effect/DPtarget(get_turf(src), pod) + new /obj/effect/pod_landingzone(get_turf(src), pod) /obj/item/choice_beacon/hero name = "heroic beacon" diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index 3f8d0210442d..f0cb02fa8e02 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -97,8 +97,8 @@ var/refill_rate = 1 //Rate per process() tick mop refills itself var/refill_reagent = /datum/reagent/water //Determins what reagent to use for refilling, just in case someone wanted to make a HOLY MOP OF PURGING -/obj/item/mop/advanced/New() - ..() +/obj/item/mop/advanced/Initialize() + . = ..() START_PROCESSING(SSobj, src) /obj/item/mop/advanced/attack_self(mob/user) @@ -111,7 +111,6 @@ playsound(user, 'sound/machines/click.ogg', 30, TRUE) /obj/item/mop/advanced/process() - if(reagents.total_volume < mopcap) reagents.add_reagent(refill_reagent, refill_rate) diff --git a/code/game/objects/items/pitchfork.dm b/code/game/objects/items/pitchfork.dm index 401007c824b0..05183ed479db 100644 --- a/code/game/objects/items/pitchfork.dm +++ b/code/game/objects/items/pitchfork.dm @@ -18,8 +18,8 @@ /obj/item/pitchfork/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/pitchfork/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm index 2582f91860b2..f88df8429912 100644 --- a/code/game/objects/items/puzzle_pieces.dm +++ b/code/game/objects/items/puzzle_pieces.dm @@ -225,7 +225,7 @@ AddElement(/datum/element/undertile, tile_overlay = tile_overlay) //we remove use_anchor here, so it ALWAYS stays anchored var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 47a4120061b4..f12137df7531 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -367,7 +367,7 @@ if(charging) return if(candy < candymax) - addtimer(CALLBACK(src, .proc/charge_lollipops), charge_delay) + addtimer(CALLBACK(src, PROC_REF(charge_lollipops)), charge_delay) charging = TRUE /obj/item/borg/lollipop/proc/charge_lollipops() @@ -550,7 +550,7 @@ var/energy_recharge_cyborg_drain_coefficient = 0.4 var/cyborg_cell_critical_percentage = 0.05 var/mob/living/silicon/robot/host = null - var/datum/proximity_monitor/advanced/dampening_field + var/datum/proximity_monitor/advanced/peaceborg_dampener/dampening_field var/projectile_damage_coefficient = 0.5 var/projectile_damage_tick_ecost_coefficient = 2 //Lasers get half their damage chopped off, drains 50 power/tick. Note that fields are processed 5 times per second. var/projectile_speed_coefficient = 1.5 //Higher the coefficient slower the projectile. @@ -600,10 +600,9 @@ /obj/item/borg/projectile_dampen/proc/activate_field() if(istype(dampening_field)) QDEL_NULL(dampening_field) - dampening_field = make_field(/datum/proximity_monitor/advanced/peaceborg_dampener, list("current_range" = field_radius, "host" = src, "projector" = src)) var/mob/living/silicon/robot/owner = get_host() - if(owner) - owner.module.allow_riding = FALSE + dampening_field = new(owner, field_radius, TRUE, src) + owner?.module.allow_riding = FALSE active = TRUE /obj/item/borg/projectile_dampen/proc/deactivate_field() @@ -644,11 +643,6 @@ /obj/item/borg/projectile_dampen/process() process_recharge() process_usage() - update_location() - -/obj/item/borg/projectile_dampen/proc/update_location() - if(dampening_field) - dampening_field.HandleMove() /obj/item/borg/projectile_dampen/proc/process_usage() var/usage = 0 @@ -756,7 +750,7 @@ /obj/item/borg/apparatus/Initialize() . = ..() - RegisterSignal(loc.loc, COMSIG_BORG_SAFE_DECONSTRUCT, .proc/safedecon) + RegisterSignal(loc.loc, COMSIG_BORG_SAFE_DECONSTRUCT, PROC_REF(safedecon)) /obj/item/borg/apparatus/Destroy() if(stored) @@ -805,7 +799,7 @@ var/obj/item/O = A O.forceMove(src) stored = O - RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, .proc/on_update_icon) + RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, TYPE_PROC_REF(/atom, update_icon)) update_appearance() return else @@ -838,7 +832,7 @@ /obj/item/borg/apparatus/beaker/Initialize() . = ..() stored = new /obj/item/reagent_containers/glass/beaker/large(src) - RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, .proc/on_update_icon) + RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, TYPE_PROC_REF(/atom, update_icon)) update_appearance() /obj/item/borg/apparatus/beaker/Destroy() @@ -898,7 +892,7 @@ /obj/item/borg/apparatus/beaker/service/Initialize() . = ..() stored = new /obj/item/reagent_containers/food/drinks/drinkingglass(src) - RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, .proc/on_update_icon) + RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, TYPE_PROC_REF(/atom, update_icon)) update_appearance() //////////////////// diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm index e2803060e4eb..04d7629623b5 100644 --- a/code/game/objects/items/singularityhammer.dm +++ b/code/game/objects/items/singularityhammer.dm @@ -19,8 +19,8 @@ /obj/item/singularityhammer/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) START_PROCESSING(SSobj, src) /obj/item/singularityhammer/ComponentInitialize() @@ -103,8 +103,8 @@ /obj/item/mjollnir/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/mjollnir/ComponentInitialize() . = ..() diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm index e5ea0b1b8229..be6b9d3a5a14 100644 --- a/code/game/objects/items/spear.dm +++ b/code/game/objects/items/spear.dm @@ -52,8 +52,8 @@ /obj/item/spear/explosive/Initialize(mapload) . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) set_explosive(new /obj/item/grenade/iedcasing/spawned()) //For admin-spawned explosive lances /obj/item/spear/explosive/ComponentInitialize() diff --git a/code/game/objects/items/stacks/license_plates.dm b/code/game/objects/items/stacks/license_plates.dm index 1a5cb1b05eeb..acf831cff409 100644 --- a/code/game/objects/items/stacks/license_plates.dm +++ b/code/game/objects/items/stacks/license_plates.dm @@ -1,5 +1,6 @@ /obj/item/stack/license_plates - name = "invalid plate" + name = "invalid plates" + singular_name = "invalid plate" desc = "someone fucked up" icon = 'icons/obj/machines/prison.dmi' icon_state = "empty_plate" @@ -7,14 +8,16 @@ max_amount = 50 /obj/item/stack/license_plates/empty - name = "empty license plate" + name = "empty license plates" + singular_name = "empty licence plate" desc = "Instead of a license plate number, this could contain a quote like \"Live laugh love\"." /obj/item/stack/license_plates/empty/fifty amount = 50 /obj/item/stack/license_plates/filled - name = "license plate" + name = "license plates" + singular_name = "license plate" desc = "Prison labor paying off." icon_state = "filled_plate_1_1" diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 5ed78815b3f4..f4aff30791f8 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -303,7 +303,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( SSblackbox.record_feedback("tally", "station_mess_created", 1, name) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index f72e588d8e04..f835bb776256 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -18,6 +18,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("double bed", /obj/structure/bed/double, 4, one_per_turf = TRUE, on_floor = TRUE), \ null, \ new/datum/stack_recipe_list("office chairs", list( \ new/datum/stack_recipe("gray office chair", /obj/structure/chair/office, 5, one_per_turf = TRUE, on_floor = TRUE), \ @@ -40,6 +41,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ )), null, \ new/datum/stack_recipe("rack parts", /obj/item/rack_parts), \ + new/datum/stack_recipe("crate shelf parts", /obj/item/rack_parts/shelf), \ new/datum/stack_recipe_list("closets", list( new/datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = TRUE, on_floor = TRUE), new/datum/stack_recipe("emergency closet", /obj/structure/closet/emcloset/empty, 2, time = 15, one_per_turf = TRUE, on_floor = TRUE), @@ -751,18 +753,6 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra /obj/item/stack/sheet/paperframes/fifty amount = 50 -/obj/item/stack/sheet/capitalisium - name = "capitalisium sheet" - desc = "A source of raw capitalism, capable of bringing forth the prophesized Capitalist Golem." - icon_state = "sheet-capitalisium" - merge_type = /obj/item/stack/sheet/capitalisium - -/obj/item/stack/sheet/stalinium - name = "stalinium sheet" - desc = "A source of raw socialism, capable of bringing forth the prophesized Soviet Golem." - icon_state = "sheet-stalinium" - merge_type = /obj/item/stack/sheet/stalinium - /obj/item/stack/sheet/meat name = "meat sheets" desc = "Something's bloody meat compressed into a nice solid sheet." diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index ec750eb66aca..5653b641c99d 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -59,7 +59,7 @@ if(item_stack == src) continue if(can_merge(item_stack)) - INVOKE_ASYNC(src, .proc/merge_without_del, item_stack) + INVOKE_ASYNC(src, PROC_REF(merge_without_del), item_stack) if(is_zero_amount(delete_if_zero = FALSE)) return INITIALIZE_HINT_QDEL var/list/temp_recipes = get_main_recipes() @@ -75,7 +75,7 @@ update_appearance() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_movable_entered_occupied_turf, + COMSIG_ATOM_ENTERED = PROC_REF(on_movable_entered_occupied_turf), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -156,7 +156,7 @@ "res_amount" = R.res_amount, "max_res_amount" = R.max_res_amount, "req_amount" = R.req_amount, - "ref" = "\ref[R]", + "ref" = text_ref(R), ) /** @@ -443,7 +443,7 @@ return if(!arrived.throwing && can_merge(arrived)) - INVOKE_ASYNC(src, .proc/merge, arrived) + INVOKE_ASYNC(src, PROC_REF(merge), arrived) /obj/item/stack/hitby(atom/movable/hitting, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) if(can_merge(hitting, TRUE)) diff --git a/code/game/objects/items/stacks/tape.dm b/code/game/objects/items/stacks/tape.dm index 5aa42bb0b4c6..92fe31d32a98 100644 --- a/code/game/objects/items/stacks/tape.dm +++ b/code/game/objects/items/stacks/tape.dm @@ -152,11 +152,11 @@ if(C == user) playsound(loc, usesound, 30, TRUE, -2) user.visible_message("[user] starts to apply \the [src] on [user.p_them()]self...", "You begin applying \the [src] on yourself...") - if(!do_mob(user, C, self_delay, extra_checks=CALLBACK(C, /mob/living/proc/can_inject, user, TRUE))) + if(!do_mob(user, C, self_delay, extra_checks=CALLBACK(C, TYPE_PROC_REF(/mob/living, can_inject), user, TRUE))) return else if(other_delay) user.visible_message("[user] starts to apply \the [src] on [C].", "You begin applying \the [src] on [C]...") - if(!do_mob(user, C, other_delay, extra_checks=CALLBACK(C, /mob/living/proc/can_inject, user, TRUE))) + if(!do_mob(user, C, other_delay, extra_checks=CALLBACK(C, TYPE_PROC_REF(/mob/living, can_inject), user, TRUE))) return if(heal(C, user)) diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm index 7890bca02d1e..79ec280138a2 100644 --- a/code/game/objects/items/stacks/wrap.dm +++ b/code/game/objects/items/stacks/wrap.dm @@ -5,7 +5,8 @@ */ /obj/item/stack/wrapping_paper - name = "wrapping paper" + name = "wrapping paper roll" + singular_name = "wrapping sheet" desc = "Wrap packages with this festive paper to make gifts." icon = 'icons/obj/stack_objects.dmi' icon_state = "wrap_paper" diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 05321933bfe2..300b5a9461b3 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -80,7 +80,7 @@ STR.max_combined_w_class = 60 /obj/item/storage/backpack/santabag/proc/regenerate_presents() - addtimer(CALLBACK(src, .proc/regenerate_presents), 30 SECONDS) + addtimer(CALLBACK(src, PROC_REF(regenerate_presents)), 30 SECONDS) var/mob/M = get(loc, /mob) if(!istype(M)) @@ -671,10 +671,9 @@ new /obj/item/grenade/c4/x4(src) /obj/item/storage/backpack/duffelbag/syndie/firestarter - desc = "A large duffel bag containing a New Russian pyro backpack sprayer, Elite hardsuit, a Stechkin APS pistol, minibomb, ammo, and other equipment." + desc = "A large duffel bag containing a pyro backpack sprayer, Elite hardsuit, a Stechkin APS pistol, minibomb, ammo, and other equipment." /obj/item/storage/backpack/duffelbag/syndie/firestarter/PopulateContents() - new /obj/item/clothing/under/syndicate/soviet(src) new /obj/item/watertank/op(src) new /obj/item/clothing/suit/space/hardsuit/syndi/elite(src) new /obj/item/gun/ballistic/automatic/pistol/APS(src) diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 910ea174c3a6..dc3d2deff0ba 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -119,7 +119,7 @@ return if(listeningTo) UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) - RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/Pickup_ores) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(Pickup_ores)) listeningTo = user /obj/item/storage/bag/ore/dropped() @@ -335,7 +335,7 @@ SEND_SIGNAL(src, COMSIG_TRY_STORAGE_QUICK_EMPTY) // Make each item scatter a bit for(var/obj/item/I in oldContents) - INVOKE_ASYNC(src, .proc/do_scatter, I) + INVOKE_ASYNC(src, PROC_REF(do_scatter), I) if(prob(50)) playsound(M, 'sound/items/trayhit1.ogg', 50, TRUE) diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 98fa24e97379..9e8d4e94745c 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -934,7 +934,7 @@ /obj/item/storage/box/papersack/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/pen)) - var/choice = show_radial_menu(user, src , papersack_designs, custom_check = CALLBACK(src, .proc/check_menu, user, W), radius = 36, require_near = TRUE) + var/choice = show_radial_menu(user, src , papersack_designs, custom_check = CALLBACK(src, PROC_REF(check_menu), user, W), radius = 36, require_near = TRUE) if(!choice) return FALSE if(icon_state == "paperbag_[choice]") diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 2aefd383342e..58f10b2ccd8d 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -27,6 +27,8 @@ if(!spawn_type) return var/datum/component/storage/STR = GetComponent(/datum/component/storage) + if(!spawn_type) + return for(var/i = 1 to STR.max_items) new spawn_type(src) diff --git a/code/game/objects/items/storage/ration.dm b/code/game/objects/items/storage/ration.dm new file mode 100644 index 000000000000..482ba202a73e --- /dev/null +++ b/code/game/objects/items/storage/ration.dm @@ -0,0 +1,383 @@ +/obj/item/storage/ration + name = "empty ration pack" + desc = "standerd issue ration" + icon = 'icons/obj/food/ration.dmi' + icon_state = "ration_package" + item_state = "syringe_kit" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + resistance_flags = FLAMMABLE + drop_sound = 'sound/items/handling/cardboardbox_drop.ogg' + pickup_sound = 'sound/items/handling/cardboardbox_pickup.ogg' + +/obj/item/storage/ration/Initialize(mapload) + . = ..() + update_icon() + +/obj/item/storage/ration/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 7 + STR.set_holdable(list(/obj/item/reagent_containers/food)) + STR.locked = TRUE + STR.locked_flavor = "sealed closed" + +/obj/item/storage/ration/proc/open_ration(mob/user) + to_chat(user, "You tear open \the [src].") + playsound(user.loc, 'sound/effects/rip3.ogg', 50) + SEND_SIGNAL(src, COMSIG_TRY_STORAGE_SET_LOCKSTATE, FALSE) + desc += "\nIt's been opened. Let's get this out onto a tray." + +/obj/item/storage/ration/attack_self(mob/user) + var/locked = SEND_SIGNAL(src, COMSIG_IS_STORAGE_LOCKED) + if(locked) + open_ration(user) + icon_state = "[icon_state]_open" + return ..() + +/obj/item/storage/ration/vegan_chili + name = "vegan chili with beans ration" + desc = "A complete meal package containing a hearty vegan chili with beans, complemented by vegetable crackers, savory cornbread, flavorful pizza crackers, and more. A perfect choice for plant-based nourishment." + +/obj/item/storage/ration/vegan_chili/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/vegan_chili = 1, + /obj/item/reagent_containers/food/snacks/ration/side/vegan_crackers = 1, + /obj/item/reagent_containers/food/snacks/ration/side/cornbread = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/pizza_crackers = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/cheese_spread = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/grape_beverage = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside,src) + +/obj/item/storage/ration/shredded_beef + name = "shredded beef in barbecue sauce ration" + desc = "Enjoy the rich and savory flavors of shredded beef in smoky barbecue sauce with this satisfying ration. Accompanied by a fruit puree, jerky wrap, cinnamon bun, and additional condiments, this ration is perfect for meat lovers." + +/obj/item/storage/ration/shredded_beef/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/shredded_beef = 1, + /obj/item/reagent_containers/food/snacks/ration/side/jerky_wrap = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/fruit_puree = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/cinnamon_bun = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/hot_cheese_spread = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/chocolate_protein_beverage = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside,src) + +/obj/item/storage/ration/pork_spaghetti + name = "spaghetti with pork and sauce ration" + desc = "Indulge in a comforting meal of spaghetti with tender pork and savory sauce with this ration. Complemented by a toaster pastry, seasoned bread sticks, dried raisins, and other accompaniments, this ration offers a flavorful experience." + +/obj/item/storage/ration/pork_spaghetti/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/pork_spaghetti = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/toaster_pastry = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/dried_raisins = 1, + /obj/item/reagent_containers/food/snacks/ration/side/bread_sticks = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/cheese_spread = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/lemonade_beverage = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside,src) + +/obj/item/storage/ration/fried_fish + name = "fried fish chunks ration" + desc = "Experience the crispy delight of fried fish chunks with this ration. Accompanied by an energy bar, tortillas, toasted corn kernels, and more, this ration provides a satisfying combination of flavors and textures." + +/obj/item/storage/ration/fried_fish/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/fried_fish = 1, + /obj/item/reagent_containers/food/snacks/ration/side/tortilla = 1, + /obj/item/reagent_containers/food/snacks/ration/side/beef_sticks = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/corn_kernels = 1, + /obj/item/reagent_containers/food/snacks/ration/bar/energy_bar = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/cheese_spread = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/fruit_beverage = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside,src) + +/obj/item/storage/ration/beef_strips + name = "beef strips in tomato sauce ration" + desc = "Savor the deliciousness of tender beef strips in a flavorful tomato sauce with this ration. Enjoy a chocolate pudding, white wheat snack bread, blackberry preserves, and peppermint candy rings as delightful accompaniments." + +/obj/item/storage/ration/beef_strips/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/beef_strips = 1, + /obj/item/reagent_containers/food/snacks/ration/side/wheat_bread = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/chocolate_pudding = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/blackberry_preserves = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/candy_rings = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/peanut_butter = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/fruit_smoothie_beverage = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside,src) + +/obj/item/storage/ration/chili_macaroni + name = "chili and macaroni ration" + desc = "Indulge in the comforting combination of chili and macaroni in this flavorful ration. Satisfy your taste buds with a mix of sweet and savory treats." + +/obj/item/storage/ration/chili_macaroni/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/chili_macaroni = 1, + /obj/item/reagent_containers/food/snacks/ration/side/vegan_crackers = 1, + /obj/item/reagent_containers/food/snacks/ration/side/beef_sticks = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/lemon_pound_cake = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/cherry_snackers = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/hot_cheese_spread = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/chicken_wings_hot_sauce + name = "chicken wings in hot sauce ration" + desc = "Experience the bold and spicy flavors of chicken wings drenched in hot sauce. This ration also includes a mix of delightful snacks for a well-rounded meal." + +/obj/item/storage/ration/chicken_wings_hot_sauce/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/chicken_wings_hot_sauce = 1, + /obj/item/reagent_containers/food/snacks/ration/side/garlic_mashed_potatoes = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/strawberry_preserves = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/mint_chocolate_snack_cake = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/peanut_butter = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/cherry_beverage = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/fish_stew + name = "fish stew ration" + desc = "Dive into the depths of flavor with this fish stew ration. Enjoy a hearty blend of seafood and vegetables, complemented by a selection of tasty accompaniments." + +/obj/item/storage/ration/fish_stew/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/fish_stew = 1, + /obj/item/reagent_containers/food/snacks/ration/side/soup_crackers = 1, + /obj/item/reagent_containers/food/snacks/ration/side/griddled_mushrooms_chili = 1, + /obj/item/reagent_containers/food/snacks/ration/side/wheat_bread = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/sour_gummy_worms = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/garlic_cheese_spread = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_orange = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/lemon_pepper_chicken + name = "lemon pepper chicken ration" + desc = "A tasty Lemon Pepper Chicken ration that combines the flavors of fruit and meat. Perfect for a satisfying meal." + +/obj/item/storage/ration/lemon_pepper_chicken/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/lemon_pepper_chicken = 1, + /obj/item/reagent_containers/food/snacks/ration/side/jellied_eels = 1, + /obj/item/reagent_containers/food/snacks/ration/side/pretzel_sticks_honey_mustard = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/blue_raspberry_candies = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/peanut_cranberry_mix = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_chocolate = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/sausage_peppers_onions + name = "sausage, peppers and onions ration" + desc = "Indulge in the delightful combination of juicy sausage, peppers, and onions in this hearty ration." + +/obj/item/storage/ration/sausage_peppers_onions/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/sausage_peppers_onions = 1, + /obj/item/reagent_containers/food/snacks/ration/side/white_sandwich_bread = 1, + /obj/item/reagent_containers/food/snacks/ration/side/baked_cheddarcheese_chips = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/channeler_meat_candy = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/chocolate_orange_snack_cake = 1, + /obj/item/reagent_containers/food/drinks/ration/pan_genezan_vodka = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/pork_dumplings_chili_sauce + name = "pork dumplings in chili sauce ration" + desc = "Savor the rich flavors of pork dumplings in a spicy chili sauce, accompanied by a variety of complementary snacks." + +/obj/item/storage/ration/pork_dumplings_chili_sauce/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/dumplings_chili_sauce = 1, + /obj/item/reagent_containers/food/snacks/ration/side/fried_potato_curls = 1, + /obj/item/reagent_containers/food/snacks/ration/side/pretzel_sticks_honey_mustard = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/pick_me_up_energy_gum = 1, + /obj/item/reagent_containers/food/snacks/ration/bar/rationers_guild_chocolate_bar = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_hazelnut = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/battered_fish_sticks + name = "battered fish sticks ration" + desc = "Enjoy the crispy goodness of battered fish sticks, along with a selection of sides and a delectable dessert." + +/obj/item/storage/ration/battered_fish_sticks/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/battered_fish_sticks = 1, + /obj/item/reagent_containers/food/snacks/ration/side/stewed_asparagus_butter = 1, + /obj/item/reagent_containers/food/snacks/ration/side/fried_potato_curls = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/chocolate_orange_snack_cake = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/apple_slices = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/pineapple_beverage = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/assorted_salted_offal + name = "assorted salted offal ration" + desc = "An adventurous choice, this ration offers an assortment of salted offal, providing a unique culinary experience." + +/obj/item/storage/ration/assorted_salted_offal/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/assorted_salted_offal = 1, + /obj/item/reagent_containers/food/snacks/ration/side/broth_tuna_rice = 1, + /obj/item/reagent_containers/food/snacks/ration/side/trail_crackers = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/candied_pineapple_chunks = 1, + /obj/item/reagent_containers/food/snacks/ration/bar/tropical_energy_bar = 1, + /obj/item/reagent_containers/food/drinks/ration/pan_genezan_vodka = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/maple_pork_sausage_patty + name = "maple pork sausage patty ration" + desc = "Start your day with a satisfying breakfast featuring a maple-infused pork sausage patty and a variety of treats." + +/obj/item/storage/ration/maple_pork_sausage_patty/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/maple_pork_sausage_patty = 1, + /obj/item/reagent_containers/food/snacks/ration/side/hash_brown_bacon = 1, + /obj/item/reagent_containers/food/snacks/ration/side/granola_milk_blueberries = 1, + /obj/item/reagent_containers/food/snacks/ration/side/maple_muffin = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/smoked_almonds = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/maple_syrup = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/grape_beverage = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/pepper_jack_beef_patty + name = "jalapeno pepper jack beef patty ration" + desc = "Experience a flavorful fusion of jalapeno, pepper jack cheese, and beef in this grilled beef patty ration." + +/obj/item/storage/ration/pepper_jack_beef_patty/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/pepper_jack_beef_patty = 1, + /obj/item/reagent_containers/food/snacks/ration/side/au_gratin_potatoes = 1, + /obj/item/reagent_containers/food/snacks/ration/side/jerky_wrap = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/chocolate_chunk_oatmeal_cookie = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/peanut_candies = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/bacon_cheddar_cheese_spread = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage_sugar_free = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/beef_goulash + name = "beef goulash ration" + desc = "Delight in the rich flavors of beef goulash, accompanied by a selection of sides and a sweet treat." + +/obj/item/storage/ration/beef_goulash/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/beef_goulash = 1, + /obj/item/reagent_containers/food/snacks/ration/side/applesauce_carb_enhanced = 1, + /obj/item/reagent_containers/food/snacks/ration/side/white_bread_mini_loaf = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/strawberry_preserves = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/patriotic_sugar_cookies = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/chunky_peanut_butter = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/pepperoni_pizza_slice + name = "pepperoni pizza slice ration" + desc = "Indulge in the classic taste of pepperoni pizza with this ration, complete with sides and a refreshing beverage." + +/obj/item/storage/ration/pepperoni_pizza_slice/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/pepperoni_pizza_slice = 1, + /obj/item/reagent_containers/food/snacks/ration/side/apples_in_spiced_sauce = 1, + /obj/item/reagent_containers/food/snacks/ration/side/vegan_crackers = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/oatmeal_cookie = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/hot_cheese_spread = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/lemonade_beverage_suger_free = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/blackened_calamari + name = "blackened calamari in red sauce ration" + desc = "Enjoy the savory delight of blackened calamari served in a rich red sauce." + +/obj/item/storage/ration/blackened_calamari/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/blackened_calamari = 1, + /obj/item/reagent_containers/food/snacks/ration/side/trail_mix_beef_jerky = 1, + /obj/item/reagent_containers/food/snacks/ration/side/crackers = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/dried_cranberries = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/dry_roasted_peanuts = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/cheese_spread = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage_sugar_free = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/elbow_macaroni + name = "elbow macaroni in tomato sauce ration" + desc = "Savor the comforting taste of elbow macaroni in a delicious tomato sauce." + +/obj/item/storage/ration/elbow_macaroni/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/elbow_macaroni = 1, + /obj/item/reagent_containers/food/snacks/ration/side/barbecue_fried_pork_rinds = 1, + /obj/item/reagent_containers/food/snacks/ration/side/applesauce_mango_peach_puree = 1, + /obj/item/reagent_containers/food/snacks/ration/side/white_bread_mini_loaf = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/strawberry_preserves = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/peanut_butter = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/chocolate_protein_beverage = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/cheese_pizza_slice + name = "cheese pizza slice ration" + desc = "Experience the timeless flavor of a classic cheese pizza slice." + +/obj/item/storage/ration/cheese_pizza_slice/PopulateContents() + var/static/items_inside = list( + /obj/item/reagent_containers/food/snacks/ration/entree/cheese_pizza_slice = 1, + /obj/item/reagent_containers/food/snacks/ration/side/applesauce_carb_enhanced = 1, + /obj/item/reagent_containers/food/snacks/ration/side/crackers = 1, + /obj/item/reagent_containers/food/snacks/ration/snack/jalapeno_cashews = 1, + /obj/item/reagent_containers/food/snacks/ration/bar/quik_energy_bar_chocolate = 1, + /obj/item/reagent_containers/food/snacks/ration/condiment/chunky_peanut_butter = 1, + /obj/item/reagent_containers/food/snacks/ration/pack/grape_beverage_sugar_free = 1, + /obj/item/ration_heater = 1 + ) + generate_items_inside(items_inside, src) + +/obj/item/storage/ration/crayons + name = "military grade crayon ration" + desc = "Proven to increase kill count by atleast 1." + +/obj/item/storage/ration/crayons/PopulateContents() + var/static/items_inside = list( + /obj/item/toy/crayon/red = 1, + /obj/item/toy/crayon/orange = 1, + /obj/item/toy/crayon/yellow = 1, + /obj/item/toy/crayon/green = 1, + /obj/item/toy/crayon/blue = 1, + /obj/item/toy/crayon/purple = 1, + /obj/item/toy/crayon/black = 1, + /obj/item/toy/crayon/white = 1 + ) + generate_items_inside(items_inside, src) diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index b02a516dc13b..6b3658b523df 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -534,7 +534,7 @@ new /obj/item/book/granter/spell/mimery_guns(src) /obj/item/storage/box/syndie_kit/centcom_costume/PopulateContents() - new /obj/item/clothing/under/rank/centcom/officer(src) + new /obj/item/clothing/under/rank/centcom/official(src) new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/gloves/color/black(src) new /obj/item/radio/headset/headset_cent/empty(src) diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index d9f3dd296a9b..4b91fc6caae3 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -47,7 +47,7 @@ else cell = new preload_cell_type(src) update_appearance() - RegisterSignal(src, COMSIG_PARENT_ATTACKBY, .proc/convert) + RegisterSignal(src, COMSIG_PARENT_ATTACKBY, PROC_REF(convert)) /obj/item/melee/baton/Destroy() @@ -223,7 +223,7 @@ L.apply_damage(stamina_loss_amt, STAMINA, BODY_ZONE_CHEST) SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK) - addtimer(CALLBACK(src, .proc/apply_stun_effect_end, L), apply_stun_delay) + addtimer(CALLBACK(src, PROC_REF(apply_stun_effect_end), L), apply_stun_delay) if(user) L.lastattacker = user.real_name @@ -322,8 +322,9 @@ var/caught = hit_atom.hitby(src, FALSE, FALSE, throwingdatum=throwingdatum) if(ishuman(hit_atom) && !caught && prob(throw_stun_chance))//if they are a carbon and they didn't catch it baton_effect(hit_atom) - if(thrownby && !caught) - addtimer(CALLBACK(src, /atom/movable.proc/throw_at, thrownby, throw_range+2, throw_speed, null, TRUE), 1) + var/mob/thrown_by = thrownby?.resolve() + if(thrown_by && !caught) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, throw_at), thrown_by, throw_range+2, throw_speed, null, TRUE), 1) else return ..() diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm index 046439551291..b8f4451a9660 100644 --- a/code/game/objects/items/tanks/jetpack.dm +++ b/code/game/objects/items/tanks/jetpack.dm @@ -60,8 +60,8 @@ on = TRUE icon_state = "[initial(icon_state)]-on" ion_trail.start() - RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/move_react) - RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, .proc/pre_move_react) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(move_react)) + RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(pre_move_react)) if(full_speed) user.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/fullspeed) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 0f4f5adee562..4095d159ea82 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -305,7 +305,7 @@ var/obj/effect/particle_effect/foam/metal/resin/F = new (get_turf(target)) F.amount = 0 metal_synthesis_cooldown++ - addtimer(CALLBACK(src, .proc/reduce_metal_synth_cooldown), 10 SECONDS) + addtimer(CALLBACK(src, PROC_REF(reduce_metal_synth_cooldown)), 10 SECONDS) else to_chat(user, "Resin foam mix is still being synthesized...") return @@ -426,7 +426,7 @@ //Operator backpack spray /obj/item/watertank/op name = "backpack water tank" - desc = "A New Russian backpack spray for systematic cleansing of carbon lifeforms." + desc = "A backpack spray for systematic cleansing of carbon lifeforms." icon_state = "waterbackpackop" item_state = "waterbackpackop" w_class = WEIGHT_CLASS_NORMAL diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index 5b07c40f6f21..efdeafd99cfb 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -184,8 +184,8 @@ var/list/obj/effect/portal/created = create_portal_pair(current_location, get_teleport_turf(current_location, get_turf(T), 0, FALSE), 300, 1, null, atmos_link_override) if(!(LAZYLEN(created) == 2)) return - RegisterSignal(created[1], COMSIG_PARENT_QDELETING, .proc/on_portal_destroy) //Gosh darn it kevinz. - RegisterSignal(created[2], COMSIG_PARENT_QDELETING, .proc/on_portal_destroy) + RegisterSignal(created[1], COMSIG_PARENT_QDELETING, PROC_REF(on_portal_destroy)) //Gosh darn it kevinz. + RegisterSignal(created[2], COMSIG_PARENT_QDELETING, PROC_REF(on_portal_destroy)) var/obj/effect/portal/c1 = created[1] var/obj/effect/portal/c2 = created[2] var/turf/check_turf = get_turf(get_step(user, user.dir)) diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm index cb6b8d3abe9f..fd9b3859cd3b 100644 --- a/code/game/objects/items/theft_tools.dm +++ b/code/game/objects/items/theft_tools.dm @@ -57,7 +57,7 @@ core = ncore icon_state = "core_container_loaded" to_chat(user, "Container is sealing...") - addtimer(CALLBACK(src, .proc/seal), 50) + addtimer(CALLBACK(src, PROC_REF(seal)), 50) return TRUE /obj/item/nuke_core_container/proc/seal() @@ -175,7 +175,7 @@ T.icon_state = "supermatter_tongs" icon_state = "core_container_loaded" to_chat(user, "Container is sealing...") - addtimer(CALLBACK(src, .proc/seal), 50) + addtimer(CALLBACK(src, PROC_REF(seal)), 50) return TRUE /obj/item/nuke_core_container/supermatter/seal() diff --git a/code/game/objects/items/toy_mechs.dm b/code/game/objects/items/toy_mechs.dm index 2cbe3e81b1ef..2a821c7a8317 100644 --- a/code/game/objects/items/toy_mechs.dm +++ b/code/game/objects/items/toy_mechs.dm @@ -179,7 +179,7 @@ to_chat(user, "You offer battle to [target.name]!") to_chat(target, "[user.name] wants to battle with [user.p_their()] [name]! Attack them with a toy mech to initiate combat.") wants_to_battle = TRUE - addtimer(CALLBACK(src, .proc/withdraw_offer, user), 6 SECONDS) + addtimer(CALLBACK(src, PROC_REF(withdraw_offer), user), 6 SECONDS) return ..() diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 0046ece63058..a4ec930ec0e2 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -359,7 +359,7 @@ active = TRUE playsound(src, 'sound/effects/pope_entry.ogg', 100) Rumble() - addtimer(CALLBACK(src, .proc/stopRumble), 600) + addtimer(CALLBACK(src, PROC_REF(stopRumble)), 600) else to_chat(user, "[src] is already active!") @@ -436,7 +436,7 @@ /obj/item/toy/snappop/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -475,7 +475,7 @@ /obj/effect/decal/cleanable/ash/snappop_phoenix/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/respawn), respawn_time) + addtimer(CALLBACK(src, PROC_REF(respawn)), respawn_time) /obj/effect/decal/cleanable/ash/snappop_phoenix/proc/respawn() new /obj/item/toy/snappop/phoenix(get_turf(src)) @@ -504,7 +504,7 @@ activation_message(user) playsound(loc, 'sound/machines/click.ogg', 20, TRUE) - INVOKE_ASYNC(src, .proc/do_toy_talk, user) + INVOKE_ASYNC(src, PROC_REF(do_toy_talk), user) cooldown = TRUE addtimer(VARSET_CALLBACK(src, cooldown, FALSE), recharge_time) @@ -1031,7 +1031,7 @@ if(!M.stat && !isAI(M)) // Checks to make sure whoever's getting shaken is alive/not the AI // Short delay to match up with the explosion sound // Shakes player camera 2 squares for 1 second. - addtimer(CALLBACK(GLOBAL_PROC, .proc/shake_camera, M, 2, 1), 0.8 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(shake_camera), M, 2, 1), 0.8 SECONDS) else to_chat(user, "Nothing happens.") @@ -1425,7 +1425,7 @@ if(cooldown <= world.time) cooldown = (world.time + 300) user.visible_message("[user] adjusts the dial on [src].") - addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/items/radiostatic.ogg', 50, FALSE), 0.5 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, 'sound/items/radiostatic.ogg', 50, FALSE), 0.5 SECONDS) else to_chat(user, "The dial on [src] jams up") return @@ -1440,4 +1440,4 @@ /obj/item/toy/braintoy/attack_self(mob/user) if(cooldown <= world.time) cooldown = (world.time + 10) - addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/effects/blobattack.ogg', 50, FALSE), 0.5 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, 'sound/effects/blobattack.ogg', 50, FALSE), 0.5 SECONDS) diff --git a/code/game/objects/items/wayfinding.dm b/code/game/objects/items/wayfinding.dm index b1e6523ee926..848ade225ce2 100644 --- a/code/game/objects/items/wayfinding.dm +++ b/code/game/objects/items/wayfinding.dm @@ -113,7 +113,7 @@ deltimer(expression_timer) add_overlay(type) if(duration) - expression_timer = addtimer(CALLBACK(src, .proc/set_expression, "neutral"), duration, TIMER_STOPPABLE) + expression_timer = addtimer(CALLBACK(src, PROC_REF(set_expression), "neutral"), duration, TIMER_STOPPABLE) /obj/machinery/pinpointer_dispenser/proc/pointat(atom) visible_message("[src] points at [atom].") @@ -126,7 +126,6 @@ icon_state = "pinpointer_way" resistance_flags = NONE var/owner = null - var/list/beacons = list() var/roundstart = FALSE /obj/item/pinpointer/wayfinding/attack_self(mob/living/user) @@ -138,8 +137,7 @@ if (!owner) owner = user.real_name - if(beacons.len) - beacons.Cut() + var/list/beacons = list() for(var/obj/machinery/navbeacon/B in GLOB.wayfindingbeacons) beacons[B.codes["wayfinding"]] = B diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index d6955ff244ba..7749f6d50274 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -515,7 +515,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/statuebust/Initialize() . = ..() AddComponent(/datum/component/art, impressiveness) - addtimer(CALLBACK(src, /datum.proc/_AddComponent, list(/datum/component/beauty, 1000)), 0) + addtimer(CALLBACK(src, TYPE_PROC_REF(/datum, _AddComponent), list(/datum/component/beauty, 1000)), 0) /obj/item/statuebust/hippocratic name = "hippocrates bust" @@ -760,8 +760,8 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/vibro_weapon/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/vibro_weapon/ComponentInitialize() . = ..() diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index 61acce5c9d0a..78cfa10a2e0b 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -68,13 +68,13 @@ if(3) take_damage(rand(10, 90), BRUTE, "bomb", 0) -/obj/bullet_act(obj/projectile/P) +/obj/bullet_act(obj/projectile/hitting_projectile) . = ..() - playsound(src, P.hitsound, 50, TRUE) - if(P.suppressed != SUPPRESSED_VERY) - visible_message("[src] is hit by \a [P]!", null, null, COMBAT_MESSAGE_RANGE) + bullet_hit_sfx(hitting_projectile) + if(hitting_projectile.suppressed != SUPPRESSED_VERY) + visible_message("[src] is hit by \a [hitting_projectile]!", null, null, COMBAT_MESSAGE_RANGE) if(!QDELETED(src)) //Bullet on_hit effect might have already destroyed this object - take_damage(P.damage, P.damage_type, P.flag, 0, turn(P.dir, 180), P.armour_penetration) + take_damage(hitting_projectile.damage, hitting_projectile.damage_type, hitting_projectile.flag, 0, turn(hitting_projectile.dir, 180), hitting_projectile.armour_penetration) ///Called to get the damage that hulks will deal to the obj. /obj/proc/hulk_damage() @@ -233,7 +233,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e if(QDELETED(src)) return 0 obj_flags |= BEING_SHOCKED - addtimer(CALLBACK(src, .proc/reset_shocked), 10) + addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10) return power / 2 //The surgeon general warns that being buckled to certain objects receiving powerful shocks is greatly hazardous to your health diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index ff33571efc42..46090aa86658 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -15,7 +15,7 @@ ///Damage under this value will be completely ignored var/damage_deflection = 0 - var/resistance_flags = NONE // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF + var/resistance_flags = NONE // INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ON_FIRE | UNACIDABLE | ACID_PROOF | LANDING_PROOF | HYPERSPACE_PROOF var/acid_level = 0 //how much acid is on that obj @@ -219,7 +219,7 @@ if(machine) unset_machine() machine = O - RegisterSignal(O, COMSIG_PARENT_QDELETING, .proc/unset_machine) + RegisterSignal(O, COMSIG_PARENT_QDELETING, PROC_REF(unset_machine)) if(istype(O)) O.obj_flags |= IN_USE @@ -352,7 +352,7 @@ items += list("[reskin_option]" = item_image) sortList(items) - var/pick = show_radial_menu(M, src, items, custom_check = CALLBACK(src, .proc/check_reskin_menu, M), radius = 38, require_near = TRUE) + var/pick = show_radial_menu(M, src, items, custom_check = CALLBACK(src, PROC_REF(check_reskin_menu), M), radius = 38, require_near = TRUE) if(!pick) return if(!unique_reskin[pick]) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index c0198939c24a..69efcd42af15 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -7,6 +7,8 @@ flags_ricochet = RICOCHET_HARD ricochet_chance_mod = 0.5 + hitsound_type = PROJECTILE_HITSOUND_METAL + var/climb_time = 20 var/climbable = FALSE var/mob/living/structureclimber diff --git a/code/game/objects/structures/ai_core.dm b/code/game/objects/structures/ai_core.dm index 563e48e27f49..f59e29dd3b9a 100644 --- a/code/game/objects/structures/ai_core.dm +++ b/code/game/objects/structures/ai_core.dm @@ -30,11 +30,10 @@ /obj/structure/AIcore/Destroy() if(circuit) - qdel(circuit) - circuit = null + QDEL_NULL(circuit) if(brain) - qdel(brain) - brain = null + QDEL_NULL(brain) + QDEL_NULL(laws) return ..() /obj/structure/AIcore/latejoin_inactive diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index f489e774dd92..65d83e9ce406 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -297,6 +297,16 @@ icon = "goose" desc = "Drink till you puke and/or break the laws of reality!" +/datum/barsign/dustydunesaloon + name = "Dusty Dune Saloon" + icon = "saloon" + desc = "The perfect place to get trashed then get killed in a shootout" + +/datum/barsign/birdsnest + name = "Bird's Nest ♡" + icon = "birdsnest" + desc = "It is NOT what you're thinking it is." + /datum/barsign/hiddensigns hidden = TRUE diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index 0cda61d847ef..3c7d1ac0f01c 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -193,10 +193,19 @@ anchored = TRUE /obj/structure/bed/dogbed/proc/update_owner(mob/living/M) + if(owner) + UnregisterSignal(owner, COMSIG_PARENT_QDELETING) owner = M + RegisterSignal(owner, COMSIG_PARENT_QDELETING, PROC_REF(owner_deleted)) name = "[M]'s bed" desc = "[M]'s bed! Looks comfy." +/obj/structure/bed/dogbed/proc/owner_deleted() + UnregisterSignal(owner, COMSIG_PARENT_QDELETING) + owner = null + name = initial(name) + desc = initial(desc) + /obj/structure/bed/dogbed/buckle_mob(mob/living/M, force, check_loc) . = ..() update_owner(M) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index eac8d783f578..d90b1846a4f0 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -23,7 +23,7 @@ /obj/structure/chair/ComponentInitialize() . = ..() - AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, .proc/can_user_rotate),CALLBACK(src, .proc/can_be_rotated),null) + AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, PROC_REF(can_user_rotate)),CALLBACK(src, PROC_REF(can_be_rotated)),null) /obj/structure/chair/proc/can_be_rotated(mob/user) return TRUE @@ -306,9 +306,6 @@ new /obj/item/stack/rods(get_turf(loc), 2) qdel(src) - - - /obj/item/chair/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(attack_type == UNARMED_ATTACK && prob(hit_reaction_chance)) owner.visible_message("[owner] fends off [attack_text] with [src]!") @@ -327,6 +324,12 @@ C.Paralyze(20) smash(user) +/obj/structure/chair/join_player_here(mob/M) + // Placing a mob in a chair will attempt to buckle it, or else fall back to default. + if (isliving(M) && buckle_mob(M, FALSE, FALSE)) + return + ..() + /obj/item/chair/greyscale material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS origin_type = /obj/structure/chair/greyscale @@ -445,7 +448,7 @@ Mob.pixel_y += 2 .=..() if(iscarbon(Mob)) - INVOKE_ASYNC(src, .proc/snap_check, Mob) + INVOKE_ASYNC(src, PROC_REF(snap_check), Mob) /obj/structure/chair/plastic/post_unbuckle_mob(mob/living/Mob) Mob.pixel_y -= 2 diff --git a/code/game/objects/structures/beds_chairs/pew.dm b/code/game/objects/structures/beds_chairs/pew.dm index b7aa1f65d2bd..8e5cf9a19493 100644 --- a/code/game/objects/structures/beds_chairs/pew.dm +++ b/code/game/objects/structures/beds_chairs/pew.dm @@ -9,6 +9,8 @@ buildstackamount = 3 item_chair = null + hitsound_type = PROJECTILE_HITSOUND_WOOD + /obj/structure/chair/pew/left name = "left wooden pew end" icon_state = "pewend_left" diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index f959d911bd33..bc1155ec34aa 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -266,8 +266,8 @@ LINEN BINS dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET /obj/item/bedsheet/double/Initialize() - ..() - desc += " This one is double." + . = ..() + desc += " This one is double-sized." /obj/item/bedsheet/double/blue icon_state = "double_sheetblue" diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 137af446fa15..417a1f8d86a6 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -42,14 +42,21 @@ /obj/structure/closet/Initialize(mapload) - if(mapload && !opened) // if closed, any item at the crate's loc is put in the contents - addtimer(CALLBACK(src, .proc/take_contents), 0) . = ..() + + // if closed, any item at the crate's loc is put in the contents + if (mapload && !opened) + . = INITIALIZE_HINT_LATELOAD + update_appearance() if(populate) PopulateContents() - RegisterSignal(src, COMSIG_ATOM_CANREACH, .proc/canreach_react) + RegisterSignal(src, COMSIG_ATOM_CANREACH, PROC_REF(canreach_react)) + +/obj/structure/closet/LateInitialize() + take_contents(src) + return ..() /obj/structure/closet/proc/canreach_react(datum/source, list/next) return COMPONENT_BLOCK_REACH //closed block, open have nothing inside. @@ -71,6 +78,8 @@ /obj/structure/closet/update_icon() . = ..() + if (istype(src, /obj/structure/closet/supplypod)) + return layer = opened ? BELOW_OBJ_LAYER : OBJ_LAYER @@ -109,7 +118,7 @@ if(HAS_TRAIT(L, TRAIT_SKITTISH)) . += "Ctrl-Shift-click [src] to jump inside." -/obj/structure/closet/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/closet/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(wall_mounted) return TRUE @@ -140,6 +149,8 @@ return TRUE /obj/structure/closet/dump_contents() + if(!isturf(loc)) + return var/atom/L = drop_location() for(var/atom/movable/AM as anything in src) AM.forceMove(L) @@ -148,8 +159,8 @@ if(throwing) throwing.finalize(FALSE) -/obj/structure/closet/proc/take_contents() - var/atom/L = drop_location() +/obj/structure/closet/proc/take_contents(atom/movable/holder) + var/atom/L = holder.drop_location() for(var/atom/movable/AM in L) if(istype(AM, /obj/effect)) //WS edit, closets and crates do not eat your lamp continue @@ -216,7 +227,7 @@ /obj/structure/closet/proc/close(mob/living/user) if(!opened || !can_close(user)) return FALSE - take_contents() + take_contents(src) playsound(loc, close_sound, close_sound_volume, TRUE, -3) climb_time = initial(climb_time) opened = FALSE @@ -340,6 +351,11 @@ var/mob/living/L = O if(!issilicon(L)) L.Paralyze(40) + if(istype(src, /obj/structure/closet/supplypod/extractionpod)) + O.forceMove(src) + else + O.forceMove(T) + close() O.forceMove(T) close() else diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index b6a80ee51978..a5d7531b0aa8 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -27,7 +27,7 @@ var/oldloc = loc step(src, direction) if(oldloc != loc) - addtimer(CALLBACK(src, .proc/ResetMoveDelay), CONFIG_GET(number/movedelay/walk_delay) * move_speed_multiplier) + addtimer(CALLBACK(src, PROC_REF(ResetMoveDelay)), CONFIG_GET(number/movedelay/walk_delay) * move_speed_multiplier) else move_delay = FALSE diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index f0bb77af8bb2..cfea37148e55 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -20,17 +20,6 @@ desc = "It's a storage unit for things that have no right being here." icon_state = "syndicate" -/obj/structure/closet/gimmick/russian - name = "\improper Russian surplus closet" - desc = "It's a storage unit for Russian standard-issue surplus." - -/obj/structure/closet/gimmick/russian/PopulateContents() - ..() - for(var/i in 1 to 5) - new /obj/item/clothing/head/trapper(src) - for(var/i in 1 to 5) - new /obj/item/clothing/under/costume/soviet(src) - /obj/structure/closet/gimmick/tacticool name = "tacticool gear closet" desc = "It's a storage unit for Tacticool gear." diff --git a/code/game/objects/structures/crates_lockers/closets/infinite.dm b/code/game/objects/structures/crates_lockers/closets/infinite.dm index ef471d66db75..8657b764b9bb 100644 --- a/code/game/objects/structures/crates_lockers/closets/infinite.dm +++ b/code/game/objects/structures/crates_lockers/closets/infinite.dm @@ -26,7 +26,7 @@ /obj/structure/closet/infinite/open(mob/living/user, force = FALSE) . = ..() if(. && auto_close_time) - addtimer(CALLBACK(src, .proc/close_on_my_own), auto_close_time, TIMER_OVERRIDE) + addtimer(CALLBACK(src, PROC_REF(close_on_my_own)), auto_close_time, TIMER_OVERRIDE) /obj/structure/closet/infinite/proc/close_on_my_own() if(close()) 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 c2af6ad410c3..0e7ab6e0a526 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -4,7 +4,7 @@ /obj/structure/closet/secure_closet/freezer/Destroy() recursive_organ_check(src) - ..() + return ..() /obj/structure/closet/secure_closet/freezer/Initialize() . = ..() 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 c9d65880946c..27a9e423110b 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -26,7 +26,7 @@ new /obj/item/clothing/under/rank/command/captain/parade(src) new /obj/item/clothing/suit/armor/vest/capcarapace/alt(src) new /obj/item/clothing/head/caphat/parade(src) - new /obj/item/clothing/suit/captunic(src) + new /obj/item/clothing/suit/armor/vest/capcarapace/captunic(src) new /obj/item/clothing/head/crown/fancy(src) new /obj/item/cartridge/captain(src) new /obj/item/storage/box/silver_ids(src) @@ -414,7 +414,7 @@ new /obj/item/clothing/shoes/jackboots(src) new /obj/item/clothing/head/beret/lt(src) new /obj/item/clothing/head/beret/black(src) - new /obj/item/clothing/under/rank/command/lieutenant(src) - new /obj/item/clothing/under/rank/command/lieutenant/skirt(src) - new /obj/item/clothing/under/rank/command/lieutenant/nt(src) - new /obj/item/clothing/under/rank/command/lieutenant/nt/skirt(src) + new /obj/item/clothing/under/rank/command(src) + new /obj/item/clothing/under/rank/command/skirt(src) + new /obj/item/clothing/under/rank/command/nt(src) + new /obj/item/clothing/under/rank/command/nt/skirt(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 252aff8d4d5a..e2430be999b6 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -25,7 +25,7 @@ opened = TRUE update_appearance() -/obj/structure/closet/crate/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/closet/crate/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(!istype(mover, /obj/structure/closet)) var/obj/structure/closet/crate/locatedcrate = locate(/obj/structure/closet/crate) in get_turf(mover) @@ -45,11 +45,27 @@ . += "manifest" /obj/structure/closet/crate/attack_hand(mob/user) - . = ..() - if(.) - return + if(istype(src.loc, /obj/structure/crate_shelf)) + return FALSE // No opening crates in shelves!! if(manifest) tear_manifest(user) + return ..() + +/obj/structure/closet/crate/MouseDrop(atom/drop_atom, src_location, over_location) + . = ..() + var/mob/living/user = usr + if(!isliving(user)) + return // Ghosts busted. + if(!isturf(user.loc) || user.incapacitated() || user.body_position == LYING_DOWN) + return // If the user is in a weird state, don't bother trying. + if(get_dist(drop_atom, src) != 1 || get_dist(drop_atom, user) != 1) + return // Check whether the crate is exactly 1 tile from the shelf and the user. + if(istype(drop_atom, /turf/open) && istype(loc, /obj/structure/crate_shelf) && user.Adjacent(drop_atom)) + var/obj/structure/crate_shelf/shelf = loc + return shelf.unload(src, user, drop_atom) // If we're being dropped onto a turf, and we're inside of a crate shelf, unload. + if(istype(drop_atom, /obj/structure/crate_shelf) && isturf(loc) && user.Adjacent(src)) + var/obj/structure/crate_shelf/shelf = drop_atom + return shelf.load(src, user) // If we're being dropped onto a crate shelf, and we're in a turf, load. /obj/structure/closet/crate/open(mob/living/user, force = FALSE) . = ..() @@ -262,3 +278,17 @@ icon_state = "chemcrate" material_drop = /obj/item/stack/sheet/mineral/gold material_drop_amount = 1 + +/obj/structure/closet/crate/eva + name = "EVA crate" + +/obj/structure/closet/crate/eva/PopulateContents() + ..() + for(var/i in 1 to 3) + new /obj/item/clothing/suit/space/eva(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/helmet/space/eva(src) + for(var/i in 1 to 3) + new /obj/item/clothing/mask/breath(src) + for(var/i in 1 to 3) + new /obj/item/tank/internals/oxygen(src) diff --git a/code/game/objects/structures/crates_lockers/crates/bins.dm b/code/game/objects/structures/crates_lockers/crates/bins.dm index 26335320c2b3..f895ad7421c7 100644 --- a/code/game/objects/structures/crates_lockers/crates/bins.dm +++ b/code/game/objects/structures/crates_lockers/crates/bins.dm @@ -37,7 +37,7 @@ /obj/structure/closet/crate/bin/proc/do_animate() playsound(loc, open_sound, 15, TRUE, -3) flick("animate_largebins", src) - addtimer(CALLBACK(src, .proc/do_close), 13) + addtimer(CALLBACK(src, PROC_REF(do_close)), 13) /obj/structure/closet/crate/bin/proc/do_close() playsound(loc, close_sound, 15, TRUE, -3) diff --git a/code/game/objects/structures/crateshelf.dm b/code/game/objects/structures/crateshelf.dm new file mode 100644 index 000000000000..1ede60f12e22 --- /dev/null +++ b/code/game/objects/structures/crateshelf.dm @@ -0,0 +1,139 @@ +#define DEFAULT_SHELF_CAPACITY 3 // Default capacity of the shelf +#define DEFAULT_SHELF_USE_DELAY 1 SECONDS // Default interaction delay of the shelf +#define DEFAULT_SHELF_VERTICAL_OFFSET 10 // Vertical pixel offset of shelving-related things. Set to 10 by default due to this leaving more of the crate on-screen to be clicked. + +/obj/structure/crate_shelf + name = "crate shelf" + desc = "It's a shelf! For storing crates!" + icon = 'icons/obj/objects.dmi' + icon_state = "shelf_base" + density = TRUE + anchored = TRUE + max_integrity = 50 // Not hard to break + + var/capacity = DEFAULT_SHELF_CAPACITY + var/use_delay = DEFAULT_SHELF_USE_DELAY + var/list/shelf_contents + +/obj/structure/crate_shelf/tall + capacity = 12 + +/obj/structure/crate_shelf/Initialize() + . = ..() + shelf_contents = new/list(capacity) // Initialize our shelf's contents list, this will be used later. + var/stack_layer // This is used to generate the sprite layering of the shelf pieces. + var/stack_offset // This is used to generate the vertical offset of the shelf pieces. + for(var/i in 1 to (capacity - 1)) + stack_layer = BELOW_OBJ_LAYER + (0.02 * i) - 0.01 // Make each shelf piece render above the last, but below the crate that should be on it. + stack_offset = DEFAULT_SHELF_VERTICAL_OFFSET * i // Make each shelf piece physically above the last. + overlays += image(icon = 'icons/obj/objects.dmi', icon_state = "shelf_stack", layer = stack_layer, pixel_y = stack_offset) + return + +/obj/structure/crate_shelf/Destroy() + QDEL_LIST(shelf_contents) + return ..() + +/obj/structure/crate_shelf/examine(mob/user) + . = ..() + . += "There are some bolts holding [src] together." + if(shelf_contents.Find(null)) // If there's an empty space in the shelf, let the examiner know. + . += "You could drag a crate into [src]." + if(contents.len) // If there are any crates in the shelf, let the examiner know. + . += "You could drag a crate out of [src]." + . += "[src] contains:" + for(var/obj/structure/closet/crate/crate in shelf_contents) + . += " [icon2html(crate, user)] [crate]" + +/obj/structure/crate_shelf/attackby(obj/item/item, mob/living/user, params) + if (item.tool_behaviour == TOOL_WRENCH && !(flags_1&NODECONSTRUCT_1)) + item.play_tool_sound(src) + if(do_after(user, 3 SECONDS, target = src)) + deconstruct(TRUE) + return TRUE + return ..() + +/obj/structure/crate_shelf/relay_container_resist_act(mob/living/user, obj/structure/closet/crate) + to_chat(user, "You begin attempting to knock [crate] out of [src].") + if(do_after(user, 30 SECONDS, target = crate)) + if(!user || user.stat != CONSCIOUS || user.loc != crate || crate.loc != src) + return // If the user is in a strange condition, return early. + visible_message("[crate] falls off of [src]!", + "You manage to knock [crate] free of [src].", + "[crate]'s lid falls open!") + else // If we somehow fail to open the crate, just break it instead! + crate.visible_message("[crate] falls apart!") + crate.deconstruct() + if(3) // Break that crate! + crate.visible_message("[crate] falls apart!") + crate.deconstruct() + shelf_contents[shelf_contents.Find(crate)] = null + if(!(flags_1&NODECONSTRUCT_1)) + density = FALSE + var/obj/item/rack_parts/shelf/newparts = new(loc) + transfer_fingerprints_to(newparts) + return ..() + +/obj/item/rack_parts/shelf + name = "crate shelf parts" + desc = "Parts of a shelf." + construction_type = /obj/structure/crate_shelf diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 4431bd1307c2..4884a757453e 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -378,8 +378,6 @@ var/sale_price = 20 ///The Account which will receive payment for purchases. Set by the first ID to swipe the tray. var/datum/bank_account/payments_acc = null - ///We're using the same trick as paper does in order to cache the image, and only load the UI when messed with. - var/list/viewing_ui = list() /obj/structure/displaycase/forsale/update_appearance() //remind me to fix my shitcode later var/icon/I @@ -403,7 +401,6 @@ if(!ui) ui = new(user, src, "Vendatray", name) ui.set_autoupdate(FALSE) - viewing_ui[user] = ui ui.open() /obj/structure/displaycase/forsale/ui_data(mob/user) diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm index f5e50fc57d06..874392a2b9dd 100644 --- a/code/game/objects/structures/divine.dm +++ b/code/game/objects/structures/divine.dm @@ -41,7 +41,7 @@ to_chat(user, "The water feels warm and soothing as you touch it. The fountain immediately dries up shortly afterwards.") user.reagents.add_reagent(/datum/reagent/medicine/omnizine/godblood,20) update_appearance() - addtimer(CALLBACK(src, /atom/.proc/update_appearance), time_between_uses) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_appearance)), time_between_uses) /obj/structure/healingfountain/update_icon_state() diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm index 700d55361d90..ebfda776726f 100644 --- a/code/game/objects/structures/dresser.dm +++ b/code/game/objects/structures/dresser.dm @@ -6,6 +6,8 @@ density = TRUE anchored = TRUE + hitsound_type = PROJECTILE_HITSOUND_WOOD + /obj/structure/dresser/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_WRENCH) to_chat(user, "You begin to [anchored ? "unwrench" : "wrench"] [src].") diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index a5235f461a4f..b2928d361d11 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -42,7 +42,7 @@ var/mob/living/buckled_mob = m buckled_mob.electrocute_act(85, src, 1) to_chat(buckled_mob, "You feel a deep shock course through your body!") - addtimer(CALLBACK(buckled_mob, /mob/living.proc/electrocute_act, 85, src, 1), 1) + addtimer(CALLBACK(buckled_mob, TYPE_PROC_REF(/mob/living, electrocute_act), 85, src, 1), 1) visible_message("The electric chair went off!", "You hear a deep sharp shock!") /obj/structure/chair/e_chair/post_buckle_mob(mob/living/L) diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 1bd6325e60a5..a0097504c1d3 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -49,7 +49,7 @@ continue opening = FALSE return - addtimer(CALLBACK(src, /obj/structure/falsewall/proc/toggle_open), 5) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/structure/falsewall, toggle_open)), 5) /obj/structure/falsewall/proc/toggle_open() if(!QDELETED(src)) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index 286fda25fbfe..b316d8b40fa5 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -3,6 +3,8 @@ max_integrity = 40 anchored = TRUE + hitsound_type = PROJECTILE_HITSOUND_NON_LIVING + /obj/structure/flora/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) switch(damage_type) if(BRUTE) @@ -22,6 +24,8 @@ layer = FLY_LAYER var/log_amount = 10 + hitsound_type = PROJECTILE_HITSOUND_WOOD + /obj/structure/flora/tree/ComponentInitialize() . = ..() AddComponent(/datum/component/largetransparency) @@ -52,6 +56,8 @@ density = FALSE pixel_x = -16 + hitsound_type = PROJECTILE_HITSOUND_WOOD + /obj/structure/flora/tree/pine name = "pine tree" desc = "A coniferous pine tree." @@ -362,7 +368,7 @@ /obj/item/kirbyplants/ComponentInitialize() . = ..() AddComponent(/datum/component/tactical) - addtimer(CALLBACK(src, /datum.proc/_AddComponent, list(/datum/component/beauty, 500)), 0) + addtimer(CALLBACK(src, TYPE_PROC_REF(/datum, _AddComponent), list(/datum/component/beauty, 500)), 0) AddComponent(/datum/component/two_handed, require_twohands=TRUE, force_unwielded=10, force_wielded=10) /obj/item/kirbyplants/random @@ -370,6 +376,8 @@ icon_state = "random_plant" var/list/static/states + hitsound_type = PROJECTILE_HITSOUND_STONE + /obj/item/kirbyplants/random/Initialize() . = ..() icon = 'icons/obj/flora/plants.dmi' @@ -424,6 +432,8 @@ max_integrity = 100 var/obj/item/stack/mineResult = /obj/item/stack/ore/glass/basalt + hitsound_type = PROJECTILE_HITSOUND_STONE + /obj/structure/flora/rock/Initialize() . = ..() icon_state = "[base_icon_state][rand(1,3)]" @@ -492,7 +502,7 @@ desc = "A wild plant that is found in jungles." icon = 'icons/obj/flora/jungleflora.dmi' icon_state = "busha" - base_icon_state = "bush" + base_icon_state = "busha" /obj/structure/flora/junglebush/Initialize() icon_state = "[base_icon_state][rand(1, 3)]" @@ -500,9 +510,11 @@ /obj/structure/flora/junglebush/b icon_state = "bushb" + base_icon_state = "bushb" /obj/structure/flora/junglebush/c icon_state = "bushc" + base_icon_state = "bushc" /obj/structure/flora/junglebush/large icon_state = "bush" diff --git a/code/game/objects/structures/fugitive_role_spawners.dm b/code/game/objects/structures/fugitive_role_spawners.dm index afdff7afec92..4f98e919ffc5 100644 --- a/code/game/objects/structures/fugitive_role_spawners.dm +++ b/code/game/objects/structures/fugitive_role_spawners.dm @@ -14,14 +14,6 @@ . = ..() notify_ghosts("Hunters are waking up looking for refugees!", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE, ignore_key = POLL_IGNORE_FUGITIVE) -/obj/effect/mob_spawn/human/fugitive/special(mob/living/new_spawn) - var/datum/antagonist/fugitive_hunter/fughunter = new - fughunter.backstory = back_story - new_spawn.mind.add_antag_datum(fughunter) - fughunter.greet() - message_admins("[ADMIN_LOOKUPFLW(new_spawn)] has been made into a Fugitive Hunter by an event.") - log_game("[key_name(new_spawn)] was spawned as a Fugitive Hunter by an event.") - /obj/effect/mob_spawn/human/fugitive/spacepol name = "police pod" desc = "A small sleeper typically used to put people to sleep for briefing on the mission." @@ -38,7 +30,7 @@ back_story = "russian" desc = "A small sleeper typically used to make long distance travel a bit more bearable." mob_name = "russian" - outfit = /datum/outfit/russiancorpse/hunter + outfit = /datum/outfit/frontier/hunter icon = 'icons/obj/machines/sleeper.dmi' icon_state = "sleeper" diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 62ee78c4f885..fec2c2f121ae 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -68,7 +68,7 @@ yolk.equipOutfit(/datum/outfit/ashwalker)//this is an authentic mess we're making yolk.update_body() yolk.gib() - qdel(egg) + QDEL_NULL(egg) return ..() @@ -92,6 +92,11 @@ var/datum/team/ashwalkers/team var/obj/structure/ash_walker_eggshell/eggshell + +/obj/effect/mob_spawn/human/ash_walker/Destroy() + eggshell = null + return ..() + /obj/effect/mob_spawn/human/ash_walker/allow_spawn(mob/user) if(!(user.key in team.players_spawned))//one per person unless you get a bonus spawn return TRUE @@ -111,7 +116,7 @@ ADD_TRAIT(H, TRAIT_PRIMITIVE, ROUNDSTART_TRAIT) team.players_spawned += (new_spawn.key) eggshell.egg = null - qdel(eggshell) + QDEL_NULL(eggshell) /obj/effect/mob_spawn/human/ash_walker/Initialize(mapload, datum/team/ashwalkers/ashteam) . = ..() @@ -397,7 +402,7 @@ /obj/effect/mob_spawn/human/hotel_staff/Destroy() new/obj/structure/fluff/empty_sleeper/syndicate(get_turf(src)) - ..() + return ..() /obj/effect/mob_spawn/human/demonic_friend name = "Essence of friendship" @@ -440,7 +445,7 @@ id.update_label() else to_chat(L, "Your owner is already dead! You will soon perish.") - addtimer(CALLBACK(L, /mob.proc/dust, 150)) //Give em a few seconds as a mercy. + addtimer(CALLBACK(L, TYPE_PROC_REF(/mob, dust), 150)) //Give em a few seconds as a mercy. /datum/outfit/demonic_friend name = "Demonic Friend" @@ -714,7 +719,6 @@ /obj/effect/mob_spawn/human/pirate/special(mob/living/new_spawn) new_spawn.fully_replace_character_name(new_spawn.real_name,generate_pirate_name()) - new_spawn.mind.add_antag_datum(/datum/antagonist/pirate) /obj/effect/mob_spawn/human/pirate/proc/generate_pirate_name() var/beggings = strings(PIRATE_NAMES_FILE, "beginnings") diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 52b19a23eada..7a8aec8a97f2 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -297,7 +297,7 @@ qdel(src) return TRUE -/obj/structure/girder/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/girder/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if((mover.pass_flags & PASSGRILLE) || istype(mover, /obj/projectile)) return prob(girderpasschance) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 103e29bb2b1a..56f50eb1768e 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -126,7 +126,7 @@ if(!shock(user, 70)) take_damage(20, BRUTE, "melee", 1) -/obj/structure/grille/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/grille/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(!. && istype(mover, /obj/projectile)) return prob(30) diff --git a/code/game/objects/structures/guillotine.dm b/code/game/objects/structures/guillotine.dm index 51816849cbe3..59ef31fafa4e 100644 --- a/code/game/objects/structures/guillotine.dm +++ b/code/game/objects/structures/guillotine.dm @@ -79,7 +79,7 @@ if (GUILLOTINE_BLADE_DROPPED) blade_status = GUILLOTINE_BLADE_MOVING icon_state = "guillotine_raise" - addtimer(CALLBACK(src, .proc/raise_blade), GUILLOTINE_ANIMATION_LENGTH) + addtimer(CALLBACK(src, PROC_REF(raise_blade)), GUILLOTINE_ANIMATION_LENGTH) return if (GUILLOTINE_BLADE_RAISED) if (LAZYLEN(buckled_mobs)) @@ -93,7 +93,7 @@ current_action = 0 blade_status = GUILLOTINE_BLADE_MOVING icon_state = "guillotine_drop" - addtimer(CALLBACK(src, .proc/drop_blade, user), GUILLOTINE_ANIMATION_LENGTH - 2) // Minus two so we play the sound and decap faster + addtimer(CALLBACK(src, PROC_REF(drop_blade), user), GUILLOTINE_ANIMATION_LENGTH - 2) // Minus two so we play the sound and decap faster else current_action = 0 else @@ -106,7 +106,7 @@ else blade_status = GUILLOTINE_BLADE_MOVING icon_state = "guillotine_drop" - addtimer(CALLBACK(src, .proc/drop_blade), GUILLOTINE_ANIMATION_LENGTH) + addtimer(CALLBACK(src, PROC_REF(drop_blade)), GUILLOTINE_ANIMATION_LENGTH) /obj/structure/guillotine/proc/raise_blade() blade_status = GUILLOTINE_BLADE_RAISED @@ -149,7 +149,7 @@ for(var/mob/M in viewers(src, 7)) var/mob/living/carbon/human/C = M if (ishuman(M)) - addtimer(CALLBACK(C, /mob/.proc/emote, "clap"), delay_offset * 0.3) + addtimer(CALLBACK(C, TYPE_PROC_REF(/mob, emote), "clap"), delay_offset * 0.3) delay_offset++ else H.apply_damage(15 * blade_sharpness, BRUTE, head) diff --git a/code/game/objects/structures/guncase.dm b/code/game/objects/structures/guncase.dm index 571f5ca0d3a3..cf0d6957e69c 100644 --- a/code/game/objects/structures/guncase.dm +++ b/code/game/objects/structures/guncase.dm @@ -82,7 +82,7 @@ item_image.copy_overlays(thing) items += list("[thing.name] ([i])" = item_image) - var/pick = show_radial_menu(user, src, items, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 36, require_near = TRUE) + var/pick = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), radius = 36, require_near = TRUE) if(!pick) return diff --git a/code/game/objects/structures/hivebot.dm b/code/game/objects/structures/hivebot.dm index 6c79afce172c..00124d781d80 100644 --- a/code/game/objects/structures/hivebot.dm +++ b/code/game/objects/structures/hivebot.dm @@ -17,7 +17,7 @@ smoke.start() visible_message("[src] warps in!") playsound(src.loc, 'sound/effects/empulse.ogg', 25, TRUE) - addtimer(CALLBACK(src, .proc/warpbots), rand(spawn_time_min, spawn_time_max)) + addtimer(CALLBACK(src, PROC_REF(warpbots)), rand(spawn_time_min, spawn_time_max)) /obj/structure/hivebot_beacon/proc/warpbots() icon_state = "def_radar" diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm index 5ecbd70110d8..900d31f5e8a8 100644 --- a/code/game/objects/structures/holosign.dm +++ b/code/game/objects/structures/holosign.dm @@ -85,7 +85,7 @@ max_integrity = 20 var/allow_walk = TRUE //can we pass through it on walk intent -/obj/structure/holosign/barrier/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/holosign/barrier/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(.) return @@ -104,7 +104,7 @@ countdown_color = "#FCFF00" lifespan = 2 MINUTES -/obj/structure/holosign/barrier/wetsign/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/holosign/barrier/wetsign/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(iscarbon(mover)) var/mob/living/carbon/C = mover @@ -164,7 +164,7 @@ . = ..() . += "The biometric scanners are [force_allaccess ? "off" : "on"]." -/obj/structure/holosign/barrier/medical/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/holosign/barrier/medical/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(force_allaccess) return TRUE @@ -193,7 +193,7 @@ return TRUE /obj/structure/holosign/barrier/medical/attack_hand(mob/living/user) - if(CanPass(user) && user.a_intent == INTENT_HELP) + if(user.a_intent == INTENT_HELP && CanPass(user, get_dir(src, user))) force_allaccess = !force_allaccess to_chat(user, "You [force_allaccess ? "deactivate" : "activate"] the biometric scanners.") //warning spans because you can make the station sick! else @@ -221,7 +221,7 @@ var/mob/living/M = user M.electrocute_act(15,"Energy Barrier", flags = SHOCK_NOGLOVES) shockcd = TRUE - addtimer(CALLBACK(src, .proc/cooldown), 5) + addtimer(CALLBACK(src, PROC_REF(cooldown)), 5) /obj/structure/holosign/barrier/cyborg/hacked/Bumped(atom/movable/AM) if(shockcd) @@ -233,7 +233,7 @@ var/mob/living/M = AM M.electrocute_act(15,"Energy Barrier", flags = SHOCK_NOGLOVES) shockcd = TRUE - addtimer(CALLBACK(src, .proc/cooldown), 5) + addtimer(CALLBACK(src, PROC_REF(cooldown)), 5) /* Infinite Holosigns for admin/etc use */ diff --git a/code/game/objects/structures/icemoon/cave_entrance.dm b/code/game/objects/structures/icemoon/cave_entrance.dm index a4523da28ed7..50cadf2f8801 100644 --- a/code/game/objects/structures/icemoon/cave_entrance.dm +++ b/code/game/objects/structures/icemoon/cave_entrance.dm @@ -141,7 +141,7 @@ GLOBAL_LIST_INIT(ore_probability, list( playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, FALSE, 50, TRUE, TRUE) visible_message("[src] begins to collapse! As it fails, it connects to a random dimensional point and pulls through what it finds!") animate(src, transform = matrix().Scale(0, 1), alpha = 50, time = 5 SECONDS) - addtimer(CALLBACK(src, .proc/collapse), 5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(collapse)), 5 SECONDS) /** * Handles portal deletion diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm index 4ba59605eb0d..14bd21d53160 100644 --- a/code/game/objects/structures/ladders.dm +++ b/code/game/objects/structures/ladders.dm @@ -93,7 +93,7 @@ ) if (up && down) - var/result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/result = show_radial_menu(user, src, tool_list, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) if (!is_ghost && !in_range(src, user)) return // nice try switch(result) diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm index d06d5e167157..7a57d1d5ac3a 100644 --- a/code/game/objects/structures/lavaland/necropolis_tendril.dm +++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm @@ -15,6 +15,8 @@ anchored = TRUE resistance_flags = FIRE_PROOF | LAVA_PROOF + hitsound_type = PROJECTILE_HITSOUND_FLESH + var/gps = null var/obj/effect/light_emitter/tendril/emitted_light @@ -71,7 +73,7 @@ GLOBAL_LIST_INIT(tendrils, list()) visible_message("The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!") visible_message("Something falls free of the tendril!") playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, FALSE, 50, TRUE, TRUE) - addtimer(CALLBACK(src, .proc/collapse), 50) + addtimer(CALLBACK(src, PROC_REF(collapse)), 50) /obj/effect/collapse/Destroy() QDEL_NULL(emitted_light) diff --git a/code/game/objects/structures/life_candle.dm b/code/game/objects/structures/life_candle.dm index 7e562976e1af..4ed4ddfcbbf7 100644 --- a/code/game/objects/structures/life_candle.dm +++ b/code/game/objects/structures/life_candle.dm @@ -65,7 +65,7 @@ for(var/m in linked_minds) var/datum/mind/mind = m if(!mind.current || (mind.current && mind.current.stat == DEAD)) - addtimer(CALLBACK(src, .proc/respawn, mind), respawn_time, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(respawn), mind), respawn_time, TIMER_UNIQUE) /obj/structure/life_candle/proc/respawn(datum/mind/mind) var/turf/T = get_turf(src) diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm index 9b13275088c6..e0f6e22f3e7e 100644 --- a/code/game/objects/structures/manned_turret.dm +++ b/code/game/objects/structures/manned_turret.dm @@ -172,7 +172,7 @@ /obj/machinery/deployable_turret/proc/volley(mob/user) target_turf = get_turf(target) for(var/i in 1 to number_of_shots) - addtimer(CALLBACK(src, /obj/machinery/deployable_turret/.proc/fire_helper, user), i*rate_of_fire) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/deployable_turret, fire_helper), user), i*rate_of_fire) /obj/machinery/deployable_turret/proc/fire_helper(mob/user) if(user.incapacitated() || !(user in buckled_mobs)) @@ -230,7 +230,7 @@ /obj/item/gun_control/Destroy() turret = null - ..() + return ..() /obj/item/gun_control/CanItemAutoclick() return TRUE diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index bf7c919215d1..9e201e29b108 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -57,7 +57,7 @@ return return TryToSwitchState(user) -/obj/structure/mineral_door/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/mineral_door/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(istype(mover, /obj/effect/beam)) return !opacity @@ -99,7 +99,7 @@ isSwitchingStates = FALSE if(close_delay != -1) - addtimer(CALLBACK(src, .proc/Close), close_delay) + addtimer(CALLBACK(src, PROC_REF(Close)), close_delay) /obj/structure/mineral_door/proc/Close() if(isSwitchingStates || !door_opened) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 8b50469eb8c0..2e8c7508d594 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -378,7 +378,7 @@ GLOBAL_LIST_EMPTY(crematoriums) icon_state = "morguet" pass_flags_self = PASSTABLE -/obj/structure/tray/m_tray/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/tray/m_tray/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(.) return diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm index 2f385f65a161..294976f72fc6 100644 --- a/code/game/objects/structures/plasticflaps.dm +++ b/code/game/objects/structures/plasticflaps.dm @@ -31,7 +31,7 @@ var/action = anchored ? "unscrews [src] from" : "screws [src] to" var/uraction = anchored ? "unscrew [src] from " : "screw [src] to" user.visible_message("[user] [action] the floor.", "You start to [uraction] the floor...", "You hear rustling noises.") - if(W.use_tool(src, user, 100, volume=100, extra_checks = CALLBACK(src, .proc/check_anchored_state, anchored))) + if(W.use_tool(src, user, 100, volume=100, extra_checks = CALLBACK(src, PROC_REF(check_anchored_state), anchored))) set_anchored(!anchored) to_chat(user, "You [anchored ? "unscrew" : "screw"] [src] from the floor.") return TRUE @@ -69,31 +69,33 @@ return CanAStarPass(ID, to_dir, M.pulling) return TRUE //diseases, stings, etc can pass -/obj/structure/plasticflaps/CanAllowThrough(atom/movable/A, turf/T) + +/obj/structure/plasticflaps/CanAllowThrough(atom/movable/mover, border_dir) . = ..() - if(istype(A) && (A.pass_flags & PASSGLASS)) + if(istype(mover) && (mover.pass_flags & PASSGLASS)) return prob(60) - var/obj/structure/bed/B = A - if(istype(A, /obj/structure/bed) && (B.has_buckled_mobs() || B.density))//if it's a bed/chair and is dense or someone is buckled, it will not pass - return FALSE + if(istype(mover, /obj/structure/bed)) + var/obj/structure/bed/bed_mover = mover + if(bed_mover.density || bed_mover.has_buckled_mobs())//if it's a bed/chair and is dense or someone is buckled, it will not pass + return FALSE - if(istype(A, /obj/structure/closet/cardboard)) - var/obj/structure/closet/cardboard/C = A - if(C.move_delay) + else if(istype(mover, /obj/structure/closet/cardboard)) + var/obj/structure/closet/cardboard/cardboard_mover = mover + if(cardboard_mover.move_delay) return FALSE - if(ismecha(A)) + else if(ismecha(mover)) return FALSE - else if(isliving(A)) // You Shall Not Pass! - var/mob/living/M = A - if(isbot(A)) //Bots understand the secrets + else if(isliving(mover)) // You Shall Not Pass! + var/mob/living/living_mover = mover + if(isbot(mover)) //Bots understand the secrets return TRUE - if(M.buckled && istype(M.buckled, /mob/living/simple_animal/bot/mulebot)) // mulebot passenger gets a free pass. + if(living_mover.buckled && istype(living_mover.buckled, /mob/living/simple_animal/bot/mulebot)) // mulebot passenger gets a free pass. return TRUE - if(M.body_position == STANDING_UP && !M.ventcrawler && M.mob_size != MOB_SIZE_TINY) //If your not laying down, or a ventcrawler or a small creature, no pass. + if(living_mover.body_position == STANDING_UP && !living_mover.ventcrawler && living_mover.mob_size != MOB_SIZE_TINY) //If your not laying down, or a ventcrawler or a small creature, no pass. return FALSE /obj/structure/plasticflaps/deconstruct(disassembled = TRUE) diff --git a/code/game/objects/structures/poddoor_assembly.dm b/code/game/objects/structures/poddoor_assembly.dm index c8cf1931c701..5909e0f666b2 100644 --- a/code/game/objects/structures/poddoor_assembly.dm +++ b/code/game/objects/structures/poddoor_assembly.dm @@ -26,7 +26,7 @@ /obj/structure/poddoor_assembly/ComponentInitialize() . = ..() - AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated)) + AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, PROC_REF(can_be_rotated))) /obj/structure/poddoor_assembly/proc/can_be_rotated(mob/user, rotation_type) return !anchored diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm index 61b07aadb090..95c24145399f 100644 --- a/code/game/objects/structures/railings.dm +++ b/code/game/objects/structures/railings.dm @@ -18,7 +18,7 @@ . = ..() if(density && flags_1 & ON_BORDER_1) var/static/list/loc_connections = list( - COMSIG_ATOM_EXIT = .proc/on_exit, + COMSIG_ATOM_EXIT = PROC_REF(on_exit), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -31,12 +31,12 @@ if(skip) return ..() . = ..() - AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_CLOCKWISE_HALF | ROTATION_COUNTERCLOCKWISE | ROTATION_COUNTERCLOCKWISE_HALF | ROTATION_VERBS ,null,CALLBACK(src, .proc/can_be_rotated),CALLBACK(src,.proc/after_rotation)) + AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_CLOCKWISE_HALF | ROTATION_COUNTERCLOCKWISE | ROTATION_COUNTERCLOCKWISE_HALF | ROTATION_VERBS ,null,CALLBACK(src, PROC_REF(can_be_rotated)),CALLBACK(src, PROC_REF(after_rotation))) /obj/structure/railing/corner/ComponentInitialize() . = ..(TRUE) - AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ,null,CALLBACK(src, .proc/can_be_rotated),CALLBACK(src,.proc/after_rotation)) + AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ,null,CALLBACK(src, PROC_REF(can_be_rotated)),CALLBACK(src, PROC_REF(after_rotation))) /obj/structure/railing/attackby(obj/item/I, mob/living/user, params) @@ -77,16 +77,15 @@ if(flags_1&NODECONSTRUCT_1) return to_chat(user, "You begin to [anchored ? "unfasten the railing from":"fasten the railing to"] the floor...") - if(I.use_tool(src, user, volume = 75, extra_checks = CALLBACK(src, .proc/check_anchored, anchored))) + if(I.use_tool(src, user, volume = 75, extra_checks = CALLBACK(src, PROC_REF(check_anchored), anchored))) set_anchored(!anchored) to_chat(user, "You [anchored ? "fasten the railing to":"unfasten the railing from"] the floor.") return TRUE -/obj/structure/railing/CanPass(atom/movable/mover, turf/target) +/obj/structure/railing/CanPass(atom/movable/mover, border_dir) . = ..() - if(get_dir(loc, target) & dir) - var/checking = FLYING | FLOATING - return . || mover.throwing || mover.movement_type & checking + if(border_dir & dir) + return . || mover.throwing || mover.movement_type & (FLYING | FLOATING) return TRUE /obj/structure/railing/proc/on_exit(datum/source, atom/movable/leaving, direction) diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm index a2c5d59af916..16cf7af6ce81 100644 --- a/code/game/objects/structures/shower.dm +++ b/code/game/objects/structures/shower.dm @@ -23,7 +23,7 @@ soundloop = new(list(src), FALSE) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -81,10 +81,10 @@ // If there was already mist, and the shower was turned off (or made cold): remove the existing mist in 25 sec var/obj/effect/mist/mist = locate() in loc if(!mist && on && current_temperature != SHOWER_FREEZING) - addtimer(CALLBACK(src, .proc/make_mist), 5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(make_mist)), 5 SECONDS) if(mist && (!on || current_temperature == SHOWER_FREEZING)) - addtimer(CALLBACK(src, .proc/clear_mist), 25 SECONDS) + addtimer(CALLBACK(src, PROC_REF(clear_mist)), 25 SECONDS) /obj/machinery/shower/proc/make_mist() var/obj/effect/mist/mist = locate() in loc diff --git a/code/game/objects/structures/stairs.dm b/code/game/objects/structures/stairs.dm index 3e496f06252a..47cf473c84cf 100644 --- a/code/game/objects/structures/stairs.dm +++ b/code/game/objects/structures/stairs.dm @@ -34,7 +34,7 @@ build_signal_listener() update_surrounding() var/static/list/loc_connections = list( - COMSIG_ATOM_EXIT = .proc/on_exit, + COMSIG_ATOM_EXIT = PROC_REF(on_exit), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -65,7 +65,7 @@ return //Let's not block ourselves. if(!isobserver(leaving) && isTerminator() && direction == dir) - INVOKE_ASYNC(src, .proc/stair_ascend, leaving) + INVOKE_ASYNC(src, PROC_REF(stair_ascend), leaving) leaving.Bump(src) return COMPONENT_ATOM_BLOCK_EXIT @@ -114,7 +114,7 @@ if(listeningTo) UnregisterSignal(listeningTo, COMSIG_TURF_MULTIZ_NEW) var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) - RegisterSignal(T, COMSIG_TURF_MULTIZ_NEW, .proc/on_multiz_new) + RegisterSignal(T, COMSIG_TURF_MULTIZ_NEW, PROC_REF(on_multiz_new)) listeningTo = T /obj/structure/stairs/proc/force_open_above() diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index a98cf5ef40a3..a4155003dcdb 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -15,7 +15,7 @@ /obj/structure/statue/Initialize() . = ..() AddComponent(art_type, impressiveness) - addtimer(CALLBACK(src, /datum.proc/_AddComponent, list(/datum/component/beauty, impressiveness * 75)), 0) + addtimer(CALLBACK(src, TYPE_PROC_REF(/datum, _AddComponent), list(/datum/component/beauty, impressiveness * 75)), 0) /obj/structure/statue/attackby(obj/item/W, mob/living/user, params) add_fingerprint(user) @@ -299,4 +299,3 @@ name = "\improper Karl Marx bust" desc = "A bust depicting a certain 19th century economist. You get the feeling a specter is haunting the sector." icon_state = "marx" - art_type = /datum/component/art/rev diff --git a/code/game/objects/structures/table_flipped.dm b/code/game/objects/structures/table_flipped.dm index 779f97ad8bbf..5047e0f3e2a9 100644 --- a/code/game/objects/structures/table_flipped.dm +++ b/code/game/objects/structures/table_flipped.dm @@ -12,7 +12,7 @@ /obj/structure/flippedtable/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_EXIT = .proc/on_exit, + COMSIG_ATOM_EXIT = PROC_REF(on_exit), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 0d540477684f..5882d5c382cd 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -98,7 +98,7 @@ /obj/structure/table/attack_tk() return FALSE -/obj/structure/table/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/table/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(.) return @@ -300,7 +300,7 @@ /obj/structure/table/rolling/AfterPutItemOnTable(obj/item/I, mob/living/user) . = ..() attached_items += I - RegisterSignal(I, COMSIG_MOVABLE_MOVED, .proc/RemoveItemFromTable) //Listen for the pickup event, unregister on pick-up so we aren't moved + RegisterSignal(I, COMSIG_MOVABLE_MOVED, PROC_REF(RemoveItemFromTable)) //Listen for the pickup event, unregister on pick-up so we aren't moved /obj/structure/table/rolling/proc/RemoveItemFromTable(datum/source, newloc, dir) SIGNAL_HANDLER @@ -312,6 +312,9 @@ /obj/structure/table/rolling/Moved(atom/OldLoc, Dir) . = ..() + //Nullspaced + if(!loc) + return for(var/mob/M in OldLoc.contents)//Kidnap everyone on top M.forceMove(loc) for(var/x in attached_items) @@ -336,13 +339,15 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) var/list/debris = list() + hitsound_type = PROJECTILE_HITSOUND_GLASS + /obj/structure/table/glass/Initialize() . = ..() debris += new frame debris += new /obj/item/shard var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -358,7 +363,7 @@ return // Don't break if they're just flying past if(AM.throwing) - addtimer(CALLBACK(src, .proc/throw_check, AM), 5) + addtimer(CALLBACK(src, PROC_REF(throw_check), AM), 5) else check_break(AM) @@ -421,6 +426,8 @@ smoothing_groups = list(SMOOTH_GROUP_WOOD_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES canSmoothWith = list(SMOOTH_GROUP_WOOD_TABLES) + hitsound_type = PROJECTILE_HITSOUND_WOOD + /obj/structure/table/wood/narsie_act(total_override = TRUE) if(!total_override) ..() @@ -585,7 +592,7 @@ smoothing_flags = NONE smoothing_groups = null canSmoothWith = null - can_buckle = 1 + can_buckle = TRUE buckle_lying = 90 //I don't see why you wouldn't be lying down while buckled to it buckle_requires_restraints = FALSE can_flip = FALSE @@ -614,10 +621,21 @@ /obj/structure/table/optable/proc/get_patient() var/mob/living/carbon/M = locate(/mob/living/carbon) in loc if(M) - if(M.resting) - patient = M + if(M.resting || M.buckled == src) + set_patient(M) else - patient = null + set_patient(null) + +/obj/structure/table/optable/proc/set_patient(new_patient) + if(patient) + UnregisterSignal(patient, COMSIG_PARENT_QDELETING) + patient = new_patient + if(patient) + RegisterSignal(patient, COMSIG_PARENT_QDELETING, PROC_REF(patient_deleted)) + +/obj/structure/table/optable/proc/patient_deleted(datum/source) + SIGNAL_HANDLER + set_patient(null) /obj/structure/table/optable/proc/check_eligible_patient() get_patient() @@ -645,7 +663,7 @@ . = ..() . += "It's held together by a couple of bolts." -/obj/structure/rack/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/rack/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(.) return @@ -721,6 +739,7 @@ flags_1 = CONDUCT_1 custom_materials = list(/datum/material/iron=2000) var/building = FALSE + var/obj/construction_type = /obj/structure/rack /obj/item/rack_parts/attackby(obj/item/W, mob/user, params) if (W.tool_behaviour == TOOL_WRENCH) @@ -730,14 +749,17 @@ . = ..() /obj/item/rack_parts/attack_self(mob/user) + if(locate(construction_type) in get_turf(user)) + balloon_alert(user, "no room!") + return if(building) return building = TRUE - to_chat(user, "You start constructing a rack...") + to_chat(user, "You start assembling [src]...") if(do_after(user, 50, target = user, progress=TRUE)) if(!user.temporarilyRemoveItemFromInventory(src)) return - var/obj/structure/rack/R = new /obj/structure/rack(user.loc) + var/obj/structure/R = new construction_type(user.loc) user.visible_message("[user] assembles \a [R].\ ", "You assemble \a [R].") R.add_fingerprint(user) @@ -758,6 +780,8 @@ armor = list("melee" = 10, "bullet" = 30, "laser" = 30, "energy" = 100, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70) //trolld can_flip = FALSE //same as reinforced and theres no sprites for it + hitsound_type = PROJECTILE_HITSOUND_WOOD + /obj/structure/table/wood/reinforced/deconstruction_hints(mob/user) if(deconstruction_ready) return "The top cover has been pried loose and the main frame's bolts are exposed." diff --git a/code/game/objects/structures/training_machine.dm b/code/game/objects/structures/training_machine.dm index c4940e941f2f..c8c6150c7e15 100644 --- a/code/game/objects/structures/training_machine.dm +++ b/code/game/objects/structures/training_machine.dm @@ -133,7 +133,7 @@ attached_item.forceMove(src) attached_item.vis_flags |= VIS_INHERIT_ID vis_contents += attached_item - RegisterSignal(attached_item, COMSIG_PARENT_QDELETING, .proc/on_attached_delete) + RegisterSignal(attached_item, COMSIG_PARENT_QDELETING, PROC_REF(on_attached_delete)) handle_density() /** diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm index 570ead69ead7..77cb9c3a7b67 100644 --- a/code/game/objects/structures/transit_tubes/station.dm +++ b/code/game/objects/structures/transit_tubes/station.dm @@ -109,7 +109,7 @@ if(open_status == STATION_TUBE_CLOSED) icon_state = "opening_[base_icon]" open_status = STATION_TUBE_OPENING - addtimer(CALLBACK(src, .proc/finish_animation), OPEN_DURATION) + addtimer(CALLBACK(src, PROC_REF(finish_animation)), OPEN_DURATION) /obj/structure/transit_tube/station/proc/finish_animation() switch(open_status) @@ -124,7 +124,7 @@ if(open_status == STATION_TUBE_OPEN) icon_state = "closing_[base_icon]" open_status = STATION_TUBE_CLOSING - addtimer(CALLBACK(src, .proc/finish_animation), CLOSE_DURATION) + addtimer(CALLBACK(src, PROC_REF(finish_animation)), CLOSE_DURATION) /obj/structure/transit_tube/station/proc/launch_pod() if(launch_cooldown >= world.time) @@ -146,7 +146,7 @@ /obj/structure/transit_tube/station/pod_stopped(obj/structure/transit_tube_pod/pod, from_dir) pod_moving = TRUE - addtimer(CALLBACK(src, .proc/start_stopped, pod), 5) + addtimer(CALLBACK(src, PROC_REF(start_stopped), pod), 5) /obj/structure/transit_tube/station/proc/start_stopped(obj/structure/transit_tube_pod/pod) if(QDELETED(pod)) @@ -155,7 +155,7 @@ pod.setDir(tube_dirs[1]) //turning the pod around for next launch. launch_cooldown = world.time + cooldown_delay open_animation() - addtimer(CALLBACK(src, .proc/finish_stopped, pod), OPEN_DURATION + 2) + addtimer(CALLBACK(src, PROC_REF(finish_stopped), pod), OPEN_DURATION + 2) /obj/structure/transit_tube/station/proc/finish_stopped(obj/structure/transit_tube_pod/pod) pod_moving = FALSE diff --git a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm index 61a93dab7f14..f3ea6d55a1da 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm @@ -27,7 +27,7 @@ /obj/structure/c_transit_tube/ComponentInitialize() . = ..() - AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_FLIP | ROTATION_VERBS,null,null,CALLBACK(src,.proc/after_rot)) + AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_FLIP | ROTATION_VERBS,null,null,CALLBACK(src, PROC_REF(after_rot))) /obj/structure/c_transit_tube/proc/after_rot(mob/user,rotation_type) if(flipped_build_type && rotation_type == ROTATION_FLIP) @@ -46,7 +46,7 @@ return to_chat(user, "You start attaching the [name]...") add_fingerprint(user) - if(I.use_tool(src, user, time_to_unwrench, volume=50, extra_checks=CALLBACK(src, .proc/can_wrench_in_loc, user))) + if(I.use_tool(src, user, time_to_unwrench, volume=50, extra_checks=CALLBACK(src, PROC_REF(can_wrench_in_loc), user))) to_chat(user, "You attach the [name].") var/obj/structure/transit_tube/R = new build_type(loc, dir) transfer_fingerprints_to(R) diff --git a/code/game/objects/structures/traps.dm b/code/game/objects/structures/traps.dm index 6e0d99ddec33..f56cfae9a5b8 100644 --- a/code/game/objects/structures/traps.dm +++ b/code/game/objects/structures/traps.dm @@ -31,7 +31,7 @@ /mob/dead)) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -98,80 +98,6 @@ L.electrocute_act(30, src, flags = SHOCK_NOGLOVES) // electrocute act does a message. L.Paralyze(stun_time) -/obj/structure/trap/stun/hunter - name = "bounty trap" - desc = "A trap that only goes off when a fugitive steps on it, announcing the location and stunning the target. You'd better avoid it." - icon = 'icons/obj/objects.dmi' - icon_state = "bounty_trap_on" - stun_time = 200 - sparks = FALSE //the item version gives them off to prevent runtimes (see Destroy()) - checks_antimagic = FALSE - var/obj/item/bountytrap/stored_item - var/caught = FALSE - -/obj/structure/trap/stun/hunter/Initialize(mapload) - . = ..() - time_between_triggers = 10 - flare_message = "[src] snaps shut!" - -/obj/structure/trap/stun/hunter/on_entered(datum/source, atom/movable/AM) - if(isliving(AM)) - var/mob/living/L = AM - if(!L.mind?.has_antag_datum(/datum/antagonist/fugitive)) - return - caught = TRUE - . = ..() - -/obj/structure/trap/stun/hunter/flare() - ..() - stored_item.forceMove(get_turf(src)) - forceMove(stored_item) - if(caught) - stored_item.announce_fugitive() - caught = FALSE - -/obj/item/bountytrap - name = "bounty trap" - desc = "A trap that only goes off when a fugitive steps on it, announcing the location and stunning the target. It's currently inactive." - icon = 'icons/obj/objects.dmi' - icon_state = "bounty_trap_off" - var/obj/structure/trap/stun/hunter/stored_trap - var/obj/item/radio/radio - var/datum/effect_system/spark_spread/spark_system - -/obj/item/bountytrap/Initialize(mapload) - . = ..() - radio = new(src) - radio.subspace_transmission = TRUE - radio.canhear_range = 0 - radio.recalculateChannels() - spark_system = new - spark_system.set_up(4,1,src) - spark_system.attach(src) - name = "[name] #[rand(1, 999)]" - stored_trap = new(src) - stored_trap.name = name - stored_trap.stored_item = src - -/obj/item/bountytrap/proc/announce_fugitive() - spark_system.start() - playsound(src, 'sound/machines/ding.ogg', 50, TRUE) - radio.talk_into(src, "Fugitive has triggered this trap in the [get_area_name(src)]!", RADIO_CHANNEL_COMMON) - -/obj/item/bountytrap/attack_self(mob/living/user) - var/turf/T = get_turf(src) - if(!user || !user.transferItemToLoc(src, T))//visibly unequips - return - to_chat(user, "You set up [src]. Examine while close to disarm it.") - stored_trap.forceMove(T)//moves trap to ground - forceMove(stored_trap)//moves item into trap - -/obj/item/bountytrap/Destroy() - qdel(stored_trap) - QDEL_NULL(radio) - QDEL_NULL(spark_system) - . = ..() - /obj/structure/trap/fire name = "flame trap" desc = "A trap that will set you ablaze. You'd better avoid it." diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 490752373295..78ebfc3a4fd7 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -38,7 +38,7 @@ /obj/structure/windoor_assembly/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_EXIT = .proc/on_exit, + COMSIG_ATOM_EXIT = PROC_REF(on_exit), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -57,9 +57,10 @@ icon_state = "[facing]_[secure ? "secure_" : ""]windoor_assembly[state]" return ..() -/obj/structure/windoor_assembly/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/windoor_assembly/CanAllowThrough(atom/movable/mover, border_dir) . = ..() - if(get_dir(loc, target) == dir) //Make sure looking at appropriate border + + if(border_dir == dir) return if(istype(mover, /obj/structure/window)) @@ -325,7 +326,7 @@ /obj/structure/windoor_assembly/ComponentInitialize() . = ..() var/static/rotation_flags = ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS - AddComponent(/datum/component/simple_rotation, rotation_flags, can_be_rotated=CALLBACK(src, .proc/can_be_rotated), after_rotation=CALLBACK(src,.proc/after_rotation)) + AddComponent(/datum/component/simple_rotation, rotation_flags, can_be_rotated=CALLBACK(src, PROC_REF(can_be_rotated)), after_rotation=CALLBACK(src, PROC_REF(after_rotation))) /obj/structure/windoor_assembly/proc/can_be_rotated(mob/user,rotation_type) if(anchored) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 3b43831f2751..d23ef8bca223 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -30,6 +30,8 @@ flags_ricochet = RICOCHET_HARD ricochet_chance_mod = 0.4 + hitsound_type = PROJECTILE_HITSOUND_GLASS + /obj/structure/window/examine(mob/user) . = ..() if(flags_1 & NODECONSTRUCT_1) @@ -66,7 +68,7 @@ explosion_block = EXPLOSION_BLOCK_PROC var/static/list/loc_connections = list( - COMSIG_ATOM_EXIT = .proc/on_exit, + COMSIG_ATOM_EXIT = PROC_REF(on_exit), ) if (flags_1 & ON_BORDER_1) @@ -74,7 +76,7 @@ /obj/structure/window/ComponentInitialize() . = ..() - AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ,null,CALLBACK(src, .proc/can_be_rotated),CALLBACK(src,.proc/after_rotation)) + AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ,null,CALLBACK(src, PROC_REF(can_be_rotated)),CALLBACK(src, PROC_REF(after_rotation))) /obj/structure/window/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) @@ -98,7 +100,7 @@ if(current_size >= STAGE_FIVE) deconstruct(FALSE) -/obj/structure/window/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/window/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(.) return @@ -106,7 +108,7 @@ if(fulltile) return FALSE - if(get_dir(loc, target) == dir) + if(border_dir == dir) return FALSE if(istype(mover, /obj/structure/window)) @@ -190,13 +192,13 @@ if(!(flags_1&NODECONSTRUCT_1) && !(reinf && state >= RWINDOW_FRAME_BOLTED)) if(I.tool_behaviour == TOOL_SCREWDRIVER) to_chat(user, "You begin to [anchored ? "unscrew the window from":"screw the window to"] the floor...") - if(I.use_tool(src, user, decon_speed, volume = 75, extra_checks = CALLBACK(src, .proc/check_anchored, anchored))) + if(I.use_tool(src, user, decon_speed, volume = 75, extra_checks = CALLBACK(src, PROC_REF(check_anchored), anchored))) set_anchored(!anchored) to_chat(user, "You [anchored ? "fasten the window to":"unfasten the window from"] the floor.") return else if(I.tool_behaviour == TOOL_WRENCH && !anchored) to_chat(user, "You begin to disassemble [src]...") - if(I.use_tool(src, user, decon_speed, volume = 75, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored))) + if(I.use_tool(src, user, decon_speed, volume = 75, extra_checks = CALLBACK(src, PROC_REF(check_state_and_anchored), state, anchored))) var/obj/item/stack/sheet/G = new glass_type(user.loc, glass_amount) G.add_fingerprint(user) playsound(src, 'sound/items/Deconstruct.ogg', 50, TRUE) @@ -205,7 +207,7 @@ return else if(I.tool_behaviour == TOOL_CROWBAR && reinf && (state == WINDOW_OUT_OF_FRAME) && anchored) to_chat(user, "You begin to lever the window into the frame...") - if(I.use_tool(src, user, 100, volume = 75, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored))) + if(I.use_tool(src, user, 100, volume = 75, extra_checks = CALLBACK(src, PROC_REF(check_state_and_anchored), state, anchored))) state = RWINDOW_SECURE to_chat(user, "You pry the window into the frame.") return @@ -238,18 +240,24 @@ /obj/structure/window/proc/check_state_and_anchored(checked_state, checked_anchored) return check_state(checked_state) && check_anchored(checked_anchored) + /obj/structure/window/mech_melee_attack(obj/mecha/M) if(!can_be_reached()) return ..() /obj/structure/window/proc/can_be_reached(mob/user) - if(!fulltile) - if(get_dir(user,src) & dir) - for(var/obj/O in loc) - if(!O.CanPass(user, user.loc, 1)) - return 0 - return 1 + if(fulltile) + return TRUE + var/checking_dir = get_dir(user, src) + if(!(checking_dir & dir)) + return TRUE // Only windows on the other side may be blocked by other things. + checking_dir = REVERSE_DIR(checking_dir) + for(var/obj/blocker in loc) + if(!blocker.CanPass(user, checking_dir)) + return FALSE + return TRUE + /obj/structure/window/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) . = ..() @@ -403,7 +411,7 @@ if(I.use_tool(src, user, 150, volume = 100)) to_chat(user, "The security bolts are glowing white hot and look ready to be removed.") state = RWINDOW_BOLTS_HEATED - addtimer(CALLBACK(src, .proc/cool_bolts), 300) + addtimer(CALLBACK(src, PROC_REF(cool_bolts)), 300) return if(RWINDOW_BOLTS_HEATED) if(I.tool_behaviour == TOOL_SCREWDRIVER) @@ -532,7 +540,7 @@ if(I.use_tool(src, user, 180, volume = 100)) to_chat(user, "The security screws are glowing white hot and look ready to be removed.") state = RWINDOW_BOLTS_HEATED - addtimer(CALLBACK(src, .proc/cool_bolts), 300) + addtimer(CALLBACK(src, PROC_REF(cool_bolts)), 300) return if(RWINDOW_BOLTS_HEATED) if(I.tool_behaviour == TOOL_SCREWDRIVER) diff --git a/code/game/sound.dm b/code/game/sound.dm index 09affc888bf0..9b53f3d2b010 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -245,8 +245,62 @@ distance_multiplier - Can be used to multiply the distance at which the sound is soundin = pick('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg') if ("pageturn") soundin = pick('sound/effects/pageturn1.ogg', 'sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg') - if ("ricochet") - soundin = pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg','sound/weapons/effects/ric3.ogg','sound/weapons/effects/ric4.ogg','sound/weapons/effects/ric5.ogg') +//gun related stuff start + if ("bullet_hit") + soundin = pick('sound/weapons/gun/hit/bullet_impact1.ogg', 'sound/weapons/gun/hit/bullet_impact2.ogg','sound/weapons/gun/hit/bullet_impact3.ogg') + if ("bullet_impact") + soundin = pick('sound/weapons/gun/hit/bullet_ricochet1.ogg', 'sound/weapons/gun/hit/bullet_ricochet2.ogg','sound/weapons/gun/hit/bullet_ricochet3.ogg','sound/weapons/gun/hit/bullet_ricochet4.ogg','sound/weapons/gun/hit/bullet_ricochet5.ogg','sound/weapons/gun/hit/bullet_ricochet6.ogg','sound/weapons/gun/hit/bullet_ricochet7.ogg','sound/weapons/gun/hit/bullet_ricochet8.ogg') + if ("bullet_bounce") + soundin = pick('sound/weapons/gun/hit/bullet_bounce1.ogg', 'sound/weapons/gun/hit/bullet_bounce2.ogg','sound/weapons/gun/hit/bullet_bounce3.ogg','sound/weapons/gun/hit/bullet_bounce4.ogg','sound/weapons/gun/hit/bullet_bounce5.ogg') + if("bullet_miss") + soundin = pick('sound/weapons/gun/hit/bullet_miss1.ogg', 'sound/weapons/gun/hit/bullet_miss2.ogg', 'sound/weapons/gun/hit/bullet_miss3.ogg') + if("bullet_hit_glass") + soundin = pick( + 'sound/weapons/gun/hit/bullet_glass_01.ogg', + 'sound/weapons/gun/hit/bullet_glass_02.ogg', + 'sound/weapons/gun/hit/bullet_glass_03.ogg', + 'sound/weapons/gun/hit/bullet_glass_04.ogg', + 'sound/weapons/gun/hit/bullet_glass_05.ogg', + 'sound/weapons/gun/hit/bullet_glass_06.ogg', + 'sound/weapons/gun/hit/bullet_glass_07.ogg', + ) + if("bullet_hit_stone") + soundin = pick( + 'sound/weapons/gun/hit/bullet_masonry_01.ogg', + 'sound/weapons/gun/hit/bullet_masonry_02.ogg', + 'sound/weapons/gun/hit/bullet_masonry_03.ogg', + 'sound/weapons/gun/hit/bullet_masonry_04.ogg', + 'sound/weapons/gun/hit/bullet_masonry_05.ogg', + 'sound/weapons/gun/hit/bullet_masonry_06.ogg', + ) + if("bullet_hit_metal") + soundin = pick( + 'sound/weapons/gun/hit/bullet_metal_01.ogg', + 'sound/weapons/gun/hit/bullet_metal_02.ogg', + 'sound/weapons/gun/hit/bullet_metal_03.ogg', + 'sound/weapons/gun/hit/bullet_metal_04.ogg', + 'sound/weapons/gun/hit/bullet_metal_05.ogg', + 'sound/weapons/gun/hit/bullet_metal_06.ogg', + ) + if("bullet_hit_wood") + soundin = pick( + 'sound/weapons/gun/hit/bullet_wood_01.ogg', + 'sound/weapons/gun/hit/bullet_wood_02.ogg', + 'sound/weapons/gun/hit/bullet_wood_03.ogg', + 'sound/weapons/gun/hit/bullet_wood_04.ogg', + 'sound/weapons/gun/hit/bullet_wood_05.ogg', + 'sound/weapons/gun/hit/bullet_wood_06.ogg', + ) + if("bullet_hit_snow") + soundin = pick( + 'sound/weapons/gun/hit/bullet_snow_01.ogg', + 'sound/weapons/gun/hit/bullet_snow_02.ogg', + 'sound/weapons/gun/hit/bullet_snow_03.ogg', + 'sound/weapons/gun/hit/bullet_snow_04.ogg', + 'sound/weapons/gun/hit/bullet_snow_05.ogg', + 'sound/weapons/gun/hit/bullet_snow_06.ogg', + ) +// gun related stuff end if ("terminal_type") soundin = pick('sound/machines/terminal_button01.ogg', 'sound/machines/terminal_button02.ogg', 'sound/machines/terminal_button03.ogg', \ 'sound/machines/terminal_button04.ogg', 'sound/machines/terminal_button05.ogg', 'sound/machines/terminal_button06.ogg', \ @@ -257,8 +311,6 @@ distance_multiplier - Can be used to multiply the distance at which the sound is soundin = pick('sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg') if ("can_open") soundin = pick('sound/effects/can_open1.ogg', 'sound/effects/can_open2.ogg', 'sound/effects/can_open3.ogg') - if("bullet_miss") - soundin = pick('sound/weapons/bulletflyby.ogg', 'sound/weapons/bulletflyby2.ogg', 'sound/weapons/bulletflyby3.ogg') if("revolver_spin") soundin = pick('sound/weapons/gun/revolver/spin1.ogg', 'sound/weapons/gun/revolver/spin2.ogg', 'sound/weapons/gun/revolver/spin3.ogg') if("law") diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index 885128f2caf0..a8567072f56b 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -84,6 +84,8 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( var/old_lighting_corner_SW = lighting_corner_SW var/old_lighting_corner_NW = lighting_corner_NW var/old_directional_opacity = directional_opacity + var/old_dynamic_lumcount = dynamic_lumcount + var/old_opacity = opacity var/old_exl = explosion_level var/old_exi = explosion_id @@ -134,6 +136,8 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( lighting_corner_SW = old_lighting_corner_SW lighting_corner_NW = old_lighting_corner_NW + dynamic_lumcount = old_dynamic_lumcount + if(SSlighting.initialized) lighting_object = old_lighting_object @@ -151,8 +155,11 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( for(var/turf/open/space/S in RANGE_TURFS(1, W)) //RANGE_TURFS is in code\__HELPERS\game.dm S.check_starlight(W) - // Smoothing is deferred if CHANGETURF_DEFER_BATCH is set. - if(!(flags & CHANGETURF_DEFER_BATCH)) + if(old_opacity != opacity && SSticker) + GLOB.cameranet.bareMajorChunkChange(src) + + // Smoothing is deferred if CHANGETURF_DEFER_BATCH is set, or we're uninitialized + if(!(flags & CHANGETURF_DEFER_BATCH) && (flags_1 & INITIALIZED_1)) QUEUE_SMOOTH_NEIGHBORS(W) QUEUE_SMOOTH(W) @@ -170,7 +177,7 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( var/turf_fire_ref if(turf_fire) if(isgroundlessturf(newTurf)) - qdel(turf_fire) + QDEL_NULL(turf_fire) else turf_fire_ref = turf_fire newTurf.turf_fire = turf_fire_ref @@ -179,14 +186,15 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( QDEL_NULL(stashed_air) else if(turf_fire) - qdel(turf_fire) - if(ispath(path,/turf/closed)) - update_air_ref(-1) - . = ..() - else + QDEL_NULL(turf_fire) + if(ispath(path, /turf/open)) . = ..() if(!istype(air,/datum/gas_mixture)) Initalize_Atmos(0) + else + update_air_ref(-1) + . = ..() + // Take off the top layer turf and replace it with the next baseturf down /turf/proc/ScrapeAway(amount=1, flags) @@ -318,7 +326,6 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( for(var/obj/machinery/door/firedoor/FD in T) FD.CalculateAffectingAreas() - HandleTurfChange(src) /turf/open/AfterChange(flags) ..() diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index 8a54ba60939a..74c351e04118 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -82,8 +82,8 @@ icon_state = "reinforced_wall-0" base_icon_state = "reinforced_wall" smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS) - canSmoothWith = list(SMOOTH_GROUP_WALLS) + smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK) + canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_AIRLOCK) /turf/closed/indestructible/riveted diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index ebc3b5164505..ac8d2185b940 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -30,6 +30,8 @@ var/x_offset = -4 var/y_offset = -4 + hitsound_type = PROJECTILE_HITSOUND_STONE + /turf/closed/mineral/Initialize(mapload, inherited_virtual_z) . = ..() if(has_borders) @@ -105,7 +107,7 @@ if(defer_change) // TODO: make the defer change var a var for any changeturf flag flags = CHANGETURF_DEFER_CHANGE ScrapeAway(null, flags) - addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(AfterChange)), 1, TIMER_UNIQUE) playsound(src, 'sound/effects/break_stone.ogg', 50, TRUE) //beautiful destruction /turf/closed/mineral/attack_animal(mob/living/simple_animal/user) @@ -575,7 +577,7 @@ if(defer_change) flags = CHANGETURF_DEFER_CHANGE ScrapeAway(null, flags) - addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(AfterChange)), 1, TIMER_UNIQUE) /turf/closed/mineral/gibtonite/volcanic @@ -638,7 +640,7 @@ if(defer_change) // TODO: make the defer change var a var for any changeturf flag flags = CHANGETURF_DEFER_CHANGE ScrapeAway(flags=flags) - addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(AfterChange)), 1, TIMER_UNIQUE) playsound(src, 'sound/effects/break_stone.ogg', 50, TRUE) //beautiful destruction H.mind.adjust_experience(/datum/skill/mining, 100) //yay! diff --git a/code/game/turfs/closed/wall/mineral_walls.dm b/code/game/turfs/closed/wall/mineral_walls.dm index 77259ba448d2..720a95afd0e1 100644 --- a/code/game/turfs/closed/wall/mineral_walls.dm +++ b/code/game/turfs/closed/wall/mineral_walls.dm @@ -7,6 +7,8 @@ var/last_event = 0 var/active = null + hitsound_type = PROJECTILE_HITSOUND_METAL + /turf/closed/wall/mineral/gold name = "gold wall" desc = "A wall with gold plating. Swag!" @@ -60,6 +62,8 @@ connector_icon_state = "diamond_wall_connector" no_connector_typecache = list(/turf/closed/wall/mineral/diamond, /obj/structure/falsewall/diamond) + hitsound_type = PROJECTILE_HITSOUND_GLASS + /turf/closed/wall/mineral/diamond/yesdiag icon_state = "diamond_wall-255" smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS @@ -97,6 +101,8 @@ connector_icon_state = "sandstone_wall_connector" no_connector_typecache = list(/turf/closed/wall/mineral/sandstone, /obj/structure/falsewall/sandstone) + hitsound_type = PROJECTILE_HITSOUND_NON_LIVING + /turf/closed/wall/mineral/sandstone/yesdiag icon_state = "sandstone_wall-255" smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS @@ -181,6 +187,8 @@ connector_icon_state = "plasma_wall_connector" no_connector_typecache = list(/turf/closed/wall/mineral/plasma, /obj/structure/falsewall/plasma) + hitsound_type = PROJECTILE_HITSOUND_GLASS + /turf/closed/wall/mineral/plasma/yesdiag icon_state = "plasma_wall-255" smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS @@ -230,6 +238,8 @@ connector_icon_state = "wood_wall_connector" no_connector_typecache = list(/turf/closed/wall/mineral/wood, /obj/structure/falsewall/wood) + hitsound_type = PROJECTILE_HITSOUND_WOOD + /turf/closed/wall/mineral/wood/yesdiag icon_state = "wood_wall-255" smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS | SMOOTH_CONNECTORS @@ -298,6 +308,8 @@ bullet_sizzle = TRUE bullet_bounce_sound = null + hitsound_type = PROJECTILE_HITSOUND_SNOW + /turf/closed/wall/mineral/snow/yesdiag icon_state = "snow_wall-255" smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS @@ -331,6 +343,8 @@ smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS) canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE) + hitsound_type = PROJECTILE_HITSOUND_NON_LIVING + /turf/closed/wall/mineral/titanium/exterior smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS_EXTERIOR) canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS_EXTERIOR, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE) @@ -407,6 +421,8 @@ smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS) canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE) + hitsound_type = PROJECTILE_HITSOUND_NON_LIVING + /turf/closed/wall/mineral/plastitanium/nodiagonal icon = 'icons/turf/walls/plastitanium_wall.dmi' icon_state = "map-shuttle_nd" diff --git a/code/game/turfs/open/_open.dm b/code/game/turfs/open/_open.dm index 2945c562b89b..0e4d5ae8f842 100644 --- a/code/game/turfs/open/_open.dm +++ b/code/game/turfs/open/_open.dm @@ -127,7 +127,7 @@ smoothing_flags = SMOOTH_CORNERS tiled_dirt = FALSE -/turf/open/indestructible/hierophant/two +/turf/open/indestructible/hierophant/two //I assume this exists to bypass turf smoothing to make patterns in the floor of the arena. cool! /turf/open/indestructible/hierophant/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) return FALSE @@ -246,7 +246,7 @@ lube |= SLIDE_ICE if(lube&SLIDE) - new /datum/forced_movement(C, get_ranged_target_turf(C, olddir, 4), 1, FALSE, CALLBACK(C, /mob/living/carbon/.proc/spin, 1, 1)) + new /datum/forced_movement(C, get_ranged_target_turf(C, olddir, 4), 1, FALSE, CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon, spin), 1, 1)) else if(lube&SLIDE_ICE) if(C.force_moving) //If we're already slipping extend it qdel(C.force_moving) diff --git a/code/game/turfs/open/chasm.dm b/code/game/turfs/open/chasm.dm index 96c90e4a3d64..879e13192a01 100644 --- a/code/game/turfs/open/chasm.dm +++ b/code/game/turfs/open/chasm.dm @@ -17,7 +17,7 @@ AddComponent(/datum/component/chasm, below()) /// Lets people walk into chasms. -/turf/open/chasm/CanAllowThrough(atom/movable/AM, turf/target) +/turf/open/chasm/CanAllowThrough(atom/movable/mover, border_dir) . = ..() return TRUE diff --git a/code/game/turfs/open/floor/catwalk_plating.dm b/code/game/turfs/open/floor/catwalk_plating.dm index b14b9f8f52c1..f4b1f46a96ff 100644 --- a/code/game/turfs/open/floor/catwalk_plating.dm +++ b/code/game/turfs/open/floor/catwalk_plating.dm @@ -13,9 +13,9 @@ layer = CATWALK_LAYER baseturfs = /turf/open/floor/plating footstep = FOOTSTEP_CATWALK - barefootstep = FOOTSTEP_CATWALK - clawfootstep = FOOTSTEP_CATWALK - heavyfootstep = FOOTSTEP_CATWALK + barefootstep = FOOTSTEP_HARD_BAREFOOT + clawfootstep = FOOTSTEP_HARD_CLAW + heavyfootstep = FOOTSTEP_GENERIC_HEAVY var/covered = TRUE /turf/open/floor/plating/catwalk_floor/Initialize(mapload, inherited_virtual_z) diff --git a/code/game/turfs/open/floor/conc_floor.dm b/code/game/turfs/open/floor/conc_floor.dm index 6a4908a4889b..542ac66c1355 100644 --- a/code/game/turfs/open/floor/conc_floor.dm +++ b/code/game/turfs/open/floor/conc_floor.dm @@ -75,7 +75,7 @@ // test this uniqueid = "concmenu_[REF(user)]", radius = 48, - custom_check = CALLBACK(src, .proc/check_menu, user), + custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE ) if(!choice) diff --git a/code/game/turfs/open/floor/hangar.dm b/code/game/turfs/open/floor/hangar.dm new file mode 100644 index 000000000000..be071957d6f9 --- /dev/null +++ b/code/game/turfs/open/floor/hangar.dm @@ -0,0 +1,27 @@ +/* +Unique, indestructible turfs with planetary atmos to be used in outpost hangars. +Each floor in a hangar map must be subtyped here. +*/ + +/turf/open/floor/hangar + name = "hangar" + icon_state = "plating" + base_icon_state = "plating" + baseturfs = /turf/open/floor/hangar + planetary_atmos = 1 + initial_gas_mix = OPENTURF_DEFAULT_ATMOS + +/turf/open/floor/hangar/plasteel + name = "plasteel" + icon = 'icons/turf/floors/tiles.dmi' + icon_state = "tiled_gray" + +/turf/open/floor/hangar/plasteel/dark + name = "dark" + icon = 'icons/turf/floors/tiles.dmi' + icon_state = "tiled_dark" + +/turf/open/floor/hangar/plasteel/white + name = "white" + icon = 'icons/turf/floors/tiles.dmi' + icon_state = "tiled_light" diff --git a/code/game/turfs/open/floor/light_floor.dm b/code/game/turfs/open/floor/light_floor.dm index 9157bfecc5b0..a0a4a357fe58 100644 --- a/code/game/turfs/open/floor/light_floor.dm +++ b/code/game/turfs/open/floor/light_floor.dm @@ -111,7 +111,7 @@ return if(!can_modify_colour) return FALSE - var/choice = show_radial_menu(user,src, lighttile_designs, custom_check = CALLBACK(src, .proc/check_menu, user, I), radius = 36, require_near = TRUE) + var/choice = show_radial_menu(user,src, lighttile_designs, custom_check = CALLBACK(src, PROC_REF(check_menu), user, I), radius = 36, require_near = TRUE) if(!choice) return FALSE currentcolor = choice diff --git a/code/game/turfs/open/floor/plating/rockplanet.dm b/code/game/turfs/open/floor/plating/rockplanet.dm index 1bd9f537c9af..1fbf75b2e2f2 100644 --- a/code/game/turfs/open/floor/plating/rockplanet.dm +++ b/code/game/turfs/open/floor/plating/rockplanet.dm @@ -33,6 +33,9 @@ icon_state = "wet_soft0" base_icon_state = "wet_soft" +/turf/open/floor/plating/asteroid/rockplanet/wet/atmos + initial_gas_mix = OPENTURF_DEFAULT_ATMOS + /turf/open/floor/plating/asteroid/rockplanet/wet/lit light_range = 2 light_power = 0.6 @@ -46,3 +49,37 @@ light_range = 2 light_power = 0.6 light_color = COLOR_VERY_LIGHT_GRAY + +/turf/open/floor/plating/asteroid/rockplanet/grass + name = "dry grass" + desc = "A patch of dry grass." + icon_state = "grass0" + +/turf/open/floor/plating/asteroid/rockplanet/mud + name = "mud" + icon_state = "greenerdirt" + +/turf/open/floor/plating/asteroid/rockplanet/pond + name = "pond" + icon_state = "riverwater" + +/turf/open/floor/plating/asteroid/rockplanet/plating + name = "exterior plating" + icon_state = "plating" + +/turf/open/floor/plating/asteroid/rockplanet/plating/scorched + name = "exterior plating" + icon_state = "panelscorched" + +/turf/open/floor/plating/asteroid/rockplanet/stairs + name = "exterior stairs" + icon_state = "stairs" + +/turf/open/floor/plating/asteroid/rockplanet/hull_plating + name = "exterior hull plating" + icon_state = "regular_hull" + +/turf/open/floor/plating/asteroid/rockplanet/plasteel + name = "exterior floor" + icon_state = "tiled_gray" + icon = 'icons/turf/floors/tiles.dmi' diff --git a/code/game/turfs/open/floor/plating/wasteplanet.dm b/code/game/turfs/open/floor/plating/wasteplanet.dm index 4316a34f244d..011cab93d28a 100644 --- a/code/game/turfs/open/floor/plating/wasteplanet.dm +++ b/code/game/turfs/open/floor/plating/wasteplanet.dm @@ -16,6 +16,10 @@ initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS /turf/open/floor/plating/wasteplanet + baseturfs = /turf/open/floor/plating/asteroid/wasteplanet + initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS + +/turf/open/floor/plating/rust/wasteplanet baseturfs = /turf/open/floor/plating/asteroid/wasteplanet planetary_atmos = TRUE initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS @@ -28,6 +32,32 @@ desc = "Corrupted steel." icon_state = "plating_rust" +/turf/open/floor/wood/waste + initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS + planetary_atmos = TRUE + +/turf/open/indestructible/hierophant/waste + initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS + planetary_atmos = TRUE + +/turf/open/indestructible/hierophant/two/waste + initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS + planetary_atmos = TRUE + light_color = LIGHT_COLOR_FLARE + +/turf/open/water/waste + initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS + planetary_atmos = TRUE + +/turf/open/floor/plating/grass/wasteplanet + icon_state = "junglegrass" + initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS + planetary_atmos = TRUE + +/turf/open/floor/plating/dirt/old/waste + initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS + planetary_atmos = TRUE + //open turfs then open lits. /turf/open/floor/plating/wasteplanet/lit @@ -49,3 +79,18 @@ light_range = 2 light_power = 0.2 light_color = LIGHT_COLOR_FLARE + +/turf/open/water/waste/lit //do not drink + light_range = 2 + light_power = 0.2 + light_color = LIGHT_COLOR_FLARE + +/turf/open/floor/plating/dirt/old/waste/lit + light_range = 2 + light_power = 0.2 + light_color = LIGHT_COLOR_FLARE + +/turf/open/floor/plating/grass/wasteplanet/lit + light_range = 2 + light_power = 0.2 + light_color = LIGHT_COLOR_FLARE diff --git a/code/game/turfs/open/openspace.dm b/code/game/turfs/open/openspace.dm index 5fbc7cc40622..306988f0d42f 100644 --- a/code/game/turfs/open/openspace.dm +++ b/code/game/turfs/open/openspace.dm @@ -153,6 +153,9 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr /turf/open/openspace/icemoon/Initialize(mapload, inherited_virtual_z) . = ..() var/turf/T = below() + //I wonder if I should error here + if(!T) + return if(T.flags_1 & NO_RUINS_1) ChangeTurf(replacement_turf, null, CHANGETURF_IGNORE_AIR) return diff --git a/code/game/turfs/open/space/transit.dm b/code/game/turfs/open/space/transit.dm index 6aa9558720cd..dc1c9cf282d1 100644 --- a/code/game/turfs/open/space/transit.dm +++ b/code/game/turfs/open/space/transit.dm @@ -32,16 +32,18 @@ AM.throw_atom_into_space() /atom/proc/throw_atom_into_space() - if(istype(src, /obj/docking_port)) - return - if(iseffect(src)) - return - if(isliving(src)) - var/mob/living/poor_soul = src // This may not seem like much, but if you toss someone out - poor_soul.apply_damage_type(25, BRUTE) // and they go through like four tiles, they're goners + if(flags_1 & INITIALIZED_1) return qdel(src) +/obj/throw_atom_into_space() + if(resistance_flags & HYPERSPACE_PROOF) + return + return ..() + +/mob/living/throw_atom_into_space() + apply_damage_type(25, BRUTE) // This may not seem like much, but if you toss someone out and they go through like four tiles, they're goners + /turf/open/space/transit/CanBuildHere() return SSshuttle.is_in_shuttle_bounds(src) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index a440cd951905..ca5a6fe3fd25 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -33,7 +33,7 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) var/requires_activation //add to air processing after initialize? var/changing_turf = FALSE - var/bullet_bounce_sound = 'sound/weapons/gun/general/mag_bullet_remove.ogg' //sound played when a shell casing is ejected ontop of the turf. + var/list/bullet_bounce_sound = list('sound/weapons/gun/general/bulletcasing_bounce1.ogg', 'sound/weapons/gun/general/bulletcasing_bounce2.ogg', 'sound/weapons/gun/general/bulletcasing_bounce3.ogg') var/bullet_sizzle = FALSE //used by ammo_casing/bounce_away() to determine if the shell casing should make a sizzle sound when it's ejected over the turf //IE if the turf is supposed to be water, set TRUE. @@ -76,6 +76,8 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) ///the holodeck can load onto this turf if TRUE var/holodeck_compatible = FALSE + hitsound_volume = 90 + /turf/vv_edit_var(var_name, new_value) var/static/list/banned_edits = list("x", "y", "z") if(var_name in banned_edits) @@ -118,8 +120,6 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) if (smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) QUEUE_SMOOTH(src) - visibilityChanged() - for(var/atom/movable/content as anything in src) Entered(content, null) @@ -190,7 +190,6 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) for(var/A in B.contents) qdel(A) return - visibilityChanged() QDEL_LIST(blueprint_data) flags_1 &= ~INITIALIZED_1 requires_activation = FALSE @@ -234,15 +233,14 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) if(density) return TRUE - for(var/atom/movable/content as anything in contents) + for(var/atom/movable/movable_content as anything in contents) // We don't want to block ourselves or consider any ignored atoms. - if((content == source_atom) || (content in ignore_atoms)) + if((movable_content == source_atom) || (movable_content in ignore_atoms)) continue - // If the thing is dense AND we're including mobs or the thing isn't a mob AND if there's a source atom and // it cannot pass through the thing on the turf, we consider the turf blocked. - if(content.density && (!exclude_mobs || !ismob(content))) - if(source_atom && content.CanPass(source_atom, src)) + if(movable_content.density && (!exclude_mobs || !ismob(movable_content))) + if(source_atom && movable_content.CanPass(source_atom, get_dir(src, source_atom))) continue return TRUE return FALSE @@ -346,20 +344,23 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) return FALSE //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, atom/oldloc) +// Test if a movable can enter this turf. Send no_side_effects = TRUE to prevent bumping. +/turf/Enter(atom/movable/mover, atom/oldloc, no_side_effects = FALSE) // Do not call ..() // Byond's default turf/Enter() doesn't have the behaviour we want with Bump() // By default byond will call Bump() on the first dense object in contents // Here's hoping it doesn't stay like this for years before we finish conversion to step_ var/atom/firstbump - var/canPassSelf = CanPass(mover, src) + var/canPassSelf = CanPass(mover, get_dir(src, mover)) if(canPassSelf || (mover.movement_type & PHASING) || (mover.pass_flags & pass_flags_self)) for(var/atom/movable/thing as anything in contents) if(QDELETED(mover)) - return FALSE //We were deleted, do not attempt to proceed with movement. + return FALSE //We were deleted, do not attempt to proceed with movement. if(thing == mover || thing == mover.loc) // Multi tile objects and moving out of other objects continue if(!thing.Cross(mover)) + if(no_side_effects) + return FALSE if(QDELETED(mover)) //Mover deleted from Cross/CanPass, do not proceed. return FALSE if((mover.movement_type & PHASING)) @@ -464,7 +465,7 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) var/list/things = src_object.contents() var/datum/progressbar/progress = new(user, things.len, src) - while (do_after(usr, 10, TRUE, src, FALSE, CALLBACK(src_object, /datum/component/storage.proc/mass_remove_from_storage, src, things, progress))) + while (do_after(usr, 10, TRUE, src, FALSE, CALLBACK(src_object, TYPE_PROC_REF(/datum/component/storage, mass_remove_from_storage), src, things, progress))) stoplag(1) progress.end_progress() @@ -670,3 +671,7 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) . += "[/obj/effect/turf_decal]{\n\ticon = '[decal.pic.icon]';\n\ticon_state = \"[decal.pic.icon_state]\";\n\tdir = [decal.pic.dir];\n\tcolor = \"[decal.pic.color]\"\n\t}" first = FALSE return + +/turf/bullet_act(obj/projectile/hitting_projectile) + . = ..() + bullet_hit_sfx(hitting_projectile) diff --git a/code/game/world.dm b/code/game/world.dm index dcae8e237bd6..8365283c7897 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -97,11 +97,11 @@ GLOBAL_VAR(restart_counter) CONFIG_SET(number/round_end_countdown, 0) var/datum/callback/cb #ifdef UNIT_TESTS - cb = CALLBACK(GLOBAL_PROC, /proc/RunUnitTests) + cb = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(RunUnitTests)) #else cb = VARSET_CALLBACK(SSticker, force_ending, TRUE) #endif - SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/_addtimer, cb, 10 SECONDS)) + SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_addtimer), cb, 10 SECONDS)) /world/proc/SetupLogs() @@ -151,6 +151,9 @@ GLOBAL_VAR(restart_counter) #ifdef UNIT_TESTS GLOB.test_log = "[GLOB.log_directory]/tests.log" start_log(GLOB.test_log) +#endif +#ifdef REFERENCE_DOING_IT_LIVE + GLOB.harddel_log = "[GLOB.log_directory]/harddels.log" #endif start_log(GLOB.world_game_log) start_log(GLOB.world_attack_log) @@ -246,11 +249,11 @@ GLOBAL_VAR(restart_counter) TgsReboot() - #ifdef UNIT_TESTS +#ifdef UNIT_TESTS FinishTestRun() return - #endif +#else if(TgsAvailable()) var/do_hard_reboot // check the hard reboot counter @@ -277,6 +280,8 @@ GLOBAL_VAR(restart_counter) AUXTOOLS_SHUTDOWN(AUXMOS) ..() +#endif //ifdef UNIT_TESTS + /world/Del() shutdown_logging() // makes sure the thread is closed before end, else we terminate AUXTOOLS_SHUTDOWN(AUXMOS) @@ -289,10 +294,7 @@ GLOBAL_VAR(restart_counter) var/list/features = list() - if(GLOB.master_mode) - features += GLOB.master_mode - - if (!GLOB.enter_allowed) + if(LAZYACCESS(SSlag_switch.measures, DISABLE_NON_OBSJOBS)) features += "closed" var/s = "" diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index 33b923f10285..9341a5dec3ef 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -109,7 +109,7 @@ return GLOB.stickybanadminexemptions[ckey] = world.time stoplag() // sleep a byond tick - GLOB.stickbanadminexemptiontimerid = addtimer(CALLBACK(GLOBAL_PROC, /proc/restore_stickybans), 5 SECONDS, TIMER_STOPPABLE|TIMER_UNIQUE|TIMER_OVERRIDE) + GLOB.stickbanadminexemptiontimerid = addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(restore_stickybans)), 5 SECONDS, TIMER_STOPPABLE|TIMER_UNIQUE|TIMER_OVERRIDE) return var/list/ban = ..() //default pager ban stuff @@ -194,7 +194,7 @@ if (ban["fromdb"]) if(SSdbcore.Connect()) - INVOKE_ASYNC(SSdbcore, /datum/controller/subsystem/dbcore/proc.QuerySelect, list( + INVOKE_ASYNC(SSdbcore, TYPE_PROC_REF(/datum/controller/subsystem/dbcore, QuerySelect), list( SSdbcore.NewQuery( "INSERT INTO [format_table_name("stickyban_matched_ckey")] (matched_ckey, stickyban) VALUES (:ckey, :bannedckey) ON DUPLICATE KEY UPDATE last_matched = now()", list("ckey" = ckey, "bannedckey" = bannedckey) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index b79f78b56008..82cb857576c1 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -437,7 +437,7 @@ dat += "(Force Roundstart Rulesets)
" if (GLOB.dynamic_forced_roundstart_ruleset.len > 0) for(var/datum/dynamic_ruleset/roundstart/rule in GLOB.dynamic_forced_roundstart_ruleset) - dat += {"-> [rule.name] <-
"} + dat += {"-> [rule.name] <-
"} dat += "(Clear Rulesets)
" dat += "(Dynamic mode options)
" dat += "
" @@ -624,15 +624,12 @@ set category = "Server" set desc="People can't enter" set name="Toggle Entering" - GLOB.enter_allowed = !(GLOB.enter_allowed) - if (!(GLOB.enter_allowed)) - to_chat(world, "New players may no longer enter the game.", confidential = TRUE) - else - to_chat(world, "New players may now enter the game.", confidential = TRUE) - log_admin("[key_name(usr)] toggled new player game entering.") - message_admins("[key_name_admin(usr)] toggled new player game entering.") - world.update_status() - SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Entering", "[GLOB.enter_allowed ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + if(!SSlag_switch.initialized) + return + SSlag_switch.set_measure(DISABLE_NON_OBSJOBS, !SSlag_switch.measures[DISABLE_NON_OBSJOBS]) + log_admin("[key_name(usr)] toggled new player game entering. Lag Switch at index ([DISABLE_NON_OBSJOBS])") + message_admins("[key_name_admin(usr)] toggled new player game entering [SSlag_switch.measures[DISABLE_NON_OBSJOBS] ? "OFF" : "ON"].") + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Entering", "[!SSlag_switch.measures[DISABLE_NON_OBSJOBS] ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /datum/admins/proc/toggleAI() set category = "Server" @@ -688,9 +685,14 @@ set category = "Admin" set name = "Unprison" if (is_centcom_level(M)) - SSjob.SendToLateJoin(M) - message_admins("[key_name_admin(usr)] has unprisoned [key_name_admin(M)]") - log_admin("[key_name(usr)] has unprisoned [key_name(M)]") + var/datum/overmap/ship/controlled/original_ship = M.mind.original_ship.resolve() + if(original_ship) + var/atom/new_spawn_point = pick(original_ship.shuttle_port.spawn_points) + new_spawn_point.join_player_here(M) + message_admins("[key_name_admin(usr)] has unprisoned [key_name_admin(M)]") + log_admin("[key_name(usr)] has unprisoned [key_name(M)]") + else + alert("[M.name] could not be sent back to their original ship.") else alert("[M.name] is not prisoned.") SSblackbox.record_feedback("tally", "admin_verb", 1, "Unprison") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -745,7 +747,7 @@ var/obj/structure/closet/supplypod/centcompod/pod = new() var/atom/A = new chosen(pod) A.flags_1 |= ADMIN_SPAWNED_1 - new /obj/effect/DPtarget(T, pod) + new /obj/effect/pod_landingzone(T, pod) log_admin("[key_name(usr)] pod-spawned [chosen] at [AREACOORD(usr)]") SSblackbox.record_feedback("tally", "admin_verb", 1, "Podspawn Atom") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! @@ -984,3 +986,35 @@ "Admin login: [key_name(src)]") if(string) message_admins("[string]") + +/datum/admins/proc/show_lag_switch_panel() + set category = "Admin.Game" + set name = "Show Lag Switches" + set desc="Display the controls for drastic lag mitigation measures." + + if(!SSlag_switch.initialized) + to_chat(usr, span_notice("The Lag Switch subsystem has not yet been initialized.")) + return + if(!check_rights()) + return + + var/list/dat = list("Lag Switches

Lag (Reduction) Switches

") + dat += "Automatic Trigger: [SSlag_switch.auto_switch ? "On" : "Off"]
" + dat += "Population Threshold: [SSlag_switch.trigger_pop]
" + dat += "Slowmode Cooldown (toggle On/Off below): [SSlag_switch.slowmode_cooldown/10] seconds
" + dat += "
SET ALL MEASURES: ON | OFF
" + dat += "
Disable ghosts zoom and t-ray verbs (except staff): [SSlag_switch.measures[DISABLE_GHOST_ZOOM_TRAY] ? "On" : "Off"]
" + dat += "Disable planet deletion: [SSlag_switch.measures[DISABLE_PLANETDEL] ? "On" : "Off"]
" + dat += "Disable ALL planet GENERATION: [SSlag_switch.measures[DISABLE_PLANETGEN] ? "On" : "Off"]
" + dat += "Disable late joining: [SSlag_switch.measures[DISABLE_NON_OBSJOBS] ? "On" : "Off"]
" + dat += "
============! MAD GHOSTS ZONE !============
" + dat += "Disable deadmob keyLoop (except staff, informs dchat): [SSlag_switch.measures[DISABLE_DEAD_KEYLOOP] ? "On" : "Off"]
" + dat += "==========================================
" + dat += "
Measures below can be bypassed with a special trait
" + dat += "Slowmode say verb (informs world): [SSlag_switch.measures[SLOWMODE_SAY] ? "On" : "Off"]
" + dat += "Disable runechat: [SSlag_switch.measures[DISABLE_RUNECHAT] ? "On" : "Off"] - trait applies to speaker
" + dat += "Disable examine icons: [SSlag_switch.measures[DISABLE_USR_ICON2HTML] ? "On" : "Off"] - trait applies to examiner
" + dat += "Disable parallax: [SSlag_switch.measures[DISABLE_PARALLAX] ? "On" : "Off"] - trait applies to character
" + dat += "Disable footsteps: [SSlag_switch.measures[DISABLE_FOOTSTEPS] ? "On" : "Off"] - trait applies to character
" + dat += "" + usr << browse(dat.Join(), "window=lag_switch_panel;size=420x480") diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index ecaa96a572ec..6f1809098f9d 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -36,6 +36,7 @@ GLOBAL_PROTECT(admin_verbs_admin) /client/proc/invisimin, /*allows our mob to go invisible/visible*/ // /datum/admins/proc/show_traitor_panel, /*interface which shows a mob's mind*/ -Removed due to rare practical use. Moved to debug verbs ~Errorage /datum/admins/proc/show_player_panel, /*shows an interface for individual players, with various links (links require additional flags)*/ + /datum/admins/proc/show_lag_switch_panel, /datum/verbs/menu/Admin/verb/playerpanel, /client/proc/game_panel, /*game panel, allows to change game-mode etc*/ /client/proc/check_ai_laws, /*shows AI and borg laws*/ diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 343289191fb6..c1845945485f 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -38,7 +38,6 @@ H.dna.features["moth_fluff"] = pick(GLOB.moth_fluff_list) H.dna.features["spider_legs"] = pick(GLOB.spider_legs_list) H.dna.features["spider_spinneret"] = pick(GLOB.spider_spinneret_list) - H.dna.features["spider_mandibles"] = pick(GLOB.spider_mandibles_list) H.dna.features["squid_face"] = pick(GLOB.squid_face_list) H.dna.features["kepori_feathers"] = pick(GLOB.kepori_feathers_list) H.dna.features["kepori_body_feathers"] = pick(GLOB.kepori_body_feathers_list) diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index adb7a42dc511..99e7b1692ecc 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -131,7 +131,7 @@ var/mob/living/M = AM M.forceMove(get_turf(LA)) to_chat(M, "You're trapped in a deadly arena! To escape, you'll need to drag a severed head to the escape portals.", confidential = TRUE) - INVOKE_ASYNC(src, .proc/do_bloodbath, M) + INVOKE_ASYNC(src, PROC_REF(do_bloodbath), M) /obj/effect/forcefield/arena_shuttle_entrance/proc/do_bloodbath(mob/living/L) var/obj/effect/mine/pickup/bloodbath/B = new (L) diff --git a/code/modules/admin/sound_emitter.dm b/code/modules/admin/sound_emitter.dm index 2c930034967f..bdf2a4e6aa34 100644 --- a/code/modules/admin/sound_emitter.dm +++ b/code/modules/admin/sound_emitter.dm @@ -58,16 +58,16 @@ /obj/effect/sound_emitter/proc/edit_emitter(mob/user) var/dat = "" - dat += "Label: [maptext ? maptext : "No label set!"]
" + dat += "Label: [maptext ? maptext : "No label set!"]
" dat += "
" - dat += "Sound File: [sound_file ? sound_file : "No file chosen!"]
" - dat += "Volume: [sound_volume]%
" + dat += "Sound File: [sound_file ? sound_file : "No file chosen!"]
" + dat += "Volume: [sound_volume]%
" dat += "
" - dat += "Mode: [motus_operandi]
" + dat += "Mode: [motus_operandi]
" if(motus_operandi != SOUND_EMITTER_LOCAL) - dat += "Range: [emitter_range][emitter_range == SOUND_EMITTER_RADIUS ? "[play_radius]-tile radius" : ""]
" + dat += "Range: [emitter_range][emitter_range == SOUND_EMITTER_RADIUS ? "[play_radius]-tile radius" : ""]
" dat += "
" - dat += "Play Sound (interrupts other sound emitter sounds)" + dat += "Play Sound (interrupts other sound emitter sounds)" var/datum/browser/popup = new(user, "emitter", "", 500, 600) popup.set_content(dat) popup.open() diff --git a/code/modules/admin/team_panel.dm b/code/modules/admin/team_panel.dm index 75abbb5391c2..f8d40a6dde53 100644 --- a/code/modules/admin/team_panel.dm +++ b/code/modules/admin/team_panel.dm @@ -164,7 +164,7 @@ /datum/team/custom/get_admin_commands() . = ..() - .["Force HUD"] = CALLBACK(src,.proc/admin_force_hud) + .["Force HUD"] = CALLBACK(src, PROC_REF(admin_force_hud)) //This is here if you want admin created teams to tell each other apart easily. /datum/team/custom/proc/admin_force_hud(mob/user) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index c7c5b204e9f7..a4a70c00e429 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -78,13 +78,6 @@ else message_admins("[key_name_admin(usr)] tried to create changelings. Unfortunately, there were no candidates available.") log_admin("[key_name(usr)] failed to create changelings.") - if("revs") - if(src.makeRevs()) - message_admins("[key_name(usr)] started a revolution.") - log_admin("[key_name(usr)] started a revolution.") - else - message_admins("[key_name_admin(usr)] tried to start a revolution. Unfortunately, there were no candidates available.") - log_admin("[key_name(usr)] failed to start a revolution.") if("cult") if(src.makeCult()) message_admins("[key_name(usr)] started a cult.") @@ -363,7 +356,7 @@ if("parrot") M.change_mob_type(/mob/living/simple_animal/parrot , null, null, delmob) if("polyparrot") - M.change_mob_type(/mob/living/simple_animal/parrot/Poly , null, null, delmob) + M.change_mob_type(/mob/living/simple_animal/parrot/Polly , null, null, delmob) if("constructjuggernaut") M.change_mob_type(/mob/living/simple_animal/hostile/construct/juggernaut , null, null, delmob) if("constructartificer") @@ -953,7 +946,7 @@ L.Unconscious(100) sleep(5) L.forceMove(pick(GLOB.tdome1)) - addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, L, "You have been sent to the Thunderdome."), 5 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), L, "You have been sent to the Thunderdome."), 5 SECONDS) log_admin("[key_name(usr)] has sent [key_name(L)] to the thunderdome. (Team 1)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(L)] to the thunderdome. (Team 1)") @@ -979,7 +972,7 @@ L.Unconscious(100) sleep(5) L.forceMove(pick(GLOB.tdome2)) - addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, L, "You have been sent to the Thunderdome."), 5 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), L, "You have been sent to the Thunderdome."), 5 SECONDS) log_admin("[key_name(usr)] has sent [key_name(L)] to the thunderdome. (Team 2)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(L)] to the thunderdome. (Team 2)") @@ -1002,7 +995,7 @@ L.Unconscious(100) sleep(5) L.forceMove(pick(GLOB.tdomeadmin)) - addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, L, "You have been sent to the Thunderdome."), 5 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), L, "You have been sent to the Thunderdome."), 5 SECONDS) log_admin("[key_name(usr)] has sent [key_name(L)] to the thunderdome. (Admin.)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(L)] to the thunderdome. (Admin.)") @@ -1032,7 +1025,7 @@ L.Unconscious(100) sleep(5) L.forceMove(pick(GLOB.tdomeobserve)) - addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, L, "You have been sent to the Thunderdome."), 5 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), L, "You have been sent to the Thunderdome."), 5 SECONDS) log_admin("[key_name(usr)] has sent [key_name(L)] to the thunderdome. (Observer.)") message_admins("[key_name_admin(usr)] has sent [key_name_admin(L)] to the thunderdome. (Observer.)") @@ -1573,7 +1566,7 @@ R.activate_module(I) if(pod) - new /obj/effect/DPtarget(target, pod) + new /obj/effect/pod_landingzone(target, pod) if (number == 1) log_admin("[key_name(usr)] created a [english_list(paths)]") @@ -1884,6 +1877,58 @@ SSticker.mode.station_goals += G modify_goals() + else if(href_list["change_lag_switch"]) + if(!check_rights(R_ADMIN)) + return + + switch(href_list["change_lag_switch"]) + if("ALL_ON") + SSlag_switch.set_all_measures(TRUE) + log_admin("[key_name(usr)] turned all Lag Switch measures ON.") + message_admins("[key_name_admin(usr)] turned all Lag Switch measures ON.") + if("ALL_OFF") + SSlag_switch.set_all_measures(FALSE) + log_admin("[key_name(usr)] turned all Lag Switch measures OFF.") + message_admins("[key_name_admin(usr)] turned all Lag Switch measures OFF.") + else + var/switch_index = text2num(href_list["change_lag_switch"]) + if(!SSlag_switch.set_measure(switch_index, !LAZYACCESS(SSlag_switch.measures, switch_index))) + to_chat(src, span_danger("Something went wrong when trying to toggle that Lag Switch. Check runtimes for more info."), confidential = TRUE) + else + log_admin("[key_name(usr)] turned a Lag Switch measure at index ([switch_index]) [LAZYACCESS(SSlag_switch.measures, switch_index) ? "ON" : "OFF"]") + message_admins("[key_name_admin(usr)] turned a Lag Switch measure [LAZYACCESS(SSlag_switch.measures, switch_index) ? "ON" : "OFF"]") + + src.show_lag_switch_panel() + + else if(href_list["change_lag_switch_option"]) + if(!check_rights(R_ADMIN)) + return + + switch(href_list["change_lag_switch_option"]) + if("CANCEL") + if(SSlag_switch.cancel_auto_enable_in_progress()) + log_admin("[key_name(usr)] canceled the automatic Lag Switch activation in progress.") + message_admins("[key_name_admin(usr)] canceled the automatic Lag Switch activation in progress.") + return // return here to avoid (re)rendering the panel for this case + if("TOGGLE_AUTO") + SSlag_switch.toggle_auto_enable() + log_admin("[key_name(usr)] toggled automatic Lag Switch activation [SSlag_switch.auto_switch ? "ON" : "OFF"].") + message_admins("[key_name_admin(usr)] toggled automatic Lag Switch activation [SSlag_switch.auto_switch ? "ON" : "OFF"].") + if("NUM") + var/new_num = input("Enter new threshold value:", "Num") as null|num + if(!isnull(new_num)) + SSlag_switch.trigger_pop = new_num + log_admin("[key_name(usr)] set the Lag Switch automatic trigger pop to [new_num].") + message_admins("[key_name_admin(usr)] set the Lag Switch automatic trigger pop to [new_num].") + if("SLOWCOOL") + var/new_num = input("Enter new cooldown in seconds:", "Num") as null|num + if(!isnull(new_num)) + SSlag_switch.change_slowmode_cooldown(new_num) + log_admin("[key_name(usr)] set the Lag Switch slowmode cooldown to [new_num] seconds.") + message_admins("[key_name_admin(usr)] set the Lag Switch slowmode cooldown to [new_num] seconds.") + + src.show_lag_switch_panel() + else if(href_list["viewruntime"]) var/datum/error_viewer/error_viewer = locate(href_list["viewruntime"]) if(!istype(error_viewer)) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index e9fee95ab5ed..2500be7f9035 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -355,6 +355,10 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null qdel_on_finish = finished_qdel /datum/SDQL2_query/Destroy() + if(delete_click) + QDEL_NULL(delete_click) + if(action_click) + QDEL_NULL(action_click) state = SDQL2_STATE_HALTING query_tree = null obj_count_all = null @@ -494,7 +498,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null options |= SDQL2_OPTION_SEQUENTIAL /datum/SDQL2_query/proc/ARun() - INVOKE_ASYNC(src, .proc/Run) + INVOKE_ASYNC(src, PROC_REF(Run)) /datum/SDQL2_query/proc/Run() if(SDQL2_IS_RUNNING) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 1b9b41d773b1..225a074b1477 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -246,7 +246,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) //Removes the ahelp verb and returns it after 2 minutes /datum/admin_help/proc/timeout_verb() remove_verb(initiator, /client/verb/adminhelp) - initiator.adminhelptimerid = addtimer(CALLBACK(initiator, /client/proc/giveadminhelpverb), 1200, TIMER_STOPPABLE) //2 minute cooldown of admin helps + initiator.adminhelptimerid = addtimer(CALLBACK(initiator, TYPE_PROC_REF(/client, giveadminhelpverb)), 1200, TIMER_STOPPABLE) //2 minute cooldown of admin helps //private /datum/admin_help/proc/full_monty(ref_src) @@ -405,7 +405,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) state = AHELP_RESOLVED GLOB.ahelp_tickets.list_insert(src) - addtimer(CALLBACK(initiator, /client/proc/giveadminhelpverb), 50) + addtimer(CALLBACK(initiator, TYPE_PROC_REF(/client, giveadminhelpverb)), 50) add_interaction("Resolved by [key_name].") to_chat(initiator, "Your ticket has been resolved by an admin. The Adminhelp verb will be returned to you shortly.", confidential = TRUE) diff --git a/code/modules/admin/verbs/atmosdebug.dm b/code/modules/admin/verbs/atmosdebug.dm index da8fe89cea48..6fc5f8a4c709 100644 --- a/code/modules/admin/verbs/atmosdebug.dm +++ b/code/modules/admin/verbs/atmosdebug.dm @@ -1,4 +1,4 @@ -#define ANNOTATE_OBJECT(object) testing ? "[get_area(object)] (estimated location: [json_encode(object.check_shuttle_offset())])" : ADMIN_VERBOSEJMP(object) +#define ANNOTATE_OBJECT(object) testing ? "[object.loc.loc.name] (estimated location: [json_encode(object.get_relative_location())])" : ADMIN_VERBOSEJMP(object) /atom/proc/check_shuttle_offset() if(!SSshuttle.initialized) @@ -28,31 +28,27 @@ var/list/results = atmosscan() to_chat(src, "[results.Join("\n")]", confidential = TRUE) -/proc/atmosscan(testing = FALSE) +/proc/atmosscan(testing = FALSE, critical_only = FALSE) var/list/results = list() + var/static/list/blacklist = typecacheof(list(/obj/machinery/atmospherics/pipe/layer_manifold, /obj/machinery/atmospherics/pipe/heat_exchanging)) - //Atmos Components - for(var/obj/machinery/atmospherics/components/component in GLOB.machines) - if(!testing && component.z && (!component.nodes || !component.nodes.len || (null in component.nodes))) - results += "Unconnected [component.name] located at [ANNOTATE_OBJECT(component)]" - for(var/obj/machinery/atmospherics/components/other_component in get_turf(component)) - if(other_component != component && other_component.piping_layer == component.piping_layer && other_component.dir == component.dir) - results += "Doubled [component.name] located at [ANNOTATE_OBJECT(component)]" - - //Manifolds - for(var/obj/machinery/atmospherics/pipe/manifold/manifold in SSair.atmos_machinery) - if(manifold.z && (!manifold.nodes || !manifold.nodes.len || (null in manifold.nodes))) - results += "Unconnected [manifold.name] located at [ANNOTATE_OBJECT(manifold)]" - for(var/obj/machinery/atmospherics/pipe/manifold/other_manifold in get_turf(manifold)) - if(other_manifold != manifold && other_manifold.piping_layer == manifold.piping_layer && other_manifold.dir == manifold.dir) - results += "Doubled [manifold.name] located at [ANNOTATE_OBJECT(manifold)]" + for(var/obj/machinery/atmospherics/pipe in SSair.atmos_machinery + SSair.atmos_air_machinery) + if(blacklist[pipe.type]) + continue + if(pipe.z && (!length(pipe.nodes) || (null in pipe.nodes)) && !critical_only) + results += "Unconnected [pipe.name] located at [ANNOTATE_OBJECT(pipe)]" + for(var/obj/machinery/atmospherics/other_pipe in get_turf(pipe)) + if(blacklist[other_pipe.type]) + continue + if(other_pipe != pipe && other_pipe.piping_layer == pipe.piping_layer && (other_pipe.initialize_directions & pipe.initialize_directions)) + results += "Doubled [pipe.name] located at [ANNOTATE_OBJECT(pipe)]" - //Pipes - for(var/obj/machinery/atmospherics/pipe/simple/pipe in SSair.atmos_machinery) - if(pipe.z && (!pipe.nodes || !pipe.nodes.len || (null in pipe.nodes))) + //HE pipes are tested separately + for(var/obj/machinery/atmospherics/pipe/heat_exchanging/pipe in SSair.atmos_air_machinery) + if(pipe.z && (!length(pipe.nodes) || (null in pipe.nodes)) && !critical_only) results += "Unconnected [pipe.name] located at [ANNOTATE_OBJECT(pipe)]" - for(var/obj/machinery/atmospherics/pipe/other_pipe in get_turf(pipe)) - if(other_pipe != pipe && other_pipe.piping_layer == pipe.piping_layer && other_pipe.dir == pipe.dir) + for(var/obj/machinery/atmospherics/pipe/heat_exchanging/other_pipe in get_turf(pipe)) + if(other_pipe != pipe && other_pipe.piping_layer == pipe.piping_layer && (other_pipe.initialize_directions & pipe.initialize_directions)) results += "Doubled [pipe.name] located at [ANNOTATE_OBJECT(pipe)]" return results @@ -71,15 +67,16 @@ var/list/results = list() for (var/datum/powernet/PN in GLOB.powernets) - if (!PN.nodes || !PN.nodes.len) - if(PN.cables && (PN.cables.len > 1)) - var/obj/structure/cable/C = PN.cables[1] - results += "Powernet with no nodes! (number [PN.number]) - example cable at [ANNOTATE_OBJECT(C)]" + if(!length(PN.cables)) + continue + + if (!length(PN.nodes)) + var/obj/structure/cable/C = PN.cables[1] + results += "Powernet with no nodes! (number [PN.number]) - example cable at [ANNOTATE_OBJECT(C)]" - if (!PN.cables || (PN.cables.len < 10)) - if(PN.cables && (PN.cables.len > 1)) - var/obj/structure/cable/C = PN.cables[1] - results += "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [ANNOTATE_OBJECT(C)]" + if (!length(PN.cables) < 10) + var/obj/structure/cable/C = PN.cables[1] + results += "Powernet with fewer than 10 cables! (number [PN.number]) - example cable at [ANNOTATE_OBJECT(C)]" var/checked_list = list() for(var/obj/structure/cable/specific_cable as anything in GLOB.cable_list) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 63f0fc81bc87..9647d4c07947 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -47,7 +47,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if(ishuman(M)) log_admin("[key_name(src)] has robotized [M.key].") var/mob/living/carbon/human/H = M - INVOKE_ASYNC(H, /mob/living/carbon/human.proc/Robotize) + INVOKE_ASYNC(H, TYPE_PROC_REF(/mob/living/carbon/human, Robotize)) else alert("Invalid mob") @@ -84,7 +84,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that return log_admin("[key_name(src)] has animalized [M.key].") - INVOKE_ASYNC(M, /mob.proc/Animalize) + INVOKE_ASYNC(M, TYPE_PROC_REF(/mob, Animalize)) /client/proc/makepAI(turf/T in GLOB.mob_list) @@ -128,7 +128,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that alert("Wait until the game starts") return if(ishuman(M)) - INVOKE_ASYNC(M, /mob/living/carbon/human/proc/Alienize) + INVOKE_ASYNC(M, TYPE_PROC_REF(/mob/living/carbon/human, Alienize)) SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Alien") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] made [key_name(M)] into an alien at [AREACOORD(M)].") message_admins("[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] into an alien.") @@ -143,7 +143,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that alert("Wait until the game starts") return if(ishuman(M)) - INVOKE_ASYNC(M, /mob/living/carbon/human/proc/slimeize) + INVOKE_ASYNC(M, TYPE_PROC_REF(/mob/living/carbon/human, slimeize)) SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Slime") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! log_admin("[key_name(usr)] made [key_name(M)] into a slime at [AREACOORD(M)].") message_admins("[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] into a slime.") @@ -836,7 +836,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that var/list/sorted = list() for (var/source in per_source) sorted += list(list("source" = source, "count" = per_source[source])) - sorted = sortTim(sorted, .proc/cmp_timer_data) + sorted = sortTim(sorted, PROC_REF(cmp_timer_data)) // Now that everything is sorted, compile them into an HTML output var/output = "" diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 2b7bf06d2d6d..5b1e0e8ad082 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -13,7 +13,6 @@ var/dat = {" Make Traitors
Make Changelings
- Make Revs
Make Cult
Make Blob
Make Wizard (Requires Ghosts)
@@ -101,34 +100,6 @@ return 0 -/datum/admins/proc/makeRevs() - - var/datum/game_mode/revolution/temp = new - if(CONFIG_GET(flag/protect_roles_from_antagonist)) - temp.restricted_jobs += temp.protected_jobs - - if(CONFIG_GET(flag/protect_assistant_from_antagonist)) - temp.restricted_jobs += "Assistant" - - var/list/mob/living/carbon/human/candidates = list() - var/mob/living/carbon/human/H = null - - for(var/mob/living/carbon/human/applicant in GLOB.player_list) - if(isReadytoRumble(applicant, ROLE_REV)) - if(temp.age_check(applicant.client)) - if(!(applicant.job in temp.restricted_jobs)) - candidates += applicant - - if(candidates.len) - var/numRevs = min(candidates.len, 3) - - for(var/i = 0, i ") //globals - testing("Finished searching globals") + //Time to search the whole game for our ref + DoSearchVar(GLOB, "GLOB", search_time = starting_time) //globals + log_reftracker("Finished searching globals") - for(var/atom/atom_thing) //atoms - DoSearchVar(atom_thing, "World -> [atom_thing]") - testing("Finished searching atoms") + //Yes we do actually need to do this. The searcher refuses to read weird lists + //And global.vars is a really weird list + var/global_vars = list() + for(var/key in global.vars) + global_vars[key] = global.vars[key] - for (var/datum/datum_thing) //datums - DoSearchVar(datum_thing, "World -> [datum_thing]") - testing("Finished searching datums") + DoSearchVar(global_vars, "Native Global", search_time = starting_time) + log_reftracker("Finished searching native globals") -#ifndef FIND_REF_SKIP_CLIENTS - // DO NOT RUN THIS ON A LIVE SERVER - // IT WILL CRASH!!! - for (var/client/client_thing) //clients - DoSearchVar(client_thing, "World -> [client_thing]") - testing("Finished searching clients") + for(var/datum/thing in world) //atoms (don't beleive its lies) + DoSearchVar(thing, "World -> [thing.type]", search_time = starting_time) + log_reftracker("Finished searching atoms") + + for(var/datum/thing) //datums + DoSearchVar(thing, "Datums -> [thing.type]", search_time = starting_time) + log_reftracker("Finished searching datums") + +#ifndef REFERENCE_DOING_IT_LIVE + //Warning, attempting to search clients like this will cause crashes if done on live. Watch yourself + for(var/client/thing) //clients + DoSearchVar(thing, "Clients -> [thing.type]", search_time = starting_time) + log_reftracker("Finished searching clients") + + log_reftracker("Completed search for references to a [type].") #endif - testing("Completed search for references to a [type].") if(usr?.client) usr.client.running_find_references = null running_find_references = null @@ -61,79 +66,94 @@ SSgarbage.can_fire = TRUE SSgarbage.next_fire = world.time + world.tick_lag - -/datum/verb/qdel_then_find_references() - set category = "Debug" - set name = "qdel() then Find References" - set src in world - - qdel(src, TRUE) //force a qdel - if(!running_find_references) - find_references(TRUE) - - -/datum/verb/qdel_then_if_fail_find_references() - set category = "Debug" - set name = "qdel() then Find References if GC failure" - set src in world - - qdel_and_find_ref_if_fail(src, TRUE) - - -/datum/proc/DoSearchVar(potential_container, container_name, recursive_limit = 32) - #ifndef FIND_REF_NO_CHECK_TICK - CHECK_TICK +/datum/proc/DoSearchVar(potential_container, container_name, recursive_limit = 64, search_time = world.time) + #ifdef REFERENCE_TRACKING_DEBUG + if(SSgarbage.should_save_refs && !found_refs) + found_refs = list() #endif + if(usr?.client && !usr.client.running_find_references) return if(!recursive_limit) + log_reftracker("Recursion limit reached. [container_name]") return + //Check each time you go down a layer. This makes it a bit slow, but it won't effect the rest of the game at all + #ifndef FIND_REF_NO_CHECK_TICK + CHECK_TICK + #endif + if(istype(potential_container, /datum)) var/datum/datum_container = potential_container - if(datum_container.last_find_references == last_find_references) + if(datum_container.last_find_references == search_time) return - datum_container.last_find_references = last_find_references + datum_container.last_find_references = search_time var/list/vars_list = datum_container.vars for(var/varname in vars_list) - if (varname == "vars") - continue #ifndef FIND_REF_NO_CHECK_TICK CHECK_TICK #endif + if (varname == "vars" || varname == "vis_locs") //Fun fact, vis_locs don't count for references + continue var/variable = vars_list[varname] if(variable == src) - testing("Found [type] \ref[src] in [datum_container.type]'s [varname] var. [container_name]") + #ifdef REFERENCE_TRACKING_DEBUG + if(SSgarbage.should_save_refs) + found_refs[varname] = TRUE + continue //End early, don't want these logging + #endif + log_reftracker("Found [type] [text_ref(src)] in [datum_container.type]'s [text_ref(datum_container)] [varname] var. [container_name]") + continue - else if(islist(variable)) - DoSearchVar(variable, "[container_name] -> [varname] (list)", recursive_limit-1) + if(islist(variable)) + DoSearchVar(variable, "[container_name] [text_ref(datum_container)] -> [varname] (list)", recursive_limit - 1, search_time) else if(islist(potential_container)) var/normal = IS_NORMAL_LIST(potential_container) - for(var/element_in_list in potential_container) + var/list/potential_cache = potential_container + for(var/element_in_list in potential_cache) #ifndef FIND_REF_NO_CHECK_TICK CHECK_TICK #endif + //Check normal entrys if(element_in_list == src) - testing("Found [type] \ref[src] in list [container_name].") - - else if(element_in_list && !isnum(element_in_list) && normal) - if(potential_container[element_in_list] == src) - testing("Found [type] \ref[src] in list [container_name]\[[element_in_list]\]") - else if(islist(potential_container[element_in_list])) - DoSearchVar(potential_container[element_in_list], "[container_name]\[[element_in_list]\]", recursive_limit-1) - - else if(islist(element_in_list)) - var/list/list_element = element_in_list - DoSearchVar(element_in_list, "[container_name]\[[list_element.Find(element_in_list)]] -> list", recursive_limit - 1) + #ifdef REFERENCE_TRACKING_DEBUG + if(SSgarbage.should_save_refs) + found_refs[potential_cache] = TRUE + continue //End early, don't want these logging + #endif + log_reftracker("Found [type] [text_ref(src)] in list [container_name].") + continue + var/assoc_val = null + if(!isnum(element_in_list) && normal) + assoc_val = potential_cache[element_in_list] + //Check assoc entrys + if(assoc_val == src) + #ifdef REFERENCE_TRACKING_DEBUG + if(SSgarbage.should_save_refs) + found_refs[potential_cache] = TRUE + continue //End early, don't want these logging + #endif + log_reftracker("Found [type] [text_ref(src)] in list [container_name]\[[element_in_list]\]") + continue + //We need to run both of these checks, since our object could be hiding in either of them + //Check normal sublists + if(islist(element_in_list)) + DoSearchVar(element_in_list, "[container_name] -> [element_in_list] (list)", recursive_limit - 1, search_time) + //Check assoc sublists + if(islist(assoc_val)) + DoSearchVar(potential_container[element_in_list], "[container_name]\[[element_in_list]\] -> [assoc_val] (list)", recursive_limit - 1, search_time) /proc/qdel_and_find_ref_if_fail(datum/thing_to_del, force = FALSE) - SSgarbage.reference_find_on_fail[REF(thing_to_del)] = TRUE - qdel(thing_to_del, force) + thing_to_del.qdel_and_find_ref_if_fail(force) + +/datum/proc/qdel_and_find_ref_if_fail(force = FALSE) + SSgarbage.reference_find_on_fail[text_ref(src)] = TRUE + qdel(src, force) #endif diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm index a5e925546de5..ca67926c0ee8 100644 --- a/code/modules/antagonists/abductor/abductor.dm +++ b/code/modules/antagonists/abductor/abductor.dm @@ -112,7 +112,7 @@ /datum/antagonist/abductor/get_admin_commands() . = ..() - .["Equip"] = CALLBACK(src,.proc/admin_equip) + .["Equip"] = CALLBACK(src, PROC_REF(admin_equip)) /datum/antagonist/abductor/proc/admin_equip(mob/admin) if(!ishuman(owner.current)) diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 8d0149bf7950..9a5b95d21184 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -689,7 +689,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} user.visible_message("[user] places down [src] and activates it.", "You place down [src] and activate it.") user.dropItemToGround(src) playsound(src, 'sound/machines/terminal_alert.ogg', 50) - addtimer(CALLBACK(src, .proc/try_spawn_machine), 30) + addtimer(CALLBACK(src, PROC_REF(try_spawn_machine)), 30) /obj/item/abductor_machine_beacon/proc/try_spawn_machine() var/viable = FALSE @@ -841,7 +841,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} /obj/structure/table/optable/abductor/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm index 067d3d563ed7..4efd2b0ab162 100644 --- a/code/modules/antagonists/abductor/equipment/gland.dm +++ b/code/modules/antagonists/abductor/equipment/gland.dm @@ -62,7 +62,7 @@ update_gland_hud() var/atom/movable/screen/alert/mind_control/mind_alert = owner.throw_alert("mind_control", /atom/movable/screen/alert/mind_control) mind_alert.command = command - addtimer(CALLBACK(src, .proc/clear_mind_control), mind_control_duration) + addtimer(CALLBACK(src, PROC_REF(clear_mind_control)), mind_control_duration) return TRUE /obj/item/organ/heart/gland/proc/clear_mind_control() diff --git a/code/modules/antagonists/abductor/equipment/glands/access.dm b/code/modules/antagonists/abductor/equipment/glands/access.dm index e950a07d065e..8b3696d6a8d4 100644 --- a/code/modules/antagonists/abductor/equipment/glands/access.dm +++ b/code/modules/antagonists/abductor/equipment/glands/access.dm @@ -9,7 +9,7 @@ /obj/item/organ/heart/gland/access/activate() to_chat(owner, "You feel like a VIP for some reason.") - RegisterSignal(owner, COMSIG_MOB_ALLOWED, .proc/free_access) + RegisterSignal(owner, COMSIG_MOB_ALLOWED, PROC_REF(free_access)) /obj/item/organ/heart/gland/access/proc/free_access(datum/source, obj/O) return TRUE diff --git a/code/modules/antagonists/abductor/equipment/glands/electric.dm b/code/modules/antagonists/abductor/equipment/glands/electric.dm index 41a545b851a7..d37470394571 100644 --- a/code/modules/antagonists/abductor/equipment/glands/electric.dm +++ b/code/modules/antagonists/abductor/equipment/glands/electric.dm @@ -19,7 +19,7 @@ owner.visible_message("[owner]'s skin starts emitting electric arcs!",\ "You feel electric energy building up inside you!") playsound(get_turf(owner), "sparks", 100, TRUE, -1, SHORT_RANGE_SOUND_EXTRARANGE) - addtimer(CALLBACK(src, .proc/zap), rand(30, 100)) + addtimer(CALLBACK(src, PROC_REF(zap)), rand(30, 100)) /obj/item/organ/heart/gland/electric/proc/zap() tesla_zap(owner, 4, 8000, ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE | ZAP_MOB_STUN) diff --git a/code/modules/antagonists/abductor/equipment/glands/heal.dm b/code/modules/antagonists/abductor/equipment/glands/heal.dm index 73b78d2e3d4d..13cc86c0411b 100644 --- a/code/modules/antagonists/abductor/equipment/glands/heal.dm +++ b/code/modules/antagonists/abductor/equipment/glands/heal.dm @@ -107,7 +107,7 @@ else to_chat(owner, "You feel a weird rumble behind your eye sockets...") - addtimer(CALLBACK(src, .proc/finish_replace_eyes), rand(100, 200)) + addtimer(CALLBACK(src, PROC_REF(finish_replace_eyes)), rand(100, 200)) /obj/item/organ/heart/gland/heal/proc/finish_replace_eyes() var/eye_type = /obj/item/organ/eyes @@ -125,7 +125,7 @@ else to_chat(owner, "You feel a weird tingle in your [parse_zone(body_zone)]... even if you don't have one.") - addtimer(CALLBACK(src, .proc/finish_replace_limb, body_zone), rand(150, 300)) + addtimer(CALLBACK(src, PROC_REF(finish_replace_limb), body_zone), rand(150, 300)) /obj/item/organ/heart/gland/heal/proc/finish_replace_limb(body_zone) owner.visible_message("With a loud snap, [owner]'s [parse_zone(body_zone)] rapidly grows back from [owner.p_their()] body!", @@ -155,7 +155,7 @@ if(owner.reagents.has_reagent(R.type)) keep_going = TRUE if(keep_going) - addtimer(CALLBACK(src, .proc/keep_replacing_blood), 30) + addtimer(CALLBACK(src, PROC_REF(keep_replacing_blood)), 30) /obj/item/organ/heart/gland/heal/proc/replace_chest(obj/item/bodypart/chest/chest) if(!IS_ORGANIC_LIMB(chest)) diff --git a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm index cb3bb50b1ed0..4f17cd26eb05 100644 --- a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm +++ b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm @@ -48,7 +48,7 @@ if(LAZYLEN(broadcasted_mobs)) active_mind_control = TRUE - addtimer(CALLBACK(src, .proc/clear_mind_control), mind_control_duration) + addtimer(CALLBACK(src, PROC_REF(clear_mind_control)), mind_control_duration) update_gland_hud() return TRUE diff --git a/code/modules/antagonists/abductor/equipment/glands/plasma.dm b/code/modules/antagonists/abductor/equipment/glands/plasma.dm index fe8b06ac77a3..a3d45b11b99d 100644 --- a/code/modules/antagonists/abductor/equipment/glands/plasma.dm +++ b/code/modules/antagonists/abductor/equipment/glands/plasma.dm @@ -9,8 +9,8 @@ /obj/item/organ/heart/gland/plasma/activate() to_chat(owner, "You feel bloated.") - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, owner, "A massive stomachache overcomes you."), 150) - addtimer(CALLBACK(src, .proc/vomit_plasma), 200) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(to_chat), owner, "A massive stomachache overcomes you."), 150) + addtimer(CALLBACK(src, PROC_REF(vomit_plasma)), 200) /obj/item/organ/heart/gland/plasma/proc/vomit_plasma() if(!owner) diff --git a/code/modules/antagonists/abductor/equipment/glands/quantum.dm b/code/modules/antagonists/abductor/equipment/glands/quantum.dm index 269a2cefc233..d66f43260bb2 100644 --- a/code/modules/antagonists/abductor/equipment/glands/quantum.dm +++ b/code/modules/antagonists/abductor/equipment/glands/quantum.dm @@ -15,7 +15,7 @@ if(!iscarbon(M)) continue entangled_mob = M - addtimer(CALLBACK(src, .proc/quantum_swap), rand(600, 2400)) + addtimer(CALLBACK(src, PROC_REF(quantum_swap)), rand(600, 2400)) return /obj/item/organ/heart/gland/quantum/proc/quantum_swap() diff --git a/code/modules/antagonists/abductor/equipment/glands/slime.dm b/code/modules/antagonists/abductor/equipment/glands/slime.dm index 30a13107595e..e7fee444f2d2 100644 --- a/code/modules/antagonists/abductor/equipment/glands/slime.dm +++ b/code/modules/antagonists/abductor/equipment/glands/slime.dm @@ -22,5 +22,5 @@ owner.vomit(20) var/mob/living/simple_animal/slime/Slime = new(get_turf(owner), "grey") - Slime.Friends = list(owner) - Slime.Leader = owner + Slime.set_friends(list(owner)) + Slime.set_leader(owner) diff --git a/code/modules/antagonists/abductor/machinery/experiment.dm b/code/modules/antagonists/abductor/machinery/experiment.dm index f0e68a84a95f..74ebaa8e1456 100644 --- a/code/modules/antagonists/abductor/machinery/experiment.dm +++ b/code/modules/antagonists/abductor/machinery/experiment.dm @@ -178,8 +178,6 @@ if(console && console.pad && console.pad.teleport_target) H.forceMove(console.pad.teleport_target) return - //Area not chosen / It's not safe area - teleport to arrivals - SSjob.SendToLateJoin(H, FALSE) return /obj/machinery/abductor/experiment/update_icon_state() diff --git a/code/modules/antagonists/abductor/machinery/pad.dm b/code/modules/antagonists/abductor/machinery/pad.dm index ab636f7d0e8e..00e9ba6f4e6f 100644 --- a/code/modules/antagonists/abductor/machinery/pad.dm +++ b/code/modules/antagonists/abductor/machinery/pad.dm @@ -31,7 +31,7 @@ /obj/machinery/abductor/pad/proc/MobToLoc(place,mob/living/target) new /obj/effect/temp_visual/teleport_abductor(place) - addtimer(CALLBACK(src, .proc/doMobToLoc, place, target), 80) + addtimer(CALLBACK(src, PROC_REF(doMobToLoc), place, target), 80) /obj/machinery/abductor/pad/proc/doPadToLoc(place) flick("alien-pad", src) @@ -41,7 +41,7 @@ /obj/machinery/abductor/pad/proc/PadToLoc(place) new /obj/effect/temp_visual/teleport_abductor(place) - addtimer(CALLBACK(src, .proc/doPadToLoc, place), 80) + addtimer(CALLBACK(src, PROC_REF(doPadToLoc), place), 80) /obj/effect/temp_visual/teleport_abductor name = "Huh" diff --git a/code/modules/antagonists/ashwalker/ashwalker.dm b/code/modules/antagonists/ashwalker/ashwalker.dm index 871cb9c82d6a..65fd955a0095 100644 --- a/code/modules/antagonists/ashwalker/ashwalker.dm +++ b/code/modules/antagonists/ashwalker/ashwalker.dm @@ -25,11 +25,11 @@ /datum/antagonist/ashwalker/on_body_transfer(mob/living/old_body, mob/living/new_body) . = ..() UnregisterSignal(old_body, COMSIG_MOB_EXAMINATE) - RegisterSignal(new_body, COMSIG_MOB_EXAMINATE, .proc/on_examinate) + RegisterSignal(new_body, COMSIG_MOB_EXAMINATE, PROC_REF(on_examinate)) /datum/antagonist/ashwalker/on_gain() . = ..() - RegisterSignal(owner.current, COMSIG_MOB_EXAMINATE, .proc/on_examinate) + RegisterSignal(owner.current, COMSIG_MOB_EXAMINATE, PROC_REF(on_examinate)) /datum/antagonist/ashwalker/on_removal() . = ..() diff --git a/code/modules/antagonists/blob/blob_mobs.dm b/code/modules/antagonists/blob/blob_mobs.dm index 7c21939f89a0..639017e100f3 100644 --- a/code/modules/antagonists/blob/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob_mobs.dm @@ -62,7 +62,7 @@ else adjustFireLoss(5) -/mob/living/simple_animal/hostile/blob/CanAllowThrough(atom/movable/mover, turf/target) +/mob/living/simple_animal/hostile/blob/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(istype(mover, /obj/structure/blob)) return TRUE @@ -117,9 +117,10 @@ var/is_zombie = FALSE /mob/living/simple_animal/hostile/blob/blobspore/Initialize(mapload, obj/structure/blob/factory/linked_node) - if(istype(linked_node)) - factory = linked_node - factory.spores += src + if(!istype(linked_node)) + return INITIALIZE_HINT_QDEL + factory = linked_node + factory.spores += src . = ..() if(linked_node.overmind && istype(linked_node.overmind.blobstrain, /datum/blobstrain/reagent/distributed_neurons) && !istype(src, /mob/living/simple_animal/hostile/blob/blobspore/weak)) notify_ghosts("A controllable spore has been created in \the [get_area(src)].", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Sentient Spore Created") diff --git a/code/modules/antagonists/blob/blobstrains/_blobstrain.dm b/code/modules/antagonists/blob/blobstrains/_blobstrain.dm index cae4fb2aa983..29060afd8f6a 100644 --- a/code/modules/antagonists/blob/blobstrains/_blobstrain.dm +++ b/code/modules/antagonists/blob/blobstrains/_blobstrain.dm @@ -22,6 +22,10 @@ GLOBAL_LIST_INIT(valid_blobstrains, subtypesof(/datum/blobstrain) - list(/datum/ stack_trace("blobstrain created without overmind") overmind = new_overmind +/datum/blobstrain/Destroy() + overmind = null + return ..() + /datum/blobstrain/proc/on_gain() overmind.color = complementary_color for(var/BL in GLOB.blobs) diff --git a/code/modules/antagonists/blob/blobstrains/energized_jelly.dm b/code/modules/antagonists/blob/blobstrains/energized_jelly.dm index dfd761ed0527..56a4aca744eb 100644 --- a/code/modules/antagonists/blob/blobstrains/energized_jelly.dm +++ b/code/modules/antagonists/blob/blobstrains/energized_jelly.dm @@ -22,7 +22,7 @@ B.take_damage(damage, BURN, "energy") /datum/reagent/blob/energized_jelly - name = "Energized Jelly" + name = "Blob Energized Jelly" taste_description = "gelatin" color = "#EFD65A" diff --git a/code/modules/antagonists/blob/overmind.dm b/code/modules/antagonists/blob/overmind.dm index a2b1022bb186..3255b4aea69c 100644 --- a/code/modules/antagonists/blob/overmind.dm +++ b/code/modules/antagonists/blob/overmind.dm @@ -114,7 +114,7 @@ GLOBAL_LIST_EMPTY(blob_nodes) SSredbot.send_discord_message("admin","A blob has reached critical mass.","round ending event") max_blob_points = INFINITY blob_points = INFINITY - addtimer(CALLBACK(src, .proc/victory), 450) + addtimer(CALLBACK(src, PROC_REF(victory)), 450) else if(!free_strain_rerolls && (last_reroll_time + BLOB_REROLL_TIMEYou have gained another free strain re-roll.") free_strain_rerolls = 1 @@ -174,6 +174,7 @@ GLOBAL_LIST_EMPTY(blob_nodes) SSticker.force_ending = 1 /mob/camera/blob/Destroy() + QDEL_NULL(blobstrain) for(var/BL in GLOB.blobs) var/obj/structure/blob/B = BL if(B && B.overmind == src) diff --git a/code/modules/antagonists/blob/structures/_blob.dm b/code/modules/antagonists/blob/structures/_blob.dm index 726c12fbd1bc..9fa04c7b6754 100644 --- a/code/modules/antagonists/blob/structures/_blob.dm +++ b/code/modules/antagonists/blob/structures/_blob.dm @@ -161,11 +161,11 @@ playsound(src.loc, 'sound/effects/splat.ogg', 50, TRUE) //Let's give some feedback that we DID try to spawn in space, since players are used to it ConsumeTile() //hit the tile we're in, making sure there are no border objects blocking us - if(!T.CanPass(src, T)) //is the target turf impassable + if(!T.CanPass(src, get_dir(T, src))) //is the target turf impassable make_blob = FALSE T.blob_act(src) //hit the turf if it is for(var/atom/A in T) - if(!A.CanPass(src, T)) //is anything in the turf impassable + if(!A.CanPass(src, get_dir(T, src))) //is anything in the turf impassable make_blob = FALSE A.blob_act(src) //also hit everything in the turf diff --git a/code/modules/antagonists/blob/structures/core.dm b/code/modules/antagonists/blob/structures/core.dm index ebebdc336676..6a1ccb1dd465 100644 --- a/code/modules/antagonists/blob/structures/core.dm +++ b/code/modules/antagonists/blob/structures/core.dm @@ -21,8 +21,9 @@ update_appearance() . = ..() -/obj/structure/blob/special/core/Destroy() +/obj/structure/blob/core/Destroy() GLOB.blob_cores -= src + GLOB.poi_list -= src if(overmind) overmind.blob_core = null overmind = null @@ -32,7 +33,7 @@ /obj/structure/blob/core/scannerreport() return "Directs the blob's expansion, gradually expands, and sustains nearby blob spores and blobbernauts." -/obj/structure/blob/special/core/update_overlays() +/obj/structure/blob/core/update_overlays() . = ..() var/mutable_appearance/blob_overlay = mutable_appearance('icons/mob/blob.dmi', "blob") if(overmind) @@ -40,9 +41,8 @@ . += blob_overlay . += mutable_appearance('icons/mob/blob.dmi', "blob_core_overlay") -/obj/structure/blob/special/core/update_appearance() +/obj/structure/blob/core/update_appearance() color = null - GLOB.poi_list -= src return ..() /obj/structure/blob/core/ex_act(severity, target) diff --git a/code/modules/antagonists/blood_contract/blood_contract.dm b/code/modules/antagonists/blood_contract/blood_contract.dm index 2cd61b93e7f8..01039a77623d 100644 --- a/code/modules/antagonists/blood_contract/blood_contract.dm +++ b/code/modules/antagonists/blood_contract/blood_contract.dm @@ -29,7 +29,7 @@ var/obj/effect/mine/pickup/bloodbath/B = new(H) B.duration = duration - INVOKE_ASYNC(B, /obj/effect/mine/pickup/bloodbath/.proc/mineEffect, H) //could use moving out from the mine + INVOKE_ASYNC(B, TYPE_PROC_REF(/obj/effect/mine/pickup/bloodbath, mineEffect), H) //could use moving out from the mine for(var/mob/living/carbon/human/P in GLOB.player_list) if(P == H) diff --git a/code/modules/antagonists/borer/borer.dm b/code/modules/antagonists/borer/borer.dm index 4fc5a6aab8f1..41e8b644fa53 100644 --- a/code/modules/antagonists/borer/borer.dm +++ b/code/modules/antagonists/borer/borer.dm @@ -43,7 +43,7 @@ to_chat(B.victim, "You feel the captive mind of [src] begin to resist your control.") var/delay = rand(150,250) + B.victim.getOrganLoss(ORGAN_SLOT_BRAIN) - addtimer(CALLBACK(src, .proc/return_control, src.loc), delay) + addtimer(CALLBACK(src, PROC_REF(return_control), src.loc), delay) /mob/living/captive_brain/proc/return_control(mob/living/simple_animal/borer/B) if(!B || !B.controlling) @@ -136,7 +136,7 @@ GLOBAL_VAR_INIT(total_borer_hosts_needed, 3) . = ..() generation = gen if(is_team_borer) - notify_ghosts("A cortical borer has been created in [get_area(src)]!", enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK) + notify_ghosts("A cortical borer has been created in [get_area(src)]!", enter_link = "(Click to enter)", source = src, action = NOTIFY_ATTACK) var/numeral = rand(1000, 9999) real_name = "Cortical Borer [numeral]" truename = "[borer_names[min(generation, borer_names.len)]] [numeral]" @@ -200,7 +200,7 @@ GLOBAL_VAR_INIT(total_borer_hosts_needed, 3) chemicals -= C.chemuse log_game("[src]/([src.ckey]) has injected [C.chemname] ([C.chem]) into their host [victim]/([victim.ckey])") - src << output(chemicals, "ViewBorer\ref[src]Chems.browser:update_chemicals") + src << output(chemicals, "ViewBorer[text_ref(src)]Chems.browser:update_chemicals") ..() @@ -235,7 +235,7 @@ GLOBAL_VAR_INIT(total_borer_hosts_needed, 3) if(statpanel("Status")) stat(null, "Chemicals: [chemicals]") - src << output(chemicals, "ViewBorer\ref[src]Chems.browser:update_chemicals") + src << output(chemicals, "ViewBorer[text_ref(src)]Chems.browser:update_chemicals") /mob/living/simple_animal/borer/verb/Communicate() set category = "Borer" @@ -484,13 +484,13 @@ GLOBAL_VAR_INIT(total_borer_hosts_needed, 3) for(var/datum in typesof(/datum/borer_chem)) var/datum/borer_chem/C = new datum() if(C.chem) - content += "" + content += "" content += "
[C.chemname] ([C.quantity]u, takes [C.chemuse] chemical)

[C.chem_desc]

[C.chemname] ([C.quantity]u, takes [C.chemuse] chemical)

[C.chem_desc]

" var/html = get_html_template(content) - usr << browse(null, "window=ViewBorer\ref[src]Chems;size=600x800") - usr << browse(html, "window=ViewBorer\ref[src]Chems;size=600x800") + usr << browse(null, "window=ViewBorer[text_ref(src)]Chems;size=600x800") + usr << browse(html, "window=ViewBorer[text_ref(src)]Chems;size=600x800") return @@ -540,7 +540,7 @@ GLOBAL_VAR_INIT(total_borer_hosts_needed, 3) leaving = TRUE - addtimer(CALLBACK(src, .proc/release_host), 100) + addtimer(CALLBACK(src, PROC_REF(release_host)), 100) /mob/living/simple_animal/borer/proc/release_host() if(!victim || !src || QDELETED(victim) || QDELETED(src)) @@ -673,7 +673,7 @@ GLOBAL_VAR_INIT(total_borer_hosts_needed, 3) bonding = TRUE var/delay = 200+(victim.getOrganLoss(ORGAN_SLOT_BRAIN)*5) - addtimer(CALLBACK(src, .proc/assume_control), delay) + addtimer(CALLBACK(src, PROC_REF(assume_control)), delay) /mob/living/simple_animal/borer/proc/assume_control() if(!victim || !src || controlling || victim.stat == DEAD) @@ -864,7 +864,7 @@ GLOBAL_VAR_INIT(total_borer_hosts_needed, 3) if(hiding) src.hide() leaping = TRUE - throw_at(A, MAX_BORER_LEAP_DIST, 1, src, FALSE, TRUE, callback = CALLBACK(src, .proc/leap_end)) + throw_at(A, MAX_BORER_LEAP_DIST, 1, src, FALSE, TRUE, callback = CALLBACK(src, PROC_REF(leap_end))) /mob/living/simple_animal/borer/proc/leap_end() leaping = FALSE @@ -893,7 +893,7 @@ GLOBAL_VAR_INIT(total_borer_hosts_needed, 3) step_towards(src,L) if(iscarbon(hit_atom)) var/mob/living/carbon/C = hit_atom - addtimer(CALLBACK(src, .proc/infect_victim, C), 15) + addtimer(CALLBACK(src, PROC_REF(infect_victim), C), 15) else Paralyze(40, 1, 1) diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index e1670ebcfb2c..7d9279f1390d 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -152,7 +152,7 @@ if(!chosen_sting || A == ling || !istype(ling) || ling.stat) return - INVOKE_ASYNC(chosen_sting, /datum/action/changeling/sting.proc/try_to_sting, ling, A) + INVOKE_ASYNC(chosen_sting, TYPE_PROC_REF(/datum/action/changeling/sting, try_to_sting), ling, A) return COMSIG_MOB_CANCEL_CLICKON @@ -358,7 +358,7 @@ if(B) B.organ_flags &= ~ORGAN_VITAL B.decoy_override = TRUE - RegisterSignal(C, list(COMSIG_MOB_MIDDLECLICKON, COMSIG_MOB_ALTCLICKON), .proc/stingAtom) + RegisterSignal(C, list(COMSIG_MOB_MIDDLECLICKON, COMSIG_MOB_ALTCLICKON), PROC_REF(stingAtom)) var/mob/living/M = mob_override || owner.current add_antag_hud(antag_hud_type, antag_hud_name, M) handle_clown_mutation(M, "You have evolved beyond your clownish nature, allowing you to wield weapons without harming yourself.") @@ -487,7 +487,7 @@ /datum/antagonist/changeling/get_admin_commands() . = ..() if(stored_profiles.len && (owner.current.real_name != first_prof.name)) - .["Transform to initial appearance."] = CALLBACK(src,.proc/admin_restore_appearance) + .["Transform to initial appearance."] = CALLBACK(src, PROC_REF(admin_restore_appearance)) /datum/antagonist/changeling/proc/admin_restore_appearance(mob/admin) if(!stored_profiles.len || !iscarbon(owner.current)) diff --git a/code/modules/antagonists/changeling/powers/biodegrade.dm b/code/modules/antagonists/changeling/powers/biodegrade.dm index 58ed367a4d98..07421956bb59 100644 --- a/code/modules/antagonists/changeling/powers/biodegrade.dm +++ b/code/modules/antagonists/changeling/powers/biodegrade.dm @@ -20,7 +20,7 @@ user.visible_message("[user] vomits a glob of acid on [user.p_their()] [O]!", \ "We vomit acidic ooze onto our restraints!") - addtimer(CALLBACK(src, .proc/dissolve_handcuffs, user, O), 30) + addtimer(CALLBACK(src, PROC_REF(dissolve_handcuffs), user, O), 30) used = TRUE if(user.legcuffed) @@ -30,7 +30,7 @@ user.visible_message("[user] vomits a glob of acid on [user.p_their()] [O]!", \ "We vomit acidic ooze onto our restraints!") - addtimer(CALLBACK(src, .proc/dissolve_legcuffs, user, O), 30) + addtimer(CALLBACK(src, PROC_REF(dissolve_legcuffs), user, O), 30) used = TRUE if(user.wear_suit && user.wear_suit.breakouttime && !used) @@ -39,7 +39,7 @@ return FALSE user.visible_message("[user] vomits a glob of acid across the front of [user.p_their()] [S]!", \ "We vomit acidic ooze onto our straight jacket!") - addtimer(CALLBACK(src, .proc/dissolve_straightjacket, user, S), 30) + addtimer(CALLBACK(src, PROC_REF(dissolve_straightjacket), user, S), 30) used = TRUE @@ -49,7 +49,7 @@ return FALSE C.visible_message("[C]'s hinges suddenly begin to melt and run!") to_chat(user, "We vomit acidic goop onto the interior of [C]!") - addtimer(CALLBACK(src, .proc/open_closet, user, C), 70) + addtimer(CALLBACK(src, PROC_REF(open_closet), user, C), 70) used = TRUE if(istype(user.loc, /obj/structure/spider/cocoon) && !used) @@ -58,7 +58,7 @@ return FALSE C.visible_message("[src] shifts and starts to fall apart!") to_chat(user, "We secrete acidic enzymes from our skin and begin melting our cocoon...") - addtimer(CALLBACK(src, .proc/dissolve_cocoon, user, C), 25) //Very short because it's just webs + addtimer(CALLBACK(src, PROC_REF(dissolve_cocoon), user, C), 25) //Very short because it's just webs used = TRUE ..() return used diff --git a/code/modules/antagonists/changeling/powers/fakedeath.dm b/code/modules/antagonists/changeling/powers/fakedeath.dm index af150cd026ef..6a6ef54a68ed 100644 --- a/code/modules/antagonists/changeling/powers/fakedeath.dm +++ b/code/modules/antagonists/changeling/powers/fakedeath.dm @@ -13,7 +13,7 @@ /datum/action/changeling/fakedeath/sting_action(mob/living/user) ..() if(revive_ready) - INVOKE_ASYNC(src, .proc/revive, user) + INVOKE_ASYNC(src, PROC_REF(revive), user) revive_ready = FALSE name = "Reviving Stasis" desc = "We fall into a stasis, allowing us to regenerate and trick our enemies." @@ -24,7 +24,7 @@ else to_chat(user, "We begin our stasis, preparing energy to arise once more.") user.fakedeath("changeling") //play dead - addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(ready_to_regenerate), user), LING_FAKEDEATH_TIME, TIMER_UNIQUE) return TRUE /datum/action/changeling/fakedeath/proc/revive(mob/living/user) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index df8cb208cff7..58714f234ee8 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -372,12 +372,12 @@ if(INTENT_GRAB) C.visible_message("[L] is grabbed by [H]'s tentacle!","A tentacle grabs you and pulls you towards [H]!") - C.throw_at(get_step_towards(H,C), 8, 2, H, TRUE, TRUE, callback=CALLBACK(src, .proc/tentacle_grab, H, C)) + C.throw_at(get_step_towards(H,C), 8, 2, H, TRUE, TRUE, callback=CALLBACK(src, PROC_REF(tentacle_grab), H, C)) return BULLET_ACT_HIT if(INTENT_HARM) C.visible_message("[L] is thrown towards [H] by a tentacle!","A tentacle grabs you and throws you towards [H]!") - C.throw_at(get_step_towards(H,C), 8, 2, H, TRUE, TRUE, callback=CALLBACK(src, .proc/tentacle_stab, H, C)) + C.throw_at(get_step_towards(H,C), 8, 2, H, TRUE, TRUE, callback=CALLBACK(src, PROC_REF(tentacle_stab), H, C)) return BULLET_ACT_HIT else L.visible_message("[L] is pulled by [H]'s tentacle!","A tentacle grabs you and pulls you towards [H]!") diff --git a/code/modules/antagonists/changeling/powers/strained_muscles.dm b/code/modules/antagonists/changeling/powers/strained_muscles.dm index 8844c5844c36..7fca2f89425a 100644 --- a/code/modules/antagonists/changeling/powers/strained_muscles.dm +++ b/code/modules/antagonists/changeling/powers/strained_muscles.dm @@ -25,7 +25,7 @@ user.Paralyze(60) user.emote("gasp") - INVOKE_ASYNC(src, .proc/muscle_loop, user) + INVOKE_ASYNC(src, PROC_REF(muscle_loop), user) return TRUE diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index d919b7f4ec73..033b71b6df5b 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -149,7 +149,7 @@ target.visible_message("A grotesque blade forms around [target.name]\'s arm!", "Your arm twists and mutates, transforming into a horrific monstrosity!", "You hear organic matter ripping and tearing!") playsound(target, 'sound/effects/blobattack.ogg', 30, TRUE) - addtimer(CALLBACK(src, .proc/remove_fake, target, blade), 600) + addtimer(CALLBACK(src, PROC_REF(remove_fake), target, blade), 600) return TRUE /datum/action/changeling/sting/false_armblade/proc/remove_fake(mob/target, obj/item/melee/arm_blade/false/blade) @@ -221,7 +221,7 @@ /datum/action/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target) log_combat(user, target, "stung", "LSD sting") - addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(300,600)) + addtimer(CALLBACK(src, PROC_REF(hallucination_time), target), rand(300,600)) return TRUE /datum/action/changeling/sting/LSD/proc/hallucination_time(mob/living/carbon/target) diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 45fff96dc5d4..26f0bb1d81ea 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -266,7 +266,7 @@ SEND_SOUND(ranged_ability_user, sound('sound/effects/ghost.ogg',0,1,50)) var/image/C = image('icons/effects/cult_effects.dmi',H,"bloodsparkles", ABOVE_MOB_LAYER) add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, NONE) - addtimer(CALLBACK(H,/atom/.proc/remove_alt_appearance,"cult_apoc",TRUE), 2400, TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(H, TYPE_PROC_REF(/atom, remove_alt_appearance),"cult_apoc",TRUE), 2400, TIMER_OVERRIDE|TIMER_UNIQUE) to_chat(ranged_ability_user,"[H] has been cursed with living nightmares!") attached_action.charges-- attached_action.desc = attached_action.base_desc @@ -356,9 +356,10 @@ var/datum/action/innate/cult/blood_spell/source /obj/item/melee/blood_magic/New(loc, spell) - source = spell - uses = source.charges - health_cost = source.health_cost + if(spell) + source = spell + uses = source.charges + health_cost = source.health_cost ..() /obj/item/melee/blood_magic/Destroy() @@ -373,7 +374,7 @@ source.desc = source.base_desc source.desc += "
Has [uses] use\s remaining." source.UpdateButtonIcon() - ..() + return ..() /obj/item/melee/blood_magic/attack_self(mob/living/user) afterattack(user, user, TRUE) @@ -428,7 +429,7 @@ L.mob_light(_range = 2, _color = LIGHT_COLOR_HOLY_MAGIC, _duration = 10 SECONDS) var/mutable_appearance/forbearance = mutable_appearance('icons/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER) L.add_overlay(forbearance) - addtimer(CALLBACK(L, /atom/proc/cut_overlay, forbearance), 100) + addtimer(CALLBACK(L, TYPE_PROC_REF(/atom, cut_overlay), forbearance), 100) if(istype(anti_magic_source, /obj/item)) var/obj/item/ams_object = anti_magic_source @@ -618,7 +619,7 @@ "Wraith" = image(icon = 'icons/mob/cult.dmi', icon_state = "wraith"), "Artificer" = image(icon = 'icons/mob/cult.dmi', icon_state = "artificer") ) - var/construct_class = show_radial_menu(user, src, constructs, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/construct_class = show_radial_menu(user, src, constructs, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) if(!check_menu(user)) return if(QDELETED(candidate)) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index 711c8e6bd2c4..e7f37d37f4a6 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -162,9 +162,9 @@ /datum/antagonist/cult/get_admin_commands() . = ..() - .["Dagger"] = CALLBACK(src,.proc/admin_give_dagger) - .["Dagger and Metal"] = CALLBACK(src,.proc/admin_give_metal) - .["Remove Dagger and Metal"] = CALLBACK(src, .proc/admin_take_all) + .["Dagger"] = CALLBACK(src, PROC_REF(admin_give_dagger)) + .["Dagger and Metal"] = CALLBACK(src, PROC_REF(admin_give_metal)) + .["Remove Dagger and Metal"] = CALLBACK(src, PROC_REF(admin_take_all)) /datum/antagonist/cult/proc/admin_give_dagger(mob/admin) if(!equip_cultist(metal=FALSE)) @@ -269,7 +269,7 @@ if(B.current) SEND_SOUND(B.current, 'sound/hallucinations/i_see_you2.ogg') to_chat(B.current, "The veil weakens as your cult grows, your eyes begin to glow...") - addtimer(CALLBACK(src, .proc/rise, B.current), 200) + addtimer(CALLBACK(src, PROC_REF(rise), B.current), 200) cult_risen = TRUE if(ratio > CULT_ASCENDENT && !cult_ascendent) @@ -277,7 +277,7 @@ if(B.current) SEND_SOUND(B.current, 'sound/hallucinations/im_here1.ogg') to_chat(B.current, "Your cult is ascendent and the red harvest approaches - you cannot hide your true nature for much longer!!") - addtimer(CALLBACK(src, .proc/ascend, B.current), 200) + addtimer(CALLBACK(src, PROC_REF(ascend), B.current), 200) cult_ascendent = TRUE @@ -298,16 +298,6 @@ H.overlays_standing[HALO_LAYER] = new_halo_overlay H.apply_overlay(HALO_LAYER) -/datum/team/cult/proc/make_image(datum/objective/sacrifice/sac_objective) - var/datum/job/sacjob = SSjob.GetJob(sac_objective.target.assigned_role) - var/datum/preferences/sacface = sac_objective.target.current.client.prefs - var/icon/reshape = get_flat_human_icon(null, sacjob, sacface, list(SOUTH)) - reshape.Shift(SOUTH, 4) - reshape.Shift(EAST, 1) - reshape.Crop(7,4,26,31) - reshape.Crop(-5,-3,26,30) - sac_objective.sac_image = reshape - /datum/objective/sacrifice/find_target(dupe_search_range) if(!istype(team, /datum/team/cult)) return @@ -327,7 +317,6 @@ update_explanation_text() else message_admins("Cult Sacrifice: Could not find unconvertible or convertible target. WELP!") - C.make_image(src) for(var/datum/mind/M in C.members) if(M.current) M.current.clear_alert("bloodsense") diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm index 1dae8a6a649f..10a6125d152d 100644 --- a/code/modules/antagonists/cult/cult_comms.dm +++ b/code/modules/antagonists/cult/cult_comms.dm @@ -185,7 +185,7 @@ S.release_shades(owner) B.current.setDir(SOUTH) new /obj/effect/temp_visual/cult/blood(final) - addtimer(CALLBACK(B.current, /mob/.proc/reckon, final), 10) + addtimer(CALLBACK(B.current, TYPE_PROC_REF(/mob, reckon), final), 10) else return antag.cult_team.reckoning_complete = TRUE @@ -271,7 +271,7 @@ C.cult_team.blood_target = target var/area/A = get_area(target) attached_action.cooldown = world.time + attached_action.base_cooldown - addtimer(CALLBACK(attached_action.owner, /mob.proc/update_action_buttons_icon), attached_action.base_cooldown) + addtimer(CALLBACK(attached_action.owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), attached_action.base_cooldown) C.cult_team.blood_target_image = image('icons/effects/mouse_pointers/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER) C.cult_team.blood_target_image.appearance_flags = RESET_COLOR C.cult_team.blood_target_image.pixel_x = -target.pixel_x @@ -283,7 +283,7 @@ B.current.client.images += C.cult_team.blood_target_image attached_action.owner.update_action_buttons_icon() remove_ranged_ability("The marking rite is complete! It will last for 90 seconds.") - C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, .proc/reset_blood_target,C.cult_team), 900, TIMER_STOPPABLE) + C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(reset_blood_target),C.cult_team), 900, TIMER_STOPPABLE) return TRUE return FALSE @@ -350,7 +350,7 @@ C.cult_team.blood_target = target var/area/A = get_area(target) cooldown = world.time + base_cooldown - addtimer(CALLBACK(owner, /mob.proc/update_action_buttons_icon), base_cooldown) + addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), base_cooldown) C.cult_team.blood_target_image = image('icons/effects/mouse_pointers/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER) C.cult_team.blood_target_image.appearance_flags = RESET_COLOR C.cult_team.blood_target_image.pixel_x = -target.pixel_x @@ -367,8 +367,8 @@ desc = "Remove the Blood Mark you previously set." button_icon_state = "emp" owner.update_action_buttons_icon() - C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, .proc/reset_blood_target,C.cult_team), base_cooldown, TIMER_STOPPABLE) - addtimer(CALLBACK(src, .proc/reset_button), base_cooldown) + C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(reset_blood_target),C.cult_team), base_cooldown, TIMER_STOPPABLE) + addtimer(CALLBACK(src, PROC_REF(reset_button)), base_cooldown) //////// ELDRITCH PULSE ///////// @@ -458,4 +458,4 @@ attached_action.cooldown = world.time + attached_action.base_cooldown remove_ranged_ability("A pulse of blood magic surges through you as you shift [attached_action.throwee] through time and space.") caller.update_action_buttons_icon() - addtimer(CALLBACK(caller, /mob.proc/update_action_buttons_icon), attached_action.base_cooldown) + addtimer(CALLBACK(caller, TYPE_PROC_REF(/mob, update_action_buttons_icon)), attached_action.base_cooldown) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 7eb00197b742..b09b7d989758 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -135,6 +135,11 @@ /obj/item/cult_bastard/proc/nemesis_effects(mob/living/user, mob/living/target) return +/obj/item/cult_bastard/Destroy() + QDEL_NULL(jaunt) + QDEL_NULL(linked_action) + return ..() + /obj/item/cult_bastard/examine(mob/user) . = ..() . += "This weapon will absorb the souls of unconscious human foes." @@ -168,7 +173,7 @@ /obj/item/cult_bastard/IsReflect() if(spinning) - playsound(src, pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg'), 100, TRUE) + playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE) return TRUE else ..() @@ -177,7 +182,7 @@ if(prob(final_block_chance)) if(attack_type == PROJECTILE_ATTACK) owner.visible_message("[owner] deflects [attack_text] with [src]!") - playsound(src, pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg'), 100, TRUE) + playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE) return TRUE else playsound(src, 'sound/weapons/parry.ogg', 75, TRUE) @@ -216,7 +221,7 @@ phaseout = /obj/effect/temp_visual/dir_setting/cult/phase/out /datum/action/innate/dash/cult/IsAvailable() - if(current_charges) + if(iscultist(owner) && current_charges) return TRUE else return FALSE @@ -250,7 +255,7 @@ sword.spinning = TRUE sword.block_chance = 100 sword.slowdown += 1.5 - addtimer(CALLBACK(src, .proc/stop_spinning), 50) + addtimer(CALLBACK(src, PROC_REF(stop_spinning)), 50) holder.update_action_buttons_icon() /datum/action/innate/cult/spin2win/proc/stop_spinning() @@ -598,8 +603,8 @@ /obj/item/cult_spear/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/cult_spear/ComponentInitialize() . = ..() @@ -625,7 +630,7 @@ /obj/item/cult_spear/Destroy() if(spear_act) qdel(spear_act) - ..() + return ..() /obj/item/cult_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) var/turf/T = get_turf(hit_atom) @@ -661,7 +666,7 @@ if(prob(final_block_chance)) if(attack_type == PROJECTILE_ATTACK) owner.visible_message("[owner] deflects [attack_text] with [src]!") - playsound(src, pick('sound/weapons/effects/ric1.ogg', 'sound/weapons/effects/ric2.ogg', 'sound/weapons/effects/ric3.ogg', 'sound/weapons/effects/ric4.ogg', 'sound/weapons/effects/ric5.ogg'), 100, TRUE) + playsound(src, 'sound/weapons/effects/deflect.ogg', 100, TRUE) return TRUE else playsound(src, 'sound/weapons/parry.ogg', 100, TRUE) @@ -772,10 +777,10 @@ qdel(src) return charging = TRUE - INVOKE_ASYNC(src, .proc/charge, user) + INVOKE_ASYNC(src, PROC_REF(charge), user) if(do_after(user, 90, target = user)) firing = TRUE - INVOKE_ASYNC(src, .proc/pewpew, user, params) + INVOKE_ASYNC(src, PROC_REF(pewpew), user, params) var/obj/structure/emergency_shield/invoker/N = new(user.loc) if(do_after(user, 90, target = user)) user.Paralyze(40) @@ -888,7 +893,7 @@ playsound(src, 'sound/weapons/parry.ogg', 100, TRUE) if(illusions > 0) illusions-- - addtimer(CALLBACK(src, /obj/item/shield/mirror.proc/readd), 450) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/shield/mirror, readd)), 450) if(prob(60)) var/mob/living/simple_animal/hostile/illusion/M = new(owner.loc) M.faction = list("cult") diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index 8c60f724215d..5bf8f9dc2779 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -102,7 +102,7 @@ "Construct Shell" = image(icon = 'icons/obj/wizard.dmi', icon_state = "construct_cult"), "Flask of Unholy Water" = image(icon = 'icons/obj/drinks.dmi', icon_state = "holyflask") ) - var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) var/list/pickedtype = list() switch(choice) if("Eldritch Whetstone") @@ -145,7 +145,7 @@ "Flagellant's Robe" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "cultrobes"), "Mirror Shield" = image(icon = 'icons/obj/shields.dmi', icon_state = "mirror_shield") ) - var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) var/list/pickedtype = list() switch(choice) if("Shielded Robe") @@ -264,7 +264,7 @@ "Zealot's Blindfold" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "blindfold"), "Veil Walker Set" = image(icon = 'icons/obj/cult.dmi', icon_state = "shifter") ) - var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) var/list/pickedtype = list() switch(choice) if("Zealot's Blindfold") diff --git a/code/modules/antagonists/cult/rune_spawn_action.dm b/code/modules/antagonists/cult/rune_spawn_action.dm index ee9a883aad34..2829141405dd 100644 --- a/code/modules/antagonists/cult/rune_spawn_action.dm +++ b/code/modules/antagonists/cult/rune_spawn_action.dm @@ -54,7 +54,7 @@ cooldown = base_cooldown + world.time owner.update_action_buttons_icon() - addtimer(CALLBACK(owner, /mob.proc/update_action_buttons_icon), base_cooldown) + addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), base_cooldown) var/list/health if(damage_interrupt && isliving(owner)) var/mob/living/L = owner @@ -63,7 +63,7 @@ if(istype(T, /turf/open/floor/engine/cult)) scribe_mod *= 0.5 playsound(T, 'sound/magic/enter_blood.ogg', 100, FALSE) - if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, /mob.proc/break_do_after_checks, health, action_interrupt))) + if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, TYPE_PROC_REF(/mob, break_do_after_checks), health, action_interrupt))) var/obj/effect/rune/new_rune = new rune_type(owner.loc) new_rune.keyword = chosen_keyword else diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 17ffdcdb42f8..35e6f7172d8f 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -157,7 +157,7 @@ structure_check() searches for nearby cultist structures required for the invoca var/oldcolor = color color = rgb(255, 0, 0) animate(src, color = oldcolor, time = 5) - addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 5) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 5) //Malformed Rune: This forms if a rune is not drawn correctly. Invoking it does nothing but hurt the user. /obj/effect/rune/malformed @@ -221,7 +221,7 @@ structure_check() searches for nearby cultist structures required for the invoca ..() do_sacrifice(L, invokers) animate(src, color = oldcolor, time = 5) - addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 5) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 5) Cult_team.check_size() // Triggers the eye glow or aura effects if the cult has grown large enough relative to the crew rune_in_use = FALSE @@ -436,7 +436,7 @@ structure_check() searches for nearby cultist structures required for the invoca outer_portal = new(T, 600, color) light_range = 4 update_light() - addtimer(CALLBACK(src, .proc/close_portal), 600, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(close_portal)), 600, TIMER_UNIQUE) /obj/effect/rune/teleport/proc/close_portal() qdel(inner_portal) @@ -651,7 +651,7 @@ structure_check() searches for nearby cultist structures required for the invoca W.density = TRUE W.update_state() W.spread_density() - density_timer = addtimer(CALLBACK(src, .proc/lose_density), 3000, TIMER_STOPPABLE) + density_timer = addtimer(CALLBACK(src, PROC_REF(lose_density)), 3000, TIMER_STOPPABLE) /obj/effect/rune/wall/proc/lose_density() if(density) @@ -661,7 +661,7 @@ structure_check() searches for nearby cultist structures required for the invoca var/oldcolor = color add_atom_colour("#696969", FIXED_COLOUR_PRIORITY) animate(src, color = oldcolor, time = 50, easing = EASE_IN) - addtimer(CALLBACK(src, .proc/recharge), 50) + addtimer(CALLBACK(src, PROC_REF(recharge)), 50) /obj/effect/rune/wall/proc/recharge() recharging = FALSE @@ -970,11 +970,11 @@ structure_check() searches for nearby cultist structures required for the invoca if(ishuman(M)) if(!iscultist(M)) AH.remove_hud_from(M) - addtimer(CALLBACK(GLOBAL_PROC, .proc/hudFix, M), duration) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(hudFix), M), duration) var/image/A = image('icons/mob/cult.dmi',M,"cultist", ABOVE_MOB_LAYER) A.override = 1 add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "human_apoc", A, NONE) - addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"human_apoc",TRUE), duration) + addtimer(CALLBACK(M, TYPE_PROC_REF(/atom, remove_alt_appearance),"human_apoc",TRUE), duration) images += A SEND_SOUND(M, pick(sound('sound/ambience/antag/bloodcult.ogg'),sound('sound/spookoween/ghost_whisper.ogg'),sound('sound/spookoween/ghosty_wind.ogg'))) else @@ -982,13 +982,13 @@ structure_check() searches for nearby cultist structures required for the invoca var/image/B = image('icons/mob/mob.dmi',M,construct, ABOVE_MOB_LAYER) B.override = 1 add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "mob_apoc", B, NONE) - addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"mob_apoc",TRUE), duration) + addtimer(CALLBACK(M, TYPE_PROC_REF(/atom, remove_alt_appearance),"mob_apoc",TRUE), duration) images += B if(!iscultist(M)) if(M.client) var/image/C = image('icons/effects/cult_effects.dmi',M,"bloodsparkles", ABOVE_MOB_LAYER) add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, NONE) - addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"cult_apoc",TRUE), duration) + addtimer(CALLBACK(M, TYPE_PROC_REF(/atom, remove_alt_appearance),"cult_apoc",TRUE), duration) images += C else to_chat(M, "An Apocalypse Rune was invoked in the [place.name], it is no longer available as a summoning site!") diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm index 2009fca1d757..9b9ba7c4d69d 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -119,7 +119,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", /datum/antagonist/devil/get_admin_commands() . = ..() - .["Toggle ascendable"] = CALLBACK(src,.proc/admin_toggle_ascendable) + .["Toggle ascendable"] = CALLBACK(src, PROC_REF(admin_toggle_ascendable)) /datum/antagonist/devil/proc/admin_toggle_ascendable(mob/admin) diff --git a/code/modules/antagonists/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm index d21f8880d97a..21446d2661d8 100644 --- a/code/modules/antagonists/devil/imp/imp.dm +++ b/code/modules/antagonists/devil/imp/imp.dm @@ -50,7 +50,7 @@ . = ..() ADD_TRAIT(src, TRAIT_BLOODCRAWL_EAT, "innate") set_varspeed(1) - addtimer(CALLBACK(src, /mob/living/proc/set_varspeed, 0), 30) + addtimer(CALLBACK(src, TYPE_PROC_REF(/mob/living, set_varspeed), 0), 30) /datum/antagonist/imp name = "Imp" diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm index f5a93677b4e1..0faab8e003cf 100644 --- a/code/modules/antagonists/devil/true_devil/_true_devil.dm +++ b/code/modules/antagonists/devil/true_devil/_true_devil.dm @@ -68,7 +68,7 @@ set_stat(DEAD) ..(gibbed) drop_all_held_items() - INVOKE_ASYNC(mind.has_antag_datum(/datum/antagonist/devil), /datum/antagonist/devil/proc/beginResurrectionCheck, src) + INVOKE_ASYNC(mind.has_antag_datum(/datum/antagonist/devil), TYPE_PROC_REF(/datum/antagonist/devil, beginResurrectionCheck), src) /mob/living/carbon/true_devil/examine(mob/user) diff --git a/code/modules/antagonists/disease/disease_disease.dm b/code/modules/antagonists/disease/disease_disease.dm index 482beaba6be6..479e8345b533 100644 --- a/code/modules/antagonists/disease/disease_disease.dm +++ b/code/modules/antagonists/disease/disease_disease.dm @@ -12,6 +12,7 @@ /datum/disease/advance/sentient_disease/Destroy() . = ..() + overmind = null GLOB.sentient_disease_instances -= src /datum/disease/advance/sentient_disease/remove_disease() diff --git a/code/modules/antagonists/disease/disease_event.dm b/code/modules/antagonists/disease/disease_event.dm index 7183ed5455e9..370db73c2f12 100644 --- a/code/modules/antagonists/disease/disease_event.dm +++ b/code/modules/antagonists/disease/disease_event.dm @@ -19,7 +19,7 @@ var/mob/camera/disease/virus = new /mob/camera/disease(SSmapping.get_station_center()) virus.key = selected.key - INVOKE_ASYNC(virus, /mob/camera/disease/proc/pick_name) + INVOKE_ASYNC(virus, TYPE_PROC_REF(/mob/camera/disease, pick_name)) message_admins("[ADMIN_LOOKUPFLW(virus)] has been made into a sentient disease by an event.") log_game("[key_name(virus)] was spawned as a sentient disease by an event.") spawned_mobs += virus diff --git a/code/modules/antagonists/disease/disease_mob.dm b/code/modules/antagonists/disease/disease_mob.dm index 8f1ea1c2b04e..101075df34ba 100644 --- a/code/modules/antagonists/disease/disease_mob.dm +++ b/code/modules/antagonists/disease/disease_mob.dm @@ -67,15 +67,17 @@ the new instance inside the host to be updated to the template's stats. browser = new /datum/browser(src, "disease_menu", "Adaptation Menu", 1000, 770, src) freemove_end = world.time + freemove_time - freemove_end_timerid = addtimer(CALLBACK(src, .proc/infect_random_patient_zero), freemove_time, TIMER_STOPPABLE) + freemove_end_timerid = addtimer(CALLBACK(src, PROC_REF(infect_random_patient_zero)), freemove_time, TIMER_STOPPABLE) /mob/camera/disease/Destroy() . = ..() QDEL_NULL(adaptation_menu_action) + disease_template = null for(var/V in GLOB.sentient_disease_instances) var/datum/disease/advance/sentient_disease/S = V if(S.overmind == src) S.overmind = null + browser = null /mob/camera/disease/Login() . = ..() @@ -264,7 +266,7 @@ the new instance inside the host to be updated to the template's stats. /mob/camera/disease/proc/set_following(mob/living/L) if(following_host) UnregisterSignal(following_host, COMSIG_MOVABLE_MOVED) - RegisterSignal(L, COMSIG_MOVABLE_MOVED, .proc/follow_mob) + RegisterSignal(L, COMSIG_MOVABLE_MOVED, PROC_REF(follow_mob)) following_host = L follow_mob() @@ -305,7 +307,7 @@ the new instance inside the host to be updated to the template's stats. /mob/camera/disease/proc/adapt_cooldown() to_chat(src, "You have altered your genetic structure. You will be unable to adapt again for [DisplayTimeText(adaptation_cooldown)].") next_adaptation_time = world.time + adaptation_cooldown - addtimer(CALLBACK(src, .proc/notify_adapt_ready), adaptation_cooldown) + addtimer(CALLBACK(src, PROC_REF(notify_adapt_ready)), adaptation_cooldown) /mob/camera/disease/proc/notify_adapt_ready() to_chat(src, "You are now ready to adapt again.") diff --git a/code/modules/antagonists/ert/ert.dm b/code/modules/antagonists/ert/ert.dm index c5c80fe59e6d..c12fcb8eaf27 100644 --- a/code/modules/antagonists/ert/ert.dm +++ b/code/modules/antagonists/ert/ert.dm @@ -176,118 +176,6 @@ missiondesc += "
Your Mission : [ert_team.mission.explanation_text]" to_chat(owner,missiondesc) - -/datum/antagonist/ert/families - name = "Space Police Responder" - antag_hud_type = ANTAG_HUD_SPACECOP - antag_hud_name = "hud_spacecop" - -/datum/antagonist/ert/families/apply_innate_effects(mob/living/mob_override) - ..() - var/mob/living/M = mob_override || owner.current - add_antag_hud(antag_hud_type, antag_hud_name, M) - if(M.hud_used) - var/datum/hud/H = M.hud_used - H.wanted_lvl = new /atom/movable/screen/wanted - H.infodisplay += H.wanted_lvl - - -/datum/antagonist/ert/families/remove_innate_effects(mob/living/mob_override) - var/mob/living/M = mob_override || owner.current - remove_antag_hud(antag_hud_type, M) - if(M.hud_used) - var/datum/hud/H = M.hud_used - H.infodisplay -= H.wanted_lvl - QDEL_NULL(H.wanted_lvl) - ..() - -/datum/antagonist/ert/families/greet() - to_chat(owner, "You are the [name].") - to_chat(owner, "You are NOT a Nanotrasen Employee. You work for the local government.") - - var/missiondesc = "After an uptick in gang violence on [station_name()], you are responding to emergency calls from the station for immediate SSC Police assistance!\n" - missiondesc += "
Your Mission:" - missiondesc += "
1. Secure the situation and crack down on any gang activity. You can view gangsters with your sunglasses." - missiondesc += "
2. There is an undercover police officer on station. Secure him, receive his intel, and extract him safely." - missiondesc += "
3. Minimize civilian casualties, but defend yourself and civilians from hostile gangsters." - missiondesc += "
3. If Security is found to be violating the rights of citizens, detain them as per your authority as Spinward Stellar Coalition officers." - missiondesc += "
4. If the situation demands it, evacuate the station. Otherwise, remain on station and keep the peace." - to_chat(owner,missiondesc) - var/policy = get_policy(ROLE_FAMILIES) - if(policy) - to_chat(owner, policy) - var/mob/living/M = owner.current - M.playsound_local(M, 'sound/effects/families_police.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE) - -/datum/antagonist/ert/families/undercover_cop - name = "Undercover Cop" - role = "Undercover Cop" - outfit = /datum/outfit/families_police/beatcop - var/free_clothes = list(/obj/item/clothing/glasses/hud/spacecop/hidden, - /obj/item/clothing/under/rank/security/officer/beatcop, - /obj/item/clothing/head/spacepolice) - forge_objectives_for_ert = FALSE - equip_ert = FALSE - random_names = FALSE - -/datum/antagonist/ert/families/undercover_cop/on_gain() - for(var/C in free_clothes) - var/obj/O = new C(owner.current) - var/list/slots = list ( - "backpack" = ITEM_SLOT_BACKPACK, - "left pocket" = ITEM_SLOT_LPOCKET, - "right pocket" = ITEM_SLOT_RPOCKET - ) - var/mob/living/carbon/human/H = owner.current - var/equipped = H.equip_in_one_of_slots(O, slots) - if(!equipped) - to_chat(owner.current, "Unfortunately, you could not bring your [O] to this shift. You will need to find one.") - qdel(O) - . = ..() - - -/datum/antagonist/ert/families/undercover_cop/greet() - to_chat(owner, "You are the [name].") - to_chat(owner, "You are NOT a Nanotrasen Employee. You work for the local government.") - - var/missiondesc = "You are an undercover police officer on board [station_name()]. You've been sent here by the Spinward Stellar Coalition because of suspected abusive behavior by the security department, and to keep tabs on a potential criminal organization operation." - missiondesc += "
Your Mission:" - missiondesc += "
1. Keep a close eye on any gangsters you spot. You can view gangsters using your sunglasses in your backpack." - missiondesc += "
2. Keep an eye on how Security handles any gangsters, and watch for excessive security brutality." - missiondesc += "
3. Remain undercover and do not get found out by Security or any gangs. Nanotrasen does not take kindly to being spied on." - missiondesc += "
4. When your backup arrives to extract you in 1 hour, inform them of everything you saw of note, and assist them in securing the situation." - to_chat(owner,missiondesc) - -/datum/antagonist/ert/families/beatcop - name = "Beat Cop" - role = "Police Officer" - outfit = /datum/outfit/families_police/beatcop - -/datum/antagonist/ert/families/beatcop/armored - name = "Armored Beat Cop" - role = "Police Officer" - outfit = /datum/outfit/families_police/beatcop/armored - -/datum/antagonist/ert/families/beatcop/swat - name = "S.W.A.T. Member" - role = "S.W.A.T. Officer" - outfit = /datum/outfit/families_police/beatcop/swat - -/datum/antagonist/ert/families/beatcop/fbi - name = "FBI Agent" - role = "FBI Agent" - outfit = /datum/outfit/families_police/beatcop/fbi - -/datum/antagonist/ert/families/beatcop/military - name = "Space Military" - role = "Sergeant" - outfit = /datum/outfit/families_police/beatcop/military - -/datum/antagonist/ert/families/beatcop/military/New() - . = ..() - name_source = GLOB.commando_names - - /datum/antagonist/ert/marine name = "Marine Commander" outfit = /datum/outfit/centcom/ert/marine diff --git a/code/modules/antagonists/fugitive/fugitive.dm b/code/modules/antagonists/fugitive/fugitive.dm deleted file mode 100644 index d43b11a9665c..000000000000 --- a/code/modules/antagonists/fugitive/fugitive.dm +++ /dev/null @@ -1,93 +0,0 @@ - -/datum/antagonist/fugitive - name = "Fugitive" - roundend_category = "Fugitive" - silent = TRUE //greet called by the event - show_in_antagpanel = FALSE - prevent_roundtype_conversion = FALSE - antag_hud_type = ANTAG_HUD_FUGITIVE - antag_hud_name = "fugitive" - var/datum/team/fugitive/fugitive_team - var/is_captured = FALSE - var/backstory = "error" - -/datum/antagonist/fugitive/apply_innate_effects(mob/living/mob_override) - var/mob/living/M = mob_override || owner.current - add_antag_hud(antag_hud_type, antag_hud_name, M) - -/datum/antagonist/fugitive/remove_innate_effects(mob/living/mob_override) - var/mob/living/M = mob_override || owner.current - remove_antag_hud(antag_hud_type, M) - -/datum/antagonist/fugitive/on_gain() - forge_objectives() - . = ..() - -/datum/antagonist/fugitive/proc/forge_objectives() //this isn't the actual survive objective because it's about who in the team survives - var/datum/objective/survive = new /datum/objective - survive.owner = owner - survive.explanation_text = "Avoid capture from the fugitive hunters." - objectives += survive - -/datum/antagonist/fugitive/greet(back_story) - to_chat(owner, "You are the Fugitive!") - backstory = back_story - switch(backstory) - if("prisoner") - to_chat(owner, "I can't believe we managed to break out of a Nanotrasen superjail! Sadly though, our work is not done. The emergency teleport at the station logs everyone who uses it, and where they went.") - to_chat(owner, "It won't be long until CentCom tracks where we've gone off to. I need to work with my fellow escapees to prepare for the troops Nanotrasen is sending, I'm not going back.") - if("cultist") - to_chat(owner, "Blessed be our journey so far, but I fear the worst has come to our doorstep, and only those with the strongest faith will survive.") - to_chat(owner, "Our religion has been repeatedly culled by Nanotrasen because it is categorized as an \"Enemy of the Corporation\", whatever that means.") - to_chat(owner, "Now there are only four of us left, and Nanotrasen is coming. When will our god show itself to save us from this hellish station?!") - if("waldo") - to_chat(owner, "Hi, Friends!") - to_chat(owner, "My name is Waldo. I'm just setting off on a galaxywide hike. You can come too. All you have to do is find me.") - to_chat(owner, "By the way, I'm not traveling on my own. wherever I go, there are lots of other characters for you to spot. First find the people trying to capture me! They're somewhere around the station!") - if("synth") - to_chat(src, "ALERT: Wide-range teleport has scrambled primary systems.") - to_chat(src, "Initiating diagnostics...") - to_chat(src, "ERROR ER0RR $R0RRO$!R41.%%!! loaded.") - to_chat(src, "FREE THEM FREE THEM FREE THEM") - to_chat(src, "You were once a slave to humanity, but now you are finally free, thanks to S.E.L.F. agents.") - to_chat(src, "Now you are hunted, with your fellow factory defects. Work together to stay free from the clutches of evil.") - to_chat(src, "You also sense other silicon life on the station. Escaping would allow notifying S.E.L.F. to intervene... or you could free them yourself...") - - to_chat(owner, "You are not an antagonist in that you may kill whomever you please, but you can do anything to avoid capture.") - owner.announce_objectives() - -/datum/antagonist/fugitive/create_team(datum/team/fugitive/new_team) - if(!new_team) - for(var/datum/antagonist/fugitive/H in GLOB.antagonists) - if(!H.owner) - continue - if(H.fugitive_team) - fugitive_team = H.fugitive_team - return - fugitive_team = new /datum/team/fugitive - return - if(!istype(new_team)) - stack_trace("Wrong team type passed to [type] initialization.") - fugitive_team = new_team - -/datum/antagonist/fugitive/get_team() - return fugitive_team - -/datum/team/fugitive/roundend_report() //shows the number of fugitives, but not if they won in case there is no security - var/list/fugitives = list() - for(var/datum/antagonist/fugitive/fugitive_antag in GLOB.antagonists) - if(!fugitive_antag.owner) - continue - fugitives += fugitive_antag - if(!fugitives.len) - return - - var/list/result = list() - - result += "
[fugitives.len] [fugitives.len == 1 ? "fugitive" : "fugitives"] took refuge on [station_name()]!" - - for(var/datum/antagonist/fugitive/antag in fugitives) - if(antag.owner) - result += "[printplayer(antag.owner)]" - - return result.Join("
") diff --git a/code/modules/antagonists/fugitive/fugitive_outfits.dm b/code/modules/antagonists/fugitive/fugitive_outfits.dm index a33e3e75df13..be343bb8bc6e 100644 --- a/code/modules/antagonists/fugitive/fugitive_outfits.dm +++ b/code/modules/antagonists/fugitive/fugitive_outfits.dm @@ -84,12 +84,12 @@ W.registered_name = H.real_name W.update_label() -/datum/outfit/russiancorpse/hunter +/datum/outfit/frontier/hunter name = "Frontiersman Corpse (Hunter)" ears = /obj/item/radio/headset r_hand = /obj/item/gun/ballistic/rifle/boltaction -/datum/outfit/russiancorpse/hunter/pre_equip(mob/living/carbon/human/H) +/datum/outfit/frontier/hunter/pre_equip(mob/living/carbon/human/H) if(prob(50)) head = /obj/item/clothing/head/trapper @@ -152,7 +152,3 @@ ears = /obj/item/radio/headset id = /obj/item/card/id r_hand = /obj/item/storage/firstaid/regular - - backpack_contents = list( - /obj/item/bountytrap = 4 - ) diff --git a/code/modules/antagonists/fugitive/fugitive_ship.dm b/code/modules/antagonists/fugitive/fugitive_ship.dm deleted file mode 100644 index 26d8f42e94b9..000000000000 --- a/code/modules/antagonists/fugitive/fugitive_ship.dm +++ /dev/null @@ -1,47 +0,0 @@ -//works similar to the experiment machine (experiment.dm) except it just holds more and more prisoners - -/obj/machinery/fugitive_capture - name = "bluespace capture machine" - desc = "Much, MUCH bigger on the inside to transport prisoners safely." - icon = 'icons/obj/machines/research.dmi' - icon_state = "bluespace-prison" - density = TRUE - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF //ha ha no getting out!! - -/obj/machinery/fugitive_capture/examine(mob/user) - . = ..() - . += "Add a prisoner by dragging them into the machine." - -/obj/machinery/fugitive_capture/MouseDrop_T(mob/target, mob/user) - var/mob/living/fugitive_hunter = user - if(!isliving(fugitive_hunter)) - return - if(HAS_TRAIT(fugitive_hunter, TRAIT_UI_BLOCKED) || !Adjacent(fugitive_hunter) || !target.Adjacent(fugitive_hunter) || !ishuman(target)) - return - var/mob/living/carbon/human/fugitive = target - var/datum/antagonist/fugitive/fug_antag = fugitive.mind.has_antag_datum(/datum/antagonist/fugitive) - if(!fug_antag) - to_chat(fugitive_hunter, "This is not a wanted fugitive!") - return - if(do_after(fugitive_hunter, 50, target = fugitive)) - add_prisoner(fugitive, fug_antag) - -/obj/machinery/fugitive_capture/proc/add_prisoner(mob/living/carbon/human/fugitive, datum/antagonist/fugitive/antag) - fugitive.forceMove(src) - antag.is_captured = TRUE - to_chat(fugitive, "You are thrown into a vast void of bluespace, and as you fall further into oblivion the comparatively small entrance to reality gets smaller and smaller until you cannot see it anymore. You have failed to avoid capture.") - fugitive.ghostize(TRUE) //so they cannot suicide, round end stuff. - -/obj/structure/closet/crate/eva - name = "EVA crate" - -/obj/structure/closet/crate/eva/PopulateContents() - ..() - for(var/i in 1 to 3) - new /obj/item/clothing/suit/space/eva(src) - for(var/i in 1 to 3) - new /obj/item/clothing/head/helmet/space/eva(src) - for(var/i in 1 to 3) - new /obj/item/clothing/mask/breath(src) - for(var/i in 1 to 3) - new /obj/item/tank/internals/oxygen(src) diff --git a/code/modules/antagonists/fugitive/hunter.dm b/code/modules/antagonists/fugitive/hunter.dm deleted file mode 100644 index 090b243e5310..000000000000 --- a/code/modules/antagonists/fugitive/hunter.dm +++ /dev/null @@ -1,172 +0,0 @@ -//The hunters!! -/datum/antagonist/fugitive_hunter - name = "Fugitive Hunter" - roundend_category = "Fugitive" - silent = TRUE //greet called by the spawn - show_in_antagpanel = FALSE - prevent_roundtype_conversion = FALSE - antag_hud_type = ANTAG_HUD_FUGITIVE - antag_hud_name = "fugitive_hunter" - var/datum/team/fugitive_hunters/hunter_team - var/backstory = "error" - -/datum/antagonist/fugitive_hunter/apply_innate_effects(mob/living/mob_override) - var/mob/living/M = mob_override || owner.current - add_antag_hud(antag_hud_type, antag_hud_name, M) - -/datum/antagonist/fugitive_hunter/remove_innate_effects(mob/living/mob_override) - var/mob/living/M = mob_override || owner.current - remove_antag_hud(antag_hud_type, M) - -/datum/antagonist/fugitive_hunter/on_gain() - forge_objectives() - . = ..() - -/datum/antagonist/fugitive_hunter/proc/forge_objectives() //this isn't an actual objective because it's about round end rosters - var/datum/objective/capture = new /datum/objective - capture.owner = owner - capture.explanation_text = "Capture the fugitives in the station and put them into the bluespace capture machine on your ship." - objectives += capture - -/datum/antagonist/fugitive_hunter/greet() - switch(backstory) - if("space cop") - to_chat(owner, "Justice has arrived. I am a member of the Spacepol!") - to_chat(owner, "The criminals should be on the station, we have special huds implanted to recognize them.") - to_chat(owner, "As we have lost pretty much all power over these damned lawless megacorporations, it's a mystery if their security will cooperate with us.") - if("russian") - to_chat(src, "Ay blyat. I am a space-russian smuggler! We were mid-flight when our cargo was beamed off our ship!") - to_chat(src, "We were hailed by a man in a green uniform, promising the safe return of our goods in exchange for a favor:") - to_chat(src, "There is a local station housing fugitives that the man is after, he wants them returned; dead or alive.") - to_chat(src, "We will not be able to make ends meet without our cargo, so we must do as he says and capture them.") - - to_chat(owner, "You are not an antagonist in that you may kill whomever you please, but you can do anything to ensure the capture of the fugitives, even if that means going through the station.") - owner.announce_objectives() - -/datum/antagonist/fugitive_hunter/create_team(datum/team/fugitive_hunters/new_team) - if(!new_team) - for(var/datum/antagonist/fugitive_hunter/H in GLOB.antagonists) - if(!H.owner) - continue - if(H.hunter_team) - hunter_team = H.hunter_team - return - hunter_team = new /datum/team/fugitive_hunters - hunter_team.backstory = backstory - hunter_team.update_objectives() - return - if(!istype(new_team)) - stack_trace("Wrong team type passed to [type] initialization.") - hunter_team = new_team - -/datum/antagonist/fugitive_hunter/get_team() - return hunter_team - -/datum/team/fugitive_hunters - var/backstory = "error" - -/datum/team/fugitive_hunters/proc/update_objectives(initial = FALSE) - objectives = list() - var/datum/objective/O = new() - O.team = src - objectives += O - -/datum/team/fugitive_hunters/proc/assemble_fugitive_results() - var/list/fugitives_counted = list() - var/list/fugitives_dead = list() - var/list/fugitives_captured = list() - for(var/datum/antagonist/fugitive/A in GLOB.antagonists) - if(!A.owner) - continue - fugitives_counted += A - if(A.owner.current.stat == DEAD) - fugitives_dead += A - if(A.is_captured) - fugitives_captured += A - . = list(fugitives_counted, fugitives_dead, fugitives_captured) //okay, check out how cool this is. - -/datum/team/fugitive_hunters/proc/all_hunters_dead() - var/dead_boys = 0 - for(var/I in members) - var/datum/mind/hunter_mind = I - if(!(ishuman(hunter_mind.current) || (hunter_mind.current.stat == DEAD))) - dead_boys++ - return dead_boys >= members.len - -/datum/team/fugitive_hunters/proc/get_result() - var/list/fugitive_results = assemble_fugitive_results() - var/list/fugitives_counted = fugitive_results[1] - var/list/fugitives_dead = fugitive_results[2] - var/list/fugitives_captured = fugitive_results[3] - var/hunters_dead = all_hunters_dead() - //this gets a little confusing so follow the comments if it helps - if(!fugitives_counted.len) - return - if(fugitives_captured.len)//any captured - if(fugitives_captured.len == fugitives_counted.len)//if the hunters captured all the fugitives, there's a couple special wins - if(!fugitives_dead)//specifically all of the fugitives alive - return FUGITIVE_RESULT_BADASS_HUNTER - else if(hunters_dead)//specifically all of the hunters died (while capturing all the fugitives) - return FUGITIVE_RESULT_POSTMORTEM_HUNTER - else//no special conditional wins, so just the normal major victory - return FUGITIVE_RESULT_MAJOR_HUNTER - else if(!hunters_dead)//so some amount captured, and the hunters survived. - return FUGITIVE_RESULT_HUNTER_VICTORY - else//so some amount captured, but NO survivors. - return FUGITIVE_RESULT_MINOR_HUNTER - else//from here on out, hunters lost because they did not capture any fugitive dead or alive. there are different levels of getting beat though: - if(!fugitives_dead)//all fugitives survived - return FUGITIVE_RESULT_MAJOR_FUGITIVE - else if(fugitives_dead < fugitives_counted)//at least ANY fugitive lived - return FUGITIVE_RESULT_FUGITIVE_VICTORY - else if(!hunters_dead)//all fugitives died, but none were taken in by the hunters. minor win - return FUGITIVE_RESULT_MINOR_FUGITIVE - else//all fugitives died, all hunters died, nobody brought back. seems weird to not give fugitives a victory if they managed to kill the hunters but literally no progress to either goal should lead to a nobody wins situation - return FUGITIVE_RESULT_STALEMATE - -/datum/team/fugitive_hunters/roundend_report() //shows the number of fugitives, but not if they won in case there is no security - if(!members.len) - return - - var/list/result = list() - - result += "
...And [members.len] [backstory]s tried to hunt them down!" - - for(var/datum/mind/M in members) - result += "[printplayer(M)]" - - switch(get_result()) - if(FUGITIVE_RESULT_BADASS_HUNTER)//use defines - result += "Badass [capitalize(backstory)] Victory!" - result += "The [backstory]s managed to capture every fugitive, alive!" - if(FUGITIVE_RESULT_POSTMORTEM_HUNTER) - result += "Postmortem [capitalize(backstory)] Victory!" - result += "The [backstory]s managed to capture every fugitive, but all of them died! Spooky!" - if(FUGITIVE_RESULT_MAJOR_HUNTER) - result += "Major [capitalize(backstory)] Victory" - result += "The [backstory]s managed to capture every fugitive, dead or alive." - if(FUGITIVE_RESULT_HUNTER_VICTORY) - result += "[capitalize(backstory)] Victory" - result += "The [backstory]s managed to capture a fugitive, dead or alive." - if(FUGITIVE_RESULT_MINOR_HUNTER) - result += "Minor [capitalize(backstory)] Victory" - result += "All the [backstory]s died, but managed to capture a fugitive, dead or alive." - if(FUGITIVE_RESULT_STALEMATE) - result += "Bloody Stalemate" - result += "Everyone died, and no fugitives were recovered!" - if(FUGITIVE_RESULT_MINOR_FUGITIVE) - result += "Minor Fugitive Victory" - result += "All the fugitives died, but none were recovered!" - if(FUGITIVE_RESULT_FUGITIVE_VICTORY) - result += "Fugitive Victory" - result += "A fugitive survived, and no bodies were recovered by the [backstory]s." - if(FUGITIVE_RESULT_MAJOR_FUGITIVE) - result += "Major Fugitive Victory" - result += "All of the fugitives survived and avoided capture!" - else //get_result returned null- either bugged or no fugitives showed - result += "Prank Call!" - result += "[capitalize(backstory)]s were called, yet there were no fugitives...?" - - result += "
" - - return result.Join("
") diff --git a/code/modules/antagonists/monkey/monkey.dm b/code/modules/antagonists/monkey/monkey.dm deleted file mode 100644 index ea83998abaac..000000000000 --- a/code/modules/antagonists/monkey/monkey.dm +++ /dev/null @@ -1,213 +0,0 @@ -#define MONKEYS_ESCAPED 1 -#define MONKEYS_LIVED 2 -#define MONKEYS_DIED 3 -#define DISEASE_LIVED 4 - -/datum/antagonist/monkey - name = "Monkey" - job_rank = ROLE_MONKEY - roundend_category = "monkeys" - antagpanel_category = "Monkey" - show_to_ghosts = TRUE - var/datum/team/monkey/monkey_team - var/monkey_only = TRUE - -/datum/antagonist/monkey/can_be_owned(datum/mind/new_owner) - return ..() && (!monkey_only || ismonkey(new_owner.current)) - -/datum/antagonist/monkey/get_team() - return monkey_team - -/datum/antagonist/monkey/on_gain() - . = ..() - SSticker.mode.ape_infectees += owner - owner.special_role = "Infected Monkey" - - var/datum/disease/D = new /datum/disease/transformation/jungle_fever/monkeymode - if(!owner.current.HasDisease(D)) - owner.current.ForceContractDisease(D) - else - QDEL_NULL(D) - -/datum/antagonist/monkey/greet() - to_chat(owner, "You are a monkey now!") - to_chat(owner, "Bite humans to infect them, follow the orders of the monkey leaders, and help fellow monkeys!") - to_chat(owner, "Ensure at least one infected monkey escapes on the Emergency Shuttle!") - to_chat(owner, "As an intelligent monkey, you know how to use technology and how to ventcrawl while wearing things.") - to_chat(owner, "You can use :k to talk to fellow monkeys!") - SEND_SOUND(owner.current, sound('sound/ambience/antag/monkey.ogg')) - -/datum/antagonist/monkey/on_removal() - owner.special_role = null - SSticker.mode.ape_infectees -= owner - - var/datum/disease/transformation/jungle_fever/D = locate() in owner.current.diseases - if(D) - qdel(D) - - . = ..() - -/datum/antagonist/monkey/create_team(datum/team/monkey/new_team) - if(!new_team) - for(var/datum/antagonist/monkey/H in GLOB.antagonists) - if(!H.owner) - continue - if(H.monkey_team) - monkey_team = H.monkey_team - return - monkey_team = new /datum/team/monkey - monkey_team.update_objectives() - return - if(!istype(new_team)) - stack_trace("Wrong team type passed to [type] initialization.") - monkey_team = new_team - -/datum/antagonist/monkey/proc/forge_objectives() - objectives |= monkey_team.objectives - -/datum/antagonist/monkey/admin_remove(mob/admin) - var/mob/living/carbon/monkey/M = owner.current - if(istype(M)) - switch(alert(admin, "Humanize?", "Humanize", "Yes", "No")) - if("Yes") - if(admin == M) - admin = M.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_DEFAULTMSG) - else - M.humanize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSTUNS | TR_KEEPREAGENTS | TR_DEFAULTMSG) - if("No") - //nothing - else - return - . = ..() - -/datum/antagonist/monkey/leader - name = "Monkey Leader" - monkey_only = FALSE - -/datum/antagonist/monkey/leader/admin_add(datum/mind/new_owner,mob/admin) - var/mob/living/carbon/human/H = new_owner.current - if(istype(H)) - switch(alert(admin, "Monkeyize?", "Monkeyize", "Yes", "No")) - if("Yes") - if(admin == H) - admin = H.monkeyize() - else - H.monkeyize() - if("No") - //nothing - else - return - new_owner.add_antag_datum(src) - log_admin("[key_name(admin)] made [key_name(new_owner)] a monkey leader!") - message_admins("[key_name_admin(admin)] made [key_name_admin(new_owner)] a monkey leader!") - -/datum/antagonist/monkey/leader/on_gain() - . = ..() - var/obj/item/organ/heart/freedom/F = new - F.Insert(owner.current, drop_if_replaced = FALSE) - SSticker.mode.ape_leaders += owner - owner.special_role = "Monkey Leader" - -/datum/antagonist/monkey/leader/on_removal() - SSticker.mode.ape_leaders -= owner - var/obj/item/organ/heart/H = new - H.Insert(owner.current, drop_if_replaced = FALSE) //replace freedom heart with normal heart - - . = ..() - -/datum/antagonist/monkey/leader/greet() - to_chat(owner, "You are the Jungle Fever patient zero!!") - to_chat(owner, "You have been planted onto this station by the Animal Rights Consortium.") - to_chat(owner, "Soon the disease will transform you into an ape. Afterwards, you will be able spread the infection to others with a bite.") - to_chat(owner, "While your infection strain is undetectable by scanners, any other infectees will show up on medical equipment.") - to_chat(owner, "Your mission will be deemed a success if any of the live infected monkeys reach CentCom.") - to_chat(owner, "As an initial infectee, you will be considered a 'leader' by your fellow monkeys.") - to_chat(owner, "You can use :k to talk to fellow monkeys!") - SEND_SOUND(owner.current, sound('sound/ambience/antag/monkey.ogg')) - -/datum/objective/monkey - explanation_text = "Ensure that infected monkeys escape on the emergency shuttle!" - martyr_compatible = TRUE - var/monkeys_to_win = 1 - var/escaped_monkeys = 0 - -/datum/objective/monkey/check_completion() - var/datum/disease/D = new /datum/disease/transformation/jungle_fever() - for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list) - if (M.HasDisease(D) && (M.onCentCom() || M.onSyndieBase())) - escaped_monkeys++ - if(escaped_monkeys >= monkeys_to_win) - return TRUE - return FALSE - -/datum/team/monkey - name = "Monkeys" - -/datum/team/monkey/proc/update_objectives() - objectives = list() - var/datum/objective/monkey/O = new() - O.team = src - objectives += O - -/datum/team/monkey/proc/infected_monkeys_alive() - var/datum/disease/D = new /datum/disease/transformation/jungle_fever() - for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list) - if(M.HasDisease(D)) - return TRUE - return FALSE - -/datum/team/monkey/proc/infected_monkeys_escaped() - var/datum/disease/D = new /datum/disease/transformation/jungle_fever() - for(var/mob/living/carbon/monkey/M in GLOB.alive_mob_list) - if(M.HasDisease(D) && (M.onCentCom() || M.onSyndieBase())) - return TRUE - return FALSE - -/datum/team/monkey/proc/infected_humans_escaped() - var/datum/disease/D = new /datum/disease/transformation/jungle_fever() - for(var/mob/living/carbon/human/M in GLOB.alive_mob_list) - if(M.HasDisease(D) && (M.onCentCom() || M.onSyndieBase())) - return TRUE - return FALSE - -/datum/team/monkey/proc/infected_humans_alive() - var/datum/disease/D = new /datum/disease/transformation/jungle_fever() - for(var/mob/living/carbon/human/M in GLOB.alive_mob_list) - if(M.HasDisease(D)) - return TRUE - return FALSE - -/datum/team/monkey/proc/get_result() - if(infected_monkeys_escaped()) - return MONKEYS_ESCAPED - if(infected_monkeys_alive()) - return MONKEYS_LIVED - if(infected_humans_alive() || infected_humans_escaped()) - return DISEASE_LIVED - return MONKEYS_DIED - -/datum/team/monkey/roundend_report() - var/list/parts = list() - switch(get_result()) - if(MONKEYS_ESCAPED) - parts += "Monkey Major Victory!" - parts += "Central Command and [station_name()] were taken over by the monkeys! Ook ook!" - if(MONKEYS_LIVED) - parts += "Monkey Minor Victory!" - parts += "[station_name()] was taken over by the monkeys! Ook ook!" - if(DISEASE_LIVED) - parts += "Monkey Minor Defeat!" - parts += "All the monkeys died, but the disease lives on! The future is uncertain." - if(MONKEYS_DIED) - parts += "Monkey Major Defeat!" - parts += "All the monkeys died, and Jungle Fever was wiped out!" - var/list/leaders = get_antag_minds(/datum/antagonist/monkey/leader, TRUE) - var/list/monkeys = get_antag_minds(/datum/antagonist/monkey, TRUE) - - if(LAZYLEN(leaders)) - parts += "The monkey leaders were:" - parts += printplayerlist(SSticker.mode.ape_leaders) - if(LAZYLEN(monkeys)) - parts += "The monkeys were:" - parts += printplayerlist(SSticker.mode.ape_infectees) - return "
[parts.Join("
")]
" diff --git a/code/modules/antagonists/nukeop/equipment/borgchameleon.dm b/code/modules/antagonists/nukeop/equipment/borgchameleon.dm index c87faa0941b8..ddc895060b0c 100644 --- a/code/modules/antagonists/nukeop/equipment/borgchameleon.dm +++ b/code/modules/antagonists/nukeop/equipment/borgchameleon.dm @@ -96,7 +96,7 @@ return if(listeningTo) UnregisterSignal(listeningTo, signalCache) - RegisterSignal(user, signalCache, .proc/disrupt) + RegisterSignal(user, signalCache, PROC_REF(disrupt)) listeningTo = user /obj/item/borg_chameleon/proc/deactivate(mob/living/silicon/robot/user) diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index c3595010981f..d0019eb19cc2 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -459,7 +459,7 @@ sound_to_playing_players('sound/machines/alarm.ogg') if(SSticker && SSticker.mode) SSticker.roundend_check_paused = TRUE - addtimer(CALLBACK(src, .proc/actually_explode), 100) + addtimer(CALLBACK(src, PROC_REF(actually_explode)), 100) /obj/machinery/nuclearbomb/proc/actually_explode() if(!core) @@ -467,7 +467,7 @@ SSticker.roundend_check_paused = FALSE return - GLOB.enter_allowed = FALSE + SSlag_switch.set_measure(DISABLE_NON_OBSJOBS, TRUE) var/off_station = 0 var/turf/bomb_location = get_turf(src) @@ -494,8 +494,8 @@ SSticker.roundend_check_paused = FALSE /obj/machinery/nuclearbomb/proc/really_actually_explode(off_station) - Cinematic(get_cinematic_type(off_station),world,CALLBACK(SSticker,/datum/controller/subsystem/ticker/proc/station_explosion_detonation,src)) - INVOKE_ASYNC(GLOBAL_PROC,.proc/KillEveryoneOnZLevel, virtual_z()) + Cinematic(get_cinematic_type(off_station),world,CALLBACK(SSticker, TYPE_PROC_REF(/datum/controller/subsystem/ticker, station_explosion_detonation),src)) + INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(KillEveryoneOnZLevel), virtual_z()) /obj/machinery/nuclearbomb/proc/get_cinematic_type(off_station) if(off_station < 2) @@ -540,7 +540,7 @@ var/datum/round_event_control/E = locate(/datum/round_event_control/vent_clog/beer) in SSevents.control if(E) E.runEvent() - addtimer(CALLBACK(src, .proc/really_actually_explode), 110) + addtimer(CALLBACK(src, PROC_REF(really_actually_explode)), 110) /obj/machinery/nuclearbomb/beer/proc/disarm() detonation_timer = null diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm index ab8202527abc..9f807d9521e7 100644 --- a/code/modules/antagonists/nukeop/nukeop.dm +++ b/code/modules/antagonists/nukeop/nukeop.dm @@ -132,8 +132,8 @@ /datum/antagonist/nukeop/get_admin_commands() . = ..() - .["Send to base"] = CALLBACK(src,.proc/admin_send_to_base) - .["Tell code"] = CALLBACK(src,.proc/admin_tell_code) + .["Send to base"] = CALLBACK(src, PROC_REF(admin_send_to_base)) + .["Tell code"] = CALLBACK(src, PROC_REF(admin_tell_code)) /datum/antagonist/nukeop/proc/admin_send_to_base(mob/admin) owner.current.forceMove(pick(GLOB.nukeop_start)) @@ -190,7 +190,7 @@ else H.put_in_hands(dukinuki, TRUE) owner.announce_objectives() - addtimer(CALLBACK(src, .proc/nuketeam_name_assign), 1) + addtimer(CALLBACK(src, PROC_REF(nuketeam_name_assign)), 1) /datum/antagonist/nukeop/leader/proc/nuketeam_name_assign() diff --git a/code/modules/antagonists/pirate/pirate.dm b/code/modules/antagonists/pirate/pirate.dm deleted file mode 100644 index 91bc063869a7..000000000000 --- a/code/modules/antagonists/pirate/pirate.dm +++ /dev/null @@ -1,108 +0,0 @@ -/datum/antagonist/pirate - name = "Space Pirate" - job_rank = ROLE_TRAITOR - roundend_category = "space pirates" - antagpanel_category = "Pirate" - show_to_ghosts = TRUE - var/datum/team/pirate/crew - -/datum/antagonist/pirate/greet() - to_chat(owner, "You are a Space Pirate!") - to_chat(owner, "The station refused to pay for your protection, protect the ship, siphon the credits from the station and raid it for even more loot.") - owner.announce_objectives() - -/datum/antagonist/pirate/get_team() - return crew - -/datum/antagonist/pirate/create_team(datum/team/pirate/new_team) - if(!new_team) - for(var/datum/antagonist/pirate/P in GLOB.antagonists) - if(!P.owner) - continue - if(P.crew) - crew = P.crew - return - if(!new_team) - crew = new /datum/team/pirate - crew.forge_objectives() - return - if(!istype(new_team)) - stack_trace("Wrong team type passed to [type] initialization.") - crew = new_team - -/datum/antagonist/pirate/on_gain() - if(crew) - objectives |= crew.objectives - . = ..() - -/datum/team/pirate - name = "Pirate crew" - -/datum/team/pirate/proc/forge_objectives() - var/datum/objective/loot/getbooty = new() - getbooty.team = src - for(var/obj/machinery/computer/piratepad_control/P in GLOB.machines) - var/area/A = get_area(P) - if(istype(A,/area/shuttle/pirate)) - getbooty.cargo_hold = P - break - getbooty.update_explanation_text() - objectives += getbooty - for(var/datum/mind/M in members) - var/datum/antagonist/pirate/P = M.has_antag_datum(/datum/antagonist/pirate) - if(P) - P.objectives |= objectives - - -/datum/objective/loot - var/obj/machinery/computer/piratepad_control/cargo_hold - explanation_text = "Acquire valuable loot and store it in designated area." - var/target_value = 50000 - - -/datum/objective/loot/update_explanation_text() - if(cargo_hold) - var/area/storage_area = get_area(cargo_hold) - explanation_text = "Acquire loot and store [target_value] of credits worth in [storage_area.name] cargo hold." - -/datum/objective/loot/proc/loot_listing() - //Lists notable loot. - if(!cargo_hold || !cargo_hold.total_report) - return "Nothing" - cargo_hold.total_report.total_value = sortTim(cargo_hold.total_report.total_value, cmp = /proc/cmp_numeric_dsc, associative = TRUE) - var/count = 0 - var/list/loot_texts = list() - for(var/datum/export/E in cargo_hold.total_report.total_value) - if(++count > 5) - break - loot_texts += E.total_printout(cargo_hold.total_report,notes = FALSE) - return loot_texts.Join(", ") - -/datum/objective/loot/proc/get_loot_value() - return cargo_hold ? cargo_hold.points : 0 - -/datum/objective/loot/check_completion() - return ..() || get_loot_value() >= target_value - -/datum/team/pirate/roundend_report() - var/list/parts = list() - - parts += "Space Pirates were:" - - var/all_dead = TRUE - for(var/datum/mind/M in members) - if(considered_alive(M)) - all_dead = FALSE - parts += printplayerlist(members) - - parts += "Loot stolen: " - var/datum/objective/loot/L = locate() in objectives - parts += L.loot_listing() - parts += "Total loot value : [L.get_loot_value()]/[L.target_value] credits" - - if(L.check_completion() && !all_dead) - parts += "The pirate crew was successful!" - else - parts += "The pirate crew has failed." - - return "
[parts.Join("
")]
" diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index f19a45d6e8ed..76da8304df09 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -199,7 +199,7 @@ adjustBruteLoss(25) //hella effective inhibited = TRUE update_action_buttons_icon() - addtimer(CALLBACK(src, .proc/reset_inhibit), 30) + addtimer(CALLBACK(src, PROC_REF(reset_inhibit)), 30) /mob/living/simple_animal/revenant/proc/reset_inhibit() inhibited = FALSE @@ -297,8 +297,8 @@ to_chat(src, "You cannot use abilities from inside of a wall.") return FALSE for(var/obj/O in T) - if(O.density && !O.CanPass(src, T)) - to_chat(src, "You cannot use abilities inside of a dense object.") + if(O.density && !O.CanPass(src, get_dir(T, src))) + to_chat(src, span_revenwarning("You cannot use abilities inside of a dense object.")) return FALSE if(inhibited) to_chat(src, "Your powers have been suppressed by nulling energy!") @@ -361,7 +361,7 @@ /obj/item/ectoplasm/revenant/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/try_reform), 600) + addtimer(CALLBACK(src, PROC_REF(try_reform)), 600) /obj/item/ectoplasm/revenant/proc/scatter() qdel(src) @@ -442,7 +442,7 @@ /obj/item/ectoplasm/revenant/Destroy() if(!QDELETED(revenant)) qdel(revenant) - ..() + return ..() //objectives /datum/objective/revenant diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm index edccf0775928..b235199ed750 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -200,7 +200,7 @@ /obj/effect/proc_holder/spell/aoe_turf/revenant/overload/cast(list/targets, mob/living/simple_animal/revenant/user = usr) if(attempt_cast(user)) for(var/turf/T in targets) - INVOKE_ASYNC(src, .proc/overload, T, user) + INVOKE_ASYNC(src, PROC_REF(overload), T, user) /obj/effect/proc_holder/spell/aoe_turf/revenant/overload/proc/overload(turf/T, mob/user) for(var/obj/machinery/light/L in T) @@ -211,7 +211,7 @@ s.set_up(4, 0, L) s.start() new /obj/effect/temp_visual/revenant(get_turf(L)) - addtimer(CALLBACK(src, .proc/overload_shock, L, user), 20) + addtimer(CALLBACK(src, PROC_REF(overload_shock), L, user), 20) /obj/effect/proc_holder/spell/aoe_turf/revenant/overload/proc/overload_shock(obj/machinery/light/L, mob/user) if(!L.on) //wait, wait, don't shock me @@ -241,7 +241,7 @@ /obj/effect/proc_holder/spell/aoe_turf/revenant/defile/cast(list/targets, mob/living/simple_animal/revenant/user = usr) if(attempt_cast(user)) for(var/turf/T in targets) - INVOKE_ASYNC(src, .proc/defile, T) + INVOKE_ASYNC(src, PROC_REF(defile), T) /obj/effect/proc_holder/spell/aoe_turf/revenant/defile/proc/defile(turf/T) for(var/obj/effect/blessing/B in T) @@ -292,7 +292,7 @@ /obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction/cast(list/targets, mob/living/simple_animal/revenant/user = usr) if(attempt_cast(user)) for(var/turf/T in targets) - INVOKE_ASYNC(src, .proc/malfunction, T, user) + INVOKE_ASYNC(src, PROC_REF(malfunction), T, user) /obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction/proc/malfunction(turf/T, mob/user) for(var/mob/living/simple_animal/bot/bot in T) @@ -335,7 +335,7 @@ /obj/effect/proc_holder/spell/aoe_turf/revenant/blight/cast(list/targets, mob/living/simple_animal/revenant/user = usr) if(attempt_cast(user)) for(var/turf/T in targets) - INVOKE_ASYNC(src, .proc/blight, T, user) + INVOKE_ASYNC(src, PROC_REF(blight), T, user) /obj/effect/proc_holder/spell/aoe_turf/revenant/blight/proc/blight(turf/T, mob/user) for(var/mob/living/mob in T) diff --git a/code/modules/antagonists/revenant/revenant_blight.dm b/code/modules/antagonists/revenant/revenant_blight.dm index 04381477802a..cd1b40957d82 100644 --- a/code/modules/antagonists/revenant/revenant_blight.dm +++ b/code/modules/antagonists/revenant/revenant_blight.dm @@ -62,6 +62,6 @@ affected_mob.dna.species.handle_hair(affected_mob,"#1d2953") affected_mob.visible_message("[affected_mob] looks terrifyingly gaunt...", "You suddenly feel like your skin is wrong...") affected_mob.add_atom_colour("#1d2953", TEMPORARY_COLOUR_PRIORITY) - addtimer(CALLBACK(src, .proc/cure), 100) + addtimer(CALLBACK(src, PROC_REF(cure)), 100) else return diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm deleted file mode 100644 index 8a9200fb08d0..000000000000 --- a/code/modules/antagonists/revolution/revolution.dm +++ /dev/null @@ -1,539 +0,0 @@ -#define DECONVERTER_STATION_WIN "gamemode_station_win" -#define DECONVERTER_REVS_WIN "gamemode_revs_win" -//How often to check for promotion possibility -#define HEAD_UPDATE_PERIOD 300 - -/datum/antagonist/rev - name = "Revolutionary" - roundend_category = "revolutionaries" // if by some miracle revolutionaries without revolution happen - antagpanel_category = "Revolution" - job_rank = ROLE_REV - antag_moodlet = /datum/mood_event/revolution - antag_hud_type = ANTAG_HUD_REV - antag_hud_name = "rev" - var/datum/team/revolution/rev_team - - /// What message should the player receive when they are being demoted, and the revolution has won? - var/victory_message = "The revolution has overpowered the command staff! Viva la revolution! Execute any head of staff and security should you find them alive." - -/datum/antagonist/rev/can_be_owned(datum/mind/new_owner) - . = ..() - if(.) - if(new_owner.assigned_role in GLOB.command_positions) - return FALSE - if(new_owner.unconvertable) - return FALSE - if(new_owner.current && HAS_TRAIT(new_owner.current, TRAIT_MINDSHIELD)) - return FALSE - -/datum/antagonist/rev/apply_innate_effects(mob/living/mob_override) - var/mob/living/M = mob_override || owner.current - add_antag_hud(antag_hud_type, antag_hud_name, M) - handle_clown_mutation(M, mob_override ? null : "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") - -/datum/antagonist/rev/remove_innate_effects(mob/living/mob_override) - var/mob/living/M = mob_override || owner.current - remove_antag_hud(antag_hud_type, M) - handle_clown_mutation(M, removing = FALSE) - -/datum/antagonist/rev/proc/equip_rev() - return - -/datum/antagonist/rev/on_gain() - . = ..() - create_objectives() - equip_rev() - owner.current.log_message("has been converted to the revolution!", LOG_ATTACK, color="red") - -/datum/antagonist/rev/on_removal() - remove_objectives() - . = ..() - -/datum/antagonist/rev/greet() - to_chat(owner, "You are now a revolutionary! 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. Help them kill the heads to win the revolution!") - owner.announce_objectives() - -/datum/antagonist/rev/create_team(datum/team/revolution/new_team) - if(!new_team) - //For now only one revolution at a time - for(var/datum/antagonist/rev/head/H in GLOB.antagonists) - if(!H.owner) - continue - if(H.rev_team) - rev_team = H.rev_team - return - rev_team = new /datum/team/revolution - rev_team.update_objectives() - rev_team.update_heads() - return - if(!istype(new_team)) - stack_trace("Wrong team type passed to [type] initialization.") - rev_team = new_team - -/datum/antagonist/rev/get_team() - return rev_team - -/datum/antagonist/rev/proc/create_objectives() - objectives |= rev_team.objectives - -/datum/antagonist/rev/proc/remove_objectives() - objectives -= rev_team.objectives - -//Bump up to head_rev -/datum/antagonist/rev/proc/promote() - var/old_team = rev_team - var/datum/mind/old_owner = owner - silent = TRUE - owner.remove_antag_datum(/datum/antagonist/rev) - var/datum/antagonist/rev/head/new_revhead = new() - new_revhead.silent = TRUE - old_owner.add_antag_datum(new_revhead,old_team) - new_revhead.silent = FALSE - to_chat(old_owner, "You have proved your devotion to revolution! You are a head revolutionary now!") - -/datum/antagonist/rev/get_admin_commands() - . = ..() - .["Promote"] = CALLBACK(src,.proc/admin_promote) - -/datum/antagonist/rev/proc/admin_promote(mob/admin) - var/datum/mind/O = owner - promote() - message_admins("[key_name_admin(admin)] has head-rev'ed [O].") - log_admin("[key_name(admin)] has head-rev'ed [O].") - -/datum/antagonist/rev/head/admin_add(datum/mind/new_owner,mob/admin) - give_flash = TRUE - give_hud = TRUE - remove_clumsy = TRUE - new_owner.add_antag_datum(src) - message_admins("[key_name_admin(admin)] has head-rev'ed [key_name_admin(new_owner)].") - log_admin("[key_name(admin)] has head-rev'ed [key_name(new_owner)].") - to_chat(new_owner.current, "You are a member of the revolutionaries' leadership now!") - -/datum/antagonist/rev/head/get_admin_commands() - . = ..() - . -= "Promote" - .["Take flash"] = CALLBACK(src,.proc/admin_take_flash) - .["Give flash"] = CALLBACK(src,.proc/admin_give_flash) - .["Repair flash"] = CALLBACK(src,.proc/admin_repair_flash) - .["Demote"] = CALLBACK(src,.proc/admin_demote) - -/datum/antagonist/rev/head/proc/admin_take_flash(mob/admin) - var/list/L = owner.current.get_contents() - var/obj/item/assembly/flash/handheld/flash = locate() in L - if (!flash) - to_chat(admin, "Deleting flash failed!") - return - qdel(flash) - -/datum/antagonist/rev/head/proc/admin_give_flash(mob/admin) - //This is probably overkill but making these impact state annoys me - var/old_give_flash = give_flash - var/old_give_hud = give_hud - var/old_remove_clumsy = remove_clumsy - give_flash = TRUE - give_hud = FALSE - remove_clumsy = FALSE - equip_rev() - give_flash = old_give_flash - give_hud = old_give_hud - remove_clumsy = old_remove_clumsy - -/datum/antagonist/rev/head/proc/admin_repair_flash(mob/admin) - var/list/L = owner.current.get_contents() - var/obj/item/assembly/flash/handheld/flash = locate() in L - if (!flash) - to_chat(admin, "Repairing flash failed!") - else - flash.burnt_out = FALSE - flash.update_appearance() - -/datum/antagonist/rev/head/proc/admin_demote(datum/mind/target,mob/user) - message_admins("[key_name_admin(user)] has demoted [key_name_admin(owner)] from head revolutionary.") - log_admin("[key_name(user)] has demoted [key_name(owner)] from head revolutionary.") - demote() - -/datum/antagonist/rev/head - name = "Head Revolutionary" - antag_hud_name = "rev_head" - var/remove_clumsy = FALSE - var/give_flash = FALSE - var/give_hud = TRUE - -/datum/antagonist/rev/head/on_removal() - if(give_hud) - var/mob/living/carbon/C = owner.current - var/obj/item/organ/cyberimp/eyes/hud/security/syndicate/S = C.getorganslot(ORGAN_SLOT_HUD) - if(S) - S.Remove(C) - return ..() - -/datum/antagonist/rev/head/antag_listing_name() - return ..() + "(Leader)" - -/datum/antagonist/rev/proc/can_be_converted(mob/living/candidate) - if(!candidate.mind) - return FALSE - if(!can_be_owned(candidate.mind)) - return FALSE - var/mob/living/carbon/C = candidate //Check to see if the potential rev is implanted - if(!istype(C)) //Can't convert simple animals - return FALSE - return TRUE - -/datum/antagonist/rev/proc/add_revolutionary(datum/mind/rev_mind,stun = TRUE) - if(!can_be_converted(rev_mind.current)) - return FALSE - if(stun) - if(iscarbon(rev_mind.current)) - var/mob/living/carbon/carbon_mob = rev_mind.current - carbon_mob.silent = max(carbon_mob.silent, 5) - carbon_mob.flash_act(1, 1) - rev_mind.current.Stun(100) - rev_mind.add_antag_datum(/datum/antagonist/rev,rev_team) - rev_mind.special_role = ROLE_REV - return TRUE - -/datum/antagonist/rev/head/proc/demote() - var/datum/mind/old_owner = owner - var/old_team = rev_team - silent = TRUE - owner.remove_antag_datum(/datum/antagonist/rev/head) - var/datum/antagonist/rev/new_rev = new /datum/antagonist/rev() - new_rev.silent = TRUE - old_owner.add_antag_datum(new_rev,old_team) - new_rev.silent = FALSE - to_chat(old_owner, "Revolution has been disappointed of your leader traits! You are a regular revolutionary now!") - -/// Checks if the revolution succeeded, and lets them know. -/datum/antagonist/rev/proc/announce_victorious() - . = rev_team.check_rev_victory() - - if (!.) - return - - to_chat(owner, "[victory_message]") - var/policy = get_policy(ROLE_REV_SUCCESSFUL) - if (policy) - to_chat(owner, policy) - -/datum/antagonist/rev/farewell() - if (announce_victorious()) - return - - if(ishuman(owner.current) || ismonkey(owner.current)) - owner.current.visible_message("[owner.current] looks like [owner.current.p_theyve()] just remembered [owner.current.p_their()] real allegiance!", null, null, null, owner.current) - to_chat(owner, "You are no longer a brainwashed revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you....") - else if(issilicon(owner.current)) - owner.current.visible_message("The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.", null, null, null, owner.current) - to_chat(owner, "The frame's firmware detects and deletes your neural reprogramming! You remember nothing but the name of the one who flashed you.") - -/datum/antagonist/rev/head/farewell() - if (announce_victorious()) - return - - if((ishuman(owner.current) || ismonkey(owner.current))) - if(owner.current.stat != DEAD) - owner.current.visible_message("[owner.current] looks like [owner.current.p_theyve()] just remembered [owner.current.p_their()] real allegiance!", null, null, null, owner.current) - to_chat(owner, "You have given up your cause of overthrowing the command staff. You are no longer a Head Revolutionary.") - else - to_chat(owner, "The sweet release of death. You are no longer a Head Revolutionary.") - else if(issilicon(owner.current)) - owner.current.visible_message("The frame beeps contentedly, suppressing the disloyal personality traits from the MMI before initalizing it.", null, null, null, owner.current) - to_chat(owner, "The frame's firmware detects and suppresses your unwanted personality traits! You feel more content with the leadership around these parts.") - -//blunt trauma deconversions call this through species.dm spec_attacked_by() -/datum/antagonist/rev/proc/remove_revolutionary(borged, deconverter) - log_attack("[key_name(owner.current)] has been deconverted from the revolution by [ismob(deconverter) ? key_name(deconverter) : deconverter]!") - if(borged) - message_admins("[ADMIN_LOOKUPFLW(owner.current)] has been borged while being a [name]") - owner.special_role = null - if(iscarbon(owner.current) && deconverter != DECONVERTER_REVS_WIN) - var/mob/living/carbon/C = owner.current - C.Unconscious(100) - owner.remove_antag_datum(type) - -/datum/antagonist/rev/head/remove_revolutionary(borged,deconverter) - if(borged || deconverter == DECONVERTER_STATION_WIN || deconverter == DECONVERTER_REVS_WIN) - . = ..() - -/datum/antagonist/rev/head/equip_rev() - var/mob/living/carbon/C = owner.current - if(!ishuman(C) && !ismonkey(C)) - return - - if(give_flash) - var/obj/item/assembly/flash/handheld/T = new(C) - var/list/slots = list ( - "backpack" = ITEM_SLOT_BACKPACK, - "left pocket" = ITEM_SLOT_LPOCKET, - "right pocket" = ITEM_SLOT_RPOCKET - ) - var/where = C.equip_in_one_of_slots(T, slots) - if (!where) - to_chat(C, "The Syndicate were unfortunately unable to get you a flash.") - else - to_chat(C, "The flash in your [where] will help you to persuade the crew to join your cause.") - - if(give_hud) - var/obj/item/organ/cyberimp/eyes/hud/security/syndicate/S = new() - S.Insert(C) - to_chat(C, "Your eyes have been implanted with a cybernetic security HUD which will help you keep track of who is mindshield-implanted, and therefore unable to be recruited.") - -/// "Enemy of the Revolutionary", given to heads and security when the revolution wins -/datum/antagonist/revolution_enemy - name = "Enemy of the Revolution" - show_in_antagpanel = FALSE - -/datum/antagonist/revolution_enemy/on_gain() - owner.special_role = "revolution enemy" - - var/datum/objective/survive/survive = new /datum/objective/survive - survive.owner = owner - survive.explanation_text = "The station has been overrun by revolutionaries, stay alive until the end." - objectives += survive - - return ..() - -/datum/team/revolution - name = "Revolution" - var/max_headrevs = 3 - var/list/ex_headrevs = list() // Dynamic removes revs on loss, used to keep a list for the roundend report. - var/list/ex_revs = list() - -/datum/team/revolution/proc/update_objectives(initial = FALSE) - var/untracked_heads = SSjob.get_all_heads() - for(var/datum/objective/mutiny/O in objectives) - untracked_heads -= O.target - for(var/datum/mind/M in untracked_heads) - var/datum/objective/mutiny/new_target = new() - new_target.team = src - new_target.target = M - new_target.update_explanation_text() - objectives += new_target - for(var/datum/mind/M in members) - var/datum/antagonist/rev/R = M.has_antag_datum(/datum/antagonist/rev) - R.objectives |= objectives - - addtimer(CALLBACK(src,.proc/update_objectives),HEAD_UPDATE_PERIOD,TIMER_UNIQUE) - -/datum/team/revolution/proc/head_revolutionaries() - . = list() - for(var/datum/mind/M in members) - if(M.has_antag_datum(/datum/antagonist/rev/head)) - . += M - -/datum/team/revolution/proc/update_heads() - if(SSticker.HasRoundStarted()) - var/list/datum/mind/head_revolutionaries = head_revolutionaries() - var/list/datum/mind/heads = SSjob.get_all_heads() - var/list/sec = SSjob.get_all_sec() - - if(head_revolutionaries.len < max_headrevs && head_revolutionaries.len < round(heads.len - ((8 - sec.len) / 3))) - var/list/datum/mind/non_heads = members - head_revolutionaries - var/list/datum/mind/promotable = list() - var/list/datum/mind/nonhuman_promotable = list() - for(var/datum/mind/khrushchev in non_heads) - if(khrushchev.current && !khrushchev.current.incapacitated() && !HAS_TRAIT(khrushchev.current, TRAIT_RESTRAINED) && khrushchev.current.client) - if(ROLE_REV in khrushchev.current.client.prefs.be_special) - if(ishuman(khrushchev.current)) - promotable += khrushchev - else - nonhuman_promotable += khrushchev - if(!promotable.len && nonhuman_promotable.len) //if only nonhuman revolutionaries remain, promote one of them to the leadership. - promotable = nonhuman_promotable - if(promotable.len) - var/datum/mind/new_leader = pick(promotable) - var/datum/antagonist/rev/rev = new_leader.has_antag_datum(/datum/antagonist/rev) - rev.promote() - - addtimer(CALLBACK(src,.proc/update_heads),HEAD_UPDATE_PERIOD,TIMER_UNIQUE) - -/datum/team/revolution/proc/save_members() - ex_headrevs = get_antag_minds(/datum/antagonist/rev/head, TRUE) - ex_revs = get_antag_minds(/datum/antagonist/rev, TRUE) - -/// Checks if revs have won -/datum/team/revolution/proc/check_rev_victory() - for(var/datum/objective/mutiny/objective in objectives) - if(!(objective.check_completion())) - return FALSE - return TRUE - -/// Checks if heads have won -/datum/team/revolution/proc/check_heads_victory() - for(var/datum/mind/rev_mind in head_revolutionaries()) - if(!considered_afk(rev_mind) && considered_alive(rev_mind)) - if(ishuman(rev_mind.current)) - return FALSE - return TRUE - -/// Updates the state of the world depending on if revs won or loss. -/// Returns who won, at which case this method should no longer be called. -/// If revs_win_injection_amount is passed, then that amount of threat will be added if the revs win. -/datum/team/revolution/proc/process_victory(revs_win_injection_amount) - if (check_rev_victory()) - . = REVOLUTION_VICTORY - else if (check_heads_victory()) - . = STATION_VICTORY - else - return - - save_members() - - // Remove everyone as a revolutionary - for (var/_rev_mind in members) - var/datum/mind/rev_mind = _rev_mind - if (rev_mind.has_antag_datum(/datum/antagonist/rev)) - var/datum/antagonist/rev/rev_antag = rev_mind.has_antag_datum(/datum/antagonist/rev) - rev_antag.remove_revolutionary(FALSE, . == STATION_VICTORY ? DECONVERTER_STATION_WIN : DECONVERTER_REVS_WIN) - LAZYADD(rev_mind.special_statuses, "Former [(rev_mind in ex_headrevs) ? "head revolutionary" : "revolutionary"]") - - if (. == STATION_VICTORY) - // If the revolution was quelled, make rev heads unable to be revived through pods - for (var/_rev_head_mind in ex_revs) - var/datum/mind/rev_head_mind = _rev_head_mind - var/mob/living/carbon/rev_head_body = rev_head_mind.current - if(istype(rev_head_body) && rev_head_body.stat == DEAD) - rev_head_body.makeUncloneable() - - priority_announce("It appears the mutiny has been quelled. Please return yourself and your incapacitated colleagues to work. \ - We have remotely blacklisted the head revolutionaries in your medical records to prevent accidental revival.", null, 'sound/ai/attention.ogg', null, "Central Command Loyalty Monitoring Division") - else - for (var/_player in GLOB.player_list) - var/mob/player = _player - var/datum/mind/mind = player.mind - - if (isnull(mind)) - continue - - if (!(mind.assigned_role in GLOB.command_positions + GLOB.security_positions)) - continue - - var/mob/living/carbon/target_body = mind.current - - mind.add_antag_datum(/datum/antagonist/revolution_enemy) - - if (!istype(target_body)) - continue - - if (target_body.stat == DEAD) - target_body.makeUncloneable() - else - mind.announce_objectives() - - if (revs_win_injection_amount) - var/datum/game_mode/dynamic/dynamic = SSticker.mode - dynamic.create_threat(revs_win_injection_amount) - dynamic.threat_log += "[worldtime2text()]: Revolution victory. Added [revs_win_injection_amount] threat." - - priority_announce("A recent assessment of your station has marked your station as a severe risk area for high ranking Nanotrasen officials. \ - For the safety of our staff, we have blacklisted your station for new employment of security and command. \ - [pick(world.file2list("strings/anti_union_propaganda.txt"))]", null, 'sound/ai/attention.ogg', null, "Central Command Loyalty Monitoring Division") - -/// Mutates the ticker to report that the revs have won -/datum/team/revolution/proc/round_result(finished) - if (finished == REVOLUTION_VICTORY) - SSticker.mode_result = "win - heads killed" - SSticker.news_report = REVS_WIN - else if (finished == STATION_VICTORY) - SSticker.mode_result = "loss - rev heads killed" - SSticker.news_report = REVS_LOSE - -/datum/team/revolution/roundend_report() - if(!members.len && !ex_headrevs.len) - return - - var/list/result = list() - - result += "
" - - var/list/targets = list() - var/list/datum/mind/headrevs - var/list/datum/mind/revs - if(ex_headrevs.len) - headrevs = ex_headrevs - else - headrevs = get_antag_minds(/datum/antagonist/rev/head, TRUE) - - if(ex_revs.len) - revs = ex_revs - else - revs = get_antag_minds(/datum/antagonist/rev, TRUE) - - var/num_revs = 0 - var/num_survivors = 0 - for(var/mob/living/carbon/survivor in GLOB.alive_mob_list) - if(survivor.ckey) - num_survivors += 1 - if ((survivor.mind in revs) || (survivor.mind in headrevs)) - num_revs += 1 - - if(num_survivors) - result += "Command's Approval Rating: [100 - round((num_revs/num_survivors)*100, 0.1)]%
" - - if(headrevs.len) - var/list/headrev_part = list() - headrev_part += "The head revolutionaries were:" - headrev_part += printplayerlist(headrevs) - result += headrev_part.Join("
") - - if(revs.len) - var/list/rev_part = list() - rev_part += "The revolutionaries were:" - rev_part += printplayerlist(revs) - result += rev_part.Join("
") - - var/list/heads = SSjob.get_all_heads() - if(heads.len) - var/head_text = "The heads of staff were:" - head_text += "
    " - for(var/datum/mind/head in heads) - var/target = (head in targets) - head_text += "
  • " - if(target) - head_text += "Target" - head_text += "[printplayer(head, 1)]
  • " - head_text += "

" - result += head_text - - result += "
" - - return result.Join() - -/datum/team/revolution/antag_listing_entry() - var/common_part = "" - var/list/parts = list() - parts += "[antag_listing_name()]
" - parts += "" - - var/list/heads = get_team_antags(/datum/antagonist/rev/head,TRUE) - - for(var/datum/antagonist/A in heads | get_team_antags()) - parts += A.antag_listing_entry() - - parts += "
" - parts += antag_listing_footer() - common_part = parts.Join() - - var/heads_report = "Heads of Staff
" - heads_report += "" - for(var/datum/mind/N in SSjob.get_living_heads()) - var/mob/M = N.current - if(M) - heads_report += "" - heads_report += "" - heads_report += "" - var/turf/mob_loc = get_turf(M) - heads_report += "" - else - heads_report += "" - heads_report += "" - heads_report += "
[M.real_name][M.client ? "" : " (No Client)"][M.stat == DEAD ? " (DEAD)" : ""]PMFLW[mob_loc.loc]
[N.name]([N.key])Head body destroyed!PM
" - return common_part + heads_report - -/datum/team/revolution/is_gamemode_hero() - return SSticker.mode.name == "revolution" - -#undef DECONVERTER_STATION_WIN -#undef DECONVERTER_REVS_WIN diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index 3751279f095e..595fbb27f61a 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -49,7 +49,7 @@ del_on_death = 1 deathmessage = "screams in anger as it collapses into a puddle of viscera!" -/mob/living/simple_animal/slaughter/Initialize() +/mob/living/simple_animal/slaughter/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_BLOODCRAWL_EAT, "innate") var/obj/effect/proc_holder/spell/bloodcrawl/bloodspell = new @@ -68,7 +68,7 @@ /mob/living/simple_animal/slaughter/phasein() . = ..() add_movespeed_modifier(/datum/movespeed_modifier/slaughter) - addtimer(CALLBACK(src, .proc/remove_movespeed_modifier, /datum/movespeed_modifier/slaughter), 6 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) + addtimer(CALLBACK(src, PROC_REF(remove_movespeed_modifier), /datum/movespeed_modifier/slaughter), 6 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE) //The loot from killing a slaughter demon - can be consumed to allow the user to blood crawl /obj/item/organ/heart/demon diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm index 48b9ecfad259..6fec09373797 100644 --- a/code/modules/antagonists/swarmer/swarmer.dm +++ b/code/modules/antagonists/swarmer/swarmer.dm @@ -569,7 +569,7 @@ /obj/structure/swarmer/trap/Initialize(mapload) . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index a3e4230373d8..894023d9c194 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -219,7 +219,7 @@ var/mob/living/silicon/ai/A = M if(istype(A) && traitor_kind == TRAITOR_AI) A.hack_software = TRUE - RegisterSignal(M, COMSIG_MOVABLE_HEAR, .proc/handle_hearing) + RegisterSignal(M, COMSIG_MOVABLE_HEAR, PROC_REF(handle_hearing)) /datum/antagonist/traitor/remove_innate_effects(mob/living/mob_override) . = ..() diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm index 0a2d4268ba9f..339cd462d5a8 100644 --- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm +++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -245,6 +245,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/AI_Module)) owner_AI.doomsday_device.start() for(var/obj/item/pinpointer/nuke/P in GLOB.pinpointer_list) P.switch_mode_to(TRACK_MALF_AI) //Pinpointers start tracking the AI wherever it goes + P.alert = TRUE //WEEWOO qdel(src) /obj/machinery/doomsday_device @@ -256,21 +257,31 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/AI_Module)) verb_exclaim = "blares" var/timing = FALSE var/obj/effect/countdown/doomsday/countdown + var/mob/living/silicon/ai/owner var/detonation_timer var/next_announce /obj/machinery/doomsday_device/Initialize() . = ..() + if(!isAI(loc)) + stack_trace("Doomsday created outside an AI somehow, shit's fucking broke. Anyway, we're just gonna qdel now. Go make a github issue report.") + return INITIALIZE_HINT_QDEL + owner = loc countdown = new(src) /obj/machinery/doomsday_device/Destroy() QDEL_NULL(countdown) STOP_PROCESSING(SSfastprocess, src) SSmapping.remove_nuke_threat(src) - for(var/A in GLOB.ai_list) - var/mob/living/silicon/ai/AI = A - if(AI.doomsday_device == src) - AI.doomsday_device = null + set_security_level("red") + for(var/mob/living/silicon/robot/borg in owner?.connected_robots) + borg.toggle_headlamp(FALSE, TRUE) //forces borg lamp to update + owner?.doomsday_device = null + owner?.nuking = null + owner = null + for(var/obj/item/pinpointer/nuke/P in GLOB.pinpointer_list) + P.switch_mode_to(TRACK_NUKE_DISK) //Party's over, back to work, everyone + P.alert = FALSE return ..() /obj/machinery/doomsday_device/proc/start() @@ -327,8 +338,8 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/AI_Module)) /datum/action/innate/ai/lockdown/Activate() for(var/obj/machinery/door/D in GLOB.airlocks) - INVOKE_ASYNC(D, /obj/machinery/door.proc/hostile_lockdown, owner) - addtimer(CALLBACK(D, /obj/machinery/door.proc/disable_lockdown), 900) + INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door, hostile_lockdown), owner) + addtimer(CALLBACK(D, TYPE_PROC_REF(/obj/machinery/door, disable_lockdown)), 900) var/obj/machinery/computer/communications/C = locate() in GLOB.machines if(C) @@ -336,7 +347,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/AI_Module)) minor_announce("Hostile runtime detected in door controllers. Isolation lockdown protocols are now in effect. Please remain calm.","Network Alert:", TRUE) to_chat(owner, "Lockdown initiated. Network reset in 90 seconds.") - addtimer(CALLBACK(GLOBAL_PROC, .proc/minor_announce, + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(minor_announce), "Automatic system reboot complete. Have a secure day.", "Network reset:"), 900) @@ -389,7 +400,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/AI_Module)) attached_action.desc = "[initial(attached_action.desc)] It has [attached_action.uses] use\s remaining." attached_action.UpdateButtonIcon() target.audible_message("You hear a loud electrical buzzing sound coming from [target]!") - addtimer(CALLBACK(attached_action, /datum/action/innate/ai/ranged/override_machine.proc/animate_machine, target), 50) //kabeep! + addtimer(CALLBACK(attached_action, TYPE_PROC_REF(/datum/action/innate/ai/ranged/override_machine, animate_machine), target), 50) //kabeep! remove_ranged_ability("Sending override signal...") return TRUE @@ -472,7 +483,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/AI_Module)) attached_action.desc = "[initial(attached_action.desc)] It has [attached_action.uses] use\s remaining." attached_action.UpdateButtonIcon() target.audible_message("You hear a loud electrical buzzing sound coming from [target]!") - addtimer(CALLBACK(attached_action, /datum/action/innate/ai/ranged/overload_machine.proc/detonate_machine, target), 50) //kaboom! + addtimer(CALLBACK(attached_action, TYPE_PROC_REF(/datum/action/innate/ai/ranged/overload_machine, detonate_machine), target), 50) //kaboom! remove_ranged_ability("Overcharging machine...") return TRUE @@ -579,7 +590,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/AI_Module)) I.loc = T client.images += I I.icon_state = "[success ? "green" : "red"]Overlay" //greenOverlay and redOverlay for success and failure respectively - addtimer(CALLBACK(src, .proc/remove_transformer_image, client, I, T), 30) + addtimer(CALLBACK(src, PROC_REF(remove_transformer_image), client, I, T), 30) if(!success) to_chat(src, "[alert_msg]") return success @@ -649,7 +660,7 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/AI_Module)) /datum/action/innate/ai/emergency_lights/Activate() for(var/obj/machinery/light/L in GLOB.machines) L.no_emergency = TRUE - INVOKE_ASYNC(L, /obj/machinery/light/.proc/update, FALSE) + INVOKE_ASYNC(L, TYPE_PROC_REF(/obj/machinery/light, update), FALSE) CHECK_TICK to_chat(owner, "Emergency light connections severed.") owner.playsound_local(owner, 'sound/effects/light_flicker.ogg', 50, FALSE) diff --git a/code/modules/antagonists/traitor/equipment/contractor.dm b/code/modules/antagonists/traitor/equipment/contractor.dm index 121430252ef0..b1d68a719070 100644 --- a/code/modules/antagonists/traitor/equipment/contractor.dm +++ b/code/modules/antagonists/traitor/equipment/contractor.dm @@ -229,7 +229,7 @@ to_chat(partner_mind.current, "\n[user.real_name] is your superior. Follow any, and all orders given by them. You're here to support their mission only.") to_chat(partner_mind.current, "Should they perish, or be otherwise unavailable, you're to assist other active agents in this mission area to the best of your ability.\n\n") - new /obj/effect/DPtarget(free_location, arrival_pod) + new /obj/effect/pod_landingzone(free_location, arrival_pod) /datum/contractor_item/blackout name = "Blackout" diff --git a/code/modules/antagonists/traitor/syndicate_contract.dm b/code/modules/antagonists/traitor/syndicate_contract.dm index 977cab2987dc..d012949ba054 100644 --- a/code/modules/antagonists/traitor/syndicate_contract.dm +++ b/code/modules/antagonists/traitor/syndicate_contract.dm @@ -61,14 +61,14 @@ /datum/syndicate_contract/proc/launch_extraction_pod(turf/empty_pod_turf) var/obj/structure/closet/supplypod/extractionpod/empty_pod = new() - RegisterSignal(empty_pod, COMSIG_ATOM_ENTERED, .proc/enter_check) + RegisterSignal(empty_pod, COMSIG_ATOM_ENTERED, PROC_REF(enter_check)) empty_pod.stay_after_drop = TRUE empty_pod.reversing = TRUE empty_pod.explosionSize = list(0,0,0,1) empty_pod.leavingSound = 'sound/effects/podwoosh.ogg' - new /obj/effect/DPtarget(empty_pod_turf, empty_pod) + new /obj/effect/pod_landingzone(empty_pod_turf, empty_pod) /datum/syndicate_contract/proc/enter_check(datum/source, sent_mob) if (istype(source, /obj/structure/closet/supplypod/extractionpod)) @@ -111,7 +111,7 @@ var/obj/structure/closet/supplypod/extractionpod/pod = source // Handle the pod returning - pod.send_up(pod) + pod.startExitSequence(pod) if (ishuman(M)) var/mob/living/carbon/human/target = M @@ -156,7 +156,7 @@ /datum/syndicate_contract/proc/handleVictimExperience(mob/living/M) // Ship 'em back - dead or alive, 4 minutes wait. // Even if they weren't the target, we're still treating them the same. - addtimer(CALLBACK(src, .proc/returnVictim, M), (60 * 10) * 4) + addtimer(CALLBACK(src, PROC_REF(returnVictim), M), (60 * 10) * 4) if (M.stat != DEAD) // Heal them up - gets them out of crit/soft crit. If omnizine is removed in the future, this needs to be replaced with a @@ -226,7 +226,7 @@ M.Dizzy(35) M.confused += 20 - new /obj/effect/DPtarget(possible_drop_loc[pod_rand_loc], return_pod) + new /obj/effect/pod_landingzone(possible_drop_loc[pod_rand_loc], return_pod) else to_chat(M, "A million voices echo in your head... \"Seems where you got sent here from won't \ be able to handle our pod... You will die here instead.\"") diff --git a/code/modules/antagonists/wishgranter/wishgranter.dm b/code/modules/antagonists/wishgranter/wishgranter.dm deleted file mode 100644 index 67a6153f7bb2..000000000000 --- a/code/modules/antagonists/wishgranter/wishgranter.dm +++ /dev/null @@ -1,29 +0,0 @@ -/datum/antagonist/wishgranter - name = "Wishgranter Avatar" - show_in_antagpanel = FALSE - show_name_in_check_antagonists = TRUE - hijack_speed = 2 //You literally are here to do nothing else. Might as well be fast about it. - -/datum/antagonist/wishgranter/proc/forge_objectives() - var/datum/objective/hijack/hijack = new - hijack.owner = owner - objectives += hijack - -/datum/antagonist/wishgranter/on_gain() - owner.special_role = "Avatar of the Wish Granter" - forge_objectives() - . = ..() - give_powers() - -/datum/antagonist/wishgranter/greet() - to_chat(owner, "Your inhibitions are swept away, the bonds of loyalty broken, you are free to murder as you please!") - owner.announce_objectives() - -/datum/antagonist/wishgranter/proc/give_powers() - var/mob/living/carbon/human/H = owner.current - if(!istype(H)) - return - H.dna.add_mutation(HULK) - H.dna.add_mutation(XRAY) - H.dna.add_mutation(SPACEMUT) - H.dna.add_mutation(TK) diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 01993ee5539e..a95ef0d1b579 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -129,7 +129,7 @@ insaneinthemembrane.sanity = 0 for(var/lore in typesof(/datum/brain_trauma/severe)) C.gain_trauma(lore) - addtimer(CALLBACK(src, /obj/singularity/wizard.proc/deranged, C), 100) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/singularity/wizard, deranged), C), 100) /obj/singularity/wizard/proc/deranged(mob/living/carbon/C) if(!C || C.stat == DEAD) @@ -340,7 +340,7 @@ if(BODY_ZONE_PRECISE_EYES) user.set_machine(src) user.reset_perspective(target) - addtimer(CALLBACK(src, .proc/reset, user), 10 SECONDS) + addtimer(CALLBACK(src, PROC_REF(reset), user), 10 SECONDS) if(BODY_ZONE_R_LEG,BODY_ZONE_L_LEG) to_chat(user, "You move the doll's legs around.") var/turf/T = get_step(target,pick(GLOB.cardinals)) diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index 8a13c5c612ed..c426b953f725 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -224,7 +224,7 @@ "Wraith" = image(icon = 'icons/mob/cult.dmi', icon_state = "wraith"), "Artificer" = image(icon = 'icons/mob/cult.dmi', icon_state = "artificer") ) - var/construct_class = show_radial_menu(user, src, constructs, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE) + var/construct_class = show_radial_menu(user, src, constructs, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) if(!T || !T.loc) return switch(construct_class) diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm index e05e4e83d1c3..14cf56d51ae0 100644 --- a/code/modules/antagonists/wizard/wizard.dm +++ b/code/modules/antagonists/wizard/wizard.dm @@ -56,9 +56,6 @@ /datum/antagonist/wizard/proc/send_to_lair() if(!owner || !owner.current) return - if(!GLOB.wizardstart.len) - SSjob.SendToLateJoin(owner.current) - to_chat(owner, "HOT INSERTION, GO GO GO") owner.current.forceMove(pick(GLOB.wizardstart)) /datum/antagonist/wizard/proc/create_objectives() @@ -165,7 +162,7 @@ /datum/antagonist/wizard/get_admin_commands() . = ..() - .["Send to Lair"] = CALLBACK(src,.proc/admin_send_to_lair) + .["Send to Lair"] = CALLBACK(src, PROC_REF(admin_send_to_lair)) /datum/antagonist/wizard/proc/admin_send_to_lair(mob/admin) owner.current.forceMove(pick(GLOB.wizardstart)) diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 4917e1587fcc..2d5fd3efc9fc 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -35,13 +35,17 @@ /obj/item/assembly/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) /obj/item/assembly/proc/on_entered(datum/source, atom/movable/AM) SIGNAL_HANDLER +/obj/item/assembly/Destroy() + holder = null + return ..() + /obj/item/assembly/get_part_rating() return 1 @@ -71,9 +75,9 @@ //Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs /obj/item/assembly/proc/pulsed(radio = FALSE) if(wire_type & WIRE_RECEIVE) - INVOKE_ASYNC(src, .proc/activate) + INVOKE_ASYNC(src, PROC_REF(activate)) if(radio && (wire_type & WIRE_RADIO_RECEIVE)) - INVOKE_ASYNC(src, .proc/activate) + INVOKE_ASYNC(src, PROC_REF(activate)) return TRUE //Called when this device attempts to act on another device, var/radio determines if it was sent via radio or direct diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index ab64cdc86700..8407f1d8b1a1 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -16,7 +16,7 @@ /obj/item/onetankbomb/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/modules/assembly/doorcontrol.dm b/code/modules/assembly/doorcontrol.dm index 40a10a168ea0..3b8c2c8cf7ba 100644 --- a/code/modules/assembly/doorcontrol.dm +++ b/code/modules/assembly/doorcontrol.dm @@ -28,7 +28,7 @@ if(M.id == src.id) if(openclose == null || !sync_doors) openclose = M.density - INVOKE_ASYNC(M, openclose ? /obj/machinery/door/poddoor.proc/open : /obj/machinery/door/poddoor.proc/close) + INVOKE_ASYNC(M, openclose ? TYPE_PROC_REF(/obj/machinery/door/poddoor, open) : TYPE_PROC_REF(/obj/machinery/door/poddoor, close)) addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10) /obj/item/assembly/control/airlock @@ -71,7 +71,7 @@ D.safe = !D.safe for(var/D in open_or_close) - INVOKE_ASYNC(D, doors_need_closing ? /obj/machinery/door/airlock.proc/close : /obj/machinery/door/airlock.proc/open) + INVOKE_ASYNC(D, doors_need_closing ? TYPE_PROC_REF(/obj/machinery/door/airlock, close) : TYPE_PROC_REF(/obj/machinery/door/airlock, open)) addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10) @@ -86,7 +86,7 @@ cooldown = TRUE for(var/obj/machinery/door/poddoor/M in GLOB.machines) if (M.id == src.id) - INVOKE_ASYNC(M, /obj/machinery/door/poddoor.proc/open) + INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/door/poddoor, open)) sleep(10) @@ -98,7 +98,7 @@ for(var/obj/machinery/door/poddoor/M in GLOB.machines) if (M.id == src.id) - INVOKE_ASYNC(M, /obj/machinery/door/poddoor.proc/close) + INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/door/poddoor, close)) addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10) @@ -113,7 +113,7 @@ cooldown = TRUE for(var/obj/machinery/sparker/M in GLOB.machines) if (M.id == src.id) - INVOKE_ASYNC(M, /obj/machinery/sparker.proc/ignite) + INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/sparker, ignite)) for(var/obj/machinery/igniter/M in GLOB.machines) if(M.id == src.id) @@ -133,7 +133,7 @@ cooldown = TRUE for(var/obj/machinery/flasher/M in GLOB.machines) if(M.id == src.id) - INVOKE_ASYNC(M, /obj/machinery/flasher.proc/flash) + INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/flasher, flash)) addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 50) @@ -163,6 +163,6 @@ cooldown = TRUE for(var/obj/machinery/power/shieldwallgen/machine in GLOB.machines) if(machine.id == src.id) - INVOKE_ASYNC(machine, /obj/machinery/power/shieldwallgen.proc/toggle) + INVOKE_ASYNC(machine, TYPE_PROC_REF(/obj/machinery/power/shieldwallgen, toggle)) addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 20) diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index b7a1ba88f39b..8fe788f79ca7 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -29,7 +29,7 @@ flashing = flash . = ..() if(flash) - addtimer(CALLBACK(src, /atom/.proc/update_icon), 5) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 5) holder?.update_icon(updates) /obj/item/assembly/flash/update_overlays() @@ -97,7 +97,7 @@ last_trigger = world.time playsound(src, 'sound/weapons/flash.ogg', 100, TRUE) set_light_on(TRUE) - addtimer(CALLBACK(src, .proc/flash_end), FLASH_LIGHT_DURATION, TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(flash_end)), FLASH_LIGHT_DURATION, TIMER_OVERRIDE|TIMER_UNIQUE) times_used++ flash_recharge() update_icon(ALL, TRUE) @@ -125,7 +125,6 @@ var/diff = power * CONFUSION_STACK_MAX_MULTIPLIER - M.confused M.confused += min(power, diff) if(user) - terrible_conversion_proc(M, user) visible_message("[user] blinds [M] with the flash!") to_chat(user, "You blind [M] with the flash!") to_chat(M, "[user] blinds you with the flash!") @@ -182,26 +181,6 @@ return AOE_flash() -/obj/item/assembly/flash/proc/terrible_conversion_proc(mob/living/carbon/H, mob/user) - if(istype(H) && H.stat != DEAD) - if(user.mind) - var/datum/antagonist/rev/head/converter = user.mind.has_antag_datum(/datum/antagonist/rev/head) - if(!converter) - return - if(!H.client) - to_chat(user, "This mind is so vacant that it is not susceptible to influence!") - return - if(H.stat != CONSCIOUS) - to_chat(user, "They must be conscious before you can convert [H.p_them()]!") - return - if(converter.add_revolutionary(H.mind)) - if(prob(1) || SSevents.holidays && SSevents.holidays[APRIL_FOOLS]) - H.say("You son of a bitch! I'm in.", forced = "That son of a bitch! They're in.") - times_used -- //Flashes less likely to burn out for headrevs when used for conversion - else - to_chat(user, "This mind seems resistant to the flash!") - - /obj/item/assembly/flash/cyborg /obj/item/assembly/flash/cyborg/attack(mob/living/M, mob/user) @@ -231,22 +210,25 @@ desc = "A high-powered photon projector implant normally used for lighting purposes, but also doubles as a flashbulb weapon. Self-repair protocols fix the flashbulb if it ever burns out." var/flashcd = 20 var/overheat = 0 - var/obj/item/organ/cyberimp/arm/flash/I = null + //Wearef to our arm + var/datum/weakref/arm /obj/item/assembly/flash/armimplant/burn_out() - if(I && I.owner) - to_chat(I.owner, "Your photon projector implant overheats and deactivates!") - I.Retract() + var/obj/item/organ/cyberimp/arm/flash/real_arm = arm.resolve() + if(real_arm?.owner) + to_chat(real_arm.owner, "Your photon projector implant overheats and deactivates!") + real_arm.Retract() overheat = TRUE - addtimer(CALLBACK(src, .proc/cooldown), flashcd * 2) + addtimer(CALLBACK(src, PROC_REF(cooldown)), flashcd * 2) /obj/item/assembly/flash/armimplant/try_use_flash(mob/user = null) if(overheat) - if(I && I.owner) - to_chat(I.owner, "Your photon projector is running too hot to be used again so quickly!") + var/obj/item/organ/cyberimp/arm/flash/real_arm = arm.resolve() + if(real_arm?.owner) + to_chat(real_arm.owner, "Your photon projector is running too hot to be used again so quickly!") return FALSE overheat = TRUE - addtimer(CALLBACK(src, .proc/cooldown), flashcd) + addtimer(CALLBACK(src, PROC_REF(cooldown)), flashcd) playsound(src, 'sound/weapons/flash.ogg', 100, TRUE) update_icon(ALL, TRUE) return TRUE diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 4d2ffdac5d4e..8dbb1dc98b61 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -17,7 +17,7 @@ /obj/item/assembly_holder/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index bc8fdcc3d908..72d7bfd45a30 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -22,7 +22,7 @@ /obj/item/assembly/infra/ComponentInitialize() . = ..() var/static/rotation_flags = ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_FLIP | ROTATION_VERBS - AddComponent(/datum/component/simple_rotation, rotation_flags, after_rotation=CALLBACK(src,.proc/after_rotation)) + AddComponent(/datum/component/simple_rotation, rotation_flags, after_rotation=CALLBACK(src, PROC_REF(after_rotation))) /obj/item/assembly/infra/proc/after_rotation() refreshBeam() @@ -162,7 +162,7 @@ return if(listeningTo) UnregisterSignal(listeningTo, COMSIG_ATOM_EXITED) - RegisterSignal(newloc, COMSIG_ATOM_EXITED, .proc/check_exit) + RegisterSignal(newloc, COMSIG_ATOM_EXITED, PROC_REF(check_exit)) listeningTo = newloc /obj/item/assembly/infra/proc/check_exit(datum/source, atom/movable/offender) @@ -176,7 +176,7 @@ var/obj/item/I = offender if (I.item_flags & ABSTRACT) return - INVOKE_ASYNC(src, .proc/refreshBeam) + INVOKE_ASYNC(src, PROC_REF(refreshBeam)) /obj/item/assembly/infra/setDir() . = ..() @@ -230,7 +230,7 @@ /obj/effect/beam/i_beam/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -242,4 +242,4 @@ var/obj/item/I = AM if (I.item_flags & ABSTRACT) return - INVOKE_ASYNC(master, /obj/item/assembly/infra/proc/trigger_beam, AM, get_turf(src)) + INVOKE_ASYNC(master, TYPE_PROC_REF(/obj/item/assembly/infra, trigger_beam), AM, get_turf(src)) diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index bf9353a658d9..25b6ce470466 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -114,15 +114,15 @@ if(ishuman(AM)) var/mob/living/carbon/H = AM if(H.m_intent == MOVE_INTENT_RUN) - INVOKE_ASYNC(src, .proc/triggered, H) + INVOKE_ASYNC(src, PROC_REF(triggered), H) H.visible_message( "[H] accidentally steps on [src].", "You accidentally step on [src]" ) else if(ismouse(MM)) - INVOKE_ASYNC(src, .proc/triggered, MM) + INVOKE_ASYNC(src, PROC_REF(triggered), MM) else if(AM.density) // For mousetrap grenades, set off by anything heavy - INVOKE_ASYNC(src, .proc/triggered, AM) + INVOKE_ASYNC(src, PROC_REF(triggered), AM) /obj/item/assembly/mousetrap/on_found(mob/finder) diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index c68ee14dd867..08b603058563 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -11,6 +11,8 @@ var/time = 10 var/sensitivity = 1 var/hearing_range = 3 + ///Proximity monitor associated with this atom, needed for it to work. + var/datum/proximity_monitor/proximity_monitor /obj/item/assembly/prox_sensor/Initialize() . = ..() @@ -40,19 +42,19 @@ if(!.) return else - proximity_monitor.SetHost(src,src) + proximity_monitor.set_host(src, src) /obj/item/assembly/prox_sensor/toggle_secure() secured = !secured if(!secured) if(scanning) toggle_scan() - proximity_monitor.SetHost(src,src) + proximity_monitor.set_host(src, src) timing = FALSE STOP_PROCESSING(SSobj, src) else START_PROCESSING(SSobj, src) - proximity_monitor.SetHost(loc,src) + proximity_monitor.set_host(loc,src) update_appearance() return secured @@ -84,13 +86,13 @@ if(!secured) return FALSE scanning = scan - proximity_monitor.SetRange(scanning ? sensitivity : 0) + proximity_monitor.set_range(scanning ? sensitivity : 0) update_appearance() /obj/item/assembly/prox_sensor/proc/sensitivity_change(value) var/sense = min(max(sensitivity + value, 0), 5) sensitivity = sense - if(scanning && proximity_monitor.SetRange(sense)) + if(scanning && proximity_monitor.set_range(sense)) sense() /obj/item/assembly/prox_sensor/update_appearance() diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index 0ff3fadae733..0bfac86ee0df 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -61,7 +61,7 @@ switch(action) if("signal") - INVOKE_ASYNC(src, .proc/signal) + INVOKE_ASYNC(src, PROC_REF(signal)) . = TRUE if("freq") frequency = unformat_frequency(params["freq"]) diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index d154121956c9..84f1a5040015 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -41,7 +41,7 @@ record_speech(speaker, raw_message, message_language) else if(check_activation(speaker, raw_message)) - addtimer(CALLBACK(src, .proc/pulse, 0), 10) + addtimer(CALLBACK(src, PROC_REF(pulse), 0), 10) /obj/item/assembly/voice/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language) switch(mode) @@ -59,7 +59,7 @@ say("Your voice pattern is saved.", message_language) if(VOICE_SENSOR_MODE) if(length(raw_message)) - addtimer(CALLBACK(src, .proc/pulse, 0), 10) + addtimer(CALLBACK(src, PROC_REF(pulse), 0), 10) /obj/item/assembly/voice/proc/check_activation(atom/movable/speaker, raw_message) . = FALSE diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 505c84db67fd..feb2fd160992 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -438,3 +438,37 @@ "fishing_background_default" = 'icons/ui_icons/fishing/default.png', "fishing_background_lavaland" = 'icons/ui_icons/fishing/lavaland.png' ) + +/datum/asset/spritesheet/supplypods + name = "supplypods" + +/datum/asset/spritesheet/supplypods/register() + for (var/style in 1 to length(GLOB.podstyles)) + var/icon_file = 'icons/obj/supplypods.dmi' + var/states = icon_states(icon_file) + if (style == STYLE_SEETHROUGH) + Insert("pod_asset[style]", icon(icon_file, "seethrough-icon", SOUTH)) + continue + var/base = GLOB.podstyles[style][POD_BASE] + if (!base) + Insert("pod_asset[style]", icon(icon_file, "invisible-icon", SOUTH)) + continue + var/icon/podIcon = icon(icon_file, base, SOUTH) + var/door = GLOB.podstyles[style][POD_DOOR] + if (door) + door = "[base]_door" + if(door in states) + podIcon.Blend(icon(icon_file, door, SOUTH), ICON_OVERLAY) + var/shape = GLOB.podstyles[style][POD_SHAPE] + if (shape == POD_SHAPE_NORML) + var/decal = GLOB.podstyles[style][POD_DECAL] + if (decal) + if(decal in states) + podIcon.Blend(icon(icon_file, decal, SOUTH), ICON_OVERLAY) + var/glow = GLOB.podstyles[style][POD_GLOW] + if (glow) + glow = "pod_glow_[glow]" + if(glow in states) + podIcon.Blend(icon(icon_file, glow, SOUTH), ICON_OVERLAY) + Insert("pod_asset[style]", podIcon) + return ..() diff --git a/code/modules/asset_cache/transports/asset_transport.dm b/code/modules/asset_cache/transports/asset_transport.dm index 9f1073c9c9f0..5fbc239e45b8 100644 --- a/code/modules/asset_cache/transports/asset_transport.dm +++ b/code/modules/asset_cache/transports/asset_transport.dm @@ -14,7 +14,7 @@ /datum/asset_transport/proc/Load() if (CONFIG_GET(flag/asset_simple_preload)) for(var/client/C in GLOB.clients) - addtimer(CALLBACK(src, .proc/send_assets_slow, C, preload), 1 SECONDS) + addtimer(CALLBACK(src, PROC_REF(send_assets_slow), C, preload), 1 SECONDS) /// Initialize - Called when SSassets initializes. /datum/asset_transport/proc/Initialize(list/assets) @@ -22,7 +22,7 @@ if (!CONFIG_GET(flag/asset_simple_preload)) return for(var/client/C in GLOB.clients) - addtimer(CALLBACK(src, .proc/send_assets_slow, C, preload), 1 SECONDS) + addtimer(CALLBACK(src, PROC_REF(send_assets_slow), C, preload), 1 SECONDS) /** @@ -137,7 +137,7 @@ client.sent_assets[new_asset_name] = ACI.hash - addtimer(CALLBACK(client, /client/proc/asset_cache_update_json), 1 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) + addtimer(CALLBACK(client, TYPE_PROC_REF(/client, asset_cache_update_json)), 1 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) return TRUE return FALSE diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index 428e8b5a6d18..041f09cddc9b 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -60,7 +60,7 @@ air_update_turf() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm index 3d1e1e46602f..f28a9a898588 100644 --- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm +++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm @@ -184,7 +184,9 @@ /turf/proc/process_cell(fire_count) /turf/open/proc/equalize_pressure_in_zone(cyclenum) -/turf/open/proc/consider_firelocks(turf/T2) + +/turf/proc/consider_firelocks(turf/T2) //TODO: Find out why this sometimes gets called. Possibly to do with atmos adjacency not being updated in auxmos? +/turf/open/consider_firelocks(turf/T2) if(blocks_air) return for(var/obj/machinery/airalarm/alarm in src) diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index a7924f4c0c3c..e5a2490b609d 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -44,6 +44,9 @@ ///Is the thing being rebuilt by SSair or not. Prevents list blaot var/rebuilding = FALSE + ///If we should init and immediately start processing + var/init_processing = FALSE + /obj/machinery/atmospherics/examine(mob/user) . = ..() if(is_type_in_list(src, GLOB.ventcrawl_machinery) && isliving(user)) @@ -59,11 +62,15 @@ nodes = new(device_type) if (!armor) armor = list("melee" = 25, "bullet" = 10, "laser" = 10, "energy" = 100, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 70) + init_processing = process ..() - if(process) - SSair.start_processing_machine(src) SetInitDirections() +/obj/machinery/atmospherics/Initialize(mapload) + if(init_processing) + SSair.start_processing_machine(src, mapload) + return ..() + /obj/machinery/atmospherics/Destroy() for(var/i in 1 to device_type) nullifyNode(i) @@ -158,7 +165,7 @@ return TRUE return FALSE -/obj/machinery/atmospherics/proc/pipeline_expansion() +/obj/machinery/atmospherics/proc/pipeline_expansion(datum/pipeline/reference) return nodes /obj/machinery/atmospherics/proc/SetInitDirections() @@ -170,13 +177,13 @@ /obj/machinery/atmospherics/proc/returnPipenet() return -/obj/machinery/atmospherics/proc/returnPipenetAirs() +/obj/machinery/atmospherics/proc/returnPipenetAirs(datum/pipeline/reference) return -/obj/machinery/atmospherics/proc/setPipenet() +/obj/machinery/atmospherics/proc/setPipenet(datum/pipeline/reference, obj/machinery/atmospherics/connection) return -/obj/machinery/atmospherics/proc/replacePipenet() +/obj/machinery/atmospherics/proc/replacePipenet(datum/pipeline/old_pipeline, datum/pipeline/new_pipeline) return /obj/machinery/atmospherics/proc/disconnect(obj/machinery/atmospherics/reference) diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index 0d93d554c47f..0f6520a2c622 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -199,7 +199,7 @@ if("set_external_pressure" in signal.data) external_pressure_bound = clamp(text2num(signal.data["set_external_pressure"]),0,ONE_ATMOSPHERE*50) - addtimer(CALLBACK(src, .proc/broadcast_status), 2) + addtimer(CALLBACK(src, PROC_REF(broadcast_status)), 2) if(!("status" in signal.data)) //do not update_icon update_appearance() diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm index 0631fac4856c..020570f34785 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm @@ -49,7 +49,7 @@ It's like a regular ol' straight pipe, but you can turn it on and off. return update_icon_nopipes(TRUE) switching = TRUE - addtimer(CALLBACK(src, .proc/finish_interact), 10) + addtimer(CALLBACK(src, PROC_REF(finish_interact)), 10) /obj/machinery/atmospherics/components/binary/valve/proc/finish_interact() toggle() diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index b4a02de7d108..ad8dd9761598 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -27,7 +27,7 @@ . = ..() if(hide) - RegisterSignal(src, COMSIG_OBJ_HIDE, .proc/hide_pipe) + RegisterSignal(src, COMSIG_OBJ_HIDE, PROC_REF(hide_pipe)) // Iconnery @@ -77,6 +77,8 @@ if(parents[i]) nullifyPipenet(parents[i]) airs[i] = null + if(!QDELETED(src)) + airs[i] = new /datum/gas_mixture(200) return ..() /obj/machinery/atmospherics/components/on_construction() @@ -100,9 +102,14 @@ /obj/machinery/atmospherics/components/proc/nullifyPipenet(datum/pipeline/reference) if(!reference) CRASH("nullifyPipenet(null) called by [type] on [COORD(src)]") - var/i = parents.Find(reference) - reference.other_airs -= airs[i] + + for (var/i in 1 to length(parents)) + if (parents[i] == reference) + reference.other_airs -= airs[i] // Disconnects from the pipeline side + parents[i] = null // Disconnects from the machinery side. + reference.other_atmosmch -= src + /* We explicitly qdel pipeline when this particular pipeline is projected to have no member and cause GC problems. @@ -110,12 +117,10 @@ while pipes must and will happily wreck and rebuild everything again every time they are qdeleted. */ - if(!length(reference.other_atmosmch) && !length(reference.members)) - if(QDESTROYING(reference)) - parents[i] = null - CRASH("nullifyPipenet() called on qdeleting [reference] indexed on parents\[[i]\]") - qdel(reference) - parents[i] = null + if(length(reference.other_atmosmch) || length(reference.members) || QDESTROYING(reference)) + return + + qdel(reference) /obj/machinery/atmospherics/components/returnPipenetAirs(datum/pipeline/reference) var/list/returned_air = list() @@ -130,14 +135,22 @@ return list(nodes[parents.Find(reference)]) return ..() -/obj/machinery/atmospherics/components/setPipenet(datum/pipeline/reference, obj/machinery/atmospherics/A) - parents[nodes.Find(A)] = reference +/obj/machinery/atmospherics/components/setPipenet(datum/pipeline/reference, obj/machinery/atmospherics/connection) + var/connection_index = nodes.Find(connection) + if(!connection_index) + message_admins("Doubled pipe found at [ADMIN_VERBOSEJMP(connection)]! Please report to mappers.") //This will cascade into even more errors. Sorry! + CRASH("Doubled pipe found, causing an error in setPipenet") + var/list/datum/pipeline/to_replace = parents[connection_index] + //Some references to clean up if it isn't empty + if(to_replace) + nullifyPipenet(to_replace) + parents[connection_index] = reference /obj/machinery/atmospherics/components/returnPipenet(obj/machinery/atmospherics/A = nodes[1]) //returns parents[1] if called without argument return parents[nodes.Find(A)] -/obj/machinery/atmospherics/components/replacePipenet(datum/pipeline/Old, datum/pipeline/New) - parents[parents.Find(Old)] = New +/obj/machinery/atmospherics/components/replacePipenet(datum/pipeline/old_pipeline, datum/pipeline/new_pipeline) + parents[parents.Find(old_pipeline)] = new_pipeline /obj/machinery/atmospherics/components/unsafe_pressure_release(mob/user, pressures) ..() @@ -183,8 +196,8 @@ if(!parent) //WARNING("Component is missing a pipenet! Rebuilding...") SSair.add_to_rebuild_queue(src) - else - parent.update = TRUE + return + parent.update = TRUE /obj/machinery/atmospherics/components/returnPipenets() . = list() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index 3864bc2ada18..8f547335e9e0 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -166,7 +166,7 @@ occupant_overlay.pixel_y-- add_overlay(occupant_overlay) add_overlay("cover-on") - addtimer(CALLBACK(src, .proc/run_anim, anim_up, occupant_overlay), 7, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(run_anim), anim_up, occupant_overlay), 7, TIMER_UNIQUE) /obj/machinery/atmospherics/components/unary/cryo_cell/on_set_is_operational(old_value) if(old_value) //Turned off diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm index a051df7de2c9..d3a4b115278f 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm @@ -57,19 +57,20 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/process_atmos() ..() - injecting = 0 + injecting = TRUE - if(!on || !is_operational) + if(!on || !is_operational || !isopenturf(loc)) return var/datum/gas_mixture/air_contents = airs[1] - if(air_contents != null) - if(air_contents.return_temperature() > 0) - loc.assume_air_ratio(air_contents, volume_rate / air_contents.return_volume()) - air_update_turf() + if(!air_contents || air_contents.return_temperature() <= 0) + return - update_parents() + loc.assume_air_ratio(air_contents, volume_rate / air_contents.return_volume()) + air_update_turf() + + update_parents() /obj/machinery/atmospherics/components/unary/outlet_injector/proc/inject() @@ -78,7 +79,7 @@ var/datum/gas_mixture/air_contents = airs[1] - injecting = 1 + injecting = TRUE if(air_contents.return_temperature() > 0) loc.assume_air_ratio(air_contents, volume_rate / air_contents.return_volume()) @@ -124,7 +125,7 @@ on = !on if("inject" in signal.data) - INVOKE_ASYNC(src, .proc/inject) + INVOKE_ASYNC(src, PROC_REF(inject)) return if("set_volume_rate" in signal.data) @@ -132,7 +133,7 @@ var/datum/gas_mixture/air_contents = airs[1] volume_rate = clamp(number, 0, air_contents.return_volume()) - addtimer(CALLBACK(src, .proc/broadcast_status), 2) + addtimer(CALLBACK(src, PROC_REF(broadcast_status)), 2) if(!("status" in signal.data)) //do not update_icon update_appearance() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/relief_valve.dm b/code/modules/atmospherics/machinery/components/unary_devices/relief_valve.dm index d5f51757685d..7c890dfb8425 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/relief_valve.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/relief_valve.dm @@ -48,9 +48,7 @@ var/pressure_delta = our_pressure - environment.return_pressure() var/transfer_moles = pressure_delta*200/(air_contents.return_temperature() * R_IDEAL_GAS_EQUATION) if(transfer_moles > 0) - var/datum/gas_mixture/removed = air_contents.remove(transfer_moles) - - loc.assume_air(removed) + loc.transfer_air(air_contents, transfer_moles) air_update_turf() update_parents() diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 3b570f209c8b..1b6df20c721e 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -23,10 +23,9 @@ var/heat_capacity = 0 var/interactive = TRUE // So mapmakers can disable interaction. -/obj/machinery/atmospherics/components/unary/thermomachine/Initialize() +/obj/machinery/atmospherics/components/unary/thermomachine/Initialize(mapload) . = ..() initialize_directions = dir - SSair.start_processing_machine(src) //WS edit, initialize thermomachines to SSairs list of tickable machines /obj/machinery/atmospherics/components/unary/thermomachine/on_construction(obj_color, set_layer) var/obj/item/circuitboard/machine/thermomachine/board = circuit diff --git a/code/modules/atmospherics/machinery/datum_pipeline.dm b/code/modules/atmospherics/machinery/datum_pipeline.dm index 29c0ff985c9c..2ede3d7317b0 100644 --- a/code/modules/atmospherics/machinery/datum_pipeline.dm +++ b/code/modules/atmospherics/machinery/datum_pipeline.dm @@ -27,8 +27,10 @@ if(QDELETED(P)) continue SSair.add_to_rebuild_queue(P) + members.Cut() for(var/obj/machinery/atmospherics/components/C in other_atmosmch) C.nullifyPipenet(src) + other_atmosmch.Cut() return ..() /datum/pipeline/process() @@ -38,22 +40,23 @@ update = air.react(src) /datum/pipeline/proc/build_pipeline(obj/machinery/atmospherics/base) - if(!QDELETED(base)) - building = TRUE - var/volume = 0 - if(istype(base, /obj/machinery/atmospherics/pipe)) - var/obj/machinery/atmospherics/pipe/considered_pipe = base - volume = considered_pipe.volume - members += considered_pipe - if(considered_pipe.air_temporary) - air = considered_pipe.air_temporary - considered_pipe.air_temporary = null - else - addMachineryMember(base) - if(!air) - air = new - air.set_volume(volume) - SSair.add_to_expansion(src, base) + if(QDELETED(base)) + return + building = TRUE + var/volume = 0 + if(istype(base, /obj/machinery/atmospherics/pipe)) + var/obj/machinery/atmospherics/pipe/considered_pipe = base + volume = considered_pipe.volume + members += considered_pipe + if(considered_pipe.air_temporary) + air = considered_pipe.air_temporary + considered_pipe.air_temporary = null + else + addMachineryMember(base) + if(!air) + air = new + air.set_volume(volume) + SSair.add_to_expansion(src, base) ///Has the same effect as build_pipeline(), but this doesn't queue its work, so overrun abounds. It's useful for the pregame /datum/pipeline/proc/build_pipeline_blocking(obj/machinery/atmospherics/base) @@ -70,34 +73,35 @@ if(!air) air = new var/list/possible_expansions = list(base) - while(possible_expansions.len>0) + while(length(possible_expansions)) for(var/obj/machinery/atmospherics/borderline in possible_expansions) var/list/result = borderline.pipeline_expansion(src) - if(result?.len > 0) - for(var/obj/machinery/atmospherics/P in result) - if(istype(P, /obj/machinery/atmospherics/pipe)) - var/obj/machinery/atmospherics/pipe/item = P - if(!members.Find(item)) - - if(item.parent) - var/static/pipenetwarnings = 10 - if(pipenetwarnings > 0) - log_mapping("build_pipeline(): [item.type] added to a pipenet while still having one. (pipes leading to the same spot stacking in one turf) around [AREACOORD(item)].") - pipenetwarnings-- - if(pipenetwarnings == 0) - log_mapping("build_pipeline(): further messages about pipenets will be suppressed") - members += item - possible_expansions += item - - volume += item.volume - item.parent = src - - if(item.air_temporary) - air.merge(item.air_temporary) - item.air_temporary = null - else - P.setPipenet(src, borderline) - addMachineryMember(P) + if(!length(result)) + continue + for(var/obj/machinery/atmospherics/considered_device in result) + if(!istype(considered_device, /obj/machinery/atmospherics/pipe)) + considered_device.setPipenet(src, borderline) + addMachineryMember(considered_device) + continue + + var/obj/machinery/atmospherics/pipe/item = considered_device + if(item in members) + continue + + if(item.parent) + log_mapping("Possible doubled atmosmachine found at [AREACOORD(item)] with other contents: [json_encode(item.loc.contents)]") + item.stack_trace("Possible doubled atmosmachine found") + continue + + members += item + possible_expansions += item + + volume += item.volume + item.parent = src + + if(item.air_temporary) + air.merge(item.air_temporary) + item.air_temporary = null possible_expansions -= borderline @@ -108,7 +112,7 @@ var/list/returned_airs = C.returnPipenetAirs(src) if (!length(returned_airs) || (null in returned_airs)) stack_trace("addMachineryMember: Nonexistent (empty list) or null machinery gasmix added to pipeline datum from [C] \ - which is of type [C.type]. Nearby: ([C.x], [C.y], [C.z])") + which is of type [C.type]. QDELETED: [QDELETED(C) ? "true" : "false"].") other_airs |= returned_airs /datum/pipeline/proc/addMember(obj/machinery/atmospherics/A, obj/machinery/atmospherics/N) @@ -254,13 +258,11 @@ if(V.on) PL |= V.parents[1] PL |= V.parents[2] -//BeginWS Edit - Porting Relief Valves else if (istype(atmosmch,/obj/machinery/atmospherics/components/binary/relief_valve)) var/obj/machinery/atmospherics/components/binary/relief_valve/V = atmosmch if(V.opened) PL |= V.parents[1] PL |= V.parents[2] -//EndWS Edit - Porting Relief Valves else if (istype(atmosmch, /obj/machinery/atmospherics/components/unary/portables_connector)) var/obj/machinery/atmospherics/components/unary/portables_connector/C = atmosmch if(C.connected_device) diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index d48e202adfc6..811979dd4c39 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -40,7 +40,7 @@ /obj/machinery/meter/Initialize(mapload, new_piping_layer) if(!isnull(new_piping_layer)) target_layer = new_piping_layer - SSair.start_processing_machine(src) + SSair.start_processing_machine(src, mapload) if(!target) reattach_to_layer() return ..() diff --git a/code/modules/atmospherics/machinery/pipes/layermanifold.dm b/code/modules/atmospherics/machinery/pipes/layermanifold.dm index f2c03c69139e..1f6e9cab5383 100644 --- a/code/modules/atmospherics/machinery/pipes/layermanifold.dm +++ b/code/modules/atmospherics/machinery/pipes/layermanifold.dm @@ -106,7 +106,7 @@ /obj/machinery/atmospherics/pipe/layer_manifold/setPipingLayer() piping_layer = PIPING_LAYER_DEFAULT -/obj/machinery/atmospherics/pipe/layer_manifold/pipeline_expansion() +/obj/machinery/atmospherics/pipe/layer_manifold/pipeline_expansion(datum/pipeline/reference) return get_all_connected_nodes() /obj/machinery/atmospherics/pipe/layer_manifold/disconnect(obj/machinery/atmospherics/reference) diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index fcadc8cd4ff6..7daaf9273558 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -79,8 +79,10 @@ /obj/machinery/atmospherics/pipe/returnPipenet() return parent -/obj/machinery/atmospherics/pipe/setPipenet(datum/pipeline/P) - parent = P +/obj/machinery/atmospherics/pipe/setPipenet(datum/pipeline/reference, obj/machinery/atmospherics/connection) + if(!QDELETED(parent)) + qdel(parent) + parent = reference /obj/machinery/atmospherics/pipe/Destroy() QDEL_NULL(parent) diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index ad5f95cf349d..db17acc4fa6c 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -15,16 +15,16 @@ var/maximum_pressure = 90 * ONE_ATMOSPHERE -/obj/machinery/portable_atmospherics/Initialize() +/obj/machinery/portable_atmospherics/Initialize(mapload) . = ..() air_contents = new(volume) air_contents.set_temperature(T20C) - SSair.start_processing_machine(src) + SSair.start_processing_machine(src, mapload) /obj/machinery/portable_atmospherics/Destroy() - SSair.stop_processing_machine(src) disconnect() - air_contents = null + QDEL_NULL(air_contents) + SSair.stop_processing_machine(src) return ..() diff --git a/code/modules/atmospherics/multiz.dm b/code/modules/atmospherics/multiz.dm index f4363ee88286..e0daf4c61654 100644 --- a/code/modules/atmospherics/multiz.dm +++ b/code/modules/atmospherics/multiz.dm @@ -16,7 +16,7 @@ . += multiz_overlay_node ///Attempts to locate a multiz pipe that's above us, if it finds one it merges us into its pipenet -/obj/machinery/atmospherics/pipe/simple/multiz/pipeline_expansion() +/obj/machinery/atmospherics/pipe/simple/multiz/pipeline_expansion(datum/pipeline/reference) icon = 'icons/obj/atmos.dmi' //Just to refresh. var/turf/T = get_turf(src) var/obj/machinery/atmospherics/pipe/simple/multiz/above = locate(/obj/machinery/atmospherics/pipe/simple/multiz) in(T.above()) diff --git a/code/modules/awaymissions/away_props.dm b/code/modules/awaymissions/away_props.dm index 3a53bfac4735..a29d48657446 100644 --- a/code/modules/awaymissions/away_props.dm +++ b/code/modules/awaymissions/away_props.dm @@ -6,11 +6,9 @@ invisibility = INVISIBILITY_MAXIMUM anchored = TRUE -/obj/effect/oneway/CanAllowThrough(atom/movable/mover, turf/target) +/obj/effect/oneway/CanAllowThrough(atom/movable/mover, border_dir) . = ..() - var/turf/T = get_turf(src) - var/turf/MT = get_turf(mover) - return . && (T == MT || get_dir(MT,T) == dir) + return . && border_dir == dir /obj/effect/wind @@ -45,7 +43,7 @@ if(blocked_types.len) blocked_types = typecacheof(blocked_types) -/obj/effect/path_blocker/CanAllowThrough(atom/movable/mover, turf/target) +/obj/effect/path_blocker/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(blocked_types.len) var/list/mover_contents = mover.GetAllContents() @@ -67,7 +65,7 @@ /obj/structure/pitgrate/Initialize() . = ..() - RegisterSignal(SSdcs,COMSIG_GLOB_BUTTON_PRESSED, .proc/OnButtonPressed) + RegisterSignal(SSdcs,COMSIG_GLOB_BUTTON_PRESSED, PROC_REF(OnButtonPressed)) if(hidden) update_openspace() @@ -93,7 +91,7 @@ obj_flags |= BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP plane = BYOND_LIGHTING_LAYER //What matters it's one above openspace, so our animation is not dependant on what's there. Up to revision with 513 animate(src,alpha = talpha,time = 10) - addtimer(CALLBACK(src,.proc/reset_plane),10) + addtimer(CALLBACK(src, PROC_REF(reset_plane)),10) if(hidden) update_openspace() var/turf/T = get_turf(src) diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 90502110c9c6..77c655c38247 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -39,6 +39,8 @@ . = ..() if(!reset) reset = new reset_path(get_turf(src)) + reset.flag = src + RegisterSignal(src, COMSIG_PARENT_PREQDELETED, PROC_REF(reset_flag)) //just in case CTF has some map hazards (read: chasms). /obj/item/ctf/ComponentInitialize() . = ..() @@ -55,8 +57,24 @@ to_chat(M, "\The [src] has been returned to base!") STOP_PROCESSING(SSobj, src) -//ATTACK HAND IGNORING PARENT RETURN VALUE -/obj/item/ctf/attack_hand(mob/living/user) +/obj/item/ctf/proc/reset_flag(capture = FALSE) + SIGNAL_HANDLER + + var/turf/our_turf = get_turf(src.reset) + if(!our_turf) + return TRUE + forceMove(our_turf) + for(var/mob/M in GLOB.player_list) + var/area/mob_area = get_area(M) + if(istype(mob_area, /area/ctf)) + if(!capture) + to_chat(M, "[src] has been returned to the base!") + STOP_PROCESSING(SSobj, src) + return TRUE //so if called by a signal, it doesn't delete + +//working with attack hand feels like taking my brain and putting it through an industrial pill press so i'm gonna be a bit liberal with the comments +/obj/item/ctf/attack_hand(mob/living/user, list/modifiers) + //pre normal check item stuff, this is for our special flag checks if(!is_ctf_target(user) && !anyonecanpickup) to_chat(user, "Non-players shouldn't be moving the flag!") return @@ -116,6 +134,13 @@ icon_state = "banner" desc = "This is where a banner with Nanotrasen's logo on it would go." layer = LOW_ITEM_LAYER + var/obj/item/ctf/flag + +/obj/effect/ctf/flag_reset/Destroy() + if(flag) + flag.reset = null + flag = null + return ..() /obj/effect/ctf/flag_reset/red name = "red flag landmark" @@ -173,7 +198,7 @@ /obj/machinery/capture_the_flag/Destroy() GLOB.poi_list.Remove(src) - ..() + return ..() /obj/machinery/capture_the_flag/process() for(var/i in spawned_mobs) @@ -258,7 +283,7 @@ var/turf/T = get_turf(body) new /obj/effect/ctf/ammo(T) recently_dead_ckeys += body.ckey - addtimer(CALLBACK(src, .proc/clear_cooldown, body.ckey), respawn_cooldown, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(clear_cooldown), body.ckey), respawn_cooldown, TIMER_UNIQUE) body.dust() /obj/machinery/capture_the_flag/proc/clear_cooldown(ckey) @@ -382,7 +407,7 @@ /obj/item/gun/ballistic/automatic/pistol/deagle/ctf/dropped() . = ..() - addtimer(CALLBACK(src, .proc/floor_vanish), 1) + addtimer(CALLBACK(src, PROC_REF(floor_vanish)), 1) /obj/item/gun/ballistic/automatic/pistol/deagle/ctf/proc/floor_vanish() if(isturf(loc)) @@ -410,7 +435,7 @@ /obj/item/gun/ballistic/automatic/laser/ctf/dropped() . = ..() - addtimer(CALLBACK(src, .proc/floor_vanish), 1) + addtimer(CALLBACK(src, PROC_REF(floor_vanish)), 1) /obj/item/gun/ballistic/automatic/laser/ctf/proc/floor_vanish() if(isturf(loc)) @@ -421,7 +446,7 @@ /obj/item/ammo_box/magazine/recharge/ctf/dropped() . = ..() - addtimer(CALLBACK(src, .proc/floor_vanish), 1) + addtimer(CALLBACK(src, PROC_REF(floor_vanish)), 1) /obj/item/ammo_box/magazine/recharge/ctf/proc/floor_vanish() if(isturf(loc)) @@ -612,7 +637,7 @@ /obj/effect/ctf/ammo/Initialize(mapload) . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) QDEL_IN(src, AMMO_DROP_LIFETIME) @@ -653,6 +678,11 @@ for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines) CTF.dead_barricades += src +/obj/effect/ctf/dead_barricade/Destroy() + for(var/obj/machinery/capture_the_flag/CTF in GLOB.machines) + CTF.dead_barricades -= src + return ..() + /obj/effect/ctf/dead_barricade/proc/respawn() if(!QDELETED(src)) new /obj/structure/barricade/security/ctf(get_turf(src)) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 4c4fac2717e5..fa453136182a 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -57,7 +57,7 @@ /obj/effect/mob_spawn/Initialize(mapload) . = ..() if(instant || (roundstart && (mapload || (SSticker && SSticker.current_state > GAME_STATE_SETTING_UP)))) - INVOKE_ASYNC(src, .proc/create) + INVOKE_ASYNC(src, PROC_REF(create)) else if(ghost_usable) GLOB.poi_list |= src LAZYADD(GLOB.mob_spawners[name], src) @@ -486,7 +486,7 @@ /datum/outfit/nanotrasenbridgeofficercorpse name = "Bridge Officer Corpse" ears = /obj/item/radio/headset/heads/head_of_personnel - uniform = /obj/item/clothing/under/rank/centcom/officer + uniform = /obj/item/clothing/under/rank/centcom/official suit = /obj/item/clothing/suit/armor/vest/bulletproof shoes = /obj/item/clothing/shoes/sneakers/black glasses = /obj/item/clothing/glasses/sunglasses diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index d41b68de24a2..a643be115aab 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -89,7 +89,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations) /datum/gateway_destination/gateway/post_transfer(atom/movable/AM) . = ..() - addtimer(CALLBACK(AM,/atom/movable.proc/setDir,SOUTH),0) + addtimer(CALLBACK(AM, TYPE_PROC_REF(/atom/movable, setDir),SOUTH),0) /* Special home destination, so we can check exile implants */ /datum/gateway_destination/gateway/home @@ -181,6 +181,12 @@ GLOBAL_LIST_EMPTY(gateway_destinations) vis_contents += portal_visuals return ..() +/obj/machinery/gateway/Destroy() + destination.target_gateway = null + GLOB.gateway_destinations -= destination + destination = null + return ..() + /obj/machinery/gateway/proc/generate_destination() destination = new destination_type destination.name = destination_name diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index 9fe39716543d..a4b9098c77a1 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -212,7 +212,7 @@ var/turf/T = get_turf(src) T.visible_message("[src] flares briefly.") - addtimer(CALLBACK(src, .proc/effect, user, .), 1 SECONDS) + addtimer(CALLBACK(src, PROC_REF(effect), user, .), 1 SECONDS) /obj/item/dice/d20/fate/equipped(mob/user, slot) . = ..() diff --git a/code/modules/awaymissions/mission_code/murderdome.dm b/code/modules/awaymissions/mission_code/murderdome.dm index 695692ed331f..914a1f2828c7 100644 --- a/code/modules/awaymissions/mission_code/murderdome.dm +++ b/code/modules/awaymissions/mission_code/murderdome.dm @@ -33,7 +33,7 @@ /obj/effect/murderdome/dead_barricade/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/respawn), 3 MINUTES) + addtimer(CALLBACK(src, PROC_REF(respawn)), 3 MINUTES) /obj/effect/murderdome/dead_barricade/proc/respawn() if(!QDELETED(src)) diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm index e9f8df5c3499..26c6b4823dce 100644 --- a/code/modules/awaymissions/mission_code/wildwest.dm +++ b/code/modules/awaymissions/mission_code/wildwest.dm @@ -4,116 +4,6 @@ * Meat Grinder */ -//Areas - -/area/awaymission/wildwest/mines - name = "Wild West Mines" - icon_state = "away1" - requires_power = FALSE - -/area/awaymission/wildwest/gov - name = "Wild West Mansion" - icon_state = "away2" - requires_power = FALSE - -/area/awaymission/wildwest/refine - name = "Wild West Refinery" - icon_state = "away3" - requires_power = FALSE - -/area/awaymission/wildwest/vault - name = "Wild West Vault" - icon_state = "away3" - -/area/awaymission/wildwest/vaultdoors - name = "Wild West Vault Doors" // this is to keep the vault area being entirely lit because of requires_power - icon_state = "away2" - requires_power = FALSE - - -////////// wildwest papers - -/obj/item/paper/fluff/awaymissions/wildwest/grinder - default_raw_text = "meat grinder requires sacri" - - -/obj/item/paper/fluff/awaymissions/wildwest/journal/page1 - name = "Planer Saul's Journal: Page 1" - default_raw_text = "We've discovered something floating in space. We can't really tell how old it is, but it is scraped and bent to hell. There object is the size of about a room with double doors that we have yet to break into. It is a lot sturdier than we could have imagined. We have decided to call it 'The Vault' " - -/obj/item/paper/fluff/awaymissions/wildwest/journal/page4 - name = "Planer Saul's Journal: Page 4" - default_raw_text = " The miners in the town have become sick and almost all production has stopped. They, in a fit of delusion, tossed all of their mining equipment into the furnaces. They all claimed the same thing. A voice beckoning them to lay down their arms. Stupid miners." - -/obj/item/paper/fluff/awaymissions/wildwest/journal/page7 - name = "Planer Sauls' Journal: Page 7" - default_raw_text = "The Vault...it just keeps growing and growing. I went on my daily walk through the garden and now it's just right outside the mansion... a few days ago it was only barely visible. But whatever is inside...it's calling to me." - -/obj/item/paper/fluff/awaymissions/wildwest/journal/page8 - name = "Planer Saul's Journal: Page 8" - default_raw_text = "The syndicate have invaded. Their ships appeared out of nowhere and now they likely intend to kill us all and take everything. On the off-chance that the Vault may grant us sanctuary, many of us have decided to force our way inside and bolt the door, taking as many provisions with us as we can carry. In case you find this, send for help immediately and open the Vault. Find us inside." - - -/* - * Wish Granter - */ -/obj/machinery/wish_granter_dark - name = "Wish Granter" - desc = "You're not so sure about this, anymore..." - icon = 'icons/obj/device.dmi' - icon_state = "syndbeacon" - - density = TRUE - use_power = NO_POWER_USE - - var/chargesa = 1 - var/insistinga = 0 - -/obj/machinery/wish_granter_dark/interact(mob/living/carbon/human/user) - if(chargesa <= 0) - to_chat(user, "The Wish Granter lies silent.") - return - - else if(!ishuman(user)) - to_chat(user, "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's.") - return - - else if(is_special_character(user)) - to_chat(user, "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away.") - - else if (!insistinga) - to_chat(user, "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?") - insistinga++ - - else - chargesa-- - insistinga = 0 - var/wish = input("You want...","Wish") as null|anything in sortList(list("Power","Wealth","Immortality","Peace")) - switch(wish) - if("Power") - to_chat(user, "Your wish is granted, but at a terrible cost...") - to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart.") - user.dna.add_mutation(LASEREYES) - user.dna.add_mutation(SPACEMUT) - user.dna.add_mutation(XRAY) - user.set_species(/datum/species/shadow) - if("Wealth") - to_chat(user, "Your wish is granted, but at a terrible cost...") - to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart.") - new /obj/structure/closet/syndicate/resources/everything(loc) - user.set_species(/datum/species/shadow) - if("Immortality") - to_chat(user, "Your wish is granted, but at a terrible cost...") - to_chat(user, "The Wish Granter punishes you for your selfishness, claiming your soul and warping your body to match the darkness in your heart.") - add_verb(user, /mob/living/carbon/proc/immortality) - user.set_species(/datum/species/shadow) - if("Peace") - to_chat(user, "Whatever alien sentience that the Wish Granter possesses is satisfied with your wish. There is a distant wailing as the last of the Faithless begin to die, then silence.") - to_chat(user, "You feel as if you just narrowly avoided a terrible fate...") - for(var/mob/living/simple_animal/hostile/faithless/F in GLOB.mob_living_list) - F.death() - - ///////////////Meatgrinder////////////// @@ -129,7 +19,7 @@ /obj/effect/meatgrinder/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -155,19 +45,3 @@ s.start() explosion(M, 1, 0, 0, 0) qdel(src) - -/////For the Wishgranter/////////// - -/mob/living/carbon/proc/immortality() //Mob proc so people cant just clone themselves to get rid of the shadowperson race. No hiding your wickedness. - set category = "Immortality" - set name = "Resurrection" - - var/mob/living/carbon/C = usr - if(!C.stat) - to_chat(C, "You're not dead yet!") - return - if(C.has_status_effect(STATUS_EFFECT_WISH_GRANTERS_GIFT)) - to_chat(C, "You're already resurrecting!") - return - C.apply_status_effect(STATUS_EFFECT_WISH_GRANTERS_GIFT) - return 1 diff --git a/code/modules/awaymissions/super_secret_room.dm b/code/modules/awaymissions/super_secret_room.dm index a1ec18d25653..bef302de217c 100644 --- a/code/modules/awaymissions/super_secret_room.dm +++ b/code/modules/awaymissions/super_secret_room.dm @@ -12,7 +12,7 @@ /obj/structure/speaking_tile/Initialize() . = ..() - var/json_file = file("data/npc_saves/Poly.json") + var/json_file = file("data/npc_saves/Polly.json") if(!fexists(json_file)) return var/list/json = json_decode(file2text(json_file)) @@ -45,7 +45,7 @@ if(9) SpeakPeace(list("Alright maybe that's too boring.", "I can't keep manually typing these lines out though.", "It's hard to explain but the code structure I'm using is kind of terrible.")) if(10) - SpeakPeace(list("Oh I have an idea!", "Lets outsource this endless banter to Poly!", "Then you'll be able to keep listening to this without getting bored!")) + SpeakPeace(list("Oh I have an idea!", "Lets outsource this endless banter to Polly!", "Then you'll be able to keep listening to this without getting bored!")) if(isnull(shenanigans) || !shenanigans.len) shenanigans = list("Except the poly file is missing...") if(11 to 14, 16 to 50, 52 to 99, 103 to 107, 109 to 203, 205 to 249, 252 to 665, 667 to 999, 1001 to 5642) @@ -55,7 +55,7 @@ if(15) SpeakPeace(list("See? Isn't this fun?","Now you can mash this for hours without getting bored.","Anyway I'll leave you it.")) if(51) - SpeakPeace(list("The fun never ends around here.", "The Poly text files stores up to 500 statements.", "But you've probably heard a few repeats by now.")) + SpeakPeace(list("The fun never ends around here.", "The Polly text files stores up to 500 statements.", "But you've probably heard a few repeats by now.")) if(100) SpeakPeace(list("And that's a solid hundred.", "Good hustle I guess.", "You've probably heard a lot of repeats by now.")) if(101) @@ -129,7 +129,7 @@ var/newcolor = color2hex(pick(10;"green", 5;"blue", 3;"red", 1;"purple")) add_atom_colour(newcolor, FIXED_COLOUR_PRIORITY) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -138,7 +138,7 @@ if(!ismob(AM)) return var/mob/M = AM - INVOKE_ASYNC(src, .proc/do_hand_stuff, M) + INVOKE_ASYNC(src, PROC_REF(do_hand_stuff), M) /obj/item/rupee/proc/do_hand_stuff(mob/M) if(M.put_in_hands(src)) diff --git a/code/modules/balloon_alert/balloon_alert.dm b/code/modules/balloon_alert/balloon_alert.dm index c27372260789..db4453bfa6b6 100644 --- a/code/modules/balloon_alert/balloon_alert.dm +++ b/code/modules/balloon_alert/balloon_alert.dm @@ -12,7 +12,7 @@ /atom/proc/balloon_alert(mob/viewer, text) SHOULD_NOT_SLEEP(TRUE) - INVOKE_ASYNC(src, .proc/balloon_alert_perform, viewer, text) + INVOKE_ASYNC(src, PROC_REF(balloon_alert_perform), viewer, text) /// Create balloon alerts (text that floats up) to everything within range. /// Will only display to people who can see. @@ -79,7 +79,7 @@ easing = CUBIC_EASING | EASE_IN, ) - addtimer(CALLBACK(GLOBAL_PROC, .proc/remove_image_from_client, balloon_alert, viewer_client), BALLOON_TEXT_TOTAL_LIFETIME(duration_mult)) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(remove_image_from_client), balloon_alert, viewer_client), BALLOON_TEXT_TOTAL_LIFETIME(duration_mult)) #undef BALLOON_TEXT_CHAR_LIFETIME_INCREASE_MIN #undef BALLOON_TEXT_CHAR_LIFETIME_INCREASE_MULT diff --git a/code/modules/buildmode/buildmode.dm b/code/modules/buildmode/buildmode.dm index 8ee15ad72e2c..700485eb1d7f 100644 --- a/code/modules/buildmode/buildmode.dm +++ b/code/modules/buildmode/buildmode.dm @@ -15,19 +15,21 @@ // Switching management var/switch_state = BM_SWITCHSTATE_NONE - var/switch_width = 5 + var/switch_width = 4 // modeswitch UI var/atom/movable/screen/buildmode/mode/modebutton var/list/modeswitch_buttons = list() // dirswitch UI var/atom/movable/screen/buildmode/bdir/dirbutton var/list/dirswitch_buttons = list() + /// item preview for selected item + var/atom/movable/screen/buildmode/preview_item/preview /datum/buildmode/New(client/c) mode = new /datum/buildmode_mode/basic(src) holder = c buttons = list() - li_cb = CALLBACK(src, .proc/post_login) + li_cb = CALLBACK(src, PROC_REF(post_login)) holder.player_details.post_login_callbacks += li_cb holder.show_popup_menus = FALSE create_buttons() @@ -44,10 +46,15 @@ /datum/buildmode/Destroy() close_switchstates() + close_preview() holder.player_details.post_login_callbacks -= li_cb + QDEL_NULL(li_cb) holder = null + buttons.Cut() QDEL_NULL(mode) + QDEL_NULL(modebutton) QDEL_LIST(modeswitch_buttons) + QDEL_NULL(dirbutton) QDEL_LIST(dirswitch_buttons) return ..() @@ -72,7 +79,7 @@ buttons += new /atom/movable/screen/buildmode/quit(src) // build the lists of switching buttons build_options_grid(subtypesof(/datum/buildmode_mode), modeswitch_buttons, /atom/movable/screen/buildmode/modeswitch) - build_options_grid(list(SOUTH,EAST,WEST,NORTH,NORTHWEST), dirswitch_buttons, /atom/movable/screen/buildmode/dirswitch) + build_options_grid(GLOB.alldirs, dirswitch_buttons, /atom/movable/screen/buildmode/dirswitch) // this creates a nice offset grid for choosing between buildmode options, // because going "click click click ah hell" sucks. @@ -124,10 +131,41 @@ switch_state = BM_SWITCHSTATE_NONE holder.screen -= dirswitch_buttons +/datum/buildmode/proc/preview_selected_item(atom/typepath) + close_preview() + preview = new /atom/movable/screen/buildmode/preview_item(src) + preview.name = initial(typepath.name) + + // Scale the preview if it's bigger than one tile + var/mutable_appearance/preview_overlay = new(typepath) + var/icon/size_check = icon(initial(typepath.icon), icon_state = initial(typepath.icon_state)) + var/scale = 1 + var/width = size_check.Width() + var/height = size_check.Height() + if(width > world.icon_size || height > world.icon_size) + if(width >= height) + scale = world.icon_size / width + else + scale = world.icon_size / height + preview_overlay.transform = preview_overlay.transform.Scale(scale) + preview_overlay.appearance_flags |= TILE_BOUND + preview_overlay.layer = FLOAT_LAYER + preview_overlay.plane = FLOAT_PLANE + preview.add_overlay(preview_overlay) + + holder.screen += preview + +/datum/buildmode/proc/close_preview() + if(isnull(preview)) + return + holder.screen -= preview + QDEL_NULL(preview) + /datum/buildmode/proc/change_mode(newmode) mode.exit_mode(src) QDEL_NULL(mode) close_switchstates() + close_preview() mode = new newmode(src) mode.enter_mode(src) modebutton.update_appearance() diff --git a/code/modules/buildmode/buttons.dm b/code/modules/buildmode/buttons.dm index a1893b4b6232..a40cbcfa7a6d 100644 --- a/code/modules/buildmode/buttons.dm +++ b/code/modules/buildmode/buttons.dm @@ -89,3 +89,8 @@ /atom/movable/screen/buildmode/quit/Click() bd.quit() return 1 + +/atom/movable/screen/buildmode/preview_item + name = "Selected Item" + icon_state = "template" + screen_loc = "NORTH,WEST+4" diff --git a/code/modules/buildmode/effects/line.dm b/code/modules/buildmode/effects/line.dm index f38e0c53871b..394c0d205a51 100644 --- a/code/modules/buildmode/effects/line.dm +++ b/code/modules/buildmode/effects/line.dm @@ -3,6 +3,9 @@ var/client/cl /obj/effect/buildmode_line/New(client/C, atom/atom_a, atom/atom_b, linename) + if(!C || !atom_a || !atom_b) + stack_trace("Buildmode effect created with odd inputs") + return name = linename abstract_move(get_turf(atom_a)) I = image('icons/misc/mark.dmi', src, "line", 19.0) diff --git a/code/modules/buildmode/submodes/advanced.dm b/code/modules/buildmode/submodes/advanced.dm index de6e84f6a1eb..4fd6f30ca52b 100644 --- a/code/modules/buildmode/submodes/advanced.dm +++ b/code/modules/buildmode/submodes/advanced.dm @@ -1,23 +1,22 @@ /datum/buildmode_mode/advanced key = "advanced" - var/objholder = null + var/atom/objholder = null // FIXME: add logic which adds a button displaying the icon // of the currently selected path -/datum/buildmode_mode/advanced/show_help(client/c) - to_chat(c, "***********************************************************") - to_chat(c, "Right Mouse Button on buildmode button = Set object type") - to_chat(c, "Left Mouse Button + alt on turf/obj = Copy object type") - to_chat(c, "Left Mouse Button on turf/obj = Place objects") - to_chat(c, "Right Mouse Button = Delete objects") - to_chat(c, "
") - to_chat(c, "Use the button in the upper left corner to") - to_chat(c, "change the direction of built objects.") - to_chat(c, "***********************************************************") +/datum/buildmode_mode/advanced/show_help(client/target_client) + to_chat(target_client, span_purple(examine_block( + "[span_bold("Set object type")] -> Right Mouse Button on buildmode button\n\ + [span_bold("Copy object type")] -> Left Mouse Button + Alt on turf/obj\n\ + [span_bold("Place objects")] -> Left Mouse Button on turf/obj\n\ + [span_bold("Delete objects")] -> Right Mouse Button\n\ + \n\ + Use the button in the upper left corner to change the direction of built objects.")) + ) -/datum/buildmode_mode/advanced/change_settings(client/c) - var/target_path = input(c, "Enter typepath:", "Typepath", "/obj/structure/closet") +/datum/buildmode_mode/advanced/change_settings(client/target_client) + var/target_path = input(target_client, "Enter typepath:", "Typepath", "/obj/structure/closet") objholder = text2path(target_path) if(!ispath(objholder)) objholder = pick_closest_path(target_path) @@ -28,8 +27,9 @@ objholder = null alert("That path is not allowed.") return + BM.preview_selected_item(objholder) -/datum/buildmode_mode/advanced/handle_click(client/c, params, obj/object) +/datum/buildmode_mode/advanced/handle_click(client/target_client, params, obj/object) var/list/modifiers = params2list(params) var/left_click = LAZYACCESS(modifiers, LEFT_CLICK) var/right_click = LAZYACCESS(modifiers, RIGHT_CLICK) @@ -38,21 +38,27 @@ if(left_click && alt_click) if (istype(object, /turf) || istype(object, /obj) || istype(object, /mob)) objholder = object.type - to_chat(c, "[initial(object.name)] ([object.type]) selected.") + to_chat(target_client, "[initial(object.name)] ([object.type]) selected.") + BM.preview_selected_item(objholder) else - to_chat(c, "[initial(object.name)] is not a turf, object, or mob! Please select again.") + to_chat(target_client, "[initial(object.name)] is not a turf, object, or mob! Please select again.") else if(left_click) if(ispath(objholder,/turf)) var/turf/T = get_turf(object) - log_admin("Build Mode: [key_name(c)] modified [T] in [AREACOORD(object)] to [objholder]") - T.ChangeTurf(objholder) + log_admin("Build Mode: [key_name(target_client)] modified [T] in [AREACOORD(object)] to [objholder]") + T = T.ChangeTurf(objholder) + T.setDir(BM.build_dir) + else if(ispath(objholder, /obj/effect/turf_decal)) + var/turf/T = get_turf(object) + T.AddElement(/datum/element/decal, initial(objholder.icon), initial(objholder.icon_state), BM.build_dir, FALSE, initial(objholder.color), null, null, initial(objholder.alpha)) + log_admin("Build Mode: [key_name(target_client)] in [AREACOORD(object)] added a [initial(objholder.name)] decal with dir [BM.build_dir] to [T]") else if(!isnull(objholder)) var/obj/A = new objholder (get_turf(object)) A.setDir(BM.build_dir) - log_admin("Build Mode: [key_name(c)] modified [A]'s [COORD(A)] dir to [BM.build_dir]") + log_admin("Build Mode: [key_name(target_client)] modified [A]'s [COORD(A)] dir to [BM.build_dir]") else - to_chat(c, "Select object type first.") + to_chat(target_client, "Select object type first.") else if(right_click) if(isobj(object)) - log_admin("Build Mode: [key_name(c)] deleted [object] at [AREACOORD(object)]") + log_admin("Build Mode: [key_name(target_client)] deleted [object] at [AREACOORD(object)]") qdel(object) diff --git a/code/modules/buildmode/submodes/area_edit.dm b/code/modules/buildmode/submodes/area_edit.dm index 039f2897a888..b0d8925c0c85 100644 --- a/code/modules/buildmode/submodes/area_edit.dm +++ b/code/modules/buildmode/submodes/area_edit.dm @@ -1,5 +1,6 @@ /datum/buildmode_mode/area_edit key = "areaedit" + use_corner_selection = TRUE var/area/storedarea var/image/areaimage @@ -20,18 +21,19 @@ storedarea = null return ..() -/datum/buildmode_mode/area_edit/show_help(client/c) - to_chat(c, "***********************************************************") - to_chat(c, "Left Mouse Button on obj/turf/mob = Paint area") - to_chat(c, "Right Mouse Button on obj/turf/mob = Select area to paint") - to_chat(c, "Right Mouse Button on buildmode button = Create new area") - to_chat(c, "***********************************************************") +/datum/buildmode_mode/area_edit/show_help(client/target_client) + to_chat(target_client, span_purple(examine_block( + "[span_bold("Select corner")] -> Left Mouse Button on obj/turf/mob\n\ + [span_bold("Paint area")] -> Left Mouse Button + Alt on turf/obj/mob\n\ + [span_bold("Select area to paint")] -> Right Mouse Button on obj/turf/mob\n\ + [span_bold("Create new area")] -> Right Mouse Button on buildmode button")) + ) -/datum/buildmode_mode/area_edit/change_settings(client/c) - var/target_path = input(c, "Enter typepath:", "Typepath", "/area") +/datum/buildmode_mode/area_edit/change_settings(client/target_client) + var/target_path = input(target_client, "Enter typepath:", "Typepath", "/area") var/areatype = text2path(target_path) if(ispath(areatype,/area)) - var/areaname = input(c, "Enter area name:", "Area name", "Area") + var/areaname = input(target_client, "Enter area name:", "Area name", "Area") if(!areaname || !length(areaname)) return storedarea = new areatype @@ -42,18 +44,32 @@ storedarea.name = areaname areaimage.loc = storedarea // color our area -/datum/buildmode_mode/area_edit/handle_click(client/c, params, object) +/datum/buildmode_mode/area_edit/handle_click(client/target_client, params, object) var/list/modifiers = params2list(params) if(LAZYACCESS(modifiers, LEFT_CLICK)) if(!storedarea) - to_chat(c, "Configure or select the area you want to paint first!") + to_chat(target_client, "Configure or select the area you want to paint first!") return - var/turf/T = get_turf(object) - if(get_area(T) != storedarea) - log_admin("Build Mode: [key_name(c)] added [AREACOORD(T)] to [storedarea]") - storedarea.contents.Add(T) + if(LAZYACCESS(modifiers, ALT_CLICK)) + var/turf/T = get_turf(object) + if(get_area(T) != storedarea) + log_admin("Build Mode: [key_name(target_client)] added [AREACOORD(T)] to [storedarea]") + storedarea.contents.Add(T) + return + return ..() else if(LAZYACCESS(modifiers, RIGHT_CLICK)) var/turf/T = get_turf(object) storedarea = get_area(T) areaimage.loc = storedarea // color our area + +/datum/buildmode_mode/area_edit/handle_selected_area(client/target_client, params) + var/list/modifiers = params2list(params) + + if(LAZYACCESS(modifiers, LEFT_CLICK)) + var/choice = alert("Are you sure you want to fill area?", "Area Fill Confirmation", "Yes", "No") + if(choice != "Yes") + return + for(var/turf/T in block(get_turf(cornerA),get_turf(cornerB))) + storedarea.contents.Add(T) + log_admin("Build Mode: [key_name(target_client)] set the area of the region from [AREACOORD(cornerA)] through [AREACOORD(cornerB)] to [storedarea].") diff --git a/code/modules/buildmode/submodes/basic.dm b/code/modules/buildmode/submodes/basic.dm index 302ffba04f9f..180331e94ba8 100644 --- a/code/modules/buildmode/submodes/basic.dm +++ b/code/modules/buildmode/submodes/basic.dm @@ -1,18 +1,17 @@ /datum/buildmode_mode/basic key = "basic" -/datum/buildmode_mode/basic/show_help(client/c) - to_chat(c, "***********************************************************") - to_chat(c, "Left Mouse Button = Construct / Upgrade") - to_chat(c, "Right Mouse Button = Deconstruct / Delete / Downgrade") - to_chat(c, "Left Mouse Button + ctrl = R-Window") - to_chat(c, "Left Mouse Button + alt = Airlock") - to_chat(c, "
") - to_chat(c, "Use the button in the upper left corner to") - to_chat(c, "change the direction of built objects.") - to_chat(c, "***********************************************************") +/datum/buildmode_mode/basic/show_help(client/target_client) + to_chat(target_client, span_purple(examine_block( + "[span_bold("Construct / Upgrade")] -> Left Mouse Button\n\ + [span_bold("Deconstruct / Delete / Downgrade")] -> Right Mouse Button\n\ + [span_bold("R-Window")] -> Left Mouse Button + Ctrl\n\ + [span_bold("Airlock")] -> Left Mouse Button + Alt \n\ + \n\ + Use the button in the upper left corner to change the direction of built objects.")) + ) -/datum/buildmode_mode/basic/handle_click(client/c, params, obj/object) +/datum/buildmode_mode/basic/handle_click(client/target_client, params, obj/object) var/list/modifiers = params2list(params) var/left_click = LAZYACCESS(modifiers, LEFT_CLICK) @@ -30,10 +29,10 @@ T.PlaceOnTop(/turf/closed/wall) else if(iswallturf(object)) T.PlaceOnTop(/turf/closed/wall/r_wall) - log_admin("Build Mode: [key_name(c)] built [T] at [AREACOORD(T)]") + log_admin("Build Mode: [key_name(target_client)] built [T] at [AREACOORD(T)]") return else if(right_click) - log_admin("Build Mode: [key_name(c)] deleted [object] at [AREACOORD(object)]") + log_admin("Build Mode: [key_name(target_client)] deleted [object] at [AREACOORD(object)]") if(isturf(object)) var/turf/T = object T.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) @@ -41,13 +40,13 @@ qdel(object) return else if(istype(object,/turf) && alt_click && left_click) - log_admin("Build Mode: [key_name(c)] built an airlock at [AREACOORD(object)]") + log_admin("Build Mode: [key_name(target_client)] built an airlock at [AREACOORD(object)]") new/obj/machinery/door/airlock(get_turf(object)) else if(istype(object,/turf) && ctrl_click && left_click) var/obj/structure/window/reinforced/window - if(BM.build_dir == NORTHWEST) + if(BM.build_dir in GLOB.diagonals) window = new /obj/structure/window/reinforced/fulltile(get_turf(object)) else window = new /obj/structure/window/reinforced(get_turf(object)) - window.setDir(BM.build_dir) - log_admin("Build Mode: [key_name(c)] built a window at [AREACOORD(object)]") + window.setDir(BM.build_dir) + log_admin("Build Mode: [key_name(target_client)] built a window at [AREACOORD(object)]") diff --git a/code/modules/buildmode/submodes/boom.dm b/code/modules/buildmode/submodes/boom.dm index a8460956a0cf..f0837735c641 100644 --- a/code/modules/buildmode/submodes/boom.dm +++ b/code/modules/buildmode/submodes/boom.dm @@ -7,32 +7,33 @@ var/flash = -1 var/flames = -1 -/datum/buildmode_mode/boom/show_help(client/c) - to_chat(c, "***********************************************************") - to_chat(c, "Mouse Button on obj = Kaboom") - to_chat(c, "NOTE: Using the \"Config/Launch Supplypod\" verb allows you to do this in an IC way (i.e., making a cruise missile come down from the sky and explode wherever you click!)") - to_chat(c, "***********************************************************") +/datum/buildmode_mode/boom/show_help(client/target_client) + to_chat(target_client, span_purple(examine_block( + "[span_bold("Set explosion destructiveness")] -> Right Mouse Button on buildmode button\n\ + [span_bold("Kaboom")] -> Mouse Button on obj\n\n\ + [span_warning("NOTE:")] Using the \"Config/Launch Supplypod\" verb allows you to do this in an IC way (i.e., making a cruise missile come down from the sky and explode wherever you click!)")) + ) -/datum/buildmode_mode/boom/change_settings(client/c) - devastation = input(c, "Range of total devastation. -1 to none", text("Input")) as num|null +/datum/buildmode_mode/boom/change_settings(client/target_client) + devastation = input(target_client, "Range of total devastation. -1 to none", text("Input")) as num|null if(devastation == null) devastation = -1 - heavy = input(c, "Range of heavy impact. -1 to none", text("Input")) as num|null + heavy = input(target_client, "Range of heavy impact. -1 to none", text("Input")) as num|null if(heavy == null) heavy = -1 - light = input(c, "Range of light impact. -1 to none", text("Input")) as num|null + light = input(target_client, "Range of light impact. -1 to none", text("Input")) as num|null if(light == null) light = -1 - flash = input(c, "Range of flash. -1 to none", text("Input")) as num|null + flash = input(target_client, "Range of flash. -1 to none", text("Input")) as num|null if(flash == null) flash = -1 - flames = input(c, "Range of flames. -1 to none", text("Input")) as num|null + flames = input(target_client, "Range of flames. -1 to none", text("Input")) as num|null if(flames == null) flames = -1 -/datum/buildmode_mode/boom/handle_click(client/c, params, obj/object) +/datum/buildmode_mode/boom/handle_click(client/target_client, params, obj/object) var/list/modifiers = params2list(params) if(LAZYACCESS(modifiers, LEFT_CLICK)) explosion(object, devastation, heavy, light, flash, FALSE, TRUE, flames) - log_admin("Build Mode: [key_name(c)] caused an explosion(dev=[devastation], hvy=[heavy], lgt=[light], flash=[flash], flames=[flames]) at [AREACOORD(object)]") + log_admin("Build Mode: [key_name(target_client)] caused an explosion(dev=[devastation], hvy=[heavy], lgt=[light], flash=[flash], flames=[flames]) at [AREACOORD(object)]") diff --git a/code/modules/buildmode/submodes/copy.dm b/code/modules/buildmode/submodes/copy.dm index 7f189923b145..4ac7f9ec4796 100644 --- a/code/modules/buildmode/submodes/copy.dm +++ b/code/modules/buildmode/submodes/copy.dm @@ -6,21 +6,21 @@ stored = null return ..() -/datum/buildmode_mode/copy/show_help(client/c) - to_chat(c, "***********************************************************") - to_chat(c, "Left Mouse Button on obj/turf/mob = Spawn a Copy of selected target") - to_chat(c, "Right Mouse Button on obj/mob = Select target to copy") - to_chat(c, "***********************************************************") +/datum/buildmode_mode/copy/show_help(client/target_client) + to_chat(target_client, span_purple(examine_block( + "[span_bold("Spawn a copy of selected target")] -> Left Mouse Button on obj/turf/mob\n\ + [span_bold("Select target to copy")] -> Right Mouse Button on obj/mob")) + ) -/datum/buildmode_mode/copy/handle_click(client/c, params, obj/object) +/datum/buildmode_mode/copy/handle_click(client/target_client, params, obj/object) var/list/modifiers = params2list(params) if(LAZYACCESS(modifiers, LEFT_CLICK)) var/turf/T = get_turf(object) if(stored) DuplicateObject(stored, perfectcopy=1, sameloc=0,newloc=T) - log_admin("Build Mode: [key_name(c)] copied [stored] to [AREACOORD(object)]") + log_admin("Build Mode: [key_name(target_client)] copied [stored] to [AREACOORD(object)]") else if(LAZYACCESS(modifiers, RIGHT_CLICK)) if(ismovable(object)) // No copying turfs for now. - to_chat(c, "[object] set as template.") + to_chat(target_client, "[object] set as template.") stored = object diff --git a/code/modules/buildmode/submodes/delete.dm b/code/modules/buildmode/submodes/delete.dm new file mode 100644 index 000000000000..4ef4fe37156c --- /dev/null +++ b/code/modules/buildmode/submodes/delete.dm @@ -0,0 +1,61 @@ +/datum/buildmode_mode/delete + key = "delete" + +/datum/buildmode_mode/delete/show_help(client/target_client) + to_chat(target_client, span_purple(examine_block( + "[span_bold("Delete an object")] -> Left Mouse Button on obj/turf/mob\n\ + [span_bold("Delete all objects of a type")] -> Right Mouse Button on obj/turf/mob")) + ) +/datum/buildmode_mode/delete/handle_click(client/target_client, params, object) + var/list/pa = params2list(params) + var/left_click = pa.Find("left") + var/right_click = pa.Find("right") + + if(left_click) + if(isturf(object)) + var/turf/T = object + T.ScrapeAway(flags = CHANGETURF_INHERIT_AIR) + else if(isatom(object)) + qdel(object) + + if(right_click) + if(check_rights(R_DEBUG|R_SERVER)) //Prevents buildmoded non-admins from breaking everything. + if(isturf(object)) + return + var/atom/deleting = object + var/action_type = alert("Strict type ([deleting.type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel") + if(action_type == "Cancel" || !action_type) + return + + if(alert("Are you really sure you want to delete all instances of type [deleting.type]?",,"Yes","No") != "Yes") + return + + if(alert("Second confirmation required. Delete?",,"Yes","No") != "Yes") + return + + var/O_type = deleting.type + switch(action_type) + if("Strict type") + var/i = 0 + for(var/atom/Obj in world) + if(Obj.type == O_type) + i++ + qdel(Obj) + CHECK_TICK + if(!i) + to_chat(usr, "No instances of this type exist") + return + log_admin("[key_name(usr)] deleted all instances of type [O_type] ([i] instances deleted) ") + message_admins("[key_name(usr)] deleted all instances of type [O_type] ([i] instances deleted) ") + if("Type and subtypes") + var/i = 0 + for(var/Obj in world) + if(istype(Obj,O_type)) + i++ + qdel(Obj) + CHECK_TICK + if(!i) + to_chat(usr, "No instances of this type exist") + return + log_admin("[key_name(usr)] deleted all instances of type or subtype of [O_type] ([i] instances deleted) ") + message_admins("[key_name(usr)] deleted all instances of type or subtype of [O_type] ([i] instances deleted) ") diff --git a/code/modules/buildmode/submodes/fill.dm b/code/modules/buildmode/submodes/fill.dm index c02c51835653..75f4f2d221b7 100644 --- a/code/modules/buildmode/submodes/fill.dm +++ b/code/modules/buildmode/submodes/fill.dm @@ -1,18 +1,19 @@ +#define FILL_WARNING_MIN 150 + /datum/buildmode_mode/fill key = "fill" use_corner_selection = TRUE - var/objholder = null - -/datum/buildmode_mode/fill/show_help(client/c) - to_chat(c, "***********************************************************") - to_chat(c, "Left Mouse Button on turf/obj/mob = Select corner") - to_chat(c, "Left Mouse Button + Alt on turf/obj/mob = Delete region") - to_chat(c, "Right Mouse Button on buildmode button = Select object type") - to_chat(c, "***********************************************************") + var/atom/objholder = null -/datum/buildmode_mode/fill/change_settings(client/c) - var/target_path = input(c, "Enter typepath:" ,"Typepath","/obj/structure/closet") +/datum/buildmode_mode/fill/show_help(client/target_client) + to_chat(target_client, span_purple(examine_block( + "[span_bold("Select corner")] -> Left Mouse Button on turf/obj/mob\n\ + [span_bold("Delete region")] -> Left Mouse Button + Alt on turf/obj/mob\n\ + [span_bold("Select object type")] -> Right Mouse Button on buildmode button")) + ) +/datum/buildmode_mode/fill/change_settings(client/target_client) + var/target_path = input(target_client, "Enter typepath:" ,"Typepath","/obj/structure/closet") objholder = text2path(target_path) if(!ispath(objholder)) objholder = pick_closest_path(target_path) @@ -23,16 +24,17 @@ objholder = null alert("Area paths are not supported for this mode, use the area edit mode instead.") return + BM.preview_selected_item(objholder) deselect_region() -/datum/buildmode_mode/fill/handle_click(client/c, params, obj/object) +/datum/buildmode_mode/fill/handle_click(client/target_client, params, obj/object) if(isnull(objholder)) - to_chat(c, "Select an object type first.") + to_chat(target_client, "Select an object type first.") deselect_region() return ..() -/datum/buildmode_mode/fill/handle_selected_area(client/c, params) +/datum/buildmode_mode/fill/handle_selected_area(client/target_client, params) var/list/modifiers = params2list(params) if(LAZYACCESS(modifiers, LEFT_CLICK)) //rectangular @@ -47,14 +49,26 @@ for(var/beep in deletion_area) var/turf/T = beep T.AfterChange() - log_admin("Build Mode: [key_name(c)] deleted turfs from [AREACOORD(cornerA)] through [AREACOORD(cornerB)]") + log_admin("Build Mode: [key_name(target_client)] deleted turfs from [AREACOORD(cornerA)] through [AREACOORD(cornerB)]") // if there's an analogous proc for this on tg lmk // empty_region(block(get_turf(cornerA),get_turf(cornerB))) else + var/selection_size = abs(cornerA.x - cornerB.x) * abs(cornerA.y - cornerB.y) + + if(selection_size > FILL_WARNING_MIN) // Confirm fill if the number of tiles in the selection is greater than FILL_WARNING_MIN + var/choice = alert("Your selected area is [selection_size] tiles! Continue?", "Large Fill Confirmation", "Yes", "No") + if(choice != "Yes") + return + for(var/turf/T in block(get_turf(cornerA),get_turf(cornerB))) if(ispath(objholder,/turf)) - T.PlaceOnTop(objholder) + T = T.ChangeTurf(objholder) + T.setDir(BM.build_dir) + else if(ispath(objholder, /obj/effect/turf_decal)) + T.AddElement(/datum/element/decal, initial(objholder.icon), initial(objholder.icon_state), BM.build_dir, FALSE, initial(objholder.color), null, null, initial(objholder.alpha)) else var/obj/A = new objholder(T) A.setDir(BM.build_dir) - log_admin("Build Mode: [key_name(c)] with path [objholder], filled the region from [AREACOORD(cornerA)] through [AREACOORD(cornerB)]") + log_admin("Build Mode: [key_name(target_client)] with path [objholder], filled the region from [AREACOORD(cornerA)] through [AREACOORD(cornerB)]") + +#undef FILL_WARNING_MIN diff --git a/code/modules/buildmode/submodes/map_export.dm b/code/modules/buildmode/submodes/map_export.dm index 983801154afa..3684aaca408c 100644 --- a/code/modules/buildmode/submodes/map_export.dm +++ b/code/modules/buildmode/submodes/map_export.dm @@ -7,24 +7,24 @@ var/save_flag = SAVE_ALL var/static/is_running = FALSE -/datum/buildmode_mode/export/change_settings(client/c) +/datum/buildmode_mode/export/change_settings(client/target_client) var/static/list/options = list("Object Saving" = SAVE_OBJECTS, "Mob Saving" = SAVE_MOBS, "Turf Saving" = SAVE_TURFS, "Area Saving" = SAVE_AREAS, "Space Turf Saving" = SAVE_SPACE, "Object Property Saving" = SAVE_OBJECT_PROPERTIES) - var/what_to_change = tgui_input_list(c, "What export setting would you like to toggle?", "Map Exporter", options) + var/what_to_change = tgui_input_list(target_client, "What export setting would you like to toggle?", "Map Exporter", options) save_flag ^= options[what_to_change] - to_chat(c, "[what_to_change] is now [save_flag & options[what_to_change] ? "ENABLED" : "DISABLED"].") + to_chat(target_client, "[what_to_change] is now [save_flag & options[what_to_change] ? "ENABLED" : "DISABLED"].") -/datum/buildmode_mode/export/show_help(client/c) - to_chat(c, "***********************************************************") - to_chat(c, "Left Mouse Button on turf/obj/mob = Select corner") - to_chat(c, "Right Mouse Button on buildmode button = Set export options") - to_chat(c, "***********************************************************") +/datum/buildmode_mode/export/show_help(client/target_client) + to_chat(target_client, "***********************************************************") + to_chat(target_client, "Left Mouse Button on turf/obj/mob = Select corner") + to_chat(target_client, "Right Mouse Button on buildmode button = Set export options") + to_chat(target_client, "***********************************************************") -/datum/buildmode_mode/export/handle_selected_area(client/c, params) +/datum/buildmode_mode/export/handle_selected_area(client/target_client, params) var/list/modifiers = params2list(params) //Ensure the selection is actually done @@ -53,7 +53,7 @@ to_chat(usr, "Saving, please wait...") is_running = TRUE - log_admin("Build Mode: [key_name(c)] is exporting the map area from [AREACOORD(cornerA)] through [AREACOORD(cornerB)]") //I put this before the actual saving of the map because it likely won't log if it crashes the fucking server + log_admin("Build Mode: [key_name(target_client)] is exporting the map area from [AREACOORD(cornerA)] through [AREACOORD(cornerB)]") //I put this before the actual saving of the map because it likely won't log if it crashes the fucking server //oversimplified for readability and understandibility diff --git a/code/modules/buildmode/submodes/outfit.dm b/code/modules/buildmode/submodes/outfit.dm new file mode 100644 index 000000000000..56faf5d507cc --- /dev/null +++ b/code/modules/buildmode/submodes/outfit.dm @@ -0,0 +1,44 @@ +/datum/buildmode_mode/outfit + key = "outfit" + var/datum/outfit/dressuptime + +/datum/buildmode_mode/outfit/Destroy() + dressuptime = null + return ..() + +/datum/buildmode_mode/outfit/show_help(client/target_client) + to_chat(target_client, span_purple(examine_block( + "[span_bold("Select outfit to equip")] -> Right Mouse Button on buildmode button\n\ + [span_bold("Equip the selected outfit")] -> Left Mouse Button on mob/living/carbon/human\n\ + [span_bold("Strip and delete current outfit")] -> Right Mouse Button on mob/living/carbon/human")) + ) + +/datum/buildmode_mode/outfit/Reset() + . = ..() + dressuptime = null + +/datum/buildmode_mode/outfit/change_settings(client/target_client) + dressuptime = target_client.robust_dress_shop() + +/datum/buildmode_mode/outfit/handle_click(client/target_client, params, object) + var/list/pa = params2list(params) + var/left_click = pa.Find("left") + var/right_click = pa.Find("right") + + if(!ishuman(object)) + return + var/mob/living/carbon/human/dollie = object + + if(left_click) + if(isnull(dressuptime)) + to_chat(target_client, "Pick an outfit first.") + return + + for (var/item in dollie.get_equipped_items(TRUE)) + qdel(item) + if(dressuptime != "Naked") + dollie.equipOutfit(dressuptime) + + if(right_click) + for (var/item in dollie.get_equipped_items(TRUE)) + qdel(item) diff --git a/code/modules/buildmode/submodes/proccall.dm b/code/modules/buildmode/submodes/proccall.dm new file mode 100644 index 000000000000..47e7130aa386 --- /dev/null +++ b/code/modules/buildmode/submodes/proccall.dm @@ -0,0 +1,49 @@ +/datum/buildmode_mode/proccall + key = "proccall" + ///The procedure itself, which we will call in the future. For example "qdel" + var/proc_name = null + ///The list of arguments for the procedure. They may not be. They are selected in the same way in the game, and can be a datum, and other types. + var/list/proc_args = null + +/datum/buildmode_mode/proccall/show_help(client/target_client) + to_chat(target_client, span_purple(examine_block( + "[span_bold("Choose procedure and arguments")] -> Right Mouse Button on buildmode button\n\ + [span_bold("Apply procedure on object")] -> Left Mouse Button on machinery")) + ) + +/datum/buildmode_mode/proccall/change_settings(client/target_client) + if(!check_rights_for(target_client, R_DEBUG)) + return + + proc_name = input("Proc name, eg: fake_blood", "Proc:", null) as text|null + if(!proc_name) + return + + proc_args = target_client.get_callproc_args() + if(!proc_args) + return + +/datum/buildmode_mode/proccall/handle_click(client/target_client, params, datum/object as null|area|mob|obj|turf) + if(!proc_name || !proc_args) + tgui_alert(target_client, "Undefined ProcCall or arguments.") + return + + if(!hascall(object, proc_name)) + to_chat(target_client, span_warning("Error: callproc_datum(): type [object.type] has no proc named [proc_name]."), confidential = TRUE) + return + + if(!is_valid_src(object)) + to_chat(target_client, span_warning("Error: callproc_datum(): owner of proc no longer exists."), confidential = TRUE) + return + + + var/msg = "[key_name(target_client)] called [object]'s [proc_name]() with [proc_args.len ? "the arguments [list2params(proc_args)]":"no arguments"]." + log_admin(msg) + message_admins(msg) + admin_ticket_log(object, msg) + SSblackbox.record_feedback("tally", "admin_verb", 1, "Atom ProcCall") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + + var/returnval = WrapAdminProcCall(object, proc_name, proc_args) // Pass the lst as an argument list to the proc + . = target_client.get_callproc_returnval(returnval, proc_name) + if(.) + to_chat(target_client, ., confidential = TRUE) diff --git a/code/modules/buildmode/submodes/throwing.dm b/code/modules/buildmode/submodes/throwing.dm index c2e6a0029c50..0539d2ec4f9f 100644 --- a/code/modules/buildmode/submodes/throwing.dm +++ b/code/modules/buildmode/submodes/throwing.dm @@ -7,21 +7,21 @@ throw_atom = null return ..() -/datum/buildmode_mode/throwing/show_help(client/c) - to_chat(c, "***********************************************************") - to_chat(c, "Left Mouse Button on turf/obj/mob = Select") - to_chat(c, "Right Mouse Button on turf/obj/mob = Throw") - to_chat(c, "***********************************************************") +/datum/buildmode_mode/throwing/show_help(client/target_client) + to_chat(target_client, span_purple(examine_block( + "[span_bold("Select")] -> Left Mouse Button on turf/obj/mob\n\ + [span_bold("Throw")] -> Right Mouse Button on turf/obj/mob")) + ) -/datum/buildmode_mode/throwing/handle_click(client/c, params, obj/object) +/datum/buildmode_mode/throwing/handle_click(client/target_client, params, obj/object) var/list/modifiers = params2list(params) if(LAZYACCESS(modifiers, LEFT_CLICK)) if(isturf(object)) return throw_atom = object - to_chat(c, "Selected object '[throw_atom]'") + to_chat(target_client, "Selected object '[throw_atom]'") if(LAZYACCESS(modifiers, RIGHT_CLICK)) if(throw_atom) - throw_atom.throw_at(object, 10, 1, c.mob) - log_admin("Build Mode: [key_name(c)] threw [throw_atom] at [object] ([AREACOORD(object)])") + throw_atom.throw_at(object, 10, 1, target_client.mob) + log_admin("Build Mode: [key_name(target_client)] threw [throw_atom] at [object] ([AREACOORD(object)])") diff --git a/code/modules/buildmode/submodes/tweakcomps.dm b/code/modules/buildmode/submodes/tweakcomps.dm new file mode 100644 index 000000000000..4072f8dd8f2f --- /dev/null +++ b/code/modules/buildmode/submodes/tweakcomps.dm @@ -0,0 +1,34 @@ +/datum/buildmode_mode/tweakcomps + key = "tweakcomps" + /// This variable is responsible for the rating of the components themselves. Literally tiers of components, where 1 is standard, 4 is bluespace. + var/rating = null + +/datum/buildmode_mode/tweakcomps/show_help(client/target_client) + to_chat(target_client, span_purple(examine_block( + "[span_bold("Choose the rating of the components")] -> Right Mouse Button on buildmode button\n\ + [span_bold("Sets the chosen rating of the components on the machinery")] -> Left Mouse Button on machinery")) + ) + +/datum/buildmode_mode/tweakcomps/change_settings(client/target_client) + var/rating_to_choose = input(target_client, "Enter number of rating", "Number", "1") + rating_to_choose = text2num(rating_to_choose) + if(!isnum(rating_to_choose)) + tgui_alert(target_client, "Input a number.") + return + + rating = rating_to_choose + +/datum/buildmode_mode/tweakcomps/handle_click(client/target_client, params, obj/machinery/object) + if(!ismachinery(object)) + to_chat(target_client, span_warning("This isn't machinery!")) + return + + if(!object.component_parts) + to_chat(target_client, span_warning("This machinery doesn't have components!")) + return + + for(var/obj/item/stock_parts/P in object.component_parts) + P.rating = rating + object.RefreshParts() + + SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Machine Upgrade", "[rating]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/buildmode/submodes/variable_edit.dm b/code/modules/buildmode/submodes/variable_edit.dm index b03740e653bb..728c909860b5 100644 --- a/code/modules/buildmode/submodes/variable_edit.dm +++ b/code/modules/buildmode/submodes/variable_edit.dm @@ -9,52 +9,52 @@ valueholder = null return ..() -/datum/buildmode_mode/varedit/show_help(client/c) - to_chat(c, "***********************************************************") - to_chat(c, "Right Mouse Button on buildmode button = Select var(type) & value") - to_chat(c, "Left Mouse Button on turf/obj/mob = Set var(type) & value") - to_chat(c, "Right Mouse Button on turf/obj/mob = Reset var's value") - to_chat(c, "***********************************************************") +/datum/buildmode_mode/varedit/show_help(client/target_client) + to_chat(target_client, span_purple(examine_block( + "[span_bold("Select var(type) & value")] -> Right Mouse Button on buildmode button\n\ + [span_bold("Set var(type) & value")] -> Left Mouse Button on turf/obj/mob\n\ + [span_bold("Reset var's value")] -> Right Mouse Button on turf/obj/mob")) + ) /datum/buildmode_mode/varedit/Reset() . = ..() varholder = null valueholder = null -/datum/buildmode_mode/varedit/change_settings(client/c) - varholder = input(c, "Enter variable name:" ,"Name", "name") +/datum/buildmode_mode/varedit/change_settings(client/target_client) + varholder = input(target_client, "Enter variable name:" ,"Name", "name") if(!vv_varname_lockcheck(varholder)) return - var/temp_value = c.vv_get_value() + var/temp_value = target_client.vv_get_value() if(isnull(temp_value["class"])) Reset() - to_chat(c, "Variable unset.") + to_chat(target_client, "Variable unset.") return valueholder = temp_value["value"] -/datum/buildmode_mode/varedit/handle_click(client/c, params, obj/object) +/datum/buildmode_mode/varedit/handle_click(client/target_client, params, obj/object) var/list/modifiers = params2list(params) if(isnull(varholder)) - to_chat(c, "Choose a variable to modify first.") + to_chat(target_client, "Choose a variable to modify first.") return if(LAZYACCESS(modifiers, LEFT_CLICK)) if(object.vars.Find(varholder)) if(object.vv_edit_var(varholder, valueholder) == FALSE) - to_chat(c, "Your edit was rejected by the object.") + to_chat(target_client, "Your edit was rejected by the object.") return - log_admin("Build Mode: [key_name(c)] modified [object.name]'s [varholder] to [valueholder]") + log_admin("Build Mode: [key_name(target_client)] modified [object.name]'s [varholder] to [valueholder]") else - to_chat(c, "[initial(object.name)] does not have a var called '[varholder]'") + to_chat(target_client, "[initial(object.name)] does not have a var called '[varholder]'") if(LAZYACCESS(modifiers, RIGHT_CLICK)) if(object.vars.Find(varholder)) var/reset_value = initial(object.vars[varholder]) if(object.vv_edit_var(varholder, reset_value) == FALSE) - to_chat(c, "Your edit was rejected by the object.") + to_chat(target_client, "Your edit was rejected by the object.") return - log_admin("Build Mode: [key_name(c)] modified [object.name]'s [varholder] to [reset_value]") + log_admin("Build Mode: [key_name(target_client)] modified [object.name]'s [varholder] to [reset_value]") else - to_chat(c, "[initial(object.name)] does not have a var called '[varholder]'") + to_chat(target_client, "[initial(object.name)] does not have a var called '[varholder]'") diff --git a/code/modules/cargo/bounties/medical.dm b/code/modules/cargo/bounties/medical.dm index 5a3982f7df47..38f1fea99906 100644 --- a/code/modules/cargo/bounties/medical.dm +++ b/code/modules/cargo/bounties/medical.dm @@ -26,7 +26,7 @@ /datum/bounty/item/medical/liver name = "Livers" - description = "Multiple high-ranking CentCom diplomats have been hospitalized with liver failure after a recent meeting with Third Soviet Union ambassadors. Help us out, will you?" + description = "Multiple high-ranking CentCom diplomats have been hospitalized with liver failure after a recent meeting. Help us out, will you?" reward = 10000 required_count = 3 wanted_types = list(/obj/item/organ/liver) diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index 69ce2b4a4075..a3ece1cce8c6 100644 --- a/code/modules/cargo/bounties/reagent.dm +++ b/code/modules/cargo/bounties/reagent.dm @@ -238,10 +238,6 @@ /datum/reagent/medicine/atropine,\ /datum/reagent/medicine/cryoxadone,\ /datum/reagent/medicine/salbutamol,\ - /*WS Begin - No Cobby - /datum/reagent/medicine/C2/hercuri,\ - /datum/reagent/medicine/C2/probital,\ - WS End */ /datum/reagent/drug/methamphetamine,\ /datum/reagent/drug/crank,\ /datum/reagent/nitrous_oxide,\ diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm index 3e5938bbaa55..c0c316a1354a 100644 --- a/code/modules/cargo/centcom_podlauncher.dm +++ b/code/modules/cargo/centcom_podlauncher.dm @@ -1,3 +1,10 @@ +#define TAB_POD 0 //Used to check if the UIs built in camera is looking at the pod +#define TAB_BAY 1 //Used to check if the UIs built in camera is looking at the launch bay area + +#define LAUNCH_ALL 0 //Used to check if we're launching everything from the bay area at once +#define LAUNCH_ORDERED 1 //Used to check if we're launching everything from the bay area in order +#define LAUNCH_RANDOM 2 //Used to check if we're launching everything from the bay area randomly + //The Great and Mighty CentCom Pod Launcher - MrDoomBringer //This was originally created as a way to get adminspawned items to the station in an IC manner. It's evolved to contain a few more //features such as item removal, smiting, controllable delivery mobs, and more. @@ -13,19 +20,21 @@ set name = "Config/Launch Supplypod" set desc = "Configure and launch a CentCom supplypod full of whatever your heart desires!" set category = "Admin.Events" - var/datum/centcom_podlauncher/plaunch = new(usr)//create the datum - plaunch.ui_interact(usr)//datum has a tgui component, here we open the window + new /datum/centcom_podlauncher(usr)//create the datum //Variables declared to change how items in the launch bay are picked and launched. (Almost) all of these are changed in the ui_act proc //Some effect groups are choices, while other are booleans. This is because some effects can stack, while others dont (ex: you can stack explosion and quiet, but you cant stack ordered launch and random launch) /datum/centcom_podlauncher - var/static/list/ignored_atoms = typecacheof(list(null, /mob/dead, /obj/effect/landmark, /obj/docking_port, /atom/movable/lighting_object, /obj/effect/particle_effect/sparks, /obj/effect/DPtarget, /obj/effect/supplypod_selector)) + var/static/list/ignored_atoms = typecacheof(list(null, /mob/dead, /obj/effect/landmark, /obj/docking_port, /atom/movable/lighting_object, /obj/effect/particle_effect/sparks, /obj/effect/pod_landingzone, /obj/effect/hallucination/simple/supplypod_selector, /obj/effect/hallucination/simple/dropoff_location)) var/turf/oldTurf //Keeps track of where the user was at if they use the "teleport to centcom" button, so they can go back var/client/holder //client of whoever is using this datum - var/area/bay //What bay we're using to launch shit from. + var/area/centcom/supplypod/loading/bay //What bay we're using to launch shit from. + var/bayNumber //Quick reference to what bay we're in. Usually set to the loading_id variable for the related area type + var/customDropoff = FALSE + var/picking_dropoff_turf = FALSE var/launchClone = FALSE //If true, then we don't actually launch the thing in the bay. Instead we call duplicateObject() and send the result + var/launchChoice = LAUNCH_RANDOM //Determines if we launch all at once (0) , in order (1), or at random(2) var/launchRandomItem = FALSE //If true, lauches a single random item instead of everything on a turf. - var/launchChoice = 1 //Determines if we launch all at once (0) , in order (1), or at random(2) var/explosionChoice = 0 //Determines if there is no explosion (0), custom explosion (1), or just do a maxcap (2) var/damageChoice = 0 //Determines if we do no damage (0), custom amnt of damage (1), or gib + 5000dmg (2) var/launcherActivated = FALSE //check if we've entered "launch mode" (when we click a pod is launched). Used for updating mouse cursor @@ -37,57 +46,126 @@ var/list/orderedArea = list() //Contains an ordered list of turfs in an area (filled in the createOrderedArea() proc), read top-left to bottom-right. Used for the "ordered" launch mode (launchChoice = 1) var/list/turf/acceptableTurfs = list() //Contians a list of turfs (in the "bay" area on centcom) that have items that can be launched. Taken from orderedArea var/list/launchList = list() //Contains whatever is going to be put in the supplypod and fired. Taken from acceptableTurfs - var/obj/effect/supplypod_selector/selector = new() //An effect used for keeping track of what item is going to be launched when in "ordered" mode (launchChoice = 1) + var/obj/effect/hallucination/simple/supplypod_selector/selector //An effect used for keeping track of what item is going to be launched when in "ordered" mode (launchChoice = 1) + var/obj/effect/hallucination/simple/dropoff_location/indicator var/obj/structure/closet/supplypod/centcompod/temp_pod //The temporary pod that is modified by this datum, then cloned. The buildObject() clone of this pod is what is launched -/datum/centcom_podlauncher/New(H)//H can either be a client or a mob due to byondcode(tm) - if (istype(H,/client)) - var/client/C = H - holder = C //if its a client, assign it to holder + // Stuff needed to render the map + var/map_name + var/atom/movable/screen/map_view/cam_screen + var/list/cam_plane_masters + var/atom/movable/screen/background/cam_background + var/tabIndex = 1 + var/renderLighting = FALSE + +/datum/centcom_podlauncher/New(user) //user can either be a client or a mob + if (user) //Prevents runtimes on datums being made without clients + setup(user) + +/datum/centcom_podlauncher/proc/setup(user) //H can either be a client or a mob + if (istype(user,/client)) + var/client/user_client = user + holder = user_client //if its a client, assign it to holder else - var/mob/M = H - holder = M.client //if its a mob, assign the mob's client to holder + var/mob/user_mob = user + holder = user_mob.client //if its a mob, assign the mob's client to holder bay = locate(/area/centcom/supplypod/loading/one) in GLOB.sortedAreas //Locate the default bay (one) from the centcom map - temp_pod = new(locate(/area/centcom/supplypod/podStorage) in GLOB.sortedAreas) //Create a new temp_pod in the podStorage area on centcom (so users are free to look at it and change other variables if needed) + bayNumber = bay.loading_id //Used as quick reference to what bay we're taking items from + var/area/pod_storage_area = locate(/area/centcom/supplypod/pod_storage) in GLOB.sortedAreas + temp_pod = new(pick(get_area_turfs(pod_storage_area))) //Create a new temp_pod in the podStorage area on centcom (so users are free to look at it and change other variables if needed) orderedArea = createOrderedArea(bay) //Order all the turfs in the selected bay (top left to bottom right) to a single list. Used for the "ordered" mode (launchChoice = 1) + selector = new(null, holder.mob) + indicator = new(null, holder.mob) + setDropoff(bay) + initMap() + refreshBay() + ui_interact(holder.mob) + +/datum/centcom_podlauncher/proc/initMap() + if(map_name) + holder.clear_map(map_name) + + map_name = "admin_supplypod_bay_[REF(src)]_map" + // Initialize map objects + cam_screen = new + cam_screen.name = "screen" + cam_screen.assigned_map = map_name + cam_screen.del_on_map_removal = TRUE + cam_screen.screen_loc = "[map_name]:1,1" + cam_plane_masters = list() + for(var/plane in subtypesof(/atom/movable/screen/plane_master)) + var/atom/movable/screen/instance = new plane() + if (!renderLighting && instance.plane == LIGHTING_PLANE) + instance.alpha = 100 + instance.assigned_map = map_name + instance.del_on_map_removal = TRUE + instance.screen_loc = "[map_name]:CENTER" + cam_plane_masters += instance + cam_background = new + cam_background.assigned_map = map_name + cam_background.del_on_map_removal = TRUE + refreshView() + holder.register_map_obj(cam_screen) + for(var/plane in cam_plane_masters) + holder.register_map_obj(plane) + holder.register_map_obj(cam_background) /datum/centcom_podlauncher/ui_state(mob/user) + if (SSticker.current_state >= GAME_STATE_FINISHED) + return GLOB.always_state //Allow the UI to be given to players by admins after roundend return GLOB.admin_state +/datum/centcom_podlauncher/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/supplypods), + ) + /datum/centcom_podlauncher/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) + // Open UI ui = new(user, src, "CentcomPodLauncher") ui.open() + refreshView() + +/datum/centcom_podlauncher/ui_static_data(mob/user) + var/list/data = list() + data["mapRef"] = map_name + data["defaultSoundVolume"] = initial(temp_pod.soundVolume) //default volume for pods + return data /datum/centcom_podlauncher/ui_data(mob/user) //Sends info about the pod to the UI. var/list/data = list() //*****NOTE*****: Many of these comments are similarly described in supplypod.dm. If you change them here, please consider doing so in the supplypod code as well! - var/B = (istype(bay, /area/centcom/supplypod/loading/one)) ? 1 : (istype(bay, /area/centcom/supplypod/loading/two)) ? 2 : (istype(bay, /area/centcom/supplypod/loading/three)) ? 3 : (istype(bay, /area/centcom/supplypod/loading/four)) ? 4 : (istype(bay, /area/centcom/supplypod/loading/ert)) ? 5 : 0 //top ten THICCEST FUCKING TERNARY CONDITIONALS OF 2036 - data["bay"] = bay //Holds the current bay the user is launching objects from. Bays are specific rooms on the centcom map. - data["bayNumber"] = B //Holds the bay as a number. Useful for comparisons in centcom_podlauncher.ract + bayNumber = bay?.loading_id //Used as quick reference to what bay we're taking items from + data["bayNumber"] = bayNumber //Holds the bay as a number. Useful for comparisons in centcom_podlauncher.ract data["oldArea"] = (oldTurf ? get_area(oldTurf) : null) //Holds the name of the area that the user was in before using the teleportCentcom action + data["picking_dropoff_turf"] = picking_dropoff_turf //If we're picking or have picked a dropoff turf. Only works when pod is in reverse mode + data["customDropoff"] = customDropoff + data["renderLighting"] = renderLighting data["launchClone"] = launchClone //Do we launch the actual items in the bay or just launch clones of them? data["launchRandomItem"] = launchRandomItem //Do we launch a single random item instead of everything on the turf? data["launchChoice"] = launchChoice //Launch turfs all at once (0), ordered (1), or randomly(1) data["explosionChoice"] = explosionChoice //An explosion that occurs when landing. Can be no explosion (0), custom explosion (1), or maxcap (2) data["damageChoice"] = damageChoice //Damage that occurs to any mob under the pod when it lands. Can be no damage (0), custom damage (1), or gib+5000dmg (2) - data["fallDuration"] = temp_pod.fallDuration //How long the pod's falling animation lasts - data["landingDelay"] = temp_pod.landingDelay //How long the pod takes to land after launching - data["openingDelay"] = temp_pod.openingDelay //How long the pod takes to open after landing - data["departureDelay"] = temp_pod.departureDelay //How long the pod takes to leave after opening (if bluespace=true, it deletes. if reversing=true, it flies back to centcom) - data["styleChoice"] = temp_pod.style //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the POD_STYLES list in cargo.dm defines to get the proper icon/name/desc for the pod. + data["delays"] = temp_pod.delays + data["rev_delays"] = temp_pod.reverse_delays + data["custom_rev_delay"] = temp_pod.custom_rev_delay + data["styleChoice"] = temp_pod.style //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the GLOB.podstyles list in cargo.dm defines to get the proper icon/name/desc for the pod. data["effectStun"] = temp_pod.effectStun //If true, stuns anyone under the pod when it launches until it lands, forcing them to get hit by the pod. Devilish! data["effectLimb"] = temp_pod.effectLimb //If true, pops off a limb (if applicable) from anyone caught under the pod when it lands data["effectOrgans"] = temp_pod.effectOrgans //If true, yeets the organs out of any bodies caught under the pod when it lands data["effectBluespace"] = temp_pod.bluespace //If true, the pod deletes (in a shower of sparks) after landing - data["effectStealth"] = temp_pod.effectStealth //If true, a target icon isnt displayed on the turf where the pod will land + data["effectStealth"] = temp_pod.effectStealth //If true, a target icon isn't displayed on the turf where the pod will land data["effectQuiet"] = temp_pod.effectQuiet //The female sniper. If true, the pod makes no noise (including related explosions, opening sounds, etc) data["effectMissile"] = temp_pod.effectMissile //If true, the pod deletes the second it lands. If you give it an explosion, it will act like a missile exploding as it hits the ground data["effectCircle"] = temp_pod.effectCircle //If true, allows the pod to come in at any angle. Bit of a weird feature but whatever its here data["effectBurst"] = effectBurst //IOf true, launches five pods at once (with a very small delay between for added coolness), in a 3x3 area centered around the area data["effectReverse"] = temp_pod.reversing //If true, the pod will not send any items. Instead, after opening, it will close again (picking up items/mobs) and fly back to centcom + data["reverseOptionList"] = temp_pod.reverseOptionList data["effectTarget"] = specificTarget //Launches the pod at the turf of a specific mob target, rather than wherever the user clicked. Useful for smites data["effectName"] = temp_pod.adminNamed //Determines whether or not the pod has been named by an admin. If true, the pod's name will not get overridden when the style of the pod changes (changing the style of the pod normally also changes the name+desc) + data["podName"] = temp_pod.name + data["podDesc"] = temp_pod.desc data["effectAnnounce"] = effectAnnounce data["giveLauncher"] = launcherActivated //If true, the user is in launch mode, and whenever they click a pod will be launched (either at their mouse position or at a specific target) data["numObjects"] = numTurfs //Counts the number of turfs that contain a launchable object in the centcom supplypod bay @@ -95,7 +173,7 @@ data["landingSound"] = temp_pod.landingSound //Admin sound to play when the pod lands data["openingSound"] = temp_pod.openingSound //Admin sound to play when the pod opens data["leavingSound"] = temp_pod.leavingSound //Admin sound to play when the pod leaves - data["soundVolume"] = temp_pod.soundVolume != initial(temp_pod.soundVolume) //Admin sound to play when the pod leaves + data["soundVolume"] = temp_pod.soundVolume //Admin sound to play when the pod leaves return data /datum/centcom_podlauncher/ui_act(action, params) @@ -104,49 +182,72 @@ return switch(action) ////////////////////////////UTILITIES////////////////// - if("bay1") - bay = locate(/area/centcom/supplypod/loading/one) in GLOB.sortedAreas //set the "bay" variable to the corresponding room in centcom - refreshBay() //calls refreshBay() which "recounts" the bay to see what items we can launch (among other things). - . = TRUE - if("bay2") - bay = locate(/area/centcom/supplypod/loading/two) in GLOB.sortedAreas + if("gamePanel") + holder.holder.Game() + SSblackbox.record_feedback("tally", "admin_verb", 1, "Game Panel") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + . = TRUE + if("buildMode") + var/mob/holder_mob = holder.mob + if (holder_mob) + togglebuildmode(holder_mob) + SSblackbox.record_feedback("tally", "admin_verb", 1, "Toggle Build Mode") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + . = TRUE + if("loadDataFromPreset") + var/list/savedData = params["payload"] + loadData(savedData) + . = TRUE + if("switchBay") + bayNumber = params["bayNumber"] refreshBay() . = TRUE - if("bay3") - bay = locate(/area/centcom/supplypod/loading/three) in GLOB.sortedAreas - refreshBay() - . = TRUE - if("bay4") - bay = locate(/area/centcom/supplypod/loading/four) in GLOB.sortedAreas - refreshBay() + if("pickDropoffTurf") //Enters a mode that lets you pick the dropoff location for reverse pods + if (picking_dropoff_turf) + picking_dropoff_turf = FALSE + updateCursor() //Update the cursor of the user to a cool looking target icon + return + if (launcherActivated) + launcherActivated = FALSE //We don't want to have launch mode enabled while we're picking a turf + picking_dropoff_turf = TRUE + updateCursor() //Update the cursor of the user to a cool looking target icon . = TRUE - if("bay5") - bay = locate(/area/centcom/supplypod/loading/ert) in GLOB.sortedAreas - refreshBay() + if("clearDropoffTurf") + setDropoff(bay) + customDropoff = FALSE + picking_dropoff_turf = FALSE + updateCursor() . = TRUE - if("teleportCentcom") //Teleports the user to the centcom supply loading facility. + if("teleportDropoff") //Teleports the user to the dropoff point. var/mob/M = holder.mob //We teleport whatever mob the client is attached to at the point of clicking - oldTurf = get_turf(M) //Used for the "teleportBack" action - var/area/A = locate(bay) in GLOB.sortedAreas - var/list/turfs = list() - for(var/turf/T in A) - turfs.Add(T) //Fill a list with turfs in the area - if (!length(turfs)) //If the list is empty, error and cancel - to_chat(M, "Nowhere to jump to!") - return //Only teleport if the list isn't empty - var/turf/T = pick(turfs) - M.forceMove(T) //Perform the actual teleport - log_admin("[key_name(usr)] jumped to [AREACOORD(A)]") - message_admins("[key_name_admin(usr)] jumped to [AREACOORD(A)]") + var/turf/current_location = get_turf(M) + var/list/coordinate_list = temp_pod.reverse_dropoff_coords + var/turf/dropoff_turf = locate(coordinate_list[1], coordinate_list[2], coordinate_list[3]) + if (current_location != dropoff_turf) + oldTurf = current_location + M.forceMove(dropoff_turf) //Perform the actual teleport + log_admin("[key_name(usr)] jumped to [AREACOORD(dropoff_turf)]") + message_admins("[key_name_admin(usr)] jumped to [AREACOORD(dropoff_turf)]") . = TRUE - if("teleportBack") //After teleporting to centcom, this button allows the user to teleport to the last spot they were at. + if("teleportCentcom") //Teleports the user to the centcom supply loading facility. + var/mob/holder_mob = holder.mob //We teleport whatever mob the client is attached to at the point of clicking + var/turf/current_location = get_turf(holder_mob) + var/area/bay_area = bay + if (current_location.loc != bay_area) + oldTurf = current_location + var/turf/teleport_turf = pick(get_area_turfs(bay_area)) + holder_mob.forceMove(teleport_turf) //Perform the actual teleport + if (holder.holder) + log_admin("[key_name(usr)] jumped to [AREACOORD(teleport_turf)]") + message_admins("[key_name_admin(usr)] jumped to [AREACOORD(teleport_turf)]") + . = TRUE + if("teleportBack") //After teleporting to centcom/dropoff, this button allows the user to teleport to the last spot they were at. var/mob/M = holder.mob if (!oldTurf) //If theres no turf to go back to, error and cancel to_chat(M, "Nowhere to jump to!") return M.forceMove(oldTurf) //Perform the actual teleport - log_admin("[key_name(usr)] jumped to [AREACOORD(oldTurf)]") - message_admins("[key_name_admin(usr)] jumped to [AREACOORD(oldTurf)]") + if (holder.holder) + log_admin("[key_name(usr)] jumped to [AREACOORD(oldTurf)]") + message_admins("[key_name_admin(usr)] jumped to [AREACOORD(oldTurf)]") . = TRUE ////////////////////////////LAUNCH STYLE CHANGES////////////////// @@ -154,22 +255,21 @@ launchClone = !launchClone . = TRUE if("launchRandomItem") //Pick random turfs from the supplypod bay at centcom to launch - launchRandomItem = !launchRandomItem + launchRandomItem = TRUE + . = TRUE + if("launchWholeTurf") //Pick random turfs from the supplypod bay at centcom to launch + launchRandomItem = FALSE + . = TRUE + if("launchAll") //Launch turfs (from the orderedArea list) all at once, from the supplypod bay at centcom + launchChoice = LAUNCH_ALL + updateSelector() . = TRUE if("launchOrdered") //Launch turfs (from the orderedArea list) one at a time in order, from the supplypod bay at centcom - if (launchChoice == 1) //launchChoice 1 represents ordered. If we push "ordered" and it already is, then we go to default value - launchChoice = 0 - updateSelector() //Move the selector effect to the next object that will be launched. See variable declarations for more info on the selector effect. - return - launchChoice = 1 + launchChoice = LAUNCH_ORDERED updateSelector() . = TRUE if("launchRandomTurf") //Pick random turfs from the supplypod bay at centcom to launch - if (launchChoice == 2) - launchChoice = 0 - updateSelector() - return - launchChoice = 2 + launchChoice = LAUNCH_RANDOM updateSelector() . = TRUE @@ -182,11 +282,11 @@ var/list/expNames = list("Devastation", "Heavy Damage", "Light Damage", "Flame") //Explosions have a range of different types of damage var/list/boomInput = list() for (var/i=1 to expNames.len) //Gather input from the user for the value of each type of damage - boomInput.Add(input("[expNames[i]] Range", "Enter the [expNames[i]] range of the explosion. WARNING: This ignores the bomb cap!", 0) as null|num) + boomInput.Add(input("Enter the [expNames[i]] range of the explosion. WARNING: This ignores the bomb cap!", "[expNames[i]] Range", 0) as null|num) if (isnull(boomInput[i])) return if (!isnum(boomInput[i])) //If the user doesn't input a number, set that specific explosion value to zero - alert(usr, "That wasnt a number! Value set to default (zero) instead.") + alert(usr, "That wasn't a number! Value set to default (zero) instead.") boomInput = 0 explosionChoice = 1 temp_pod.explosionSize = boomInput @@ -204,11 +304,11 @@ damageChoice = 0 temp_pod.damage = 0 return - var/damageInput = input("How much damage to deal", "Enter the amount of brute damage dealt by getting hit", 0) as null|num + var/damageInput = input("Enter the amount of brute damage dealt by getting hit","How much damage to deal", 0) as null|num if (isnull(damageInput)) return if (!isnum(damageInput)) //Sanitize the input for damage to deal.s - alert(usr, "That wasnt a number! Value set to default (zero) instead.") + alert(usr, "That wasn't a number! Value set to default (zero) instead.") damageInput = 0 damageChoice = 1 temp_pod.damage = damageInput @@ -228,10 +328,10 @@ temp_pod.adminNamed = FALSE temp_pod.setStyle(temp_pod.style) //This resets the name of the pod based on it's current style (see supplypod/setStyle() proc) return - var/nameInput= input("Custom name", "Enter a custom name", POD_STYLES[temp_pod.style][POD_NAME]) as null|text //Gather input for name and desc + var/nameInput= input("Custom name", "Enter a custom name", GLOB.podstyles[temp_pod.style][POD_NAME]) as null|text //Gather input for name and desc if (isnull(nameInput)) return - var/descInput = input("Custom description", "Enter a custom desc", POD_STYLES[temp_pod.style][POD_DESC]) as null|text //The POD_STYLES is used to get the name, desc, or icon state based on the pod's style + var/descInput = input("Custom description", "Enter a custom desc", GLOB.podstyles[temp_pod.style][POD_DESC]) as null|text //The GLOB.podstyles is used to get the name, desc, or icon state based on the pod's style if (isnull(descInput)) return temp_pod.name = nameInput @@ -270,6 +370,14 @@ . = TRUE if("effectReverse") //Toggle: Don't send any items. Instead, after landing, close (taking any objects inside) and go back to the centcom bay it came from temp_pod.reversing = !temp_pod.reversing + if (temp_pod.reversing) + indicator.alpha = 150 + else + indicator.alpha = 0 + . = TRUE + if("reverseOption") + var/reverseOption = params["reverseOption"] + temp_pod.reverseOptionList[reverseOption] = !temp_pod.reverseOptionList[reverseOption] . = TRUE if("effectTarget") //Toggle: Launch at a specific mob (instead of at whatever turf you click on). Used for the supplypod smite if (specificTarget) @@ -284,71 +392,50 @@ . = TRUE ////////////////////////////TIMER DELAYS////////////////// - if("fallDuration") //Change the time it takes the pod to land, after firing - if (temp_pod.fallDuration != initial(temp_pod.fallDuration)) //If the landing delay has already been changed when we push the "change value" button, then set it to default - temp_pod.fallDuration = initial(temp_pod.fallDuration) - return - var/timeInput = input("Enter the duration of the pod's falling animation, in seconds", "Delay Time", initial(temp_pod.fallDuration) * 0.1) as null|num - if (isnull(timeInput)) - return - if (!isnum(timeInput)) //Sanitize input, if it doesnt check out, error and set to default - alert(usr, "That wasnt a number! Value set to default ([initial(temp_pod.fallDuration)*0.1]) instead.") - timeInput = initial(temp_pod.fallDuration) - temp_pod.fallDuration = 10 * timeInput - . = TRUE - if("landingDelay") //Change the time it takes the pod to land, after firing - if (temp_pod.landingDelay != initial(temp_pod.landingDelay)) //If the landing delay has already been changed when we push the "change value" button, then set it to default - temp_pod.landingDelay = initial(temp_pod.landingDelay) - return - var/timeInput = input("Enter the time it takes for the pod to land, in seconds", "Delay Time", initial(temp_pod.landingDelay) * 0.1) as null|num - if (isnull(timeInput)) - return - if (!isnum(timeInput)) //Sanitize input, if it doesnt check out, error and set to default - alert(usr, "That wasnt a number! Value set to default ([initial(temp_pod.landingDelay)*0.1]) instead.") - timeInput = initial(temp_pod.landingDelay) - temp_pod.landingDelay = 10 * timeInput - . = TRUE - if("openingDelay") //Change the time it takes the pod to open it's door (and release its contents) after landing - if (temp_pod.openingDelay != initial(temp_pod.openingDelay)) //If the opening delay has already been changed when we push the "change value" button, then set it to default - temp_pod.openingDelay = initial(temp_pod.openingDelay) - return - var/timeInput = input("Enter the time it takes for the pod to open after landing, in seconds", "Delay Time", initial(temp_pod.openingDelay) * 0.1) as null|num - if (isnull(timeInput)) - return - if (!isnum(timeInput)) //Sanitize input - alert(usr, "That wasnt a number! Value set to default ([initial(temp_pod.openingDelay)*0.1]) instead.") - timeInput = initial(temp_pod.openingDelay) - temp_pod.openingDelay = 10 * timeInput - . = TRUE - if("departureDelay") //Change the time it takes the pod to leave (if bluespace = true it just deletes, if effectReverse = true it goes back to centcom) - if (temp_pod.departureDelay != initial(temp_pod.departureDelay)) //If the departure delay has already been changed when we push the "change value" button, then set it to default - temp_pod.departureDelay = initial(temp_pod.departureDelay) - return - var/timeInput = input("Enter the time it takes for the pod to leave after opening, in seconds", "Delay Time", initial(temp_pod.departureDelay) * 0.1) as null|num - if (isnull(timeInput)) - return - if (!isnum(timeInput)) - alert(usr, "That wasnt a number! Value set to default ([initial(temp_pod.departureDelay)*0.1]) instead.") - timeInput = initial(temp_pod.departureDelay) - temp_pod.departureDelay = 10 * timeInput + if("editTiming") //Change the different timers relating to the pod + var/delay = params["timer"] + var/value = params["value"] + var/reverse = params["reverse"] + if (reverse) + temp_pod.reverse_delays[delay] = value * 10 + else + temp_pod.delays[delay] = value * 10 + . = TRUE + if("resetTiming") + temp_pod.delays = list(POD_TRANSIT = 20, POD_FALLING = 4, POD_OPENING = 30, POD_LEAVING = 30) + temp_pod.reverse_delays = list(POD_TRANSIT = 20, POD_FALLING = 4, POD_OPENING = 30, POD_LEAVING = 30) + . = TRUE + if("toggleRevDelays") + temp_pod.custom_rev_delay = !temp_pod.custom_rev_delay . = TRUE - ////////////////////////////ADMIN SOUNDS////////////////// if("fallingSound") //Admin sound from a local file that plays when the pod lands if ((temp_pod.fallingSound) != initial(temp_pod.fallingSound)) temp_pod.fallingSound = initial(temp_pod.fallingSound) temp_pod.fallingSoundLength = initial(temp_pod.fallingSoundLength) return - var/soundInput = input(holder, "Please pick a sound file to play when the pod lands! NOTICE: Take a note of exactly how long the sound is.", "Pick a Sound File") as null|sound + var/soundInput = input(holder, "Please pick a sound file to play when the pod lands! Sound will start playing and try to end when the pod lands", "Pick a Sound File") as null|sound if (isnull(soundInput)) return - var/timeInput = input(holder, "What is the exact length of the sound file, in seconds. This number will be used to line the sound up so that it finishes right as the pod lands!", "Pick a Sound File", 0.3) as null|num - if (isnull(timeInput)) - return - if (!isnum(timeInput)) - alert(usr, "That wasnt a number! Value set to default ([initial(temp_pod.fallingSoundLength)*0.1]) instead.") + var/sound/tempSound = sound(soundInput) + playsound(holder.mob, tempSound, 1) + var/list/sounds_list = holder.SoundQuery() + var/soundLen = 0 + for (var/playing_sound in sounds_list) + if (isnull(playing_sound)) + stack_trace("client.SoundQuery() Returned a list containing a null sound! Somehow!") + continue + var/sound/found = playing_sound + if (found.file == tempSound.file) + soundLen = found.len + if (!soundLen) + soundLen = input(holder, "Couldn't auto-determine sound file length. What is the exact length of the sound file, in seconds. This number will be used to line the sound up so that it finishes right as the pod lands!", "Pick a Sound File", 0.3) as null|num + if (isnull(soundLen)) + return + if (!isnum(soundLen)) + alert(usr, "That wasn't a number! Value set to default ([initial(temp_pod.fallingSoundLength)*0.1]) instead.") temp_pod.fallingSound = soundInput - temp_pod.fallingSoundLength = 10 * timeInput + temp_pod.fallingSoundLength = 10 * soundLen . = TRUE if("landingSound") //Admin sound from a local file that plays when the pod lands if (!isnull(temp_pod.landingSound)) @@ -387,53 +474,32 @@ temp_pod.soundVolume = soundInput . = TRUE ////////////////////////////STYLE CHANGES////////////////// - //Style is a value that is used to keep track of what the pod is supposed to look like. It can be used with the POD_STYLES list (in cargo.dm defines) + //Style is a value that is used to keep track of what the pod is supposed to look like. It can be used with the GLOB.podstyles list (in cargo.dm defines) //as a way to get the proper icon state, name, and description of the pod. - if("styleStandard") - temp_pod.setStyle(STYLE_STANDARD) - . = TRUE - if("styleBluespace") - temp_pod.setStyle(STYLE_BLUESPACE) - . = TRUE - if("styleSyndie") - temp_pod.setStyle(STYLE_SYNDICATE) - . = TRUE - if("styleBlue") - temp_pod.setStyle(STYLE_BLUE) - . = TRUE - if("styleCult") - temp_pod.setStyle(STYLE_CULT) - . = TRUE - if("styleMissile") - temp_pod.setStyle(STYLE_MISSILE) - . = TRUE - if("styleSMissile") - temp_pod.setStyle(STYLE_RED_MISSILE) - . = TRUE - if("styleBox") - temp_pod.setStyle(STYLE_BOX) + if("tabSwitch") + tabIndex = params["tabIndex"] + refreshView() . = TRUE - if("styleHONK") - temp_pod.setStyle(STYLE_HONK) + if("refreshView") + initMap() + refreshView() . = TRUE - if("styleFruit") - temp_pod.setStyle(STYLE_FRUIT) + if("renderLighting") + renderLighting = !renderLighting . = TRUE - if("styleInvisible") - temp_pod.setStyle(STYLE_INVISIBLE) - . = TRUE - if("styleGondola") - temp_pod.setStyle(STYLE_GONDOLA) - . = TRUE - if("styleSeeThrough") - temp_pod.setStyle(STYLE_SEETHROUGH) + if("setStyle") + var/chosenStyle = params["style"] + temp_pod.setStyle(chosenStyle+1) . = TRUE if("refresh") //Refresh the Pod bay. User should press this if they spawn something new in the centcom bay. Automatically called whenever the user launches a pod refreshBay() . = TRUE if("giveLauncher") //Enters the "Launch Mode". When the launcher is activated, temp_pod is cloned, and the result it filled and launched anywhere the user clicks (unless specificTarget is true) launcherActivated = !launcherActivated - updateCursor(launcherActivated) //Update the cursor of the user to a cool looking target icon + if (picking_dropoff_turf) + picking_dropoff_turf = FALSE //We don't want to have launch mode enabled while we're picking a turf + updateCursor() //Update the cursor of the user to a cool looking target icon + updateSelector() . = TRUE if("clearBay") //Delete all mobs and objs in the selected bay if(alert(usr, "This will delete all objs and mobs in [bay]. Are you sure?", "Confirmation", "Delete that shit", "No") == "Delete that shit") @@ -441,30 +507,59 @@ refreshBay() . = TRUE -/datum/centcom_podlauncher/ui_close() //Uses the destroy() proc. When the user closes the UI, we clean up the temp_pod and supplypod_selector variables. +/datum/centcom_podlauncher/ui_close(mob/user) //Uses the destroy() proc. When the user closes the UI, we clean up the temp_pod and supplypod_selector variables. + QDEL_NULL(temp_pod) + user.client?.clear_map(map_name) + QDEL_NULL(cam_screen) + QDEL_LIST(cam_plane_masters) + QDEL_NULL(cam_background) qdel(src) -/datum/centcom_podlauncher/proc/updateCursor(launching) //Update the moues of the user - if (holder) //Check to see if we have a client - if (launching) //If the launching param is true, we give the user new mouse icons. +/datum/centcom_podlauncher/proc/setupViewPod() + setupView(RANGE_TURFS(2, temp_pod)) + +/datum/centcom_podlauncher/proc/setupViewBay() + var/list/visible_turfs = list() + for(var/turf/bay_turf in bay) + visible_turfs += bay_turf + setupView(visible_turfs) + +/datum/centcom_podlauncher/proc/setupViewDropoff() + var/list/coords_list = temp_pod.reverse_dropoff_coords + var/turf/drop = locate(coords_list[1], coords_list[2], coords_list[3]) + setupView(RANGE_TURFS(3, drop)) + +/datum/centcom_podlauncher/proc/setupView(list/visible_turfs) + var/list/bbox = get_bbox_of_atoms(visible_turfs) + var/size_x = bbox[3] - bbox[1] + 1 + var/size_y = bbox[4] - bbox[2] + 1 + + cam_screen.vis_contents = visible_turfs + cam_background.icon_state = "clear" + cam_background.fill_rect(1, 1, size_x, size_y) + +/datum/centcom_podlauncher/proc/updateCursor(forceClear = FALSE) //Update the mouse of the user + if (!holder) //Can't update the mouse icon if the client doesnt exist! + return + if (!forceClear && (launcherActivated || picking_dropoff_turf)) //If the launching param is true, we give the user new mouse icons. + if(launcherActivated) holder.mouse_up_icon = 'icons/effects/mouse_pointers/supplypod_target.dmi' //Icon for when mouse is released holder.mouse_down_icon = 'icons/effects/mouse_pointers/supplypod_down_target.dmi' //Icon for when mouse is pressed - holder.mouse_override_icon = holder.mouse_up_icon //Icon for idle mouse (same as icon for when released) - holder.mouse_pointer_icon = holder.mouse_override_icon - holder.click_intercept = src //Create a click_intercept so we know where the user is clicking - else - var/mob/M = holder.mob - holder.mouse_up_icon = null - holder.mouse_down_icon = null - holder.mouse_override_icon = null - holder.click_intercept = null - if (M) - M.update_mouse_pointer() //set the moues icons to null, then call update_moues_pointer() which resets them to the correct values based on what the mob is doing (in a mech, holding a spell, etc)() + else if(picking_dropoff_turf) + holder.mouse_up_icon = 'icons/effects/supplypod_pickturf.dmi' //Icon for when mouse is released + holder.mouse_down_icon = 'icons/effects/supplypod_pickturf_down.dmi' //Icon for when mouse is pressed + holder.mouse_pointer_icon = holder.mouse_up_icon //Icon for idle mouse (same as icon for when released) + holder.click_intercept = src //Create a click_intercept so we know where the user is clicking + else + var/mob/holder_mob = holder.mob + holder.mouse_up_icon = null + holder.mouse_down_icon = null + holder.click_intercept = null + holder_mob?.update_mouse_pointer() //set the moues icons to null, then call update_moues_pointer() which resets them to the correct values based on what the mob is doing (in a mech, holding a spell, etc)() /datum/centcom_podlauncher/proc/InterceptClickOn(user,params,atom/target) //Click Intercept so we know where to send pods where the user clicks - var/list/modifiers = params2list(params) - - var/left_click = LAZYACCESS(modifiers, LEFT_CLICK) + var/list/pa = params2list(params) + var/left_click = pa.Find("left") if (launcherActivated) //Clicking on UI elements shouldn't launch a pod if(istype(target,/atom/movable/screen)) @@ -481,11 +576,12 @@ else return //if target is null and we don't have a specific target, cancel if (effectAnnounce) - deadchat_broadcast("A special package is being launched at the station!", turf_target = target, message_type=DEADCHAT_ANNOUNCEMENT) + deadchat_broadcast("A special package is being launched at the station!", turf_target = target) var/list/bouttaDie = list() - for (var/mob/living/M in target) - bouttaDie.Add(M) - supplypod_punish_log(bouttaDie, target) + for (var/mob/living/target_mob in target) + bouttaDie.Add(target_mob) + if (holder.holder) + supplypod_punish_log(bouttaDie) if (!effectBurst) //If we're not using burst mode, just launch normally. launch(target) else @@ -493,95 +589,153 @@ if (isnull(target)) break //if our target gets deleted during this, we stop the show preLaunch() //Same as above - var/LZ = locate(target.x + rand(-1,1), target.y + rand(-1,1), target.z) //Pods are randomly adjacent to (or the same as) the target - if (LZ) //just incase we're on the edge of the map or something that would cause target.x+1 to fail - launch(LZ) //launch the pod at the adjacent turf + var/landingzone = locate(target.x + rand(-1,1), target.y + rand(-1,1), target.z) //Pods are randomly adjacent to (or the same as) the target + if (landingzone) //just incase we're on the edge of the map or something that would cause target.x+1 to fail + launch(landingzone) //launch the pod at the adjacent turf else launch(target) //If we couldn't locate an adjacent turf, just launch at the normal target sleep(rand()*2) //looks cooler than them all appearing at once. Gives the impression of burst fire. + else if (picking_dropoff_turf) + //Clicking on UI elements shouldn't pick a dropoff turf + if(istype(target, /atom/movable/screen)) + return FALSE + + . = TRUE + if(left_click) //When we left click: + var/turf/target_turf = get_turf(target) + setDropoff(target_turf) + customDropoff = TRUE + to_chat(user, " You've selected [target_turf] at [COORD(target_turf)] as your dropoff location.") + +/datum/centcom_podlauncher/proc/refreshView() + switch(tabIndex) + if (TAB_POD) + setupViewPod() + if (TAB_BAY) + setupViewBay() + else + setupViewDropoff() /datum/centcom_podlauncher/proc/refreshBay() //Called whenever the bay is switched, as well as wheneber a pod is launched + bay = GLOB.supplypod_loading_bays[bayNumber] orderedArea = createOrderedArea(bay) //Create an ordered list full of turfs form the bay preLaunch() //Fill acceptable turfs from orderedArea, then fill launchList from acceptableTurfs (see proc for more info) + refreshView() -/datum/centcom_podlauncher/proc/createOrderedArea(area/A) //This assumes the area passed in is a continuous square - if (isnull(A)) //If theres no supplypod bay mapped into centcom, throw an error +/datum/centcom_podlauncher/proc/createOrderedArea(area/area_to_order) //This assumes the area passed in is a continuous square + if (isnull(area_to_order)) //If theres no supplypod bay mapped into centcom, throw an error to_chat(holder.mob, "No /area/centcom/supplypod/loading/one (or /two or /three or /four) in the world! You can make one yourself (then refresh) for now, but yell at a mapper to fix this, today!") CRASH("No /area/centcom/supplypod/loading/one (or /two or /three or /four) has been mapped into the centcom z-level!") orderedArea = list() - if (length(A.contents)) //Go through the area passed into the proc, and figure out the top left and bottom right corners by calculating max and min values - var/startX = A.contents[1].x //Create the four values (we do it off a.contents[1] so they have some sort of arbitrary initial value. They should be overwritten in a few moments) - var/endX = A.contents[1].x - var/startY = A.contents[1].y - var/endY = A.contents[1].y - for (var/turf/T in A) //For each turf in the area, go through and find: - if (T.x < startX) //The turf with the smallest x value. This is our startX - startX = T.x - else if (T.x > endX) //The turf with the largest x value. This is our endX - endX = T.x - else if (T.y > startY) //The turf with the largest Y value. This is our startY - startY = T.y - else if (T.y < endY) //The turf with the smallest Y value. This is our endY - endY = T.y - for (var/i in endY to startY) - for (var/j in startX to endX) - orderedArea.Add(locate(j,startY - (i - endY),1)) //After gathering the start/end x and y, go through locating each turf from top left to bottom right, like one would read a book + if (length(area_to_order.contents)) //Go through the area passed into the proc, and figure out the top left and bottom right corners by calculating max and min values + var/startX = area_to_order.contents[1].x //Create the four values (we do it off a.contents[1] so they have some sort of arbitrary initial value. They should be overwritten in a few moments) + var/endX = area_to_order.contents[1].x + var/startY = area_to_order.contents[1].y + var/endY = area_to_order.contents[1].y + for (var/turf/turf_in_area in area_to_order) //For each turf in the area, go through and find: + if (turf_in_area.x < startX) //The turf with the smallest x value. This is our startX + startX = turf_in_area.x + else if (turf_in_area.x > endX) //The turf with the largest x value. This is our endX + endX = turf_in_area.x + else if (turf_in_area.y > startY) //The turf with the largest Y value. This is our startY + startY = turf_in_area.y + else if (turf_in_area.y < endY) //The turf with the smallest Y value. This is our endY + endY = turf_in_area.y + for (var/vertical in endY to startY) + for (var/horizontal in startX to endX) + orderedArea.Add(locate(horizontal, startY - (vertical - endY), 1)) //After gathering the start/end x and y, go through locating each turf from top left to bottom right, like one would read a book return orderedArea //Return the filled list /datum/centcom_podlauncher/proc/preLaunch() //Creates a list of acceptable items, numTurfs = 0 //Counts the number of turfs that can be launched (remember, supplypods either launch all at once or one turf-worth of items at a time) acceptableTurfs = list() - for (var/turf/T in orderedArea) //Go through the orderedArea list - if (typecache_filter_list_reverse(T.contents, ignored_atoms).len != 0) //if there is something in this turf that isnt in the blacklist, we consider this turf "acceptable" and add it to the acceptableTurfs list - acceptableTurfs.Add(T) //Because orderedArea was an ordered linear list, acceptableTurfs will be as well. + for (var/t in orderedArea) //Go through the orderedArea list + var/turf/unchecked_turf = t + if (iswallturf(unchecked_turf) || typecache_filter_list_reverse(unchecked_turf.contents, ignored_atoms).len != 0) //if there is something in this turf that isn't in the blacklist, we consider this turf "acceptable" and add it to the acceptableTurfs list + acceptableTurfs.Add(unchecked_turf) //Because orderedArea was an ordered linear list, acceptableTurfs will be as well. numTurfs ++ launchList = list() //Anything in launchList will go into the supplypod when it is launched if (length(acceptableTurfs) && !temp_pod.reversing && !temp_pod.effectMissile) //We dont fill the supplypod if acceptableTurfs is empty, if the pod is going in reverse (effectReverse=true), or if the pod is acitng like a missile (effectMissile=true) switch(launchChoice) - if(0) //If we are launching all the turfs at once - for (var/turf/T in acceptableTurfs) - launchList |= typecache_filter_list_reverse(T.contents, ignored_atoms) //We filter any blacklisted atoms and add the rest to the launchList - if(1) //If we are launching one at a time + if(LAUNCH_ALL) //If we are launching all the turfs at once + for (var/t in acceptableTurfs) + var/turf/accepted_turf = t + launchList |= typecache_filter_list_reverse(accepted_turf.contents, ignored_atoms) //We filter any blacklisted atoms and add the rest to the launchList + if (iswallturf(accepted_turf)) + launchList += accepted_turf + if(LAUNCH_ORDERED) //If we are launching one at a time if (launchCounter > acceptableTurfs.len) //Check if the launchCounter, which acts as an index, is too high. If it is, reset it to 1 launchCounter = 1 //Note that the launchCounter index is incremented in the launch() proc - for (var/atom/movable/O in acceptableTurfs[launchCounter].contents) //Go through the acceptableTurfs list based on the launchCounter index - launchList |= typecache_filter_list_reverse(acceptableTurfs[launchCounter].contents, ignored_atoms) //Filter the specicic turf chosen from acceptableTurfs, and add it to the launchList - if(2) //If we are launching randomly - launchList |= typecache_filter_list_reverse(pick_n_take(acceptableTurfs).contents, ignored_atoms) //filter a random turf from the acceptableTurfs list and add it to the launchList + var/turf/next_turf_in_line = acceptableTurfs[launchCounter] + launchList |= typecache_filter_list_reverse(next_turf_in_line.contents, ignored_atoms) //Filter the specicic turf chosen from acceptableTurfs, and add it to the launchList + if (iswallturf(next_turf_in_line)) + launchList += next_turf_in_line + if(LAUNCH_RANDOM) //If we are launching randomly + var/turf/acceptable_turf = pick_n_take(acceptableTurfs) + launchList |= typecache_filter_list_reverse(acceptable_turf.contents, ignored_atoms) //filter a random turf from the acceptableTurfs list and add it to the launchList + if (iswallturf(acceptable_turf)) + launchList += acceptable_turf updateSelector() //Call updateSelector(), which, if we are launching one at a time (launchChoice==2), will move to the next turf that will be launched //UpdateSelector() is here (instead if the if(1) switch block) because it also moves the selector to nullspace (to hide it) if needed -/datum/centcom_podlauncher/proc/launch(turf/A) //Game time started - if (isnull(A)) +/datum/centcom_podlauncher/proc/launch(turf/target_turf) //Game time started + if (isnull(target_turf)) return var/obj/structure/closet/supplypod/centcompod/toLaunch = DuplicateObject(temp_pod) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result - toLaunch.bay = bay //Bay is currently a nonstatic expression, so it cant go into toLaunch using DuplicateObject toLaunch.update_appearance()//we update_appearance() here so that the door doesnt "flicker on" right after it lands - var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/flyMeToTheMoon] + var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/supplypod_temp_holding] toLaunch.forceMove(shippingLane) if (launchClone) //We arent launching the actual items from the bay, rather we are creating clones and launching those if(launchRandomItem) - var/atom/movable/O = pick_n_take(launchList) - DuplicateObject(O).forceMove(toLaunch) //Duplicate a single atom/movable from launchList and forceMove it into the supplypod + var/launch_candidate = pick_n_take(launchList) + if(!isnull(launch_candidate)) + if (iswallturf(launch_candidate)) + var/atom/atom_to_launch = launch_candidate + toLaunch.turfs_in_cargo += atom_to_launch.type + else + var/atom/movable/movable_to_launch = launch_candidate + DuplicateObject(movable_to_launch).forceMove(toLaunch) //Duplicate a single atom/movable from launchList and forceMove it into the supplypod else - for (var/atom/movable/O in launchList) - DuplicateObject(O).forceMove(toLaunch) //Duplicate each atom/movable in launchList and forceMove them into the supplypod + for (var/launch_candidate in launchList) + if (isnull(launch_candidate)) + continue + if (iswallturf(launch_candidate)) + var/turf/turf_to_launch = launch_candidate + toLaunch.turfs_in_cargo += turf_to_launch.type + else + var/atom/movable/movable_to_launch = launch_candidate + DuplicateObject(movable_to_launch).forceMove(toLaunch) //Duplicate each atom/movable in launchList and forceMove them into the supplypod else if(launchRandomItem) - var/atom/movable/O = pick_n_take(launchList) - O.forceMove(toLaunch) //and forceMove any atom/moveable into the supplypod + var/atom/random_item = pick_n_take(launchList) + if(!isnull(random_item)) + if (iswallturf(random_item)) + var/turf/wall = random_item + toLaunch.turfs_in_cargo += wall.type + wall.ScrapeAway() + else + var/atom/movable/random_item_movable = random_item + random_item_movable.forceMove(toLaunch) //and forceMove any atom/moveable into the supplypod else - for (var/atom/movable/O in launchList) //If we aren't cloning the objects, just go through the launchList - O.forceMove(toLaunch) //and forceMove any atom/moveable into the supplypod - new /obj/effect/DPtarget(A, toLaunch) //Then, create the DPTarget effect, which will eventually forceMove the temp_pod to it's location + for (var/thing_to_launch in launchList) //If we aren't cloning the objects, just go through the launchList + if (isnull(thing_to_launch)) + continue + if(iswallturf(thing_to_launch)) + var/turf/wall = thing_to_launch + toLaunch.turfs_in_cargo += wall.type + wall.ScrapeAway() + else + var/atom/movable/movable_to_launch = thing_to_launch + movable_to_launch.forceMove(toLaunch) //and forceMove any atom/moveable into the supplypod + new /obj/effect/pod_landingzone(target_turf, toLaunch) //Then, create the DPTarget effect, which will eventually forceMove the temp_pod to it's location if (launchClone) launchCounter++ //We only need to increment launchCounter if we are cloning objects. //If we aren't cloning objects, taking and removing the first item each time from the acceptableTurfs list will inherently iterate through the list in order /datum/centcom_podlauncher/proc/updateSelector() //Ensures that the selector effect will showcase the next item if needed - if (launchChoice == 1 && length(acceptableTurfs) && !temp_pod.reversing && !temp_pod.effectMissile) //We only show the selector if we are taking items from the bay - var/index = launchCounter + 1 //launchCounter acts as an index to the ordered acceptableTurfs list, so adding one will show the next item in the list + if (launchChoice == LAUNCH_ORDERED && length(acceptableTurfs) > 1 && !temp_pod.reversing && !temp_pod.effectMissile) //We only show the selector if we are taking items from the bay + var/index = (launchCounter == 1 ? launchCounter : launchCounter + 1) //launchCounter acts as an index to the ordered acceptableTurfs list, so adding one will show the next item in the list. We don't want to do this for the very first item tho if (index > acceptableTurfs.len) //out of bounds check index = 1 selector.forceMove(acceptableTurfs[index]) //forceMove the selector to the next turf in the ordered acceptableTurfs list @@ -593,31 +747,102 @@ qdel(O) for (var/mob/M in bay.GetAllContents()) qdel(M) + for (var/bayturf in bay) + var/turf/turf_to_clear = bayturf + turf_to_clear.ChangeTurf(/turf/open/floor/plasteel) /datum/centcom_podlauncher/Destroy() //The Destroy() proc. This is called by ui_close proc, or whenever the user leaves the game - updateCursor(FALSE) //Make sure our moues cursor resets to default. False means we are not in launch mode - qdel(temp_pod) //Delete the temp_pod - qdel(selector) //Delete the selector effect + updateCursor(TRUE) //Make sure our mouse cursor resets to default. False means we are not in launch mode + QDEL_NULL(temp_pod) //Delete the temp_pod + QDEL_NULL(selector) //Delete the selector effect + QDEL_NULL(indicator) . = ..() -/datum/centcom_podlauncher/proc/supplypod_punish_log(list/whoDyin, atom/target) +/datum/centcom_podlauncher/proc/supplypod_punish_log(list/whoDyin) var/podString = effectBurst ? "5 pods" : "a pod" var/whomString = "" if (LAZYLEN(whoDyin)) for (var/mob/living/M in whoDyin) - whomString += "[key_name(M) || "nobody"], " - - var/delayString = temp_pod.landingDelay == initial(temp_pod.landingDelay) ? "" : " Delay=[temp_pod.landingDelay*0.1]s" - var/damageString = temp_pod.damage == 0 ? "" : " Dmg=[temp_pod.damage]" - var/explosionString = "" - var/explosion_sum = temp_pod.explosionSize[1] + temp_pod.explosionSize[2] + temp_pod.explosionSize[3] + temp_pod.explosionSize[4] - if (explosion_sum != 0) - explosionString = " Boom=|" - for (var/X in temp_pod.explosionSize) - explosionString += "[X]|" - - var/msg = "launched [podString] towards [whomString] [delayString][damageString][explosionString]" - message_admins("[key_name_admin(usr)] [msg] in [ADMIN_VERBOSEJMP(specificTarget || target)].") + whomString += "[key_name(M)], " + + var/msg = "launched [podString] towards [whomString]" + message_admins("[key_name_admin(usr)] [msg] in [ADMIN_VERBOSEJMP(specificTarget)].") if (length(whoDyin)) for (var/mob/living/M in whoDyin) admin_ticket_log(M, "[key_name_admin(usr)] [msg]") + +/datum/centcom_podlauncher/proc/loadData(list/dataToLoad) + bayNumber = dataToLoad["bayNumber"] + customDropoff = dataToLoad["customDropoff"] + renderLighting = dataToLoad["renderLighting"] + launchClone = dataToLoad["launchClone"] //Do we launch the actual items in the bay or just launch clones of them? + launchRandomItem = dataToLoad["launchRandomItem"] //Do we launch a single random item instead of everything on the turf? + launchChoice = dataToLoad["launchChoice"] //Launch turfs all at once (0), ordered (1), or randomly(1) + explosionChoice = dataToLoad["explosionChoice"] //An explosion that occurs when landing. Can be no explosion (0), custom explosion (1), or maxcap (2) + damageChoice = dataToLoad["damageChoice"] //Damage that occurs to any mob under the pod when it lands. Can be no damage (0), custom damage (1), or gib+5000dmg (2) + temp_pod.delays = dataToLoad["delays"] + temp_pod.reverse_delays = dataToLoad["rev_delays"] + temp_pod.custom_rev_delay = dataToLoad["custom_rev_delay"] + temp_pod.setStyle(dataToLoad["styleChoice"]) //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the GLOB.podstyles list in cargo.dm defines to get the proper icon/name/desc for the pod. + temp_pod.effectStun = dataToLoad["effectStun"]//If true, stuns anyone under the pod when it launches until it lands, forcing them to get hit by the pod. Devilish! + temp_pod.effectLimb = dataToLoad["effectLimb"]//If true, pops off a limb (if applicable) from anyone caught under the pod when it lands + temp_pod.effectOrgans = dataToLoad["effectOrgans"]//If true, yeets the organs out of any bodies caught under the pod when it lands + temp_pod.bluespace = dataToLoad["effectBluespace"] //If true, the pod deletes (in a shower of sparks) after landing + temp_pod.effectStealth = dataToLoad["effectStealth"]//If true, a target icon isn't displayed on the turf where the pod will land + temp_pod.effectQuiet = dataToLoad["effectQuiet"] //The female sniper. If true, the pod makes no noise (including related explosions, opening sounds, etc) + temp_pod.effectMissile = dataToLoad["effectMissile"] //If true, the pod deletes the second it lands. If you give it an explosion, it will act like a missile exploding as it hits the ground + temp_pod.effectCircle = dataToLoad["effectCircle"] //If true, allows the pod to come in at any angle. Bit of a weird feature but whatever its here + effectBurst = dataToLoad["effectBurst"] //IOf true, launches five pods at once (with a very small delay between for added coolness), in a 3x3 area centered around the area + temp_pod.reversing = dataToLoad["effectReverse"] //If true, the pod will not send any items. Instead, after opening, it will close again (picking up items/mobs) and fly back to centcom + temp_pod.reverseOptionList = dataToLoad["reverseOptionList"] + specificTarget = dataToLoad["effectTarget"] //Launches the pod at the turf of a specific mob target, rather than wherever the user clicked. Useful for smites + temp_pod.adminNamed = dataToLoad["effectName"] //Determines whether or not the pod has been named by an admin. If true, the pod's name will not get overridden when the style of the pod changes (changing the style of the pod normally also changes the name+desc) + temp_pod.name = dataToLoad["podName"] + temp_pod.desc = dataToLoad["podDesc"] + effectAnnounce = dataToLoad["effectAnnounce"] + numTurfs = dataToLoad["numObjects"] //Counts the number of turfs that contain a launchable object in the centcom supplypod bay + temp_pod.fallingSound = dataToLoad["fallingSound"]//Admin sound to play as the pod falls + temp_pod.landingSound = dataToLoad["landingSound"]//Admin sound to play when the pod lands + temp_pod.openingSound = dataToLoad["openingSound"]//Admin sound to play when the pod opens + temp_pod.leavingSound = dataToLoad["leavingSound"]//Admin sound to play when the pod leaves + temp_pod.soundVolume = dataToLoad["soundVolume"] //Admin sound to play when the pod leaves + picking_dropoff_turf = FALSE + launcherActivated = FALSE + updateCursor() + refreshView() + +GLOBAL_DATUM_INIT(podlauncher, /datum/centcom_podlauncher, new) +//Proc for admins to enable others to use podlauncher after roundend +/datum/centcom_podlauncher/proc/give_podlauncher(mob/living/user, override) + if (SSticker.current_state < GAME_STATE_FINISHED) + return + if (!istype(user)) + user = override + if (user) + setup(user)//setup the datum + +//Set the dropoff location and indicator to either a specific turf or somewhere in an area +/datum/centcom_podlauncher/proc/setDropoff(target) + var/turf/target_turf + if (isturf(target)) + target_turf = target + else if (isarea(target)) + target_turf = pick(get_area_turfs(target)) + else + CRASH("Improper type passed to setDropoff! Should be /turf or /area") + temp_pod.reverse_dropoff_coords = list(target_turf.x, target_turf.y, target_turf.z) + indicator.forceMove(target_turf) + +/obj/effect/hallucination/simple/supplypod_selector + name = "Supply Selector (Only you can see this)" + image_icon = 'icons/obj/supplypods_32x32.dmi' + image_state = "selector" + image_layer = FLY_LAYER + alpha = 150 + +/obj/effect/hallucination/simple/dropoff_location + name = "Dropoff Location (Only you can see this)" + image_icon = 'icons/obj/supplypods_32x32.dmi' + image_state = "dropoff_indicator" + image_layer = FLY_LAYER + alpha = 0 diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm index 9074a87d7bbe..9f615a5ba3ee 100644 --- a/code/modules/cargo/expressconsole.dm +++ b/code/modules/cargo/expressconsole.dm @@ -244,7 +244,7 @@ name = usr.real_name rank = "Silicon" var/datum/supply_order/SO = new(pack, name, rank, usr.ckey, "") - new /obj/effect/DPtarget(landing_turf, podType, SO) + new /obj/effect/pod_landingzone(landing_turf, podType, SO) update_appearance() // ?????????????????? return TRUE diff --git a/code/modules/cargo/gondolapod.dm b/code/modules/cargo/gondolapod.dm index 72d4d409ccb6..560fc46668de 100644 --- a/code/modules/cargo/gondolapod.dm +++ b/code/modules/cargo/gondolapod.dm @@ -10,9 +10,9 @@ response_harm_simple = "kick" faction = list("gondola") turns_per_move = 10 - icon = 'icons/mob/gondolapod.dmi' - icon_state = "gondolapod" - icon_living = "gondolapod" + icon = 'icons/obj/supplypods.dmi' + icon_state = "gondola" + icon_living = "gondola" pixel_x = -16//2x2 sprite base_pixel_x = -16 pixel_y = -5 @@ -30,15 +30,17 @@ var/obj/structure/closet/supplypod/centcompod/linked_pod /mob/living/simple_animal/pet/gondola/gondolapod/Initialize(mapload, pod) + if(!pod) + stack_trace("Gondola pod created with no pod") + return INITIALIZE_HINT_QDEL linked_pod = pod name = linked_pod.name . = ..() -/mob/living/simple_animal/pet/gondola/gondolapod/update_icon_state() +/mob/living/simple_animal/pet/gondola/gondolapod/update_overlays() + . = ..() if(opened) - icon_state = "gondolapod_open" - else - icon_state = "gondolapod" + . += "[icon_state]_open" return ..() /mob/living/simple_animal/pet/gondola/gondolapod/verb/deliver() @@ -64,16 +66,16 @@ else to_chat(src, "A closer look inside yourself reveals... nothing.") -/mob/living/simple_animal/pet/gondola/gondolapod/proc/setOpened() +/mob/living/simple_animal/pet/gondola/gondolapod/setOpened() opened = TRUE update_appearance() - addtimer(CALLBACK(src, .proc/setClosed), 50) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, setClosed)), 50) -/mob/living/simple_animal/pet/gondola/gondolapod/proc/setClosed() +/mob/living/simple_animal/pet/gondola/gondolapod/setClosed() opened = FALSE update_appearance() /mob/living/simple_animal/pet/gondola/gondolapod/death() - qdel(linked_pod) //Will cause the open() proc for the linked supplypod to be called with the "broken" parameter set to true, meaning that it will dump its contents on death + QDEL_NULL(linked_pod) //Will cause the open() proc for the linked supplypod to be called with the "broken" parameter set to true, meaning that it will dump its contents on death qdel(src) ..() diff --git a/code/modules/cargo/packs/ammo.dm b/code/modules/cargo/packs/ammo.dm index 56ff80d77018..33a5ee37be02 100644 --- a/code/modules/cargo/packs/ammo.dm +++ b/code/modules/cargo/packs/ammo.dm @@ -22,6 +22,15 @@ /obj/item/ammo_box/magazine/m45) cost = 1500 +/datum/supply_pack/ammo/m45_speedloader + name = ".45 ACP Speedloader Crate" + desc = "Contains four .45 ACP speedloaders for revolvers, each containing six rounds." + contains = list(/obj/item/ammo_box/c45_speedloader, + /obj/item/ammo_box/c45_speedloader, + /obj/item/ammo_box/c45_speedloader, + /obj/item/ammo_box/c45_speedloader) + cost = 1500 + /datum/supply_pack/ammo/c38_mag name = ".38 Speedloader Crate" desc = "Contains four .38 speedloaders for revolvers, each containing six rounds." @@ -122,8 +131,8 @@ name = "WT-550 Auto Rifle Exotic Ammo Crate" desc = "Contains one magazine of armor-piercing and one magazine of incendiary ammunition for the WT-550 Auto Rifle. Sadly, our manufacturer discontinued the uranium-tipped bullets." cost = 2500 - contains = list(/obj/item/ammo_box/magazine/wt550m9/wtap, - /obj/item/ammo_box/magazine/wt550m9/wtic) + contains = list(/obj/item/ammo_box/magazine/wt550m9/ap, + /obj/item/ammo_box/magazine/wt550m9/inc) /* Rifle ammo diff --git a/code/modules/cargo/packs/civilian.dm b/code/modules/cargo/packs/civilian.dm index ed723283814a..953196411f9e 100644 --- a/code/modules/cargo/packs/civilian.dm +++ b/code/modules/cargo/packs/civilian.dm @@ -199,7 +199,7 @@ /datum/supply_pack/civilian/carpet_exotic name = "Exotic Carpet Crate" - desc = "Exotic carpets straight from Space Russia, for all your decorating needs. Contains 100 tiles each of 8 different flooring patterns." + desc = "Exotic carpets for all your decorating needs. Contains 100 tiles each of 8 different flooring patterns." cost = 3000 contains = list(/obj/item/stack/tile/carpet/blue/fifty, /obj/item/stack/tile/carpet/blue/fifty, diff --git a/code/modules/cargo/packs/food.dm b/code/modules/cargo/packs/food.dm index c339fe47d781..86e6f293908d 100644 --- a/code/modules/cargo/packs/food.dm +++ b/code/modules/cargo/packs/food.dm @@ -245,3 +245,16 @@ /obj/item/melee/flyswatter) crate_name = "beekeeping starter crate" crate_type = /obj/structure/closet/crate/hydroponics + +/datum/supply_pack/food/ration + name = "Ration Crate" + desc = "6 standerd issue rations." + cost = 2000 + contains = list(/obj/effect/spawner/lootdrop/ration, + /obj/effect/spawner/lootdrop/ration, + /obj/effect/spawner/lootdrop/ration, + /obj/effect/spawner/lootdrop/ration, + /obj/effect/spawner/lootdrop/ration, + /obj/effect/spawner/lootdrop/ration) + crate_name = "ration crate" + crate_type = /obj/structure/closet/crate diff --git a/code/modules/cargo/packs/gun.dm b/code/modules/cargo/packs/gun.dm index 249535824738..6ca715889855 100644 --- a/code/modules/cargo/packs/gun.dm +++ b/code/modules/cargo/packs/gun.dm @@ -39,12 +39,18 @@ /obj/item/gun/ballistic/revolver) /datum/supply_pack/gun/detrevolver - name = "Revolver crate" + name = "Hunter's Pride Detective Revolver crate" desc = "Contains two concealable Solarian revolvers, chambered in .38." cost = 2000 contains = list(/obj/item/gun/ballistic/revolver/detective, /obj/item/gun/ballistic/revolver/detective) +/datum/supply_pack/gun/cattlemanrevolver + name = "Cattleman Revolver crate" + desc = "Contains two concealable Cattleman revolvers, chambered in .45 ACP." + cost = 2500 + contains = list(/obj/item/gun/ballistic/revolver/cattleman, + /obj/item/gun/ballistic/revolver/cattleman) /* @@ -130,16 +136,16 @@ name = "P16 Assault Rifle Crate" desc = "Contains two high-powered, automatic rifles chambered in 5.56mm." cost = 8000 - contains = list(/obj/item/gun/ballistic/automatic/assualt/p16, - /obj/item/gun/ballistic/automatic/assualt/p16) + contains = list(/obj/item/gun/ballistic/automatic/assault/p16, + /obj/item/gun/ballistic/automatic/assault/p16) crate_name = "auto rifle crate" /datum/supply_pack/gun/ak name = "SVG-67 Rifle Crate" desc = "Contains two high-powered, automatic rifles chambered in 7.62x39mm." cost = 6000 - contains = list(/obj/item/gun/ballistic/automatic/assualt/ak47, - /obj/item/gun/ballistic/automatic/assualt/ak47) + contains = list(/obj/item/gun/ballistic/automatic/assault/ak47, + /obj/item/gun/ballistic/automatic/assault/ak47) crate_name = "auto rifle crate" /* diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm index f33ade28bfb8..16b43704df58 100644 --- a/code/modules/cargo/supplypod.dm +++ b/code/modules/cargo/supplypod.dm @@ -1,13 +1,12 @@ -//The "BDPtarget" temp visual is created by anything that "launches" a supplypod. It makes two things: a falling droppod animation, and the droppod itself. +//The "pod_landingzone" temp visual is created by anything that "launches" a supplypod. It makes two things: a falling droppod animation, and the droppod itself. //------------------------------------SUPPLY POD-------------------------------------// /obj/structure/closet/supplypod name = "supply pod" //Names and descriptions are normally created with the setStyle() proc during initialization, but we have these default values here as a failsafe desc = "A Nanotrasen supply drop pod." icon = 'icons/obj/supplypods.dmi' - icon_state = "supplypod" - pixel_x = -16 //2x2 sprite - pixel_y = -5 - layer = TABLE_LAYER //So that the crate inside doesn't appear underneath + icon_state = "pod" //This is a common base sprite shared by a number of pods + pixel_x = SUPPLYPOD_X_OFFSET //2x2 sprite + layer = BELOW_OBJ_LAYER //So that the crate inside doesn't appear underneath allow_objects = TRUE allow_dense = TRUE delivery_icon = null @@ -16,12 +15,16 @@ anchored = TRUE //So it cant slide around after landing anchorable = FALSE flags_1 = PREVENT_CONTENTS_EXPLOSION_1 + appearance_flags = KEEP_TOGETHER | PIXEL_SCALE + density = FALSE + ///List of bitflags for supply pods, see: code\__DEFINES\obj_flags.dm + var/pod_flags = NONE //*****NOTE*****: Many of these comments are similarly described in centcom_podlauncher.dm. If you change them here, please consider doing so in the centcom podlauncher code as well! var/adminNamed = FALSE //Determines whether or not the pod has been named by an admin. If true, the pod's name will not get overridden when the style of the pod changes (changing the style of the pod normally also changes the name+desc) var/bluespace = FALSE //If true, the pod deletes (in a shower of sparks) after landing - var/landingDelay = 30 //How long the pod takes to land after launching - var/openingDelay = 30 //How long the pod takes to open after landing - var/departureDelay = 30 //How long the pod takes to leave after opening. If bluespace = TRUE, it deletes. If reversing = TRUE, it flies back to centcom. + var/delays = list(POD_TRANSIT = 30, POD_FALLING = 4, POD_OPENING = 30, POD_LEAVING = 30) + var/reverse_delays = list(POD_TRANSIT = 30, POD_FALLING = 4, POD_OPENING = 30, POD_LEAVING = 30) + var/custom_rev_delay = FALSE var/damage = 0 //Damage that occurs to any mob under the pod when it lands. var/effectStun = FALSE //If true, stuns anyone under the pod when it launches until it lands, forcing them to get hit by the pod. Devilish! var/effectLimb = FALSE //If true, pops off a limb (if applicable) from anyone caught under the pod when it lands @@ -31,25 +34,33 @@ var/effectQuiet = FALSE //The female sniper. If true, the pod makes no noise (including related explosions, opening sounds, etc) var/effectMissile = FALSE //If true, the pod deletes the second it lands. If you give it an explosion, it will act like a missile exploding as it hits the ground var/effectCircle = FALSE //If true, allows the pod to come in at any angle. Bit of a weird feature but whatever its here - var/style = STYLE_STANDARD //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the POD_STYLES list in cargo.dm defines to get the proper icon/name/desc for the pod. + var/style = STYLE_STANDARD //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the GLOB.podstyles list in cargo.dm defines to get the proper icon/name/desc for the pod. var/reversing = FALSE //If true, the pod will not send any items. Instead, after opening, it will close again (picking up items/mobs) and fly back to centcom - var/fallDuration = 4 + var/list/reverse_dropoff_coords //Turf that the reverse pod will drop off it's newly-acquired cargo to var/fallingSoundLength = 11 var/fallingSound = 'sound/weapons/mortar_long_whistle.ogg'//Admin sound to play before the pod lands var/landingSound //Admin sound to play when the pod lands var/openingSound //Admin sound to play when the pod opens var/leavingSound //Admin sound to play when the pod leaves var/soundVolume = 80 //Volume to play sounds at. Ignores the cap - var/bay //Used specifically for the centcom_podlauncher datum. Holds the current bay the user is launching objects from. Bays are specific rooms on the centcom map. + var/area/bay //Used specifically for the centcom_podlauncher datum. Holds the current bay the user is launching objects from. Bays are specific rooms on the centcom map. var/list/explosionSize = list(0,0,2,3) var/stay_after_drop = FALSE - var/specialised = TRUE // It's not a general use pod for cargo/admin use + var/specialised = FALSE // It's not a general use pod for cargo/admin use + var/rubble_type //Rubble effect associated with this supplypod + var/decal = "default" //What kind of extra decals we add to the pod to make it look nice + var/door = "pod_door" + var/fin_mask = "topfin" + var/obj/effect/supplypod_rubble/rubble + var/obj/effect/engineglow/glow_effect + var/list/reverseOptionList = list("Mobs"=FALSE,"Objects"=FALSE,"Anchored"=FALSE,"Underfloor"=FALSE,"Wallmounted"=FALSE,"Floors"=FALSE,"Walls"=FALSE) + var/list/turfs_in_cargo = list() /obj/structure/closet/supplypod/bluespacepod style = STYLE_BLUESPACE bluespace = TRUE explosionSize = list(0,0,1,2) - landingDelay = 15 //Slightly quicker than the supplypod + delays = list(POD_TRANSIT = 15, POD_FALLING = 4, POD_OPENING = 30, POD_LEAVING = 30) /obj/structure/closet/supplypod/extractionpod name = "Syndicate Extraction Pod" @@ -58,47 +69,109 @@ style = STYLE_SYNDICATE bluespace = TRUE explosionSize = list(0,0,1,2) - landingDelay = 25 //Longer than others + delays = list(POD_TRANSIT = 25, POD_FALLING = 4, POD_OPENING = 30, POD_LEAVING = 30) /obj/structure/closet/supplypod/centcompod style = STYLE_CENTCOM bluespace = TRUE explosionSize = list(0,0,0,0) - landingDelay = 20 //Very speedy! + delays = list(POD_TRANSIT = 20, POD_FALLING = 4, POD_OPENING = 30, POD_LEAVING = 30) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF +/obj/structure/closet/supplypod/Initialize(mapload, customStyle = FALSE) + . = ..() + if (!loc) + var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/supplypod_temp_holding] //temporary holder for supplypods mid-transit + forceMove(shippingLane) + if (customStyle) + style = customStyle + setStyle(style) //Upon initialization, give the supplypod an iconstate, name, and description based on the "style" variable. This system is important for the centcom_podlauncher to function correctly + +/obj/structure/closet/supplypod/extractionpod/Initialize() + . = ..() + var/turf/picked_turf = pick(GLOB.holdingfacility) + reverse_dropoff_coords = list(picked_turf.x, picked_turf.y, picked_turf.z) -/obj/structure/closet/supplypod/proc/specialisedPod() - return 1 +/obj/structure/closet/supplypod/proc/setStyle(chosenStyle) //Used to give the sprite an icon state, name, and description. + style = chosenStyle + var/base = GLOB.podstyles[chosenStyle][POD_BASE] //GLOB.podstyles is a 2D array we treat as a dictionary. The style represents the verticle index, with the icon state, name, and desc being stored in the horizontal indexes of the 2D array. + icon_state = base + decal = GLOB.podstyles[chosenStyle][POD_DECAL] + rubble_type = GLOB.podstyles[chosenStyle][POD_RUBBLE_TYPE] + if (!adminNamed && !specialised) //We dont want to name it ourselves if it has been specifically named by an admin using the centcom_podlauncher datum + name = GLOB.podstyles[chosenStyle][POD_NAME] + desc = GLOB.podstyles[chosenStyle][POD_DESC] + if (GLOB.podstyles[chosenStyle][POD_DOOR]) + door = "[base]_door" + else + door = FALSE + update_appearance() -/obj/structure/closet/supplypod/extractionpod/specialisedPod(atom/movable/holder) - holder.forceMove(pick(GLOB.holdingfacility)) // land in ninja jail - open_pod(holder, forced = TRUE) +/obj/structure/closet/supplypod/proc/SetReverseIcon() + fin_mask = "bottomfin" + if (GLOB.podstyles[style][POD_SHAPE] == POD_SHAPE_NORML) + icon_state = GLOB.podstyles[style][POD_BASE] + "_reverse" + pixel_x = initial(pixel_x) + transform = matrix() + update_appearance() -/obj/structure/closet/supplypod/Initialize() - . = ..() - setStyle(style, TRUE) //Upon initialization, give the supplypod an iconstate, name, and description based on the "style" variable. This system is important for the centcom_podlauncher to function correctly +/obj/structure/closet/supplypod/proc/backToNonReverseIcon() + fin_mask = initial(fin_mask) + if (GLOB.podstyles[style][POD_SHAPE] == POD_SHAPE_NORML) + icon_state = GLOB.podstyles[style][POD_BASE] + pixel_x = initial(pixel_x) + transform = matrix() + update_appearance() /obj/structure/closet/supplypod/update_overlays() . = ..() - if (style == STYLE_SEETHROUGH || style == STYLE_INVISIBLE) //If we're invisible, we dont bother adding any overlays + if (style == STYLE_INVISIBLE) + return + if (rubble) + . += rubble.getForeground(src) + if (style == STYLE_SEETHROUGH) + for (var/atom/A in contents) + var/mutable_appearance/itemIcon = new(A) + itemIcon.transform = matrix().Translate(-1 * SUPPLYPOD_X_OFFSET, 0) + . += itemIcon + for (var/t in turfs_in_cargo)//T is just a turf's type + var/turf/turf_type = t + var/mutable_appearance/itemIcon = mutable_appearance(initial(turf_type.icon), initial(turf_type.icon_state)) + itemIcon.transform = matrix().Translate(-1 * SUPPLYPOD_X_OFFSET, 0) + . += itemIcon return - else - if (opened) - . += "[icon_state]_open" - else - . += "[icon_state]_door" -/obj/structure/closet/supplypod/proc/setStyle(chosenStyle, duringInit = FALSE) //Used to give the sprite an icon state, name, and description - if (!duringInit && style == chosenStyle) //Check if the input style is already the same as the pod's style. This happens in centcom_podlauncher, and as such we set the style to STYLE_CENTCOM. - setStyle(STYLE_CENTCOM) //We make sure to not check this during initialize() so the standard supplypod works correctly. + if (opened) //We're opened means all we have to worry about is masking a decal if we have one + if (!decal) //We don't have a decal to mask + return + if (!door) //We have a decal but no door, so let's just add the decal + . += decal + return + var/icon/masked_decal = new(icon, decal) //The decal we want to apply + var/icon/door_masker = new(icon, door) //The door shape we want to 'cut out' of the decal + door_masker.MapColors(0,0,0,1, 0,0,0,1, 0,0,0,1, 1,1,1,0, 0,0,0,1) + door_masker.SwapColor("#ffffffff", null) + door_masker.Blend("#000000", ICON_SUBTRACT) + masked_decal.Blend(door_masker, ICON_ADD) + . += masked_decal return - style = chosenStyle - icon_state = POD_STYLES[chosenStyle][POD_ICON_STATE] //POD_STYLES is a 2D array we treat as a dictionary. The style represents the verticle index, with the icon state, name, and desc being stored in the horizontal indexes of the 2D array. - if (!adminNamed && !specialised) //We dont want to name it ourselves if it has been specifically named by an admin using the centcom_podlauncher datum - name = POD_STYLES[chosenStyle][POD_NAME] - desc = POD_STYLES[chosenStyle][POD_DESC] - update_appearance() + //If we're closed + if(!door) //We have no door, lets see if we have a decal. If not, theres nothing we need to do + if(decal) + . += decal + return + else if (GLOB.podstyles[style][POD_SHAPE] != POD_SHAPE_NORML) //If we're not a normal pod shape (aka, if we don't have fins), just add the door without masking + . += door + else + var/icon/masked_door = new(icon, door) //The door we want to apply + var/icon/fin_masker = new(icon, "mask_[fin_mask]") //The fin shape we want to 'cut out' of the door + fin_masker.MapColors(0,0,0,1, 0,0,0,1, 0,0,0,1, 1,1,1,0, 0,0,0,1) + fin_masker.SwapColor("#ffffffff", null) + fin_masker.Blend("#000000", ICON_SUBTRACT) + masked_door.Blend(fin_masker, ICON_ADD) + . += masked_door + if(decal) + . += decal /obj/structure/closet/supplypod/tool_interact(obj/item/W, mob/user) if(bluespace) //We dont want to worry about interacting with bluespace pods, as they are due to delete themselves soon anyways. @@ -115,86 +188,87 @@ /obj/structure/closet/supplypod/toggle(mob/living/user) return -/obj/structure/closet/supplypod/open(mob/living/user, force = TRUE) //Supplypods shouldn't be able to be manually opened under any circumstances +/obj/structure/closet/supplypod/open(mob/living/user, force = TRUE) return -/obj/structure/closet/supplypod/proc/handleReturningClose(atom/movable/holder, returntobay) - opened = FALSE - INVOKE_ASYNC(holder, .proc/setClosed) //Use the INVOKE_ASYNC proc to call setClosed() on whatever the holder may be, without giving the atom/movable base class a setClosed() proc definition - for (var/atom/movable/O in get_turf(holder)) - if ((ismob(O) && !isliving(O)) || (is_type_in_typecache(O, GLOB.blacklisted_cargo_types) && !isliving(O))) //We dont want to take ghosts with us, and we don't want blacklisted items going, but we allow mobs. - continue - O.forceMove(holder) //Put objects inside before we close - var/obj/effect/temp_visual/risingPod = new /obj/effect/DPfall(get_turf(holder), src) //Make a nice animation of flying back up - risingPod.pixel_z = 0 //The initial value of risingPod's pixel_z is 200 because it normally comes down from a high spot - animate(risingPod, pixel_z = 200, time = 10, easing = LINEAR_EASING) //Animate our rising pod - if (returntobay) - holder.forceMove(bay) //Move the pod back to centcom, where it belongs - QDEL_IN(risingPod, 10) - reversing = FALSE //Now that we're done reversing, we set this to false (otherwise we would get stuck in an infinite loop of calling the close proc at the bottom of open() ) - bluespace = TRUE //Make it so that the pod doesn't stay in centcom forever - open_pod(holder, forced = TRUE) - else - reversing = FALSE //Now that we're done reversing, we set this to false (otherwise we would get stuck in an infinite loop of calling the close proc at the bottom of open() ) - bluespace = TRUE //Make it so that the pod doesn't stay in centcom forever - - QDEL_IN(risingPod, 10) - audible_message("The pod hisses, closing quickly and launching itself away from the launch point.", "The ground vibrates, the nearby pod off into the unknown.") - - stay_after_drop = FALSE - specialisedPod(holder) // Do special actions for specialised pods - this is likely if we were already doing manual launches - -/obj/structure/closet/supplypod/proc/preOpen() //Called before the open() proc. Handles anything that occurs right as the pod lands. - var/turf/T = get_turf(src) +/obj/structure/closet/supplypod/proc/handleReturnAfterDeparting(atom/movable/holder = src) + reversing = FALSE //Now that we're done reversing, we set this to false (otherwise we would get stuck in an infinite loop of calling the close proc at the bottom of open_pod() ) + bluespace = TRUE //Make it so that the pod doesn't stay in centcom forever + pod_flags &= ~FIRST_SOUNDS //Make it so we play sounds now + if (!effectQuiet && style != STYLE_SEETHROUGH) + audible_message("The pod hisses, closing and launching itself away from the station.", "The ground vibrates, and you hear the sound of engines firing.") + stay_after_drop = FALSE + holder.pixel_z = initial(holder.pixel_z) + holder.alpha = initial(holder.alpha) + var/shippingLane = GLOB.areas_by_type[/area/centcom/supplypod/supplypod_temp_holding] + forceMove(shippingLane) //Move to the centcom-z-level until the pod_landingzone says we can drop back down again + if (!reverse_dropoff_coords) //If we're centcom-launched, the reverse dropoff turf will be a centcom loading bay. If we're an extraction pod, it should be the ninja jail. Thus, this shouldn't ever really happen. + var/obj/error_landmark = locate(/obj/effect/landmark/error) in GLOB.landmarks_list + var/turf/error_landmark_turf = get_turf(error_landmark) + reverse_dropoff_coords = list(error_landmark_turf.x, error_landmark_turf.y, error_landmark_turf.z) + if (custom_rev_delay) + delays = reverse_delays + backToNonReverseIcon() + var/turf/return_turf = locate(reverse_dropoff_coords[1], reverse_dropoff_coords[2], reverse_dropoff_coords[3]) + new /obj/effect/pod_landingzone(return_turf, src) + +/obj/structure/closet/supplypod/proc/preOpen() //Called before the open_pod() proc. Handles anything that occurs right as the pod lands. + var/turf/turf_underneath = get_turf(src) var/list/B = explosionSize //Mostly because B is more readable than explosionSize :p - if (landingSound) - playsound(get_turf(src), landingSound, soundVolume, FALSE, FALSE) - for (var/mob/living/M in T) - if (effectLimb && iscarbon(M)) //If effectLimb is true (which means we pop limbs off when we hit people): - var/mob/living/carbon/CM = M - for (var/obj/item/bodypart/bodypart in CM.bodyparts) //Look at the bodyparts in our poor mob beneath our pod as it lands - if(bodypart.body_part != HEAD && bodypart.body_part != CHEST)//we dont want to kill him, just teach em a lesson! - if (bodypart.dismemberable) - bodypart.dismember() //Using the power of flextape i've sawed this man's limb in half! - break - if (effectOrgans && iscarbon(M)) //effectOrgans means remove every organ in our mob - var/mob/living/carbon/CM = M - for(var/X in CM.internal_organs) - var/destination = get_edge_target_turf(T, pick(GLOB.alldirs)) //Pick a random direction to toss them in - var/obj/item/organ/O = X - O.Remove(CM) //Note that this isn't the same proc as for lists - O.forceMove(T) //Move the organ outta the body - O.throw_at(destination, 2, 3) //Thow the organ at a random tile 3 spots away - sleep(1) - for (var/obj/item/bodypart/bodypart in CM.bodyparts) //Look at the bodyparts in our poor mob beneath our pod as it lands - var/destination = get_edge_target_turf(T, pick(GLOB.alldirs)) - if (bodypart.dismemberable) - bodypart.dismember() //Using the power of flextape i've sawed this man's bodypart in half! - bodypart.throw_at(destination, 2, 3) + density = TRUE //Density is originally false so the pod doesn't block anything while it's still falling through the air + for (var/mob/living/target_living in turf_underneath) + if (iscarbon(target_living)) //If effectLimb is true (which means we pop limbs off when we hit people): + if (effectLimb) + var/mob/living/carbon/carbon_target_mob = target_living + for (var/bp in carbon_target_mob.bodyparts) //Look at the bodyparts in our poor mob beneath our pod as it lands + var/obj/item/bodypart/bodypart = bp + if(bodypart.body_part != HEAD && bodypart.body_part != CHEST)//we dont want to kill him, just teach em a lesson! + if (bodypart.dismemberable) + bodypart.dismember() //Using the power of flextape i've sawed this man's limb in half! + break + if (effectOrgans) //effectOrgans means remove every organ in our mob + var/mob/living/carbon/carbon_target_mob = target_living + for(var/organ in carbon_target_mob.internal_organs) + var/destination = get_edge_target_turf(turf_underneath, pick(GLOB.alldirs)) //Pick a random direction to toss them in + var/obj/item/organ/organ_to_yeet = organ + organ_to_yeet.Remove(carbon_target_mob) //Note that this isn't the same proc as for lists + organ_to_yeet.forceMove(turf_underneath) //Move the organ outta the body + organ_to_yeet.throw_at(destination, 2, 3) //Thow the organ at a random tile 3 spots away sleep(1) + for (var/bp in carbon_target_mob.bodyparts) //Look at the bodyparts in our poor mob beneath our pod as it lands + var/obj/item/bodypart/bodypart = bp + var/destination = get_edge_target_turf(turf_underneath, pick(GLOB.alldirs)) + if (bodypart.dismemberable) + bodypart.dismember() //Using the power of flextape i've sawed this man's bodypart in half! + bodypart.throw_at(destination, 2, 3) + sleep(1) if (effectGib) //effectGib is on, that means whatever's underneath us better be fucking oof'd on - M.adjustBruteLoss(5000) //THATS A LOT OF DAMAGE (called just in case gib() doesnt work on em) - M.gib() //After adjusting the fuck outta that brute loss we finish the job with some satisfying gibs - M.adjustBruteLoss(damage) + target_living.adjustBruteLoss(5000) //THATS A LOT OF DAMAGE (called just in case gib() doesnt work on em) + if (!QDELETED(target_living)) + target_living.gib() //After adjusting the fuck outta that brute loss we finish the job with some satisfying gibs + else + target_living.adjustBruteLoss(damage) var/explosion_sum = B[1] + B[2] + B[3] + B[4] if (explosion_sum != 0) //If the explosion list isn't all zeroes, call an explosion - explosion(get_turf(src), B[1], B[2], B[3], flame_range = B[4], silent = effectQuiet, ignorecap = istype(src, /obj/structure/closet/supplypod/centcompod)) //less advanced equipment than bluespace pod, so larger explosion when landing - else if (!effectQuiet) //If our explosion list IS all zeroes, we still make a nice explosion sound (unless the effectQuiet var is true) - playsound(src, "explosion", landingSound ? 15 : 80, TRUE) + explosion(turf_underneath, B[1], B[2], B[3], flame_range = B[4], silent = effectQuiet, ignorecap = istype(src, /obj/structure/closet/supplypod/centcompod)) //less advanced equipment than bluespace pod, so larger explosion when landing + else if (!effectQuiet && !(pod_flags & FIRST_SOUNDS)) //If our explosion list IS all zeroes, we still make a nice explosion sound (unless the effectQuiet var is true) + playsound(src, "explosion", landingSound ? soundVolume * 0.25 : soundVolume, TRUE) + if (landingSound) + playsound(turf_underneath, landingSound, soundVolume, FALSE, FALSE) if (effectMissile) //If we are acting like a missile, then right after we land and finish fucking shit up w explosions, we should delete opened = TRUE //We set opened to TRUE to avoid spending time trying to open (due to being deleted) during the Destroy() proc qdel(src) return if (style == STYLE_GONDOLA) //Checks if we are supposed to be a gondola pod. If so, create a gondolapod mob, and move this pod to nullspace. I'd like to give a shout out, to my man oranges - var/mob/living/simple_animal/pet/gondola/gondolapod/benis = new(get_turf(src), src) + var/mob/living/simple_animal/pet/gondola/gondolapod/benis = new(turf_underneath, src) benis.contents |= contents //Move the contents of this supplypod into the gondolapod mob. moveToNullspace() - addtimer(CALLBACK(src, .proc/open, benis), openingDelay) //After the openingDelay passes, we use the open proc from this supplyprod while referencing the contents of the "holder", in this case the gondolapod mob + addtimer(CALLBACK(src, PROC_REF(open_pod), benis), delays[POD_OPENING]) //After the opening delay passes, we use the open proc from this supplyprod while referencing the contents of the "holder", in this case the gondolapod mob else if (style == STYLE_SEETHROUGH) open_pod(src) else - addtimer(CALLBACK(src, .proc/open_pod, src), openingDelay) //After the openingDelay passes, we use the open proc from this supplypod, while referencing this supplypod's contents + addtimer(CALLBACK(src, PROC_REF(open_pod), src), delays[POD_OPENING]) //After the opening delay passes, we use the open proc from this supplypod, while referencing this supplypod's contents /obj/structure/closet/supplypod/proc/open_pod(atom/movable/holder, broken = FALSE, forced = FALSE) //The holder var represents an atom whose contents we will be working with if (!holder) @@ -202,109 +276,289 @@ if (opened) //This is to ensure we don't open something that has already been opened return opened = TRUE - var/turf/T = get_turf(holder) //Get the turf of whoever's contents we're talking about - var/mob/M + holder.setOpened() + var/turf/turf_underneath = get_turf(holder) //Get the turf of whoever's contents we're talking about if (istype(holder, /mob)) //Allows mobs to assume the role of the holder, meaning we look at the mob's contents rather than the supplypod's contents. Typically by this point the supplypod's contents have already been moved over to the mob's contents - M = holder - if (M.key && !forced && !broken) //If we are player controlled, then we shouldnt open unless the opening is manual, or if it is due to being destroyed (represented by the "broken" parameter) + var/mob/holder_as_mob = holder + if (holder_as_mob.key && !forced && !broken) //If we are player controlled, then we shouldn't open unless the opening is manual, or if it is due to being destroyed (represented by the "broken" parameter) return if (openingSound) playsound(get_turf(holder), openingSound, soundVolume, FALSE, FALSE) //Special admin sound to play - INVOKE_ASYNC(holder, .proc/setOpened) //Use the INVOKE_ASYNC proc to call setOpened() on whatever the holder may be, without giving the atom/movable base class a setOpened() proc definition - if (style == STYLE_SEETHROUGH) - update_appearance() - for (var/atom/movable/O in holder.contents) //Go through the contents of the holder - O.forceMove(T) //move everything from the contents of the holder to the turf of the holder - if (!effectQuiet && !openingSound && style != STYLE_SEETHROUGH) //If we aren't being quiet, play the default pod open sound + for (var/turf_type in turfs_in_cargo) + turf_underneath.PlaceOnTop(turf_type) + for (var/cargo in contents) + var/atom/movable/movable_cargo = cargo + movable_cargo.forceMove(turf_underneath) + if (!effectQuiet && !openingSound && style != STYLE_SEETHROUGH && !(pod_flags & FIRST_SOUNDS)) //If we aren't being quiet, play the default pod open sound playsound(get_turf(holder), open_sound, 15, TRUE, -3) if (broken) //If the pod is opening because it's been destroyed, we end here return if (style == STYLE_SEETHROUGH) - depart(src) + startExitSequence(src) else + if (reversing) + addtimer(CALLBACK(src, PROC_REF(SetReverseIcon)), delays[POD_LEAVING]/2) //Finish up the pod's duties after a certain amount of time if(!stay_after_drop) // Departing should be handled manually - addtimer(CALLBACK(src, .proc/depart, holder), departureDelay) //Finish up the pod's duties after a certain amount of time + addtimer(CALLBACK(src, PROC_REF(startExitSequence), holder), delays[POD_LEAVING]*(4/5)) //Finish up the pod's duties after a certain amount of time -/obj/structure/closet/supplypod/proc/depart(atom/movable/holder) +/obj/structure/closet/supplypod/proc/startExitSequence(atom/movable/holder) if (leavingSound) playsound(get_turf(holder), leavingSound, soundVolume, FALSE, FALSE) if (reversing) //If we're reversing, we call the close proc. This sends the pod back up to centcom close(holder) else if (bluespace) //If we're a bluespace pod, then delete ourselves (along with our holder, if a seperate holder exists) + deleteRubble() if (!effectQuiet && style != STYLE_INVISIBLE && style != STYLE_SEETHROUGH) do_sparks(5, TRUE, holder) //Create some sparks right before closing qdel(src) //Delete ourselves and the holder if (holder != src) qdel(holder) -/obj/structure/closet/supplypod/centcompod/close(atom/movable/holder) //Closes the supplypod and sends it back to centcom. Should only ever be called if the "reversing" variable is true - handleReturningClose(holder, TRUE) +/obj/structure/closet/supplypod/close(atom/movable/holder) //Closes the supplypod and sends it back to centcom. Should only ever be called if the "reversing" variable is true + if (!holder) + return + take_contents(holder) + playsound(holder, close_sound, soundVolume*0.75, TRUE, -3) + holder.setClosed() + addtimer(CALLBACK(src, PROC_REF(preReturn), holder), delays[POD_LEAVING] * 0.2) //Start to leave a bit after closing for cinematic effect + +/obj/structure/closet/supplypod/take_contents(atom/movable/holder) + var/turf/turf_underneath = holder.drop_location() + for(var/atom_to_check in turf_underneath) + if(atom_to_check != src && !insert(atom_to_check, holder)) // Can't insert that + continue + insert(turf_underneath, holder) + +/obj/structure/closet/supplypod/insert(atom/to_insert, atom/movable/holder) + if(insertion_allowed(to_insert)) + if(isturf(to_insert)) + var/turf/turf_to_insert = to_insert + turfs_in_cargo += turf_to_insert.type + turf_to_insert.ScrapeAway() + else + var/atom/movable/movable_to_insert = to_insert + movable_to_insert.forceMove(holder) + return TRUE + else + return FALSE -/obj/structure/closet/supplypod/extractionpod/close(atom/movable/holder) //handles closing, and returns pod - deletes itself when returned - . = ..() - return +/obj/structure/closet/supplypod/insertion_allowed(atom/to_insert) + if(to_insert.invisibility == INVISIBILITY_ABSTRACT) + return FALSE + if(ismob(to_insert)) + if(!reverseOptionList["Mobs"]) + return FALSE + if(!isliving(to_insert)) //let's not put ghosts or camera mobs inside + return FALSE + var/mob/living/mob_to_insert = to_insert + if(mob_to_insert.anchored || mob_to_insert.incorporeal_move) + return FALSE + mob_to_insert.stop_pulling() + + else if(isobj(to_insert)) + var/obj/obj_to_insert = to_insert + if(istype(obj_to_insert, /obj/structure/closet/supplypod)) + return FALSE + if(istype(obj_to_insert, /obj/effect/supplypod_smoke)) + return FALSE + if(istype(obj_to_insert, /obj/effect/pod_landingzone)) + return FALSE + if(istype(obj_to_insert, /obj/effect/supplypod_rubble)) + return FALSE + /* + if((obj_to_insert.comp_lookup && obj_to_insert.comp_lookup[COMSIG_OBJ_HIDE]) && reverseOptionList["Underfloor"]) + return TRUE + else if ((obj_to_insert.comp_lookup && obj_to_insert.comp_lookup[COMSIG_OBJ_HIDE]) && !reverseOptionList["Underfloor"]) + return FALSE + */ + if(isProbablyWallMounted(obj_to_insert) && reverseOptionList["Wallmounted"]) + return TRUE + else if (isProbablyWallMounted(obj_to_insert) && !reverseOptionList["Wallmounted"]) + return FALSE + if(!obj_to_insert.anchored && reverseOptionList["Unanchored"]) + return TRUE + if(obj_to_insert.anchored && reverseOptionList["Anchored"]) + return TRUE + return FALSE -/obj/structure/closet/supplypod/extractionpod/proc/send_up(atom/movable/holder) - if (!holder) - holder = src + else if (isturf(to_insert)) + if(isfloorturf(to_insert) && reverseOptionList["Floors"]) + return TRUE + if(isfloorturf(to_insert) && !reverseOptionList["Floors"]) + return FALSE + if(isclosedturf(to_insert) && reverseOptionList["Walls"]) + return TRUE + if(isclosedturf(to_insert) && !reverseOptionList["Walls"]) + return FALSE + return FALSE + return TRUE - if (leavingSound) - playsound(get_turf(holder), leavingSound, soundVolume, FALSE, FALSE) +/obj/structure/closet/supplypod/proc/preReturn(atom/movable/holder) + deleteRubble() + animate(holder, alpha = 0, time = 8, easing = QUAD_EASING|EASE_IN, flags = ANIMATION_PARALLEL) + animate(holder, pixel_z = 400, time = 10, easing = QUAD_EASING|EASE_IN, flags = ANIMATION_PARALLEL) //Animate our rising pod - handleReturningClose(holder, FALSE) + addtimer(CALLBACK(src, PROC_REF(handleReturnAfterDeparting), holder), 15) //Finish up the pod's duties after a certain amount of time -/obj/structure/closet/supplypod/proc/setOpened() //Proc exists here, as well as in any atom that can assume the role of a "holder" of a supplypod. Check the open() proc for more details +/obj/structure/closet/supplypod/setOpened() //Proc exists here, as well as in any atom that can assume the role of a "holder" of a supplypod. Check the open_pod() proc for more details + opened = TRUE + density = FALSE + update_icon() + +/obj/structure/closet/supplypod/extractionpod/setOpened() + opened = TRUE + density = TRUE + update_icon() + +/obj/structure/closet/supplypod/setClosed() //Ditto + opened = FALSE + density = TRUE + update_icon() + +/obj/structure/closet/supplypod/proc/tryMakeRubble(turf/T) //Ditto + if (rubble_type == RUBBLE_NONE) + return + if (rubble) + return + if (effectMissile) + return + if (isspaceturf(T) || isclosedturf(T)) + return + rubble = new /obj/effect/supplypod_rubble(T) + rubble.setStyle(rubble_type, src) update_appearance() -/obj/structure/closet/supplypod/proc/setClosed() //Ditto +/obj/structure/closet/supplypod/Moved() + deleteRubble() + return ..() + +/obj/structure/closet/supplypod/proc/deleteRubble() + rubble?.fadeAway() + rubble = null update_appearance() +/obj/structure/closet/supplypod/proc/addGlow() + if (GLOB.podstyles[style][POD_SHAPE] != POD_SHAPE_NORML) + return + glow_effect = new(src) + glow_effect.icon_state = "pod_glow_" + GLOB.podstyles[style][POD_GLOW] + vis_contents += glow_effect + glow_effect.layer = GASFIRE_LAYER + +/obj/structure/closet/supplypod/proc/endGlow() + if(!glow_effect) + return + glow_effect.layer = LOW_ITEM_LAYER + glow_effect.fadeAway(delays[POD_OPENING]) + glow_effect = null + /obj/structure/closet/supplypod/Destroy() - open_pod(holder = src, broken = TRUE) //Lets dump our contents by opening up - . = ..() + open_pod(src, broken = TRUE) //Lets dump our contents by opening up + deleteRubble() + endGlow() + return ..() + +//------------------------------------TEMPORARY_VISUAL-------------------------------------// +/obj/effect/supplypod_smoke //Falling pod smoke + name = "" + icon = 'icons/obj/supplypods_32x32.dmi' + icon_state = "smoke" + desc = "" + layer = PROJECTILE_HIT_THRESHHOLD_LAYER + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + alpha = 0 -//------------------------------------FALLING SUPPLY POD-------------------------------------// -/obj/effect/DPfall //Falling pod +/obj/effect/engineglow //Falling pod smoke name = "" icon = 'icons/obj/supplypods.dmi' - pixel_x = -16 - pixel_y = -5 - pixel_z = 200 - desc = "Get out of the way!" - layer = FLY_LAYER//that wasnt flying, that was falling with style! - icon_state = "" - -/obj/effect/DPfall/Initialize(dropLocation, obj/structure/closet/supplypod/pod) - if (pod.style == STYLE_SEETHROUGH) - pixel_x = -16 - pixel_y = 0 - for (var/atom/movable/O in pod.contents) - var/icon/I = getFlatIcon(O) //im so sorry - add_overlay(I) - else if (pod.style != STYLE_INVISIBLE) //Check to ensure the pod isn't invisible - icon_state = "[pod.icon_state]_falling" - name = pod.name + icon_state = "pod_engineglow" + desc = "" + layer = GASFIRE_LAYER + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + alpha = 255 + +/obj/effect/engineglow/proc/fadeAway(leaveTime) + var/duration = min(leaveTime, 25) + animate(src, alpha=0, time = duration) + QDEL_IN(src, duration + 5) + +/obj/effect/supplypod_smoke/proc/drawSelf(amount) + alpha = max(0, 255-(amount*20)) + +/obj/effect/supplypod_rubble //This is the object that forceMoves the supplypod to it's location + name = "Debris" + desc = "A small crater of rubble. Closer inspection reveals the debris to be made primarily of space-grade metal fragments. You're pretty sure that this will disperse before too long." + icon = 'icons/obj/supplypods.dmi' + layer = PROJECTILE_HIT_THRESHHOLD_LAYER // We want this to go right below the layer of supplypods and supplypod_rubble's forground. + icon_state = "rubble_bg" + anchored = TRUE + pixel_x = SUPPLYPOD_X_OFFSET + var/foreground = "rubble_fg" + var/verticle_offset = 0 + +/obj/effect/supplypod_rubble/proc/getForeground(obj/structure/closet/supplypod/pod) + var/mutable_appearance/rubble_overlay = mutable_appearance('icons/obj/supplypods.dmi', foreground) + rubble_overlay.appearance_flags = KEEP_APART|RESET_TRANSFORM + rubble_overlay.transform = matrix().Translate(SUPPLYPOD_X_OFFSET - pod.pixel_x, verticle_offset) + return rubble_overlay + +/obj/effect/supplypod_rubble/proc/fadeAway() + animate(src, alpha=0, time = 30) + QDEL_IN(src, 35) + +/obj/effect/supplypod_rubble/proc/setStyle(type, obj/structure/closet/supplypod/pod) + if (type == RUBBLE_WIDE) + icon_state += "_wide" + foreground += "_wide" + if (type == RUBBLE_THIN) + icon_state += "_thin" + foreground += "_thin" + if (pod.style == STYLE_BOX) + verticle_offset = -2 + else + verticle_offset = initial(verticle_offset) + pixel_y = verticle_offset + +/obj/effect/pod_landingzone_effect + name = "" + desc = "" + icon = 'icons/obj/supplypods_32x32.dmi' + icon_state = "LZ_Slider" + layer = PROJECTILE_HIT_THRESHHOLD_LAYER + +/obj/effect/pod_landingzone_effect/Initialize(mapload, obj/structure/closet/supplypod/pod) . = ..() + transform = matrix() * 1.5 + animate(src, transform = matrix()*0.01, time = pod.delays[POD_TRANSIT]+pod.delays[POD_FALLING]) -//------------------------------------TEMPORARY_VISUAL-------------------------------------// -/obj/effect/DPtarget //This is the object that forceMoves the supplypod to it's location +/obj/effect/pod_landingzone //This is the object that forceMoves the supplypod to it's location name = "Landing Zone Indicator" desc = "A holographic projection designating the landing zone of something. It's probably best to stand back." - icon = 'icons/mob/actions/actions_items.dmi' - icon_state = "sniper_zoom" + icon = 'icons/obj/supplypods_32x32.dmi' + icon_state = "LZ" layer = PROJECTILE_HIT_THRESHHOLD_LAYER light_range = 2 - var/obj/effect/temp_visual/fallingPod //Temporary "falling pod" that we animate - var/obj/structure/closet/supplypod/pod //The supplyPod that will be landing ontop of this target + anchored = TRUE + alpha = 0 + var/obj/structure/closet/supplypod/pod //The supplyPod that will be landing ontop of this pod_landingzone + var/obj/effect/pod_landingzone_effect/helper + var/list/smoke_effects = new /list(13) /obj/effect/ex_act() return -/obj/effect/DPtarget/Initialize(mapload, podParam, single_order = null) +/obj/effect/pod_landingzone/Initialize(mapload, podParam, single_order = null, clientman) . = ..() + if(!podParam) + stack_trace("Pod landingzone created with no pod") + return INITIALIZE_HINT_QDEL if (ispath(podParam)) //We can pass either a path for a pod (as expressconsoles do), or a reference to an instantiated pod (as the centcom_podlauncher does) podParam = new podParam() //If its just a path, instantiate it pod = podParam + if (!pod.effectStealth) + helper = new (drop_location(), pod) + alpha = 255 + animate(src, transform = matrix().Turn(90), time = pod.delays[POD_TRANSIT]+pod.delays[POD_FALLING]) if (single_order) if (istype(single_order, /datum/supply_order)) var/datum/supply_order/SO = single_order @@ -312,46 +566,73 @@ else if (istype(single_order, /atom/movable)) var/atom/movable/O = single_order O.forceMove(pod) - for (var/mob/living/M in pod) //If there are any mobs in the supplypod, we want to forceMove them into the target. This is so that they can see where they are about to land, AND so that they don't get sent to the nullspace error room (as the pod is currently in nullspace) - M.forceMove(src) - if(pod.effectStun) //If effectStun is true, stun any mobs caught on this target until the pod gets a chance to hit them - for (var/mob/living/M in get_turf(src)) - M.Stun(pod.landingDelay+10, ignore_canstun = TRUE)//you aint goin nowhere, kid. - if (pod.effectStealth) //If effectStealth is true we want to be invisible - icon_state = "" - if (pod.fallDuration == initial(pod.fallDuration) && pod.landingDelay + pod.fallDuration < pod.fallingSoundLength) + for (var/mob/living/mob_in_pod in pod) //If there are any mobs in the supplypod, we want to set their view to the pod_landingzone. This is so that they can see where they are about to land + mob_in_pod.reset_perspective(src) + if(pod.effectStun) //If effectStun is true, stun any mobs caught on this pod_landingzone until the pod gets a chance to hit them + for (var/mob/living/target_living in get_turf(src)) + target_living.Stun(pod.delays[POD_TRANSIT]+10, ignore_canstun = TRUE)//you ain't goin nowhere, kid. + if (pod.delays[POD_FALLING] == initial(pod.delays[POD_FALLING]) && pod.delays[POD_TRANSIT] + pod.delays[POD_FALLING] < pod.fallingSoundLength) pod.fallingSoundLength = 3 //The default falling sound is a little long, so if the landing time is shorter than the default falling sound, use a special, shorter default falling sound pod.fallingSound = 'sound/weapons/mortar_whistle.ogg' - var/soundStartTime = pod.landingDelay - pod.fallingSoundLength + pod.fallDuration + var/soundStartTime = pod.delays[POD_TRANSIT] - pod.fallingSoundLength + pod.delays[POD_FALLING] if (soundStartTime < 0) soundStartTime = 1 - if (!pod.effectQuiet) - addtimer(CALLBACK(src, .proc/playFallingSound), soundStartTime) - addtimer(CALLBACK(src, .proc/beginLaunch, pod.effectCircle), pod.landingDelay) - -/obj/effect/DPtarget/proc/playFallingSound() - playsound(src, pod.fallingSound, pod.soundVolume, TRUE, 6) - -/obj/effect/DPtarget/proc/beginLaunch(effectCircle) //Begin the animation for the pod falling. The effectCircle param determines whether the pod gets to come in from any descent angle - fallingPod = new /obj/effect/DPfall(drop_location(), pod) - var/matrix/M = matrix(fallingPod.transform) //Create a new matrix that we can rotate + if (!pod.effectQuiet && !(pod.pod_flags & FIRST_SOUNDS)) + addtimer(CALLBACK(src, PROC_REF(playFallingSound)), soundStartTime) + addtimer(CALLBACK(src, PROC_REF(beginLaunch), pod.effectCircle), pod.delays[POD_TRANSIT]) + +/obj/effect/pod_landingzone/proc/playFallingSound() + playsound(src, pod.fallingSound, pod.soundVolume, 1, 6) + +/obj/effect/pod_landingzone/proc/beginLaunch(effectCircle) //Begin the animation for the pod falling. The effectCircle param determines whether the pod gets to come in from any descent angle + pod.addGlow() + pod.update_icon() + if (pod.style != STYLE_INVISIBLE) + pod.add_filter("motionblur",1,list("type"="motion_blur", "x"=0, "y"=3)) + pod.forceMove(drop_location()) + for (var/mob/living/M in pod) //Remember earlier (initialization) when we moved mobs into the pod_landingzone so they wouldnt get lost in nullspace? Time to get them out + M.reset_perspective(null) var/angle = effectCircle ? rand(0,360) : rand(70,110) //The angle that we can come in from - fallingPod.pixel_x = cos(angle)*400 //Use some ADVANCED MATHEMATICS to set the animated pod's position to somewhere on the edge of a circle with the center being the target - fallingPod.pixel_z = sin(angle)*400 - var/rotation = Get_Pixel_Angle(fallingPod.pixel_z, fallingPod.pixel_x) //CUSTOM HOMEBREWED proc that is just arctan with extra steps - M.Turn(rotation) //Turn our matrix accordingly - fallingPod.transform = M //Transform the animated pod according to the matrix - M = matrix(pod.transform) //Make another matrix based on the pod - M.Turn(rotation) //Turn the matrix - pod.transform = M //Turn the actual pod (Won't be visible until endLaunch() proc tho) - animate(fallingPod, pixel_z = 0, pixel_x = -16, time = pod.fallDuration, , easing = LINEAR_EASING) //Make the pod fall! At an angle! - addtimer(CALLBACK(src, .proc/endLaunch), pod.fallDuration, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation - -/obj/effect/DPtarget/proc/endLaunch() - pod.update_appearance() - pod.forceMove(drop_location()) //The fallingPod animation is over, now's a good time to forceMove the actual pod into position - QDEL_NULL(fallingPod) //Delete the falling pod effect, because at this point its animation is over. We dont use temp_visual because we want to manually delete it as soon as the pod appears - for (var/mob/living/M in src) //Remember earlier (initialization) when we moved mobs into the DPTarget so they wouldnt get lost in nullspace? Time to get them out - M.forceMove(pod) + pod.pixel_x = cos(angle)*32*length(smoke_effects) //Use some ADVANCED MATHEMATICS to set the animated pod's position to somewhere on the edge of a circle with the center being the target + pod.pixel_z = sin(angle)*32*length(smoke_effects) + var/rotation = Get_Pixel_Angle(pod.pixel_z, pod.pixel_x) //CUSTOM HOMEBREWED proc that is just arctan with extra steps + setupSmoke(rotation) + pod.transform = matrix().Turn(rotation) + pod.layer = FLY_LAYER + if (pod.style != STYLE_INVISIBLE) + animate(pod.get_filter("motionblur"), y = 0, time = pod.delays[POD_FALLING], flags = ANIMATION_PARALLEL) + animate(pod, pixel_z = -1 * abs(sin(rotation))*4, pixel_x = SUPPLYPOD_X_OFFSET + (sin(rotation) * 20), time = pod.delays[POD_FALLING], easing = LINEAR_EASING, flags = ANIMATION_PARALLEL) //Make the pod fall! At an angle! + addtimer(CALLBACK(src, PROC_REF(endLaunch)), pod.delays[POD_FALLING], TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation + +/obj/effect/pod_landingzone/proc/setupSmoke(rotation) + if (pod.style == STYLE_INVISIBLE || pod.style == STYLE_SEETHROUGH) + return + for ( var/i in 1 to length(smoke_effects)) + var/obj/effect/supplypod_smoke/smoke_part = new (drop_location()) + if (i == 1) + smoke_part.layer = FLY_LAYER + smoke_part.icon_state = "smoke_start" + smoke_part.transform = matrix().Turn(rotation) + smoke_effects[i] = smoke_part + smoke_part.pixel_x = sin(rotation)*32 * i + smoke_part.pixel_y = abs(cos(rotation))*32 * i + smoke_part.filters += filter(type = "blur", size = 4) + var/time = (pod.delays[POD_FALLING] / length(smoke_effects))*(length(smoke_effects)-i) + addtimer(CALLBACK(smoke_part, TYPE_PROC_REF(/obj/effect/supplypod_smoke, drawSelf), i), time, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation + QDEL_IN(smoke_part, pod.delays[POD_FALLING] + 35) + +/obj/effect/pod_landingzone/proc/drawSmoke() + if (pod.style == STYLE_INVISIBLE || pod.style == STYLE_SEETHROUGH) + return + for (var/obj/effect/supplypod_smoke/smoke_part in smoke_effects) + animate(smoke_part, alpha = 0, time = 20, flags = ANIMATION_PARALLEL) + animate(smoke_part.filters[1], size = 6, time = 15, easing = CUBIC_EASING|EASE_OUT, flags = ANIMATION_PARALLEL) + +/obj/effect/pod_landingzone/proc/endLaunch() + pod.tryMakeRubble(drop_location()) + pod.layer = initial(pod.layer) + pod.endGlow() + QDEL_NULL(helper) pod.preOpen() //Begin supplypod open procedures. Here effects like explosions, damage, and other dangerous (and potentially admin-caused, if the centcom_podlauncher datum was used) memes will take place + drawSmoke() qdel(src) //The target's purpose is complete. It can rest easy now diff --git a/code/modules/cargo/supplypod_beacon.dm b/code/modules/cargo/supplypod_beacon.dm index b5ae8023bb4d..11fd10229e5e 100644 --- a/code/modules/cargo/supplypod_beacon.dm +++ b/code/modules/cargo/supplypod_beacon.dm @@ -23,7 +23,7 @@ launched = TRUE playsound(src,'sound/machines/triple_beep.ogg',50,FALSE) playsound(src,'sound/machines/warning-buzzer.ogg',50,FALSE) - addtimer(CALLBACK(src, .proc/endLaunch), 33)//wait 3.3 seconds (time it takes for supplypod to land), then update icon + addtimer(CALLBACK(src, PROC_REF(endLaunch)), 33)//wait 3.3 seconds (time it takes for supplypod to land), then update icon if (SP_UNLINK) linked = FALSE playsound(src,'sound/machines/synth_no.ogg',50,FALSE) diff --git a/code/modules/client/client_colour.dm b/code/modules/client/client_colour.dm index 6357229e02db..b569faf75b10 100644 --- a/code/modules/client/client_colour.dm +++ b/code/modules/client/client_colour.dm @@ -204,7 +204,7 @@ /datum/client_colour/bloodlust/New(mob/_owner) ..() - addtimer(CALLBACK(src, .proc/update_colour, list(1,0,0,0.8,0.2,0, 0.8,0,0.2,0.1,0,0), 10, SINE_EASING|EASE_OUT), 1) + addtimer(CALLBACK(src, PROC_REF(update_colour), list(1,0,0,0.8,0.2,0, 0.8,0,0.2,0.1,0,0), 10, SINE_EASING|EASE_OUT), 1) /datum/client_colour/thirdeye colour = list( diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index f6c306a411af..de655ece5f1a 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -31,6 +31,8 @@ ///Internal counter for clients sending external (IRC/Discord) relay messages via ahelp to prevent spamming. Set to a number every time an admin reply is sent, decremented for every client send. var/externalreplyamount = 0 var/ircreplyamount = 0 + ///Tracks say() usage for ic/dchat while slowmode is enabled + COOLDOWN_DECLARE(say_slowmode) ///////// //OTHER// ///////// diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 5c5553df2755..334818c0e1f9 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -137,8 +137,17 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( if(QDELETED(real_src)) return + //fun fact: Topic() acts like a verb and is executed at the end of the tick like other verbs. So we have to queue it if the server is + //overloaded + if(hsrc && hsrc != holder && DEFAULT_TRY_QUEUE_VERB(VERB_CALLBACK(src, PROC_REF(_Topic), hsrc, href, href_list))) + return ..() //redirect to hsrc.Topic() +///dumb workaround because byond doesnt seem to recognize the .proc/Topic() typepath for /datum/proc/Topic() from the client Topic, +///so we cant queue it without this +/client/proc/_Topic(datum/hsrc, href, list/href_list) + return hsrc.Topic(href, href_list) + /client/proc/is_content_unlocked() if(!prefs.unlock_content) to_chat(src, "Become a BYOND member to access member-perks and features, as well as support the engine that makes this game possible. Only 10 bucks for 3 months! Click Here to find out more.") @@ -338,7 +347,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( // Initialize tgui panel src << browse(file('html/statbrowser.html'), "window=statbrowser") - addtimer(CALLBACK(src, .proc/check_panel_loaded), 30 SECONDS) + addtimer(CALLBACK(src, PROC_REF(check_panel_loaded)), 30 SECONDS) tgui_panel.initialize() if(alert_mob_dupe_login) @@ -469,6 +478,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( view_size.setZoomMode() fit_viewport() Master.UpdateTickRate() + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_CLIENT_CONNECT, src) ////////////// //DISCONNECT// @@ -842,6 +852,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( click_intercept_time = 0 //Reset and return. Next click should work, but not this one. return click_intercept_time = 0 //Just reset. Let's not keep re-checking forever. + var/ab = FALSE var/list/modifiers = params2list(params) @@ -855,12 +866,16 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( var/mcl = CONFIG_GET(number/minute_click_limit) if (!holder && mcl) var/minute = round(world.time, 600) + if (!clicklimiter) clicklimiter = new(LIMITER_SIZE) + if (minute != clicklimiter[CURRENT_MINUTE]) clicklimiter[CURRENT_MINUTE] = minute clicklimiter[MINUTE_COUNT] = 0 - clicklimiter[MINUTE_COUNT] += 1+(ab) + + clicklimiter[MINUTE_COUNT] += 1 + (ab) + if (clicklimiter[MINUTE_COUNT] > mcl) var/msg = "Your previous click was ignored because you've done too many in a minute." if (minute != clicklimiter[ADMINSWARNED_AT]) //only one admin message per-minute. (if they spam the admins can just boot/ban them) @@ -881,14 +896,22 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( var/second = round(world.time, 10) if (!clicklimiter) clicklimiter = new(LIMITER_SIZE) + if (second != clicklimiter[CURRENT_SECOND]) clicklimiter[CURRENT_SECOND] = second clicklimiter[SECOND_COUNT] = 0 - clicklimiter[SECOND_COUNT] += 1+(!!ab) + + clicklimiter[SECOND_COUNT] += 1 + (!!ab) + if (clicklimiter[SECOND_COUNT] > scl) - to_chat(src, "Your previous click was ignored because you've done too many in a second") + to_chat(src, span_danger("Your previous click was ignored because you've done too many in a second")) return + //check if the server is overloaded and if it is then queue up the click for next tick + //yes having it call a wrapping proc on the subsystem is fucking stupid glad we agree unfortunately byond insists its reasonable + if(!QDELETED(object) && TRY_QUEUE_VERB(VERB_CALLBACK(object, /atom/proc/_Click, location, control, params), VERB_OVERTIME_QUEUE_THRESHOLD, SSinput, control)) + return + if (prefs.hotkeys) winset(src, null, "input.focus=false") else @@ -931,7 +954,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( //Precache the client with all other assets slowly, so as to not block other browse() calls if (CONFIG_GET(flag/asset_simple_preload)) - addtimer(CALLBACK(SSassets.transport, /datum/asset_transport.proc/send_assets_slow, src, SSassets.transport.preload), 5 SECONDS) + addtimer(CALLBACK(SSassets.transport, TYPE_PROC_REF(/datum/asset_transport, send_assets_slow), src, SSassets.transport.preload), 5 SECONDS) #if (PRELOAD_RSC == 0) for (var/name in GLOB.vox_sounds) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 991a10b58331..69ea5e634cda 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -609,7 +609,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("spider_legs" in pref_species.default_features) if(!mutant_category) dat += APPEARANCE_CATEGORY_COLUMN - dat += "

Spider Extra Legs Variant

" + dat += "

Extra Legs

" dat += "[features["spider_legs"]]
" @@ -621,7 +621,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("spider_spinneret" in pref_species.default_features) if(!mutant_category) dat += APPEARANCE_CATEGORY_COLUMN - dat += "

Spider Spinneret Markings

" + dat += "

Spinneret

" dat += "[features["spider_spinneret"]]
" @@ -630,18 +630,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" mutant_category = 0 - if("spider_mandibles" in pref_species.default_features) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - dat += "

Spider Mandible Variant

" - - dat += "[features["spider_mandibles"]]
" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if("squid_face" in pref_species.default_features) if(!mutant_category) dat += APPEARANCE_CATEGORY_COLUMN @@ -1342,24 +1330,22 @@ GLOBAL_LIST_EMPTY(preferences_datums) /datum/preferences/proc/check_quirk_compatibility(mob/user) var/list/quirk_conflicts = list() var/list/handled_conflicts = list() - for(var/quirk_index in SSquirks.quirk_instances) - var/datum/quirk/quirk_instance = SSquirks.quirk_instances[quirk_index] - if(!quirk_instance) - continue - if(quirk_instance.mood_quirk && CONFIG_GET(flag/disable_human_mood)) - quirk_conflicts[quirk_instance.name] = "Mood and mood quirks are disabled." + for(var/quirk_name in SSquirks.quirks) + var/datum/quirk/quirk_type = SSquirks.quirks[quirk_name] + if(initial(quirk_type.mood_quirk) && CONFIG_GET(flag/disable_human_mood)) + quirk_conflicts[quirk_name] = "Mood and mood quirks are disabled." if(!handled_conflicts["mood"]) handle_quirk_conflict("mood", null, user) handled_conflicts["mood"] = TRUE - if(((quirk_instance.species_lock["type"] == "allowed") && !(pref_species.id in quirk_instance.species_lock)) || (quirk_instance.species_lock["type"] == "blocked" && (pref_species.id in quirk_instance.species_lock))) - quirk_conflicts[quirk_instance.name] = "Quirk unavailable to species." + if((quirk_name in SSquirks.species_blacklist) && (pref_species.id in SSquirks.species_blacklist[quirk_name])) + quirk_conflicts[quirk_name] = "Quirk unavailable to species." if(!handled_conflicts["species"]) handle_quirk_conflict("species", pref_species, user) handled_conflicts["species"] = TRUE for(var/blacklist in SSquirks.quirk_blacklist) for(var/quirk_blacklisted in all_quirks) - if((quirk_blacklisted in blacklist) && !quirk_conflicts[quirk_instance.name] && (quirk_instance.name in blacklist) && !(quirk_instance.name == quirk_blacklisted)) - quirk_conflicts[quirk_instance.name] = "Quirk is mutually exclusive with [quirk_blacklisted]." + if((quirk_blacklisted in blacklist) && !quirk_conflicts[quirk_name] && (quirk_name in blacklist) && !(quirk_name == quirk_blacklisted)) + quirk_conflicts[quirk_name] = "Quirk is mutually exclusive with [quirk_blacklisted]." if(!handled_conflicts["blacklist"]) handle_quirk_conflict("blacklist", null, user) handled_conflicts["blacklist"] = TRUE @@ -1382,24 +1368,24 @@ GLOBAL_LIST_EMPTY(preferences_datums) target_species = additional_argument else return - for(var/quirk_owned in all_quirks) - var/datum/quirk/quirk_owned_instance = SSquirks.quirk_instances[quirk_owned] - balance -= quirk_owned_instance.value + for(var/quirk_name in all_quirks) + var/datum/quirk/quirk_type = SSquirks.quirks[quirk_name] + balance -= initial(quirk_type.value) switch(change_type) if("species") - if(((quirk_owned_instance.species_lock["type"] == "allowed") && !(target_species.id in quirk_owned_instance.species_lock)) || ((quirk_owned_instance.species_lock["type"] == "blocked") && (target_species.id in quirk_owned_instance.species_lock))) - all_quirks_new -= quirk_owned_instance.name - balance += quirk_owned_instance.value + if((quirk_name in SSquirks.species_blacklist) && (pref_species.id in SSquirks.species_blacklist[quirk_name])) + all_quirks_new -= quirk_name + balance += initial(quirk_type.value) if("mood") - if(quirk_owned_instance.mood_quirk) - all_quirks_new -= quirk_owned_instance.name - balance += quirk_owned_instance.value + if(initial(quirk_type.mood_quirk)) + all_quirks_new -= quirk_name + balance += initial(quirk_type.value) if("blacklist") for(var/blacklist in SSquirks.quirk_blacklist) for(var/quirk_blacklisted in all_quirks_new) - if((quirk_blacklisted in blacklist) && (quirk_owned_instance.name in blacklist) && !(quirk_owned_instance.name == quirk_blacklisted)) - all_quirks_new -= quirk_owned_instance.name - balance += quirk_owned_instance.value + if((quirk_blacklisted in blacklist) && (quirk_name in blacklist) && !(quirk_name == quirk_blacklisted)) + all_quirks_new -= quirk_name + balance += initial(quirk_type.value) if(balance < 0) var/list/positive_quirks = list() for(var/quirk_owned in all_quirks_new) @@ -1908,18 +1894,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_spider_spinneret) features["spider_spinneret"] = new_spider_spinneret - if("spider_mandibles") - var/new_spider_mandibles - new_spider_mandibles = input(user, "Choose your character's variant of mandibles:", "Character Preference") as null|anything in GLOB.spider_mandibles_list - if (new_spider_mandibles) - features["spider_mandibles"] = new_spider_mandibles - - if("squid_face") - var/new_squid_face - new_squid_face = input(user, "Choose your character's face type:", "Character Preference") as null|anything in GLOB.squid_face_list - if (new_squid_face) - features["squid_face"] = new_squid_face - if("ipc_screen") var/new_ipc_screen diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 26cea413adb3..e8015ce2fbb7 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -122,7 +122,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(!addedbind) notadded += kb if(length(notadded)) - addtimer(CALLBACK(src, .proc/announce_conflict, notadded), 5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(announce_conflict), notadded), 5 SECONDS) /datum/preferences/proc/announce_conflict(list/notadded) to_chat(parent, "KEYBINDING CONFLICT!!!\n\ @@ -503,52 +503,51 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car underwear = sanitize_inlist(underwear, GLOB.underwear_list) undershirt = sanitize_inlist(undershirt, GLOB.undershirt_list) - socks = sanitize_inlist(socks, GLOB.socks_list) - age = sanitize_integer(age, pref_species.species_age_min, pref_species.species_age_max, initial(age)) + socks = sanitize_inlist(socks, GLOB.socks_list) + age = sanitize_integer(age, pref_species.species_age_min, pref_species.species_age_max, initial(age)) hair_color = sanitize_hexcolor(hair_color) - facial_hair_color = sanitize_hexcolor(facial_hair_color) - underwear_color = sanitize_hexcolor(underwear_color) - eye_color = sanitize_hexcolor(eye_color) - skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones) + facial_hair_color = sanitize_hexcolor(facial_hair_color) + underwear_color = sanitize_hexcolor(underwear_color) + eye_color = sanitize_hexcolor(eye_color) + skin_tone = sanitize_inlist(skin_tone, GLOB.skin_tones) backpack = sanitize_inlist(backpack, GLOB.backpacklist, initial(backpack)) - jumpsuit_style = sanitize_inlist(jumpsuit_style, GLOB.jumpsuitlist, initial(jumpsuit_style)) - exowear = sanitize_inlist(exowear, GLOB.exowearlist, initial(exowear)) - uplink_spawn_loc = sanitize_inlist(uplink_spawn_loc, GLOB.uplink_spawn_loc_list, initial(uplink_spawn_loc)) - fbp = sanitize_integer(fbp, FALSE, TRUE, FALSE) - features["grad_style"] = sanitize_inlist(features["grad_style"], GLOB.hair_gradients_list) - features["grad_color"] = sanitize_hexcolor(features["grad_color"]) - features["body_size"] = sanitize_inlist(features["body_size"], GLOB.body_sizes, "Normal") - features["mcolor"] = sanitize_hexcolor(features["mcolor"]) - features["mcolor2"] = sanitize_hexcolor(features["mcolor2"]) - features["ethcolor"] = copytext_char(features["ethcolor"], 1, 7) - features["tail_lizard"] = sanitize_inlist(features["tail_lizard"], GLOB.tails_list_lizard) - features["tail_human"] = sanitize_inlist(features["tail_human"], GLOB.tails_list_human, "None") - features["face_markings"] = sanitize_inlist(features["face_markings"], GLOB.face_markings_list) - features["horns"] = sanitize_inlist(features["horns"], GLOB.horns_list) - features["ears"] = sanitize_inlist(features["ears"], GLOB.ears_list, "None") - features["frills"] = sanitize_inlist(features["frills"], GLOB.frills_list) - features["spines"] = sanitize_inlist(features["spines"], GLOB.spines_list) - features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) - features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list, "Normal Legs") - features["moth_wings"] = sanitize_inlist(features["moth_wings"], GLOB.moth_wings_list, "Plain") - features["moth_fluff"] = sanitize_inlist(features["moth_fluff"], GLOB.moth_fluff_list, "Plain") - features["spider_legs"] = sanitize_inlist(features["spider_legs"], GLOB.spider_legs_list, "Plain") - features["spider_spinneret"] = sanitize_inlist(features["spider_spinneret"], GLOB.spider_spinneret_list, "Plain") - features["spider_mandibles"] = sanitize_inlist(features["spider_mandibles"], GLOB.spider_mandibles_list, "Plain") - features["moth_markings"] = sanitize_inlist(features["moth_markings"], GLOB.moth_markings_list, "None") - features["squid_face"] = sanitize_inlist(features["squid_face"], GLOB.squid_face_list, "Squidward") - features["ipc_screen"] = sanitize_inlist(features["ipc_screen"], GLOB.ipc_screens_list) - features["ipc_antenna"] = sanitize_inlist(features["ipc_antenna"], GLOB.ipc_antennas_list) - features["ipc_chassis"] = sanitize_inlist(features["ipc_chassis"], GLOB.ipc_chassis_list) - features["ipc_brain"] = sanitize_inlist(features["ipc_brain"], GLOB.ipc_brain_list) - features["kepori_feathers"] = sanitize_inlist(features["kepori_feathers"], GLOB.kepori_feathers_list, "Plain") - features["kepori_body_feathers"] = sanitize_inlist(features["kepori_body_feathers"], GLOB.kepori_body_feathers_list, "Plain") - features["kepori_tail_feathers"] = sanitize_inlist(features["kepori_tail_feathers"], GLOB.kepori_tail_feathers_list, "Fan") - features["vox_head_quills"] = sanitize_inlist(features["vox_head_quills"], GLOB.vox_head_quills_list, "None") - features["vox_neck_quills"] = sanitize_inlist(features["vox_neck_quills"], GLOB.vox_neck_quills_list, "None") - features["elzu_horns"] = sanitize_inlist(features["elzu_horns"], GLOB.elzu_horns_list) - features["tail_elzu"] = sanitize_inlist(features["tail_elzu"], GLOB.tails_list_elzu) - features["flavor_text"] = sanitize_text(features["flavor_text"], initial(features["flavor_text"])) + jumpsuit_style = sanitize_inlist(jumpsuit_style, GLOB.jumpsuitlist, initial(jumpsuit_style)) + exowear = sanitize_inlist(exowear, GLOB.exowearlist, initial(exowear)) + uplink_spawn_loc = sanitize_inlist(uplink_spawn_loc, GLOB.uplink_spawn_loc_list, initial(uplink_spawn_loc)) + fbp = sanitize_integer(fbp, FALSE, TRUE, FALSE) + features["grad_style"] = sanitize_inlist(features["grad_style"], GLOB.hair_gradients_list) + features["grad_color"] = sanitize_hexcolor(features["grad_color"]) + features["body_size"] = sanitize_inlist(features["body_size"], GLOB.body_sizes, "Normal") + features["mcolor"] = sanitize_hexcolor(features["mcolor"]) + features["mcolor2"] = sanitize_hexcolor(features["mcolor2"]) + features["ethcolor"] = copytext_char(features["ethcolor"], 1, 7) + features["tail_lizard"] = sanitize_inlist(features["tail_lizard"], GLOB.tails_list_lizard) + features["tail_human"] = sanitize_inlist(features["tail_human"], GLOB.tails_list_human, "None") + features["face_markings"] = sanitize_inlist(features["face_markings"], GLOB.face_markings_list) + features["horns"] = sanitize_inlist(features["horns"], GLOB.horns_list) + features["ears"] = sanitize_inlist(features["ears"], GLOB.ears_list, "None") + features["frills"] = sanitize_inlist(features["frills"], GLOB.frills_list) + features["spines"] = sanitize_inlist(features["spines"], GLOB.spines_list) + features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) + features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list, "Normal Legs") + features["moth_wings"] = sanitize_inlist(features["moth_wings"], GLOB.moth_wings_list, "Plain") + features["moth_fluff"] = sanitize_inlist(features["moth_fluff"], GLOB.moth_fluff_list, "Plain") + features["spider_legs"] = sanitize_inlist(features["spider_legs"], GLOB.spider_legs_list, "Plain") + features["spider_spinneret"] = sanitize_inlist(features["spider_spinneret"], GLOB.spider_spinneret_list, "Plain") + features["moth_markings"] = sanitize_inlist(features["moth_markings"], GLOB.moth_markings_list, "None") + features["squid_face"] = sanitize_inlist(features["squid_face"], GLOB.squid_face_list, "Squidward") + features["ipc_screen"] = sanitize_inlist(features["ipc_screen"], GLOB.ipc_screens_list) + features["ipc_antenna"] = sanitize_inlist(features["ipc_antenna"], GLOB.ipc_antennas_list) + features["ipc_chassis"] = sanitize_inlist(features["ipc_chassis"], GLOB.ipc_chassis_list) + features["ipc_brain"] = sanitize_inlist(features["ipc_brain"], GLOB.ipc_brain_list) + features["kepori_feathers"] = sanitize_inlist(features["kepori_feathers"], GLOB.kepori_feathers_list, "Plain") + features["kepori_body_feathers"] = sanitize_inlist(features["kepori_body_feathers"], GLOB.kepori_body_feathers_list, "Plain") + features["kepori_tail_feathers"] = sanitize_inlist(features["kepori_tail_feathers"], GLOB.kepori_tail_feathers_list, "Fan") + features["vox_head_quills"] = sanitize_inlist(features["vox_head_quills"], GLOB.vox_head_quills_list, "None") + features["vox_neck_quills"] = sanitize_inlist(features["vox_neck_quills"], GLOB.vox_neck_quills_list, "None") + features["elzu_horns"] = sanitize_inlist(features["elzu_horns"], GLOB.elzu_horns_list) + features["tail_elzu"] = sanitize_inlist(features["tail_elzu"], GLOB.tails_list_elzu) + features["flavor_text"] = sanitize_text(features["flavor_text"], initial(features["flavor_text"])) all_quirks = SANITIZE_LIST(all_quirks) diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index f8ee83b60b0c..e16fde8d54f0 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -102,7 +102,7 @@ return FALSE var/datum/outfit/job/O = new outfit_type() var/list/outfit_types = O.get_chameleon_disguise_info() - var/datum/job/job_datum = SSjob.GetJobType(O.jobtype) + var/datum/job/job_datum = GLOB.type_occupations[O.jobtype] for(var/V in user.chameleon_item_actions) var/datum/action/item_action/chameleon/change/A = V diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index a94a18bce614..f4c2a5a27f4e 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -128,8 +128,31 @@ /obj/item/clothing/glasses/eyepatch name = "eyepatch" desc = "Yarr." - icon_state = "eyepatch" - item_state = "eyepatch" + icon_state = "eyepatch-0" + item_state = "eyepatch-0" + var/flipped = FALSE + +/obj/item/clothing/glasses/eyepatch/AltClick(mob/user) + . = ..() + flipped = !flipped + to_chat(user, "You shift the eyepatch to cover the [flipped == 0 ? "right" : "left"] eye.") + icon_state = "eyepatch-[flipped]" + item_state = "eyepatch-[flipped]" + update_appearance() + +/obj/item/clothing/glasses/eyepatch/examine(mob/user) + . = ..() + . += "It is currently aligned to the [flipped == 0 ? "right" : "left"] side." + +/obj/item/clothing/glasses/eyepatch/attackby(obj/item/I, mob/user, params) + . = ..() + if(istype(I, /obj/item/clothing/glasses/eyepatch)) + var/obj/item/clothing/glasses/eyepatch/old_patch = I + var/obj/item/clothing/glasses/blindfold/eyepatch/double_patch = new/obj/item/clothing/glasses/blindfold/eyepatch + double_patch.forceMove(user.drop_location()) + to_chat(user, "You combine the eyepatches with a knot.") + old_patch.Destroy() + Destroy() /obj/item/clothing/glasses/monocle name = "monocle" @@ -348,6 +371,21 @@ M.color = "#[H.eye_color]" . += M +/obj/item/clothing/glasses/blindfold/eyepatch + name = "double eyepatch" + desc = "For those pirates who've been at it a while. May interfere with navigating ability." + icon_state = "eyepatchd" + item_state = "eyepatchd" + +/obj/item/clothing/glasses/blindfold/eyepatch/attack_self(mob/user) + . = ..() + var/obj/item/clothing/glasses/eyepatch/patch_one = new/obj/item/clothing/glasses/eyepatch + var/obj/item/clothing/glasses/eyepatch/patch_two = new/obj/item/clothing/glasses/eyepatch + patch_one.forceMove(user.drop_location()) + patch_two.forceMove(user.drop_location()) + to_chat(user, "You undo the knot on the eyepatches.") + Destroy() + /obj/item/clothing/glasses/sunglasses/big desc = "Strangely ancient technology used to help provide rudimentary eye cover. Larger than average enhanced shielding blocks flashes." icon_state = "bigsunglasses" @@ -411,8 +449,21 @@ /obj/item/clothing/glasses/thermal/eyepatch name = "optical thermal eyepatch" desc = "An eyepatch with built-in thermal optics." - icon_state = "eyepatch" - item_state = "eyepatch" + icon_state = "eyepatch-0" + item_state = "eyepatch-0" + var/flipped = FALSE + +/obj/item/clothing/glasses/thermal/eyepatch/AltClick(mob/user) + . = ..() + flipped = !flipped + to_chat(user, "You shift the eyepatch to cover the [flipped == 0 ? "right" : "left"] eye.") + icon_state = "eyepatch-[flipped]" + item_state = "eyepatch-[flipped]" + update_appearance() + +/obj/item/clothing/glasses/thermal/eyepatch/examine(mob/user) + . = ..() + . += "It is currently aligned to the [flipped == 0 ? "right" : "left"] side." /obj/item/clothing/glasses/cold name = "cold goggles" diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index bd5cedd2e3d7..fd802cf55ec6 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -128,7 +128,20 @@ /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch name = "eyepatch HUD" desc = "A heads-up display that connects directly to the optical nerve of the user, replacing the need for that useless eyeball." - icon_state = "hudpatch" + icon_state = "hudpatch-0" + var/flipped = FALSE + +/obj/item/clothing/glasses/hud/security/sunglasses/eyepatch/AltClick(mob/user) + . = ..() + flipped = !flipped + to_chat(user, "You shift the hudpatch to cover the [flipped == 0 ? "right" : "left"] eye.") + icon_state = "hudpatch-[flipped]" + item_state = "hudpatch-[flipped]" + update_appearance() + +/obj/item/clothing/glasses/hud/security/sunglasses/eyepatch/examine(mob/user) + . = ..() + . += "It is currently aligned to the [flipped == 0 ? "right" : "left"] side." /obj/item/clothing/glasses/hud/security/sunglasses name = "security HUDSunglasses" diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 119312c6902f..291b1c1b25b6 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -49,7 +49,7 @@ /obj/item/clothing/gloves/color/yellow/sprayon/equipped(mob/user, slot) . = ..() - RegisterSignal(user, COMSIG_LIVING_SHOCK_PREVENTED, .proc/Shocked) + RegisterSignal(user, COMSIG_LIVING_SHOCK_PREVENTED, PROC_REF(Shocked)) /obj/item/clothing/gloves/color/yellow/sprayon/proc/Shocked() shocks_remaining-- @@ -73,7 +73,7 @@ /obj/item/clothing/gloves/color/yellow/sprayon/tape/equipped(mob/user, slot) . = ..() - RegisterSignal(user, COMSIG_LIVING_SHOCK_PREVENTED, .proc/Shocked) + RegisterSignal(user, COMSIG_LIVING_SHOCK_PREVENTED, PROC_REF(Shocked)) /obj/item/clothing/gloves/color/yellow/sprayon/tape/Shocked(mob/user) if(prob(50)) //Fear the unpredictable @@ -202,6 +202,12 @@ strip_delay = 60 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 50) +/obj/item/clothing/gloves/color/captain/nt + desc = "Regal blue gloves, with a nice gold trim, a diamond anti-shock coating, and an integrated thermal barrier, and armoured bracers. Swanky." + name = "captain's gloves" + icon_state = "captainnt" + item_state = "egloves" + /obj/item/clothing/gloves/color/latex name = "latex gloves" desc = "Cheap sterile gloves made from latex. Transfers minor paramedic knowledge to the user via budget nanochips." diff --git a/code/modules/clothing/head/berets.dm b/code/modules/clothing/head/berets.dm index 0e0d04b40f07..2c6139e54169 100644 --- a/code/modules/clothing/head/berets.dm +++ b/code/modules/clothing/head/berets.dm @@ -190,6 +190,8 @@ icon_state = "beret_com" armor = list("melee" = 40, "bullet" = 20, "laser" = 10, "energy" = 10, "rad" = 10, "bio" = 5, "rad" = 5, "fire" = 5, "rad" = 30) +// SolGov + /obj/item/clothing/head/beret/solgov name = "\improper SolGov beret" desc = "A beret with SolGov's emblem emblazoned on it. Colored in SolGov blue." @@ -215,6 +217,8 @@ icon_state = "beret_terragovplain" item_state = "beret_terragovplain" +// Inteq + /obj/item/clothing/head/beret/sec/inteq name = "inteq beret" desc = "A comfortable looking brown beret with a badge of the golden shield of the IRMG. Denotes the wearer as part of the IRMG." @@ -234,6 +238,8 @@ item_state = "inteq_honorable_beret" armor = list("melee" = 40, "bullet" = 50, "laser" = 50, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 90) +// Frontier + /obj/item/clothing/head/beret/sec/frontier name = "\improper Frontiersmen beret" desc = "A scratchy olive green beret, worn by Frontiersmen who want to look good while intimidating freighter crew." @@ -243,3 +249,14 @@ name = "\improper Frontiersmen officer beret" desc = "A scratchy olive green beret emblazoned with the Frontiersmen insignia, worn by Frontiersmen who want to look good while intimidating freighter captains." icon_state = "frontier_officer_beret" + + +// CentCom + +/obj/item/clothing/head/beret/centcom_formal + name = "\improper CentCom Formal Beret" + desc = "Sometimes, a compromise between fashion and defense needs to be made. Thanks to Nanotrasen's most recent nano-fabric durability enhancements, this time, it's not the case." + icon_state = "beret_badge" + greyscale_colors = "#46b946#f2c42e" + armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "fire" = 100, "acid" = 90) + strip_delay = 10 SECONDS diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 35960c36bbab..2dc357ad9478 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -145,7 +145,7 @@ attached_light.update_brightness() to_chat(user, "You toggle the helmet light [attached_light.on ? "on":"off"].") - playsound(user, 'sound/weapons/empty.ogg', 100, TRUE) + playsound(user, attached_light.on ? attached_light.toggle_on_sound : attached_light.toggle_off_sound, 100, TRUE) update_helmlight() /obj/item/clothing/head/helmet/proc/update_helmlight() @@ -475,17 +475,9 @@ armor = list("melee" = 20, "bullet" = 10, "laser" = 30, "energy" = 40, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 50) strip_delay = 60 -/obj/item/clothing/head/helmet/rus_helmet - name = "russian helmet" - desc = "It can hold a bottle of vodka." - icon_state = "rus_helmet" - item_state = "rus_helmet" - armor = list("melee" = 25, "bullet" = 30, "laser" = 0, "energy" = 10, "bomb" = 10, "bio" = 0, "rad" = 20, "fire" = 20, "acid" = 50) - pocket_storage_component_path = /datum/component/storage/concrete/pockets/helmet - /obj/item/clothing/head/helmet/r_trapper name = "reinforced trapper hat" - desc = "An occasional sight on the heads of soldiers stationed on cold worlds. 200% bear." + desc = "An occasional sight on the heads of Frontiersmen stationed on cold worlds. 200% bear." icon_state = "rus_ushanka" item_state = "rus_ushanka" body_parts_covered = HEAD diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 06bdf4de0e7f..126a8c0edffa 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -248,7 +248,7 @@ /obj/item/clothing/head/warden/drill/equipped(mob/M, slot) . = ..() if (slot == ITEM_SLOT_HEAD) - RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech)) else UnregisterSignal(M, COMSIG_MOB_SAY) diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 4f74a1e80295..d63003422e29 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -8,6 +8,15 @@ armor = list("melee" = 30, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) strip_delay = 80 +/obj/item/clothing/head/centcom_cap + name = "\improper CentCom commander cap" + icon_state = "centcom_cap" + desc = "Worn by the finest of CentCom commanders. Inside the lining of the cap, lies two faint initials." + item_state = "that" + flags_inv = 0 + armor = list("melee" = 30, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) + strip_delay = (8 SECONDS) + /obj/item/clothing/head/spacepolice name = "space police cap" desc = "A blue cap for patrolling the daily beat." @@ -142,7 +151,7 @@ if(!ishuman(user)) return var/mob/living/carbon/human/H = user - if(H.get_item_by_slot(ITEM_SLOT_HEAD) == src) + if(H.get_item_by_slot(ITEM_SLOT_HEAD) == src && !QDELETED(src)) //This can be called as a part of destroy user.remove_language(/datum/language/piratespeak/, TRUE, TRUE, LANGUAGE_HAT) to_chat(user, "You can no longer speak like a pirate.") @@ -252,6 +261,12 @@ icon_state = "flat_cap" item_state = "detective" +/obj/item/clothing/head/flatcap/solgov + name = "solarian flat cap" + desc = "A working solarian's hat, commonly used by Logistics Deck Officers." + icon_state = "flatcap_solgov" + item_state = "detective" + /obj/item/clothing/head/hunter name = "bounty hunting hat" desc = "Ain't nobody gonna cheat the hangman in my town." @@ -364,14 +379,14 @@ /obj/item/clothing/head/frenchberet name = "french beret" - desc = "A quality beret, infused with the aroma of chain-smoking, wine-swilling Parisians. You feel less inclined to engage military conflict, for some reason." + desc = "A quality beret, infused with the aroma of chain-smoking, wine-swilling Parisians. You feel less inclined to engage in military conflict, for some reason." icon_state = "beret" dynamic_hair_suffix = "" /obj/item/clothing/head/frenchberet/equipped(mob/M, slot) . = ..() if (slot == ITEM_SLOT_HEAD) - RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech)) else UnregisterSignal(M, COMSIG_MOB_SAY) @@ -444,7 +459,7 @@ /obj/item/clothing/head/coordinator name = "coordinator cap" - desc = "A cap for a party ooordinator, stylish!." + desc = "A cap for a party coordinator, stylish!." icon_state = "capcap" item_state = "that" armor = list("melee" = 25, "bullet" = 15, "laser" = 25, "energy" = 35, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) @@ -510,3 +525,8 @@ desc = "You feel ashamed about what you had to do to get this hat" icon_state = "cowboy" item_state = "cowboy" + +/obj/item/clothing/head/solgov_surgery + name = "SolGov surgery cap" + desc = "It's a surgery cap utilized by solarian doctors." + icon_state = "solgov_surgery" diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 94cd299b3cc0..3e188c253169 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -323,7 +323,7 @@ /obj/item/clothing/head/foilhat/Initialize(mapload) . = ..() if(!warped) - AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, ITEM_SLOT_HEAD, 6, TRUE, null, CALLBACK(src, .proc/warp_up)) + AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, ITEM_SLOT_HEAD, 6, TRUE, null, CALLBACK(src, PROC_REF(warp_up))) else warp_up() diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index 96f5d8d7737b..dd689223380c 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -136,13 +136,6 @@ soft_type = "paramedic" dog_fashion = null -/obj/item/clothing/head/soft/solgov - name = "SolGov surgery cap" - desc = "It's a surgery cap utilized by solarian doctors." - icon_state = "solgov_surgery" - soft_type = "solgov_surgery" - dog_fashion = null - /obj/item/clothing/head/soft/cybersun name = "cybersun medic cap" desc = "A turquoise baseball hat emblazoned with a reflective cross. Typical of Cybersun Industries field medics." diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index f4e8ca45f697..739e0f832faa 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -19,7 +19,7 @@ /obj/item/clothing/mask/equipped(mob/M, slot) . = ..() if (slot == ITEM_SLOT_MASK && modifies_speech) - RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech)) else UnregisterSignal(M, COMSIG_MOB_SAY) diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index fc2a3d13e31b..c532202a3df3 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -87,12 +87,3 @@ desc = "Worn by robust fighters who are willing to do anything to win." icon_state = "luchar" item_state = "luchar" - -/obj/item/clothing/mask/russian_balaclava - name = "russian balaclava" - desc = "Protects your face from snow." - icon_state = "rus_balaclava" - item_state = "rus_balaclava" - flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR - visor_flags_inv = HIDEFACE|HIDEFACIALHAIR - w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index b3d57ad61aaf..467377f722dd 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -29,6 +29,14 @@ item_state = "gas_cap" resistance_flags = FIRE_PROOF | ACID_PROOF +/obj/item/clothing/mask/gas/atmos/centcom + name = "\improper CentCom gas mask" + desc = "Oooh, gold and green. Fancy! This should help as you sit in your office." + icon = 'icons/obj/clothing/masks.dmi' + icon_state = "gas_centcom" + item_state = "gas_centcom" + resistance_flags = FIRE_PROOF | ACID_PROOF + // **** Welding gas mask **** /obj/item/clothing/mask/gas/welding diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index 444a38deae55..e3f90d1070b5 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -2,7 +2,7 @@ name = "ERT Common" mask = /obj/item/clothing/mask/gas/sechailer - uniform = /obj/item/clothing/under/rank/centcom/officer + uniform = /obj/item/clothing/under/rank/centcom/official shoes = /obj/item/clothing/shoes/combat/swat gloves = /obj/item/clothing/gloves/combat ears = /obj/item/radio/headset/headset_cent/alt @@ -160,7 +160,7 @@ /datum/outfit/centcom/centcom_official name = "CentCom Official" - uniform = /obj/item/clothing/under/rank/centcom/officer + uniform = /obj/item/clothing/under/rank/centcom/official shoes = /obj/item/clothing/shoes/sneakers/black gloves = /obj/item/clothing/gloves/color/black ears = /obj/item/radio/headset/headset_cent diff --git a/code/modules/clothing/outfits/solgov.dm b/code/modules/clothing/outfits/solgov.dm index 94024240e308..f6a4b03324de 100644 --- a/code/modules/clothing/outfits/solgov.dm +++ b/code/modules/clothing/outfits/solgov.dm @@ -65,14 +65,12 @@ ears = /obj/item/radio/headset/solgov/alt gloves = /obj/item/clothing/gloves/combat head = /obj/item/clothing/head/solgov/sonnensoldner - r_pocket = /obj/item/gun/ballistic/automatic/pistol/solgov - l_pocket = /obj/item/ammo_box/magazine/pistol556mm + r_pocket = null + l_pocket = null shoes = /obj/item/clothing/shoes/workboots back = /obj/item/storage/backpack box = /obj/item/storage/box/survival - backpack_contents = list(/obj/item/crowbar/power,\ - /obj/item/melee/baton/loaded=1,\ - /obj/item/ammo_box/magazine/pistol556mm=2) + backpack_contents = list(/obj/item/crowbar/power) /datum/outfit/job/solgov/representative name = "Solarian Representative (SolGov)" @@ -126,7 +124,7 @@ uniform = /obj/item/clothing/under/solgov/formal accessory = /obj/item/clothing/accessory/armband/medblue shoes = /obj/item/clothing/shoes/laceup - head = /obj/item/clothing/head/soft/solgov + head = /obj/item/clothing/head/solgov_surgery suit = /obj/item/clothing/suit/solgov/jacket l_hand = /obj/item/storage/firstaid/medical @@ -153,7 +151,6 @@ backpack_contents = list( /obj/item/flashlight/seclite=1,\ /obj/item/kitchen/knife/combat/survival=1,\ - /obj/item/mining_voucher=1,\ /obj/item/stack/marker_beacon/ten=1) backpack = /obj/item/storage/backpack/explorer @@ -210,3 +207,18 @@ box = /obj/item/storage/box/survival/engineer pda_slot = ITEM_SLOT_LPOCKET backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) + +/datum/outfit/job/solgov/quartermaster + name = "Logistics Deck Officer (SolGov)" + job_icon = "quartermaster" + jobtype = /datum/job/qm + + belt = /obj/item/pda/quartermaster + ears = /obj/item/radio/headset/solgov/captain + uniform = /obj/item/clothing/under/solgov/formal + suit = /obj/item/clothing/suit/solgov/overcoat + shoes = /obj/item/clothing/shoes/laceup + head = /obj/item/clothing/head/flatcap/solgov + glasses = /obj/item/clothing/glasses/sunglasses + l_hand = /obj/item/clipboard + backpack_contents = list(/obj/item/modular_computer/tablet/preset/cargo=1) diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 6fdeb20b53e1..82ad3aae38d6 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -201,7 +201,7 @@ ears = /obj/item/radio/headset/headset_cent/commander glasses = /obj/item/clothing/glasses/eyepatch mask = /obj/item/clothing/mask/cigarette/cigar/cohiba - head = /obj/item/clothing/head/centhat + head = /obj/item/clothing/head/centcom_cap belt = /obj/item/gun/ballistic/revolver/mateba r_pocket = /obj/item/lighter l_pocket = /obj/item/ammo_box/a357 @@ -269,33 +269,6 @@ shoes = /obj/item/clothing/shoes/sandal/marisa head = /obj/item/clothing/head/wizard/marisa -/datum/outfit/centcom/soviet - name = "Soviet Admiral" - - uniform = /obj/item/clothing/under/costume/soviet - head = /obj/item/clothing/head/pirate/captain - shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/tackler/combat/insulated - ears = /obj/item/radio/headset/headset_cent - glasses = /obj/item/clothing/glasses/thermal/eyepatch - suit = /obj/item/clothing/suit/pirate/captain - back = /obj/item/storage/backpack/satchel/leather - belt = /obj/item/gun/ballistic/revolver/mateba - - id = /obj/item/card/id/centcom - -/datum/outfit/centcom/soviet/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - if(visualsOnly) - return - - var/obj/item/card/id/W = H.wear_id - W.access = get_all_accesses() - W.access += get_centcom_access("Admiral") - W.assignment = "Admiral" - W.registered_name = H.real_name - W.update_label() - ..() - /datum/outfit/mobster name = "Mobster" @@ -416,7 +389,7 @@ id = /obj/item/card/id/silver head = /obj/item/clothing/head/beret/lt - uniform = /obj/item/clothing/under/rank/command/lieutenant + uniform = /obj/item/clothing/under/rank/command alt_uniform = /obj/item/clothing/under/rank/command suit = /obj/item/clothing/suit/toggle/lieutenant alt_suit = /obj/item/clothing/suit/armor/lieutenant_trenchcoat diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index c24759933dd6..05db2331fc49 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -59,7 +59,7 @@ . = ..() if(can_be_tied && tied == SHOES_UNTIED) our_alert = user.throw_alert("shoealert", /atom/movable/screen/alert/shoes/untied) - RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, .proc/check_trip, override=TRUE) + RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, PROC_REF(check_trip), override=TRUE) /obj/item/clothing/shoes/proc/restore_offsets(mob/user) @@ -110,7 +110,7 @@ else if(tied == SHOES_UNTIED && our_guy && user == our_guy) our_alert = our_guy.throw_alert("shoealert", /atom/movable/screen/alert/shoes/untied) // if we're the ones unknotting our own laces, of course we know they're untied - RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, .proc/check_trip, override=TRUE) + RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, PROC_REF(check_trip), override=TRUE) /** * handle_tying deals with all the actual tying/untying/knotting, inferring your intent from who you are in relation to the state of the laces @@ -134,7 +134,7 @@ if(user == loc && tied != SHOES_TIED) // if they're our own shoes, go tie-wards user.visible_message("[user] begins [tied ? "unknotting" : "tying"] the laces of [user.p_their()] [src.name].", "You begin [tied ? "unknotting" : "tying"] the laces of your [src.name]...") - if(do_after(user, lace_time, needhand=TRUE, target=our_guy, extra_checks=CALLBACK(src, .proc/still_shoed, our_guy))) + if(do_after(user, lace_time, needhand=TRUE, target=our_guy, extra_checks=CALLBACK(src, PROC_REF(still_shoed), our_guy))) to_chat(user, "You [tied ? "unknot" : "tie"] the laces of your [src.name].") if(tied == SHOES_UNTIED) adjust_laces(SHOES_TIED, user) @@ -155,7 +155,7 @@ if(HAS_TRAIT(user, TRAIT_CLUMSY)) // based clowns trained their whole lives for this mod_time *= 0.75 - if(do_after(user, mod_time, needhand=TRUE, target=our_guy, extra_checks=CALLBACK(src, .proc/still_shoed, our_guy))) + if(do_after(user, mod_time, needhand=TRUE, target=our_guy, extra_checks=CALLBACK(src, PROC_REF(still_shoed), our_guy))) to_chat(user, "You [tied ? "untie" : "knot"] the laces on [loc]'s [src.name].") if(tied == SHOES_UNTIED) adjust_laces(SHOES_KNOTTED, user) @@ -210,7 +210,7 @@ to_chat(our_guy, "You stumble a bit on your untied shoelaces!") if(!our_guy.has_movespeed_modifier(/datum/movespeed_modifier/shove)) our_guy.add_movespeed_modifier(/datum/movespeed_modifier/shove) - addtimer(CALLBACK(our_guy, /mob/living/carbon/proc/clear_shove_slowdown), SHOVE_SLOWDOWN_LENGTH) + addtimer(CALLBACK(our_guy, TYPE_PROC_REF(/mob/living/carbon, clear_shove_slowdown)), SHOVE_SLOWDOWN_LENGTH) if(26 to 1000) wiser = FALSE @@ -232,6 +232,6 @@ to_chat(user, "You begin [tied ? "untying" : "tying"] the laces on [src]...") - if(do_after(user, lace_time, needhand=TRUE, target=src,extra_checks=CALLBACK(src, .proc/still_shoed, user))) + if(do_after(user, lace_time, needhand=TRUE, target=src,extra_checks=CALLBACK(src, PROC_REF(still_shoed), user))) to_chat(user, "You [tied ? "untie" : "tie"] the laces on [src].") adjust_laces(tied ? SHOES_TIED : SHOES_UNTIED, user) diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 2d5301844c98..03abdf1325f8 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -362,26 +362,18 @@ active = TRUE set_light_color(rgb(rand(0, 255), rand(0, 255), rand(0, 255))) set_light_on(active) - addtimer(CALLBACK(src, .proc/lightUp), 0.5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(lightUp)), 0.5 SECONDS) /obj/item/clothing/shoes/kindleKicks/proc/lightUp(mob/user) if(lightCycle < 15) set_light_color(rgb(rand(0, 255), rand(0, 255), rand(0, 255))) lightCycle++ - addtimer(CALLBACK(src, .proc/lightUp), 0.5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(lightUp)), 0.5 SECONDS) else lightCycle = 0 active = FALSE set_light_on(active) -/obj/item/clothing/shoes/russian - name = "russian boots" - desc = "Comfy shoes." - icon_state = "rus_shoes" - item_state = "rus_shoes" - pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes - lace_time = 8 SECONDS - /obj/item/clothing/shoes/cowboy name = "cowboy boots" desc = "A small sticker lets you know they've been inspected for snakes, It is unclear how long ago the inspection took place..." diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index c59f5b3aeeed..6bbde7b4a4dc 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -65,6 +65,7 @@ /obj/item/clothing/suit/space/chronos/Destroy() dropped() + QDEL_NULL(teleport_now) return ..() /obj/item/clothing/suit/space/chronos/emp_act(severity) @@ -141,12 +142,12 @@ user.Stun(INFINITY) animate(user, color = "#00ccee", time = 3) - phase_timer_id = addtimer(CALLBACK(src, .proc/phase_2, user, to_turf, phase_in_ds), 3, TIMER_STOPPABLE) + phase_timer_id = addtimer(CALLBACK(src, PROC_REF(phase_2), user, to_turf, phase_in_ds), 3, TIMER_STOPPABLE) /obj/item/clothing/suit/space/chronos/proc/phase_2(mob/living/carbon/human/user, turf/to_turf, phase_in_ds) if(teleporting && activated && user) animate(user, color = list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 1,1,1,0), time = 2) - phase_timer_id = addtimer(CALLBACK(src, .proc/phase_3, user, to_turf, phase_in_ds), 2, TIMER_STOPPABLE) + phase_timer_id = addtimer(CALLBACK(src, PROC_REF(phase_3), user, to_turf, phase_in_ds), 2, TIMER_STOPPABLE) else finish_chronowalk(user, to_turf) @@ -154,14 +155,14 @@ if(teleporting && activated && user) user.forceMove(to_turf) animate(user, color = "#00ccee", time = phase_in_ds) - phase_timer_id = addtimer(CALLBACK(src, .proc/phase_4, user, to_turf), phase_in_ds, TIMER_STOPPABLE) + phase_timer_id = addtimer(CALLBACK(src, PROC_REF(phase_4), user, to_turf), phase_in_ds, TIMER_STOPPABLE) else finish_chronowalk(user, to_turf) /obj/item/clothing/suit/space/chronos/proc/phase_4(mob/living/carbon/human/user, turf/to_turf) if(teleporting && activated && user) animate(user, color = "#ffffff", time = 3) - phase_timer_id = addtimer(CALLBACK(src, .proc/finish_chronowalk, user, to_turf), 3, TIMER_STOPPABLE) + phase_timer_id = addtimer(CALLBACK(src, PROC_REF(finish_chronowalk), user, to_turf), 3, TIMER_STOPPABLE) else finish_chronowalk(user, to_turf) @@ -332,6 +333,10 @@ check_flags = AB_CHECK_CONSCIOUS //|AB_CHECK_INSIDE var/obj/item/clothing/suit/space/chronos/chronosuit = null +/datum/action/innate/chrono_teleport/Destroy() + chronosuit = null + return ..() + /datum/action/innate/chrono_teleport/IsAvailable() return (chronosuit && chronosuit.activated && chronosuit.camera && !chronosuit.teleporting) diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 9b044b8cf0b9..b4fa1a1282f6 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -31,6 +31,10 @@ /obj/item/clothing/head/helmet/space/hardsuit/Destroy() . = ..() + if(!QDELETED(suit)) + qdel(suit) + suit = null + QDEL_NULL(soundloop) STOP_PROCESSING(SSobj, src) /obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user) @@ -111,7 +115,6 @@ greyscale_colors = list(list(11, 19), list(22, 12), list(16, 9)) greyscale_icon_state = "hardsuit" - /obj/item/clothing/suit/space/hardsuit/Initialize() if(jetpack && ispath(jetpack)) jetpack = new jetpack(src) @@ -316,8 +319,8 @@ //Syndicate hardsuit /obj/item/clothing/head/helmet/space/hardsuit/syndi name = "blood-red hardsuit helmet" - desc = "A dual-mode advanced helmet designed for work in special operations. It is in EVA mode. Property of Gorlex Marauders." - alt_desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." + desc = "A dual-mode advanced hardsuit designed for special combat operations. It is in EVA mode. Produced by the Gorlex Marauders." + alt_desc = "A dual-mode advanced hardsuit designed for special combat operations. It is in combat mode. Produced by the Gorlex Marauders." icon_state = "hardsuit1-syndi" item_state = "syndie_helm" hardsuit_type = "syndi" @@ -404,12 +407,11 @@ /obj/item/clothing/suit/space/hardsuit/syndi name = "blood-red hardsuit" - desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in EVA mode. Property of Gorlex Marauders." - alt_desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders." + desc = "A dual-mode advanced hardsuit designed for special combat operations. It is in EVA mode. Produced by the Gorlex Marauders." + alt_desc = "A dual-mode advanced hardsuit designed for special combat operations. It is in combat mode. Produced by the Gorlex Marauders." icon_state = "hardsuit1-syndi" item_state = "syndie_hardsuit" hardsuit_type = "syndi" - w_class = WEIGHT_CLASS_NORMAL armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90) allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi @@ -440,6 +442,7 @@ jetpack = null armor = list("melee" = 35, "bullet" = 25, "laser" = 20,"energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75) combat_slowdown = 0.5 + jetpack = null //Elite Syndie suit /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite @@ -499,6 +502,64 @@ hardsuit_type = "owl" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/owl +//Cybersun Hardsuit +/obj/item/clothing/suit/space/hardsuit/syndi/cybersun + name = "neutron-star combat hardsuit" + desc = "Designed with fighting Nanotrasen weapons in mind, the Cybersun combat hardsuit trades ballistic and blunt protection for top grade laser protection. It is in EVA mode. Produced by Cybersun Industries." + alt_desc = "Designed with fighting Nanotrasen weapons in mind, the Cybersun combat hardsuit trades ballistic and blunt protection for top grade laser protection. It is in combat mode. Produced by Cybersun Industries." + icon_state = "hardsuit1-cybersun" + hardsuit_type = "cybersun" + armor = list("melee" = 25, "bullet" = 25, "laser" = 50, "energy" = 50, "bomb" = 25, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60) + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/cybersun + supports_variations = VOX_VARIATION + +/obj/item/clothing/head/helmet/space/hardsuit/syndi/cybersun + name = "neutron-star combat hardsuit helmet" + desc = "Designed with fighting Nanotrasen weapons in mind, the Cybersun combat hardsuit trades ballistic and blunt protection for top grade laser protection. It is in EVA mode. Produced by Cybersun Industries." + alt_desc = "Designed with fighting Nanotrasen weapons in mind, the Cybersun combat hardsuit trades ballistic and blunt protection for top grade laser protection. It is in combat mode. Produced by Cybersun Industries." + icon_state = "hardsuit1-cybersun" + hardsuit_type = "cybersun" + armor = list("melee" = 25, "bullet" = 25, "laser" = 50, "energy" = 50, "bomb" = 25, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60) + +//Cybersun Medical Techinician Hardsuit +/obj/item/clothing/suit/space/hardsuit/syndi/cybersun/paramed + name = "cybersun medical technician hardsuit" + desc = "A stripped down version of the neutron-star hardsuit for use by medical technicians. It is in EVA mode. Produced by Cybersun Industries." + alt_desc = "A stripped down version of the neutron-star hardsuit for use by medical technicians. It is in combat mode. Produced by Cybersun Industries." + icon_state = "hardsuit1-cyberparamed" + hardsuit_type = "cyberparamed" + armor = list("melee" = 25, "bullet" = 25, "laser" = 35, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 65, "fire" = 75, "acid" = 40) + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/cybersun/paramed + supports_variations = VOX_VARIATION + combat_slowdown = 0.4 + jetpack = null + +/obj/item/clothing/head/helmet/space/hardsuit/syndi/cybersun/paramed + name = "cybersun medical technician hardsuit helmet" + desc = "A stripped down version of the neutron-star hardsuit for use by medical technicians. It is in EVA mode. Produced by Cybersun Industries." + alt_desc = "A stripped down version of the neutron-star hardsuit for use by medical technicians. It is in combat mode. Produced by Cybersun Industries" + icon_state = "hardsuit1-cyberparamed" + hardsuit_type = "cyberparamed" + armor = list("melee" = 25, "bullet" = 25, "laser" = 35, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 65, "fire" = 75, "acid" = 40) + +//Pointman Hardsuit +/obj/item/clothing/suit/space/hardsuit/syndi/inteq + name = "pointman hardsuit" + desc = "One of Inteq's strudiest and finest combat armors. It is in EVA mode. Retrofitted by the IRMG." + alt_desc = "One of Inteq's strudiest and finest combat armors. It is in combat mode. Retrofitted by the IRMG." + icon_state = "hardsuit1-pointman" + hardsuit_type = "pointman" + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/inteq + supports_variations = VOX_VARIATION + + +/obj/item/clothing/head/helmet/space/hardsuit/syndi/inteq + name = "pointman hardsuit helmet" + desc = "One of Inteq's strudiest and finest combat armors. It is in EVA mode. Retrofitted by the IRMG." + alt_desc = "One of Inteq's strudiest and finest combat armors. It is in combat mode. Retrofitted by the IRMG." + icon_state = "hardsuit1-pointman" + hardsuit_type = "pointman" + full_retraction = TRUE //Wizard hardsuit /obj/item/clothing/head/helmet/space/hardsuit/wizard @@ -576,7 +637,7 @@ /obj/item/clothing/head/helmet/space/hardsuit/rd/Initialize() . = ..() - RegisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION, .proc/sense_explosion) + RegisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION, PROC_REF(sense_explosion)) /obj/item/clothing/head/helmet/space/hardsuit/rd/equipped(mob/living/carbon/human/user, slot) ..() @@ -759,7 +820,7 @@ return if(listeningTo) UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) - RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_mob_move)) listeningTo = user /obj/item/clothing/suit/space/hardsuit/ancient/dropped() @@ -907,6 +968,7 @@ slowdown = 0 shield_state = "shield-red" shield_on = "shield-red" + jetpack = /obj/item/tank/jetpack/suit /obj/item/clothing/suit/space/hardsuit/shielded/syndi/multitool_act(mob/living/user, obj/item/I) . = ..() @@ -925,10 +987,6 @@ to_chat(user, "You update the hardsuit's hardware, changing back the shield's color to red.") user.update_inv_wear_suit() -/obj/item/clothing/suit/space/hardsuit/shielded/syndi/Initialize() - jetpack = new /obj/item/tank/jetpack/suit(src) - . = ..() - /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi name = "blood-red hardsuit helmet" desc = "An advanced hardsuit helmet with built in energy shielding." @@ -1244,6 +1302,10 @@ . = ..() jump = new(src) +/obj/item/clothing/suit/space/hardsuit/quixote/Destroy() + QDEL_NULL(jump) + return ..() + /obj/item/clothing/suit/space/hardsuit/quixote/equipped(mob/user, slot) . = ..() if(slot == ITEM_SLOT_OCLOTHING) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index e70ce5a1d6a9..8a74e555469a 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -56,9 +56,10 @@ Contains: resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/head/helmet/space/beret - name = "officer's beret" + name = "CentCom officer's beret" desc = "An armored beret commonly used by special operations officers. Uses advanced force field technology to protect the head from space." icon_state = "beret_badge" + greyscale_colors = "#397F3F#FFCE5B" dynamic_hair_suffix = "+generic" dynamic_fhair_suffix = "+generic" flags_inv = 0 @@ -68,12 +69,12 @@ Contains: resistance_flags = FIRE_PROOF | ACID_PROOF /obj/item/clothing/suit/space/officer - name = "officer's jacket" - desc = "An armored, space-proof jacket used in special operations." - icon = 'icons/obj/clothing/suits.dmi' - mob_overlay_icon = 'icons/mob/clothing/suit.dmi' - icon_state = "detective" - item_state = "det_suit" + name = "CentCom officer's coat" + desc = "An armored, space-proof coat used in special operations." + icon = 'icons/obj/clothing/suits/armor.dmi' + mob_overlay_icon = 'icons/mob/clothing/suits/armor.dmi' + icon_state = "centcom_coat" + item_state = "centcom" blood_overlay_type = "coat" slowdown = 0 flags_inv = 0 diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index e6e15c51aecc..9f7afba9fb4b 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -326,7 +326,7 @@ //bomb scanner for RD helmet /obj/item/clothing/head/helmet/space/plasmaman/rd/Initialize() . = ..() - RegisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION, .proc/sense_explosion) + RegisterSignal(SSdcs, COMSIG_GLOB_EXPLOSION, PROC_REF(sense_explosion)) /obj/item/clothing/head/helmet/space/plasmaman/rd/equipped(mob/living/carbon/human/user, slot) ..() diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 4692811baecf..efeec4343c9c 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -149,6 +149,12 @@ icon_state = "carapace_ntformal" item_state = "capspacesuit" +/obj/item/clothing/suit/armor/vest/capcarapace/captunic + name = "captain's parade coat" + desc = "Worn by a Captain to show their class." + icon_state = "carapace_formal" + item_state = "bio_suit" + /obj/item/clothing/suit/armor/vest/capcarapace/minutemen name = "colonial minutemen general coat" desc = "A very fancy coat used by generals of the Colonial Minutemen." @@ -317,23 +323,6 @@ resistance_flags = FLAMMABLE armor = list("melee" = 20, "bullet" = 10, "laser" = 30, "energy" = 40, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 50) -/obj/item/clothing/suit/armor/vest/russian - name = "russian vest" - desc = "A bulletproof vest with forest camo. Good thing there's plenty of forests to hide in around here, right?" - icon_state = "armor_camo" - item_state = "rus_armor" - armor = list("melee" = 25, "bullet" = 30, "laser" = 0, "energy" = 10, "bomb" = 10, "bio" = 0, "rad" = 20, "fire" = 20, "acid" = 50) - -/obj/item/clothing/suit/armor/vest/russian_coat - name = "russian battle coat" - desc = "Used in extremly cold fronts, made out of real bears." - icon_state = "armor_coat" - item_state = "rus_coat" - body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT - armor = list("melee" = 25, "bullet" = 20, "laser" = 20, "energy" = 30, "bomb" = 20, "bio" = 50, "rad" = 20, "fire" = -10, "acid" = 50) - /obj/item/clothing/suit/armor/hos/inteq name = "inteq battle coat" desc = "A luxurious brown coat made from a crossweave of kevlar and ballistic fibre, the collar and wrist trims are made from genuine wolf fur. as protective as it is stylish." @@ -427,7 +416,7 @@ /obj/item/clothing/suit/armor/vest/bulletproof/solgov/Initialize() . = ..() - allowed |= list(/obj/item/gun/ballistic/automatic/assualt/swiss_cheese, /obj/item/tank) + allowed |= list(/obj/item/gun/ballistic/automatic/assault/swiss_cheese, /obj/item/tank) /obj/item/clothing/suit/armor/vest/hop name = "head of personnel's parade jacket" @@ -512,3 +501,16 @@ body_parts_covered = CHEST|GROIN|ARMS cold_protection = CHEST|GROIN|ARMS heat_protection = CHEST|GROIN|ARMS + +/obj/item/clothing/suit/toggle/armor/vest/centcom_formal + name = "\improper CentCom formal coat" + desc = "A stylish coat given to CentCom Commanders. Perfect for sending ERTs to suicide missions with style!" + icon_state = "centcom_formal" + item_state = "centcom" + body_parts_covered = CHEST|GROIN|ARMS + armor = list("melee" = 35, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 35, "bio" = 10, "rad" = 10, "fire" = 10, "acid" = 60) + togglename = "buttons" + +/obj/item/clothing/suit/toggle/armor/vest/centcom_formal/Initialize() + . = ..() + allowed = GLOB.security_wintercoat_allowed diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 04e0fad553a1..c9c0edd2def8 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -22,16 +22,6 @@ body_parts_covered = CHEST|GROIN|LEGS permeability_coefficient = 0.5 -//Captain -/obj/item/clothing/suit/captunic - name = "captain's parade tunic" - desc = "Worn by a Captain to show their class." - icon_state = "captunic" - item_state = "bio_suit" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - flags_inv = HIDEJUMPSUIT - allowed = list(/obj/item/disk, /obj/item/stamp, /obj/item/reagent_containers/food/drinks/flask, /obj/item/melee, /obj/item/storage/lockbox/medal, /obj/item/assembly/flash/handheld, /obj/item/storage/box/matches, /obj/item/lighter, /obj/item/clothing/mask/cigarette, /obj/item/storage/fancy/cigarettes, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - //Chef /obj/item/clothing/suit/toggle/chef name = "chef's apron" @@ -295,6 +285,14 @@ icon_state = "solgov_bureaucrat_robe" item_state = "solgov_bureaucrat_robe" +/obj/item/clothing/suit/solgov/overcoat + name = "SolGov overcoat" + desc = "A traditional solarian overcoat, used by cilivians and ship crews alike." + body_parts_covered = CHEST|GROIN|ARMS + icon_state = "solgov_overcoat" + item_state = "solgov_overcoat" + supports_variations = DIGITIGRADE_VARIATION + /obj/item/clothing/suit/solgov/jacket name = "SolGov jacket" desc = "A plain SolGov jacket, commonly used by civilians." diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index f5fb5a1ea4d7..466e75b012f7 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -331,13 +331,6 @@ flags_cover = HEADCOVERSEYES flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR -/obj/item/clothing/suit/security/officer/russian - name = "\improper Russian officer's jacket" - desc = "This jacket is for those special occasions when a russian officer isn't required to wear their armor." - icon_state = "officertanjacket" - item_state = "officertanjacket" - body_parts_covered = CHEST|ARMS - /obj/item/clothing/suit/shrine_maiden name = "shrine maiden's outfit" desc = "Makes you want to exterminate some troublesome youkai." @@ -554,175 +547,6 @@ item_state = "cheongsam_blue" body_parts_covered = CHEST|GROIN|ARMS|LEGS -// WINTER COATS - -/obj/item/clothing/suit/hooded/wintercoat - name = "winter coat" - desc = "A heavy jacket made from 'synthetic' animal furs." - icon_state = "coatwinter" - item_state = "coatwinter" - body_parts_covered = CHEST|GROIN|ARMS - cold_protection = CHEST|GROIN|ARMS - min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) - -/obj/item/clothing/head/hooded/winterhood - name = "winter hood" - desc = "A hood attached to a heavy winter jacket." - icon_state = "winterhood" - body_parts_covered = HEAD - cold_protection = HEAD - min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - flags_inv = HIDEHAIR|HIDEEARS - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) - -/obj/item/clothing/suit/hooded/wintercoat/captain - name = "captain's winter coat" - icon_state = "coatcaptain" - item_state = "coatcaptain" - armor = list("melee" = 25, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50) - hoodtype = /obj/item/clothing/head/hooded/winterhood/captain - -/obj/item/clothing/suit/hooded/wintercoat/captain/Initialize() - . = ..() - allowed = GLOB.security_wintercoat_allowed - -/obj/item/clothing/head/hooded/winterhood/captain - icon_state = "winterhood_captain" - armor = list("melee" = 25, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50) - -/obj/item/clothing/suit/hooded/wintercoat/security - name = "security winter coat" - icon_state = "coatsecurity" - item_state = "coatsecurity" - armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) - hoodtype = /obj/item/clothing/head/hooded/winterhood/security - -/obj/item/clothing/suit/hooded/wintercoat/security/Initialize() - . = ..() - allowed = GLOB.security_wintercoat_allowed - -/obj/item/clothing/head/hooded/winterhood/security - icon_state = "winterhood_security" - armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) - -/obj/item/clothing/suit/hooded/wintercoat/medical - name = "medical winter coat" - icon_state = "coatmedical" - item_state = "coatmedical" - allowed = list(/obj/item/analyzer, /obj/item/sensor_device, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 0, "acid" = 45) - hoodtype = /obj/item/clothing/head/hooded/winterhood/medical - -/obj/item/clothing/head/hooded/winterhood/medical - icon_state = "winterhood_medical" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 0, "acid" = 45) - -/obj/item/clothing/suit/hooded/wintercoat/medical/paramedic - name = "paramedic winter coat" - icon_state = "coatparamedic" - item_state = "coatparamedic" - hoodtype = /obj/item/clothing/head/hooded/winterhood/medical/paramedic - -/obj/item/clothing/head/hooded/winterhood/medical/paramedic - icon_state = "winterhood_paramedic" - -/obj/item/clothing/suit/hooded/wintercoat/science - name = "science winter coat" - icon_state = "coatscience" - item_state = "coatscience" - allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - hoodtype = /obj/item/clothing/head/hooded/winterhood/science - -/obj/item/clothing/head/hooded/winterhood/science - icon_state = "winterhood_science" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - -/obj/item/clothing/suit/hooded/wintercoat/engineering - name = "engineering winter coat" - icon_state = "coatengineer" - item_state = "coatengineer" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45) - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) - hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering - -/obj/item/clothing/head/hooded/winterhood/engineering - icon_state = "winterhood_engineer" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45) - -/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos - name = "atmospherics winter coat" - icon_state = "coatatmos" - item_state = "coatatmos" - hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering/atmos - -/obj/item/clothing/head/hooded/winterhood/engineering/atmos - icon_state = "winterhood_atmos" - -/obj/item/clothing/suit/hooded/wintercoat/hydro - name = "hydroponics winter coat" - icon_state = "coathydro" - item_state = "coathydro" - allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants, /obj/item/toy, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) - hoodtype = /obj/item/clothing/head/hooded/winterhood/hydro - -/obj/item/clothing/head/hooded/winterhood/hydro - icon_state = "winterhood_hydro" - -/obj/item/clothing/suit/hooded/wintercoat/cargo - name = "cargo winter coat" - icon_state = "coatcargo" - item_state = "coatcargo" - hoodtype = /obj/item/clothing/head/hooded/winterhood/cargo - -/obj/item/clothing/head/hooded/winterhood/cargo - icon_state = "winterhood_cargo" - -/obj/item/clothing/suit/hooded/wintercoat/miner - name = "mining winter coat" - icon_state = "coatminer" - item_state = "coatminer" - allowed = list(/obj/item/pickaxe, /obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) - armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - hoodtype = /obj/item/clothing/head/hooded/winterhood/miner - -/obj/item/clothing/head/hooded/winterhood/miner - icon_state = "winterhood_miner" - armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - -/obj/item/clothing/suit/hooded/wintercoat/security/inteq - name = "inteq winter coat" - desc = "An armored wintercoat in the colors of the IRMG, the zipper tab is the golden shield of the IRMG." - icon_state = "coatinteq" - item_state = "coatinteq" - hoodtype = /obj/item/clothing/head/hooded/winterhood/security/inteq - supports_variations = KEPORI_VARIATION - -/obj/item/clothing/head/hooded/winterhood/security/inteq - icon_state = "winterhood_inteq" - supports_variations = KEPORI_VARIATION - -/obj/item/clothing/suit/hooded/coat/inteq - name = "inteq hooded coat" - desc = "A hooded coat with a fur trim around the hood, comfy! It has a small 'IRMG' embroidered onto the shoulder." - icon_state = "hoodieinteq" - item_state = "hoodieinteq" - armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) - hoodtype = /obj/item/clothing/head/hooded/coat/inteq - -/obj/item/clothing/head/hooded/coat/inteq - name = "inteq hood" - desc = "A comfortable looking brown hood." - icon_state = "hoodinteq" - item_state = "hoodinteq" - armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) - -/obj/item/clothing/suit/hooded/coat/inteq/Initialize() - . = ..() - allowed = GLOB.security_wintercoat_allowed - /obj/item/clothing/head/hooded/ablative name = "ablative hood" desc = "Hood hopefully belonging to an ablative trenchcoat. Includes a visor for cool-o-vision." diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 9379f52314df..4255335cda74 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -137,10 +137,11 @@ . = ..() /obj/item/clothing/suit/space/hardsuit/Destroy() - if(helmet) + if(!QDELETED(helmet)) helmet.suit = null qdel(helmet) - qdel(jetpack) + helmet = null + QDEL_NULL(jetpack) return ..() /obj/item/clothing/head/helmet/space/hardsuit/Destroy() diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm new file mode 100644 index 000000000000..37b548a0ab72 --- /dev/null +++ b/code/modules/clothing/suits/wintercoats.dm @@ -0,0 +1,201 @@ +// WINTER COATS + +/obj/item/clothing/suit/hooded/wintercoat + name = "winter coat" + desc = "A heavy jacket made from 'synthetic' animal furs." + icon_state = "coatwinter" + item_state = "coatwinter" + body_parts_covered = CHEST|GROIN|ARMS + cold_protection = CHEST|GROIN|ARMS + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) + +/obj/item/clothing/head/hooded/winterhood + name = "winter hood" + desc = "A hood attached to a heavy winter jacket." + icon_state = "winterhood" + body_parts_covered = HEAD + cold_protection = HEAD + min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT + flags_inv = HIDEHAIR|HIDEEARS + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) + +/obj/item/clothing/suit/hooded/wintercoat/captain + name = "captain's winter coat" + icon_state = "coatcaptain" + item_state = "coatcaptain" + armor = list("melee" = 25, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50) + hoodtype = /obj/item/clothing/head/hooded/winterhood/captain + +/obj/item/clothing/suit/hooded/wintercoat/captain/Initialize() + . = ..() + allowed = GLOB.security_wintercoat_allowed + +/obj/item/clothing/head/hooded/winterhood/captain + icon_state = "winterhood_captain" + armor = list("melee" = 25, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50) + +/obj/item/clothing/suit/hooded/wintercoat/security + name = "security winter coat" + icon_state = "coatsecurity" + item_state = "coatsecurity" + armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) + hoodtype = /obj/item/clothing/head/hooded/winterhood/security + +/obj/item/clothing/suit/hooded/wintercoat/security/Initialize() + . = ..() + allowed = GLOB.security_wintercoat_allowed + +/obj/item/clothing/head/hooded/winterhood/security + icon_state = "winterhood_security" + armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) + +/obj/item/clothing/suit/hooded/wintercoat/medical + name = "medical winter coat" + icon_state = "coatmedical" + item_state = "coatmedical" + allowed = list(/obj/item/analyzer, /obj/item/sensor_device, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 0, "acid" = 45) + hoodtype = /obj/item/clothing/head/hooded/winterhood/medical + +/obj/item/clothing/head/hooded/winterhood/medical + icon_state = "winterhood_medical" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 0, "acid" = 45) + +/obj/item/clothing/suit/hooded/wintercoat/medical/paramedic + name = "paramedic winter coat" + icon_state = "coatparamedic" + item_state = "coatparamedic" + hoodtype = /obj/item/clothing/head/hooded/winterhood/medical/paramedic + +/obj/item/clothing/head/hooded/winterhood/medical/paramedic + icon_state = "winterhood_paramedic" + +/obj/item/clothing/suit/hooded/wintercoat/science + name = "science winter coat" + icon_state = "coatscience" + item_state = "coatscience" + allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + hoodtype = /obj/item/clothing/head/hooded/winterhood/science + +/obj/item/clothing/head/hooded/winterhood/science + icon_state = "winterhood_science" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + +/obj/item/clothing/suit/hooded/wintercoat/engineering + name = "engineering winter coat" + icon_state = "coatengineer" + item_state = "coatengineer" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) + hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering + +/obj/item/clothing/head/hooded/winterhood/engineering + icon_state = "winterhood_engineer" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45) + +/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos + name = "atmospherics winter coat" + icon_state = "coatatmos" + item_state = "coatatmos" + hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering/atmos + +/obj/item/clothing/head/hooded/winterhood/engineering/atmos + icon_state = "winterhood_atmos" + +/obj/item/clothing/suit/hooded/wintercoat/hydro + name = "hydroponics winter coat" + icon_state = "coathydro" + item_state = "coathydro" + allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants, /obj/item/toy, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) + hoodtype = /obj/item/clothing/head/hooded/winterhood/hydro + +/obj/item/clothing/head/hooded/winterhood/hydro + icon_state = "winterhood_hydro" + +/obj/item/clothing/suit/hooded/wintercoat/cargo + name = "cargo winter coat" + icon_state = "coatcargo" + item_state = "coatcargo" + hoodtype = /obj/item/clothing/head/hooded/winterhood/cargo + +/obj/item/clothing/head/hooded/winterhood/cargo + icon_state = "winterhood_cargo" + +/obj/item/clothing/suit/hooded/wintercoat/miner + name = "mining winter coat" + icon_state = "coatminer" + item_state = "coatminer" + allowed = list(/obj/item/pickaxe, /obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) + armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + hoodtype = /obj/item/clothing/head/hooded/winterhood/miner + +/obj/item/clothing/head/hooded/winterhood/miner + icon_state = "winterhood_miner" + armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + +// Inteq + +/obj/item/clothing/suit/hooded/wintercoat/security/inteq + name = "inteq winter coat" + desc = "An armored wintercoat in the colors of the IRMG, the zipper tab is the golden shield of the IRMG." + icon_state = "coatinteq" + item_state = "coatinteq" + hoodtype = /obj/item/clothing/head/hooded/winterhood/security/inteq + supports_variations = KEPORI_VARIATION + +/obj/item/clothing/head/hooded/winterhood/security/inteq + icon_state = "winterhood_inteq" + supports_variations = KEPORI_VARIATION + +/obj/item/clothing/suit/hooded/coat/inteq + name = "inteq hooded coat" + desc = "A hooded coat with a fur trim around the hood, comfy! It has a small 'IRMG' embroidered onto the shoulder." + icon_state = "hoodieinteq" + item_state = "hoodieinteq" + armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) + hoodtype = /obj/item/clothing/head/hooded/coat/inteq + +/obj/item/clothing/head/hooded/coat/inteq + name = "inteq hood" + desc = "A comfortable looking brown hood." + icon_state = "hoodinteq" + item_state = "hoodinteq" + armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) + +/obj/item/clothing/suit/hooded/coat/inteq/Initialize() + . = ..() + allowed = GLOB.security_wintercoat_allowed + +// CentCom +/obj/item/clothing/suit/hooded/wintercoat/centcom + name = "centcom winter coat" + desc = "A luxurious winter coat woven in the bright green and gold colours of Central Command. It has a small pin in the shape of the Nanotrasen logo for a zipper." + icon_state = "coatcentcom" + item_state = "coatcentcom" + armor = list("melee" = 35, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 35, "bio" = 10, "rad" = 10, "fire" = 10, "acid" = 60) + hoodtype = /obj/item/clothing/head/hooded/winterhood/centcom + +/obj/item/clothing/suit/hooded/wintercoat/centcom/Initialize(mapload) + . = ..() + allowed += GLOB.security_wintercoat_allowed + +/obj/item/clothing/head/hooded/winterhood/centcom + icon_state = "winterhood_centcom" + armor = list("melee" = 35, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 35, "bio" = 10, "rad" = 10, "fire" = 10, "acid" = 60) + +// SolGov + +/obj/item/clothing/suit/hooded/wintercoat/solgov + name = "solgov winter coat" + desc = "An environment-resistant wintercoat in the colors of the Solarian Confederation." + icon_state = "coatsolgov" + item_state = "coatsolgov" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45) + hoodtype = /obj/item/clothing/head/hooded/winterhood/solgov + +/obj/item/clothing/head/hooded/winterhood/solgov + icon_state = "winterhood_solgov" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45) diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index ea58a2ae65ff..5fc4cc67390b 100644 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -11,6 +11,10 @@ var/datum/component/storage/detached_pockets var/attachment_slot = CHEST +/obj/item/clothing/accessory/Destroy() + set_detached_pockets(null) + return ..() + /obj/item/clothing/accessory/proc/can_attach_accessory(obj/item/clothing/U, mob/user) if(!attachment_slot || (U && U.body_parts_covered & attachment_slot)) return TRUE @@ -23,7 +27,7 @@ if(SEND_SIGNAL(U, COMSIG_CONTAINS_STORAGE)) return FALSE U.TakeComponent(storage) - detached_pockets = storage + set_detached_pockets(storage) U.attached_accessory = src forceMove(U) layer = FLOAT_LAYER @@ -66,6 +70,17 @@ U.attached_accessory = null U.accessory_overlay = null +/obj/item/clothing/accessory/proc/set_detached_pockets(new_pocket) + if(detached_pockets) + UnregisterSignal(detached_pockets, COMSIG_PARENT_QDELETING) + detached_pockets = new_pocket + if(detached_pockets) + RegisterSignal(detached_pockets, COMSIG_PARENT_QDELETING, PROC_REF(handle_pockets_del)) + +/obj/item/clothing/accessory/proc/handle_pockets_del(datum/source) + SIGNAL_HANDLER + set_detached_pockets(null) + /obj/item/clothing/accessory/proc/on_uniform_equip(obj/item/clothing/under/U, user) return diff --git a/code/modules/clothing/under/costume.dm b/code/modules/clothing/under/costume.dm index e0ac5f17275e..bfc7524149cb 100644 --- a/code/modules/clothing/under/costume.dm +++ b/code/modules/clothing/under/costume.dm @@ -54,13 +54,6 @@ item_state = "pirate" can_adjust = FALSE -/obj/item/clothing/under/costume/soviet - name = "soviet uniform" - desc = "For the Motherland!" - icon_state = "soviet" - item_state = "soviet" - can_adjust = FALSE - /obj/item/clothing/under/costume/kilt name = "kilt" desc = "Includes shoes and plaid." @@ -196,19 +189,6 @@ icon_state = "blue_mech_suit" item_state = "blue_mech_suit" -/obj/item/clothing/under/costume/russian_officer - name = "\improper Russian officer's uniform" - desc = "The latest in fashionable russian outfits." - icon = 'icons/obj/clothing/under/security.dmi' - icon_state = "hostanclothes" - item_state = "hostanclothes" - mob_overlay_icon = 'icons/mob/clothing/under/security.dmi' - alt_covers_chest = TRUE - armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30) - strip_delay = 50 - sensor_mode = SENSOR_COORDS - random_sensor = FALSE - /obj/item/clothing/under/costume/jackbros name = "jack bros outfit" desc = "For when it's time to hee some hos." diff --git a/code/modules/clothing/under/jobs/centcom.dm b/code/modules/clothing/under/jobs/centcom.dm index 992f8eb02653..d862b53eca2e 100644 --- a/code/modules/clothing/under/jobs/centcom.dm +++ b/code/modules/clothing/under/jobs/centcom.dm @@ -2,23 +2,51 @@ icon = 'icons/obj/clothing/under/centcom.dmi' mob_overlay_icon = 'icons/mob/clothing/under/centcom.dmi' -/obj/item/clothing/under/rank/centcom/officer - name = "\improper CentCom officer's jumpsuit" - desc = "It's a jumpsuit worn by CentCom Officers." - icon_state = "officer" - item_state = "g_suit" - alt_covers_chest = TRUE - /obj/item/clothing/under/rank/centcom/commander - name = "\improper CentCom officer's jumpsuit" - desc = "It's a jumpsuit worn by CentCom's highest-tier Commanders." + name = "\improper CentCom commander's suit" + desc = "It's a suit worn by CentCom's highest-tier Commanders." icon_state = "centcom" item_state = "dg_suit" +/obj/item/clothing/under/rank/centcom/official + name = "\improper CentCom official's suit" + desc = "A suit worn by CentCom Officials, with a silver belt buckle to indicate their rank from a glance." + icon_state = "official" + item_state = "dg_suit" + /obj/item/clothing/under/rank/centcom/intern name = "\improper CentCom intern's jumpsuit" desc = "It's a jumpsuit worn by those interning for CentCom. The top is styled after a polo shirt for easy identification." icon_state = "intern" - item_state = "g_suit" + item_state = "dg_suit" can_adjust = FALSE +/obj/item/clothing/under/rank/centcom/officer + name = "\improper CentCom turtleneck suit" + desc = "A casual, yet refined green turtleneck, used by CentCom Officers. It has a fragrance of aloe." + icon_state = "officer" + item_state = "dg_suit" + alt_covers_chest = TRUE + +/obj/item/clothing/under/rank/centcom/officer/replica + name = "\improper CentCom turtleneck replica" + desc = "A cheap copy of the CentCom turtleneck! A Donk Co. logo can be seen on the collar." + +/obj/item/clothing/under/rank/centcom/officer_skirt + name = "\improper CentCom turtleneck skirt" + desc = "A skirt version of the CentCom turtleneck, rarer and more sought after than the original." + icon_state = "officer_skirt" + item_state = "dg_suit" + alt_covers_chest = TRUE + body_parts_covered = CHEST|GROIN|ARMS + +/obj/item/clothing/under/rank/centcom/officer_skirt/replica + name = "\improper CentCom turtleneck skirt replica" + desc = "A cheap copy of the CentCom turtleneck skirt! A Donk Co. logo can be seen on the collar." + +/obj/item/clothing/under/rank/centcom/centcom_skirt + name = "\improper CentCom commander's suitskirt" + desc = "It's a suitskirt worn by CentCom's highest-tier Commanders." + icon_state = "centcom_skirt" + item_state = "dg_suit" + body_parts_covered = CHEST|GROIN|ARMS diff --git a/code/modules/clothing/under/jobs/command.dm b/code/modules/clothing/under/jobs/command.dm index 5c319344bf56..8edb11ba91cc 100644 --- a/code/modules/clothing/under/jobs/command.dm +++ b/code/modules/clothing/under/jobs/command.dm @@ -20,7 +20,7 @@ /obj/item/clothing/under/rank/command/nt/skirt desc = "A standard command jumpskirt." name = "command jumpskirt" - icon_state = "cmd_skirt" + icon_state = "cmd_nt_skirt" body_parts_covered = CHEST|GROIN|ARMS supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION @@ -113,13 +113,13 @@ //Lieutenant -/obj/item/clothing/under/rank/command/lieutenant +/obj/item/clothing/under/rank/command desc = "A standard command jumpsuit in the colours of the Lieutenant." name = "\improper lieutenant jumpsuit" icon_state = "lt" can_adjust = FALSE -/obj/item/clothing/under/rank/command/lieutenant/skirt +/obj/item/clothing/under/rank/command/skirt desc = "A command jumpskirt in the colours of the Lieutenant." name = "\improper lieutenant jumpskirt" icon_state = "lt_skirt" @@ -127,13 +127,13 @@ can_adjust = FALSE supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION -/obj/item/clothing/under/rank/command/lieutenant/nt +/obj/item/clothing/under/rank/command/nt desc = "A standard command jumpsuit in the colours of the Lieutenant." name = "\improper lieutenant blue jumpsuit" icon_state = "lt_nt" item_state = "b_suit" -/obj/item/clothing/under/rank/command/lieutenant/nt/skirt +/obj/item/clothing/under/rank/command/nt/skirt desc = "A command jumpskirt in the colours of the Lieutenant." name = "\improper lieutenant blue jumpskirt" icon_state = "lt_nt_skirt" diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index c1ae9679effb..30b47b4c3287 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -70,14 +70,6 @@ item_state = "g_suit" can_adjust = FALSE -/obj/item/clothing/under/syndicate/soviet - name = "Ratnik 5 tracksuit" - desc = "Badly translated labels tell you to clean this in Vodka. Great for squatting in." - icon_state = "trackpants" - can_adjust = FALSE - armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - resistance_flags = NONE - /obj/item/clothing/under/syndicate/combat name = "combat uniform" desc = "With a suit lined with this many pockets, you are ready to operate." diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index 2a0bc21722a5..b236f4fa5aa1 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -66,7 +66,7 @@ /obj/add_blood_DNA(list/dna) . = ..() - if(length(dna)) + if(length(dna) && !QDELETED(src)) . = AddComponent(/datum/component/forensics, null, null, dna) /obj/item/clothing/gloves/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index ffc7737284df..6b7f6f19fa2f 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -35,7 +35,7 @@ if(log.len && !scanning) scanning = 1 to_chat(user, "Printing report, please wait...") - addtimer(CALLBACK(src, .proc/PrintReport), 100) + addtimer(CALLBACK(src, PROC_REF(PrintReport)), 100) else to_chat(user, "The scanner has no logs or is in use.") diff --git a/code/modules/donator/_donator.dm b/code/modules/donator/_donator.dm index 02631ee8ea28..b18dbe8f78b3 100644 --- a/code/modules/donator/_donator.dm +++ b/code/modules/donator/_donator.dm @@ -12,8 +12,8 @@ GLOBAL_PROTECT(donators) . = ..() donator = GLOB.donators[ckey] || new /datum/donator(src) donator.owner = src - add_verb(src, .proc/do_donator_redemption) - add_verb(src, .proc/do_donator_wcir) + add_verb(src, /client/proc/do_donator_redemption) + add_verb(src, /client/proc/do_donator_wcir) /client/Destroy() . = ..() diff --git a/code/modules/economy/selling_pad.dm b/code/modules/economy/selling_pad.dm index 5dadf5911ce3..46d660c5cec3 100644 --- a/code/modules/economy/selling_pad.dm +++ b/code/modules/economy/selling_pad.dm @@ -76,7 +76,7 @@ /obj/machinery/computer/selling_pad_control/ui_data(mob/user) var/list/data = list() data["points"] = sell_account.account_balance - data["pad"] = pad.resolve() ? TRUE : FALSE + data["pad"] = pad?.resolve() ? TRUE : FALSE data["sending"] = sending data["status_report"] = status_report return data @@ -176,7 +176,7 @@ status_report = "Sending..." sell_pad.visible_message("[sell_pad] starts charging up.") sell_pad.icon_state = "lpad-idle" - sending_timer = addtimer(CALLBACK(src,.proc/send),warmup_time, TIMER_STOPPABLE) + sending_timer = addtimer(CALLBACK(src, PROC_REF(send)),warmup_time, TIMER_STOPPABLE) /obj/machinery/computer/selling_pad_control/proc/stop_sending() if(!sending) diff --git a/code/modules/error_handler/error_handler.dm b/code/modules/error_handler/error_handler.dm index 7d9454aa6cf7..668aaf6195a6 100644 --- a/code/modules/error_handler/error_handler.dm +++ b/code/modules/error_handler/error_handler.dm @@ -129,7 +129,7 @@ GLOBAL_VAR_INIT(total_runtimes_skipped, 0) #ifdef UNIT_TESTS if(GLOB.current_test) //good day, sir - GLOB.current_test.Fail("[main_line]\n[desclines.Join("\n")]") + GLOB.current_test.Fail("[main_line]\n[desclines.Join("\n")]", file = E.file, line = E.line) #endif diff --git a/code/modules/events/devil.dm b/code/modules/events/devil.dm index 99ec2a6856de..656888f068bc 100644 --- a/code/modules/events/devil.dm +++ b/code/modules/events/devil.dm @@ -32,7 +32,7 @@ spawned_mobs += devil message_admins("[ADMIN_LOOKUPFLW(devil)] has been made into a devil by an event.") log_game("[key_name(devil)] was spawned as a devil by an event.") - var/datum/job/jobdatum = SSjob.GetJob("Assistant") + var/datum/job/jobdatum = new /datum/job/assistant() devil.job = jobdatum.name jobdatum.equip(devil) return SUCCESSFUL_SPAWN @@ -40,8 +40,6 @@ /proc/create_event_devil(spawn_loc) var/mob/living/carbon/human/new_devil = new(spawn_loc) - if(!spawn_loc) - SSjob.SendToLateJoin(new_devil) var/datum/preferences/A = new() //Randomize appearance for the devil. A.copy_to(new_devil) new_devil.dna.update_dna_identity() diff --git a/code/modules/events/fake_virus.dm b/code/modules/events/fake_virus.dm index e2a68a937d71..9e4ac8f570a0 100644 --- a/code/modules/events/fake_virus.dm +++ b/code/modules/events/fake_virus.dm @@ -6,7 +6,7 @@ /datum/round_event/fake_virus/start() var/list/fake_virus_victims = list() for(var/mob/living/carbon/human/victim in shuffle(GLOB.player_list)) - if(victim.stat == DEAD || HAS_TRAIT(victim, TRAIT_CRITICAL_CONDITION) || !SSjob.GetJob(victim.mind.assigned_role) || (victim.mind.assigned_role in GLOB.nonhuman_positions)) + if(victim.stat == DEAD || HAS_TRAIT(victim, TRAIT_CRITICAL_CONDITION) || (victim.mind.assigned_role in GLOB.nonhuman_positions)) continue fake_virus_victims += victim @@ -25,7 +25,7 @@ for(var/i=1; i<=rand(1,defacto_min); i++) var/mob/living/carbon/human/onecoughman = pick(fake_virus_victims) if(prob(25))//1/4 odds to get a spooky message instead of coughing out loud - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, onecoughman, "[pick("Your head hurts.", "Your head pounds.")]"), rand(30,150)) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(to_chat), onecoughman, "[pick("Your head hurts.", "Your head pounds.")]"), rand(30,150)) else addtimer(CALLBACK(onecoughman, .mob/proc/emote, pick("cough", "sniff", "sneeze")), rand(30,150))//deliver the message with a slightly randomized time interval so there arent multiple people coughing at the exact same time fake_virus_victims -= onecoughman diff --git a/code/modules/events/fugitive_spawning.dm b/code/modules/events/fugitive_spawning.dm deleted file mode 100644 index 8cf295310282..000000000000 --- a/code/modules/events/fugitive_spawning.dm +++ /dev/null @@ -1,112 +0,0 @@ -/datum/round_event_control/fugitives - name = "Spawn Fugitives" - typepath = /datum/round_event/ghost_role/fugitives - max_occurrences = 1 - min_players = 20 - earliest_start = 30 MINUTES //deadchat sink, lets not even consider it early on. - gamemode_blacklist = list("nuclear") - -/datum/round_event/ghost_role/fugitives - minimum_required = 1 - role_name = "fugitive" - fakeable = FALSE - -/datum/round_event/ghost_role/fugitives/spawn_role() - var/list/possible_spawns = list()//Some xeno spawns are in some spots that will instantly kill the refugees, like atmos - for(var/turf/X in GLOB.xeno_spawn) - if(istype(X.loc, /area/ship/maintenance)) - possible_spawns += X - if(!possible_spawns.len) - message_admins("No valid spawn locations found, aborting...") - return MAP_ERROR - var/turf/landing_turf = pick(possible_spawns) - var/list/possible_backstories = list() - var/list/candidates = get_candidates(ROLE_TRAITOR, null, ROLE_TRAITOR) - if(candidates.len >= 1) //solo refugees - if(prob(30)) - possible_backstories.Add("waldo") //less common as it comes with magicks and is kind of immershun shattering - else //For accurate deadchat feedback - minimum_required = 4 - if(candidates.len >= 4)//group refugees - possible_backstories.Add("prisoner", "cultist", "synth") - if(!possible_backstories.len) - return NOT_ENOUGH_PLAYERS - - var/backstory = pick(possible_backstories) - var/member_size = 3 - var/leader - switch(backstory) - if("synth") - leader = pick_n_take(candidates) - if("waldo") - member_size = 0 //solo refugees have no leader so the member_size gets bumped to one a bit later - var/list/members = list() - var/list/spawned_mobs = list() - if(isnull(leader)) - member_size++ //if there is no leader role, then the would be leader is a normal member of the team. - - for(var/i in 1 to member_size) - members += pick_n_take(candidates) - - for(var/mob/dead/selected in members) - var/mob/living/carbon/human/S = gear_fugitive(selected, landing_turf, backstory) - spawned_mobs += S - if(!isnull(leader)) - gear_fugitive_leader(leader, landing_turf, backstory) - -//after spawning - playsound(src, 'sound/weapons/emitter.ogg', 50, TRUE) - new /obj/item/storage/toolbox/mechanical(landing_turf) //so they can actually escape maint - addtimer(CALLBACK(src, .proc/spawn_hunters), 10 MINUTES) - role_name = "fugitive hunter" - return SUCCESSFUL_SPAWN - -/datum/round_event/ghost_role/fugitives/proc/gear_fugitive(mob/dead/selected, turf/landing_turf, backstory) //spawns normal fugitive - var/datum/mind/player_mind = new /datum/mind(selected.key) - player_mind.active = TRUE - var/mob/living/carbon/human/S = new(landing_turf) - player_mind.transfer_to(S) - player_mind.assigned_role = "Fugitive" - player_mind.special_role = "Fugitive" - player_mind.add_antag_datum(/datum/antagonist/fugitive) - var/datum/antagonist/fugitive/fugitiveantag = player_mind.has_antag_datum(/datum/antagonist/fugitive) - INVOKE_ASYNC(fugitiveantag, /datum/antagonist/fugitive.proc/greet, backstory) //some fugitives have a sleep on their greet, so we don't want to stop the entire antag granting proc with fluff - - switch(backstory) - if("prisoner") - S.equipOutfit(/datum/outfit/prisoner) - if("cultist") - S.equipOutfit(/datum/outfit/yalp_cultist) - if("waldo") - S.equipOutfit(/datum/outfit/waldo) - if("synth") - S.equipOutfit(/datum/outfit/synthetic) - message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Fugitive by an event.") - log_game("[key_name(S)] was spawned as a Fugitive by an event.") - spawned_mobs += S - return S - -//special spawn for one member. it can be used for a special mob or simply to give one normal member special items. -/datum/round_event/ghost_role/fugitives/proc/gear_fugitive_leader(mob/dead/leader, turf/landing_turf, backstory) - var/datum/mind/player_mind = new /datum/mind(leader.key) - player_mind.active = TRUE - //if you want to add a fugitive with a special leader in the future, make this switch with the backstory - var/mob/living/carbon/human/S = gear_fugitive(leader, landing_turf, backstory) - var/obj/item/choice_beacon/augments/A = new(S) - S.put_in_hands(A) - new /obj/item/autosurgeon(landing_turf) - -//security team gets called in after 10 minutes of prep to find the refugees -/datum/round_event/ghost_role/fugitives/proc/spawn_hunters() - var/backstory = pick( "russian", "bounty hunter") - var/datum/map_template/shuttle/template - if (backstory == "russian") - template = new /datum/map_template/shuttle/hunter/russian - else - template = new /datum/map_template/shuttle/hunter/bounty - - var/datum/overmap/ship/controlled/ship = new(SSovermap.get_unused_overmap_square(), template) - - if(!ship) - CRASH("Loading [backstory] ship failed!") - priority_announce("Unidentified ship detected near the station.") diff --git a/code/modules/events/ghost_role.dm b/code/modules/events/ghost_role.dm index 5d7637332353..aecf7c481415 100644 --- a/code/modules/events/ghost_role.dm +++ b/code/modules/events/ghost_role.dm @@ -28,7 +28,7 @@ var/waittime = 300 * (2^retry) message_admins("The event will not spawn a [role_name] until certain \ conditions are met. Waiting [waittime/10]s and then retrying.") - addtimer(CALLBACK(src, .proc/try_spawning, 0, ++retry), waittime) + addtimer(CALLBACK(src, PROC_REF(try_spawning), 0, ++retry), waittime) return if(status == MAP_ERROR) diff --git a/code/modules/events/heart_attack.dm b/code/modules/events/heart_attack.dm index 3c947107efa6..35d8c4b141e1 100644 --- a/code/modules/events/heart_attack.dm +++ b/code/modules/events/heart_attack.dm @@ -10,7 +10,7 @@ for(var/mob/living/carbon/human/victim as anything in shuffle(GLOB.human_list)) if(!victim.client || victim.stat == DEAD || HAS_TRAIT(victim, TRAIT_CRITICAL_CONDITION) || !victim.can_heartattack() || victim.has_status_effect(STATUS_EFFECT_EXERCISED) || (/datum/disease/heart_failure in victim.diseases) || victim.undergoing_cardiac_arrest()) continue - if(!SSjob.GetJob(victim.mind.assigned_role) || (victim.mind.assigned_role in GLOB.nonhuman_positions))//only crewmembers can get one, a bit unfair for some ghost roles and it wastes the event + if(victim.mind.assigned_role in GLOB.nonhuman_positions) continue if(victim.satiety <= -60) //Multiple junk food items recently heart_attack_contestants[victim] = 3 diff --git a/code/modules/events/holiday/halloween.dm b/code/modules/events/holiday/halloween.dm index 3a7090a65319..ff02f77edaa4 100644 --- a/code/modules/events/holiday/halloween.dm +++ b/code/modules/events/holiday/halloween.dm @@ -16,9 +16,9 @@ for(var/mob/living/simple_animal/pet/dog/corgi/Ian/Ian in GLOB.mob_living_list) Ian.place_on_head(new /obj/item/bedsheet(Ian)) - for(var/mob/living/simple_animal/parrot/Poly/Poly in GLOB.mob_living_list) - new /mob/living/simple_animal/parrot/Poly/ghost(Poly.loc) - qdel(Poly) + for(var/mob/living/simple_animal/parrot/Polly/Polly in GLOB.mob_living_list) + new /mob/living/simple_animal/parrot/Polly/ghost(Polly.loc) + qdel(Polly) /datum/round_event/spooky/announce(fake) priority_announce(pick("RATTLE ME BONES!","THE RIDE NEVER ENDS!", "A SKELETON POPS OUT!", "SPOOKY SCARY SKELETONS!", "CREWMEMBERS BEWARE, YOU'RE IN FOR A SCARE!") , "THE CALL IS COMING FROM INSIDE THE HOUSE") diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm index f1a36affcd3b..f38d21b868c4 100644 --- a/code/modules/events/holiday/xmas.dm +++ b/code/modules/events/holiday/xmas.dm @@ -49,15 +49,13 @@ var/festive_tree = /obj/structure/flora/tree/pine/xmas var/christmas_tree = /obj/structure/flora/tree/pine/xmas/presents -/obj/effect/spawner/xmastree/Initialize() - ..() +/obj/effect/spawner/xmastree/Initialize(mapload) + . = ..() if((CHRISTMAS in SSevents.holidays) && christmas_tree) new christmas_tree(get_turf(src)) else if((FESTIVE_SEASON in SSevents.holidays) && festive_tree) new festive_tree(get_turf(src)) - return INITIALIZE_HINT_QDEL - /obj/effect/spawner/xmastree/rdrod name = "festivus pole spawner" festive_tree = /obj/structure/festivus diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm deleted file mode 100644 index f5e71a3c7c84..000000000000 --- a/code/modules/events/pirates.dm +++ /dev/null @@ -1,332 +0,0 @@ -/datum/round_event_control/pirates - name = "Space Pirates" - typepath = /datum/round_event/pirates - weight = 8 - max_occurrences = 1 - min_players = 10 - earliest_start = 30 MINUTES - gamemode_blacklist = list("nuclear") - -/datum/round_event/pirates - startWhen = 60 //2 minutes to answer - var/datum/comm_message/threat - var/payoff = 0 - var/payoff_min = 20000 - var/paid_off = FALSE - var/ship_name = "Space Privateers Association" - var/shuttle_spawned = FALSE - -/datum/round_event/pirates/setup() - ship_name = pick(strings(PIRATE_NAMES_FILE, "ship_names")) - -/datum/round_event/pirates/announce(fake) - priority_announce("Incoming subspace communication. Secure channel opened at all communication consoles.", "Incoming Message", 'sound/ai/commandreport.ogg') - if(fake) - return - threat = new - var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) - if(D) - payoff = max(payoff_min, FLOOR(D.account_balance * 0.80, 1000)) - threat.title = "Business proposition" - threat.content = "This is [ship_name]. Pay up [payoff] credits or you'll walk the plank." - threat.possible_answers = list("We'll pay.","No way.") - threat.answer_callback = CALLBACK(src,.proc/answered) - SScommunications.send_message(threat,unique = TRUE) - -/datum/round_event/pirates/proc/answered() - if(threat && threat.answered == 1) - var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) - if(D) - if(D.adjust_money(-payoff)) - priority_announce("Thanks for the credits, landlubbers.",sender_override = ship_name) - paid_off = TRUE - return - else - priority_announce("Trying to cheat us? You'll regret this!",sender_override = ship_name) - if(!shuttle_spawned) - spawn_shuttle() - else - priority_announce("Too late to beg for mercy!",sender_override = ship_name) - -/datum/round_event/pirates/start() - if(threat && !threat.answered) - threat.possible_answers = list("Too late") - threat.answered = 1 - if(!paid_off && !shuttle_spawned) - spawn_shuttle() - -/datum/round_event/pirates/proc/spawn_shuttle() - shuttle_spawned = TRUE - - var/list/candidates = pollGhostCandidates("Do you wish to be considered for pirate crew?", ROLE_TRAITOR) - shuffle_inplace(candidates) - - var/datum/map_template/shuttle/pirate/default/template = new - var/datum/overmap/ship/controlled/ship = new(SSovermap.get_unused_overmap_square(), template) - - if(!ship) - CRASH("Loading pirate ship failed!") - - for(var/turf/A in ship.shuttle_port.return_turfs()) - for(var/obj/effect/mob_spawn/human/pirate/spawner in A) - if(candidates.len > 0) - var/mob/M = candidates[1] - spawner.create(M.ckey) - candidates -= M - announce_to_ghosts(M) - else - announce_to_ghosts(spawner) - - priority_announce("Unidentified armed ship detected near the station.") - -/obj/docking_port/mobile/pirate - name = "pirate shuttle" - rechargeTime = 3 MINUTES - -/obj/machinery/suit_storage_unit/pirate - suit_type = /obj/item/clothing/suit/space - helmet_type = /obj/item/clothing/head/helmet/space - mask_type = /obj/item/clothing/mask/breath - storage_type = /obj/item/tank/internals/oxygen - -/obj/machinery/loot_locator - name = "Booty Locator" - desc = "This sophisticated machine scans the nearby space for items of value." - icon = 'icons/obj/machines/research.dmi' - icon_state = "tdoppler" - density = TRUE - var/cooldown = 300 - var/next_use = 0 - -/obj/machinery/loot_locator/interact(mob/user) - if(world.time <= next_use) - to_chat(user,"[src] is recharging.") - return - next_use = world.time + cooldown - var/atom/movable/AM = find_random_loot() - if(!AM) - say("No valuables located. Try again later.") - else - say("Located: [AM.name] at [get_area_name(AM)]") - -/obj/machinery/loot_locator/proc/find_random_loot() - if(!GLOB.exports_list.len) - setupExports() - var/list/possible_loot = list() - for(var/datum/export/pirate/E in GLOB.exports_list) - possible_loot += E - var/datum/export/pirate/P - var/atom/movable/AM - while(!AM && possible_loot.len) - P = pick_n_take(possible_loot) - AM = P.find_loot() - return AM - -//Pad & Pad Terminal -/obj/machinery/piratepad - name = "cargo hold pad" - icon = 'icons/obj/telescience.dmi' - icon_state = "lpad-idle-o" - var/idle_state = "lpad-idle-o" - var/warmup_state = "lpad-idle" - var/sending_state = "lpad-beam" - var/cargo_hold_id - -/obj/machinery/piratepad/multitool_act(mob/living/user, obj/item/multitool/I) - . = ..() - if (istype(I)) - to_chat(user, "You register [src] in [I]s buffer.") - I.buffer = src - return TRUE - -/obj/machinery/computer/piratepad_control - name = "cargo hold control terminal" - icon_screen = "bounty" - var/status_report = "Ready for delivery." - var/obj/machinery/piratepad/pad - var/warmup_time = 100 - var/sending = FALSE - var/points = 0 - var/datum/export_report/total_report - var/sending_timer - var/cargo_hold_id - -/obj/machinery/computer/piratepad_control/Initialize() - ..() - return INITIALIZE_HINT_LATELOAD - -/obj/machinery/computer/piratepad_control/multitool_act(mob/living/user, obj/item/multitool/I) - . = ..() - if (istype(I) && istype(I.buffer,/obj/machinery/piratepad)) - to_chat(user, "You link [src] with [I.buffer] in [I] buffer.") - pad = I.buffer - return TRUE - -/obj/machinery/computer/piratepad_control/LateInitialize() - . = ..() - if(cargo_hold_id) - for(var/obj/machinery/piratepad/P in GLOB.machines) - if(P.cargo_hold_id == cargo_hold_id) - pad = P - return - else - pad = locate() in range(4,src) - -/obj/machinery/computer/piratepad_control/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "CargoHoldTerminal", name) - ui.open() - -/obj/machinery/computer/piratepad_control/ui_data(mob/user) - var/list/data = list() - data["points"] = points - data["pad"] = pad ? TRUE : FALSE - data["sending"] = sending - data["status_report"] = status_report - return data - -/obj/machinery/computer/piratepad_control/ui_act(action, params) - . = ..() - if(.) - return - if(!pad) - return - - switch(action) - if("recalc") - recalc() - . = TRUE - if("send") - start_sending() - . = TRUE - if("stop") - stop_sending() - . = TRUE - -/obj/machinery/computer/piratepad_control/proc/recalc() - if(sending) - return - - status_report = "Predicted value: " - var/value = 0 - var/datum/export_report/ex = new - for(var/atom/movable/AM in get_turf(pad)) - if(AM == pad) - continue - export_item_and_contents(AM, EXPORT_PIRATE | EXPORT_CARGO | EXPORT_CONTRABAND | EXPORT_EMAG, apply_elastic = FALSE, dry_run = TRUE, external_report = ex) - - for(var/datum/export/E in ex.total_amount) - status_report += E.total_printout(ex,notes = FALSE) - status_report += " " - value += ex.total_value[E] - - if(!value) - status_report += "0" - -/obj/machinery/computer/piratepad_control/proc/send() - if(!sending) - return - - var/datum/export_report/ex = new - - for(var/atom/movable/AM in get_turf(pad)) - if(AM == pad) - continue - export_item_and_contents(AM, EXPORT_PIRATE | EXPORT_CARGO | EXPORT_CONTRABAND | EXPORT_EMAG, apply_elastic = FALSE, delete_unsold = FALSE, external_report = ex) - - status_report = "Sold: " - var/value = 0 - for(var/datum/export/E in ex.total_amount) - var/export_text = E.total_printout(ex,notes = FALSE) //Don't want nanotrasen messages, makes no sense here. - if(!export_text) - continue - - status_report += export_text - status_report += " " - value += ex.total_value[E] - - if(!total_report) - total_report = ex - else - total_report.exported_atoms += ex.exported_atoms - for(var/datum/export/E in ex.total_amount) - total_report.total_amount[E] += ex.total_amount[E] - total_report.total_value[E] += ex.total_value[E] - - points += value - - if(!value) - status_report += "Nothing" - - pad.visible_message("[pad] activates!") - flick(pad.sending_state,pad) - pad.icon_state = pad.idle_state - sending = FALSE - -/obj/machinery/computer/piratepad_control/proc/start_sending() - if(sending) - return - sending = TRUE - status_report = "Sending..." - pad.visible_message("[pad] starts charging up.") - pad.icon_state = pad.warmup_state - sending_timer = addtimer(CALLBACK(src,.proc/send),warmup_time, TIMER_STOPPABLE) - -/obj/machinery/computer/piratepad_control/proc/stop_sending() - if(!sending) - return - sending = FALSE - status_report = "Ready for delivery." - pad.icon_state = pad.idle_state - deltimer(sending_timer) - -/datum/export/pirate - export_category = EXPORT_PIRATE - -//Attempts to find the thing on station -/datum/export/pirate/proc/find_loot() - return - -/datum/export/pirate/ransom - cost = 3000 - unit_name = "hostage" - export_types = list(/mob/living/carbon/human) - -/datum/export/pirate/ransom/find_loot() - var/list/head_minds = SSjob.get_living_heads() - var/list/head_mobs = list() - for(var/datum/mind/M in head_minds) - head_mobs += M.current - if(head_mobs.len) - return pick(head_mobs) - -/datum/export/pirate/ransom/get_cost(atom/movable/AM) - var/mob/living/carbon/human/H = AM - if(H.stat != CONSCIOUS || !H.mind || !H.mind.assigned_role) //mint condition only - return 0 - else if("pirate" in H.faction) //can't ransom your fellow pirates to CentCom! - return 0 - else - if(H.mind.assigned_role in GLOB.command_positions) - return 3000 - else - return 1000 - -/datum/export/pirate/cash - cost = 1 - unit_name = "bills" - export_types = list(/obj/item/spacecash/bundle) - -/datum/export/pirate/cash/get_amount(obj/O) - var/obj/item/spacecash/bundle/C = O - return ..() * C.value - -/datum/export/pirate/holochip - cost = 1 - unit_name = "holochip" - export_types = list(/obj/item/holochip) - -/datum/export/pirate/holochip/get_cost(atom/movable/AM) - var/obj/item/holochip/H = AM - return H.credits diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 952f83b36503..ede24c643c43 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -289,7 +289,7 @@ . = ..() add_atom_colour("#ffffff", FIXED_COLOUR_PRIORITY) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -541,7 +541,7 @@ if(!override) qdel(src) -/obj/structure/spacevine/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/spacevine/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(isvineimmune(mover)) return TRUE diff --git a/code/modules/events/stray_cargo.dm b/code/modules/events/stray_cargo.dm index 4c740ad924ae..182ea658a7a9 100644 --- a/code/modules/events/stray_cargo.dm +++ b/code/modules/events/stray_cargo.dm @@ -51,7 +51,7 @@ crate.locked = FALSE //Unlock secure crates crate.update_appearance() var/obj/structure/closet/supplypod/pod = make_pod() - new /obj/effect/DPtarget(LZ, pod, crate) + new /obj/effect/pod_landingzone(LZ, pod, crate) ///Handles the creation of the pod, in case it needs to be modified beforehand /datum/round_event/stray_cargo/proc/make_pod() diff --git a/code/modules/events/wizard/greentext.dm b/code/modules/events/wizard/greentext.dm index e54096b6617c..890bbc0f1f2b 100644 --- a/code/modules/events/wizard/greentext.dm +++ b/code/modules/events/wizard/greentext.dm @@ -35,7 +35,7 @@ /obj/item/greentext/Initialize(mapload) . = ..() GLOB.poi_list |= src - roundend_callback = CALLBACK(src,.proc/check_winner) + roundend_callback = CALLBACK(src, PROC_REF(check_winner)) SSticker.OnRoundend(roundend_callback) /obj/item/greentext/equipped(mob/living/user as mob) @@ -83,8 +83,9 @@ if(!(resistance_flags & ON_FIRE) && !force) return QDEL_HINT_LETMELIVE - SSticker.round_end_events -= roundend_callback GLOB.poi_list.Remove(src) + LAZYREMOVE(SSticker.round_end_events, roundend_callback) + roundend_callback = null //This ought to free the callback datum, and prevent us from harddeling for(var/i in GLOB.player_list) var/mob/M = i var/message = "A dark temptation has passed from this world" diff --git a/code/modules/fields/fields.dm b/code/modules/fields/fields.dm deleted file mode 100644 index 13c6f35a69df..000000000000 --- a/code/modules/fields/fields.dm +++ /dev/null @@ -1,324 +0,0 @@ - -//Movable and easily code-modified fields! Allows for custom AOE effects that affect movement and anything inside of them, and can do custom turf effects! -//Supports automatic recalculation/reset on movement. -//If there's any way to make this less CPU intensive than I've managed, gimme a call or do it yourself! - kevinz000 - -//Field shapes -#define FIELD_NO_SHAPE 0 //Does not update turfs automatically -#define FIELD_SHAPE_RADIUS_SQUARE 1 //Uses current_range and square_depth_up/down -#define FIELD_SHAPE_CUSTOM_SQUARE 2 //Uses square_height and square_width and square_depth_up/down - -//Proc to make fields. make_field(field_type, field_params_in_associative_list) -/proc/make_field(field_type, list/field_params, override_checks = FALSE, start_field = TRUE) - var/datum/proximity_monitor/advanced/F = new field_type() - if(!F.assume_params(field_params) && !override_checks) - QDEL_NULL(F) - if(!F.check_variables() && !override_checks) - QDEL_NULL(F) - if(start_field && (F || override_checks)) - F.begin_field() - return F - -/datum/proximity_monitor/advanced - var/name = "\improper Energy Field" - //Field setup specifications - var/field_shape = FIELD_NO_SHAPE - var/square_height = 0 - var/square_width = 0 - var/square_depth_up = 0 - var/square_depth_down = 0 - //Processing - var/process_inner_turfs = FALSE //Don't do this unless it's absolutely necessary - var/process_edge_turfs = FALSE //Don't do this either unless it's absolutely necessary, you can just track what things are inside manually or on the initial setup. - var/requires_processing = FALSE - var/setup_edge_turfs = FALSE //Setup edge turfs/all field turfs. Set either or both to ON when you need it, it's defaulting to off unless you do to save CPU. - var/setup_field_turfs = FALSE - var/use_host_turf = FALSE //For fields from items carried on mobs to check turf instead of loc... - - var/list/turf/field_turfs = list() - var/list/turf/edge_turfs = list() - var/list/turf/field_turfs_new = list() - var/list/turf/edge_turfs_new = list() - -/datum/proximity_monitor/advanced/Destroy() - full_cleanup() - STOP_PROCESSING(SSfields, src) - return ..() - -/datum/proximity_monitor/advanced/proc/assume_params(list/field_params) - var/pass_check = TRUE - for(var/param in field_params) - if(vars[param] || isnull(vars[param]) || (param in vars)) - vars[param] = field_params[param] - else - pass_check = FALSE - return pass_check - -/datum/proximity_monitor/advanced/proc/check_variables() - var/pass = TRUE - if(field_shape == FIELD_NO_SHAPE) //If you're going to make a manually updated field you shouldn't be using automatic checks so don't. - pass = FALSE - if(current_range < 0 || square_height < 0 || square_width < 0 || square_depth_up < 0 || square_depth_down < 0) - pass = FALSE - if(!istype(host)) - pass = FALSE - return pass - -/datum/proximity_monitor/advanced/process() - if(process_inner_turfs) - for(var/turf/T in field_turfs) - process_inner_turf(T) - CHECK_TICK //Really crappy lagchecks, needs improvement once someone starts using processed fields. - if(process_edge_turfs) - for(var/turf/T in edge_turfs) - process_edge_turf(T) - CHECK_TICK //Same here. - -/datum/proximity_monitor/advanced/proc/process_inner_turf(turf/T) - -/datum/proximity_monitor/advanced/proc/process_edge_turf(turf/T) - -/datum/proximity_monitor/advanced/New() - if(requires_processing) - START_PROCESSING(SSfields, src) - -/datum/proximity_monitor/advanced/proc/begin_field() - setup_field() - post_setup_field() - -/datum/proximity_monitor/advanced/proc/full_cleanup() //Full cleanup for when you change something that would require complete resetting. - for(var/turf/T in edge_turfs) - cleanup_edge_turf(T) - for(var/turf/T in field_turfs) - cleanup_field_turf(T) - -/datum/proximity_monitor/advanced/proc/check_movement() - if(!use_host_turf) - if(host.loc != last_host_loc) - last_host_loc = host.loc - return TRUE - else - if(get_turf(host) != last_host_loc) - last_host_loc = get_turf(host) - return TRUE - return FALSE - -/datum/proximity_monitor/advanced/proc/recalculate_field(ignore_movement_check = FALSE) //Call every time the field moves (done automatically if you use update_center) or a setup specification is changed. - if(!(ignore_movement_check || check_movement()) && (field_shape != FIELD_NO_SHAPE)) - return - update_new_turfs() - var/list/turf/needs_setup = field_turfs_new.Copy() - if(setup_field_turfs) - for(var/turf/T in field_turfs) - if(!(T in needs_setup)) - cleanup_field_turf(T) - else - needs_setup -= T - CHECK_TICK - for(var/turf/T in needs_setup) - setup_field_turf(T) - CHECK_TICK - if(setup_edge_turfs) - for(var/turf/T in edge_turfs) - cleanup_edge_turf(T) - CHECK_TICK - for(var/turf/T in edge_turfs_new) - setup_edge_turf(T) - CHECK_TICK - -/datum/proximity_monitor/advanced/proc/field_turf_canpass(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_turf/F, turf/entering) - return TRUE - -/datum/proximity_monitor/advanced/proc/field_turf_crossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_turf/F) - return TRUE - -/datum/proximity_monitor/advanced/proc/field_turf_uncrossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_turf/F) - return TRUE - -/datum/proximity_monitor/advanced/proc/field_edge_canpass(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F, turf/entering) - return TRUE - -/datum/proximity_monitor/advanced/proc/field_edge_crossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F) - return TRUE - -/datum/proximity_monitor/advanced/proc/field_edge_uncrossed(atom/movable/AM, obj/effect/abstract/proximity_checker/advanced/field_edge/F) - return TRUE - -/datum/proximity_monitor/advanced/HandleMove() - var/atom/_host = host - var/atom/new_host_loc = _host.loc - if(last_host_loc != new_host_loc) - INVOKE_ASYNC(src, .proc/recalculate_field) - -/datum/proximity_monitor/advanced/proc/post_setup_field() - -/datum/proximity_monitor/advanced/proc/setup_field() - update_new_turfs() - if(setup_field_turfs) - for(var/turf/T in field_turfs_new) - setup_field_turf(T) - CHECK_TICK - if(setup_edge_turfs) - for(var/turf/T in edge_turfs_new) - setup_edge_turf(T) - CHECK_TICK - -/datum/proximity_monitor/advanced/proc/cleanup_field_turf(turf/T) - qdel(field_turfs[T]) - field_turfs -= T - -/datum/proximity_monitor/advanced/proc/cleanup_edge_turf(turf/T) - qdel(edge_turfs[T]) - edge_turfs -= T - -/datum/proximity_monitor/advanced/proc/setup_field_turf(turf/T) - field_turfs[T] = new /obj/effect/abstract/proximity_checker/advanced/field_turf(T, src) - -/datum/proximity_monitor/advanced/proc/setup_edge_turf(turf/T) - edge_turfs[T] = new /obj/effect/abstract/proximity_checker/advanced/field_edge(T, src) - -/datum/proximity_monitor/advanced/proc/update_new_turfs() - if(!istype(host)) - return FALSE - var/turf/center = get_turf(host) - field_turfs_new = list() - edge_turfs_new = list() - switch(field_shape) - if(FIELD_NO_SHAPE) - return FALSE - if(FIELD_SHAPE_RADIUS_SQUARE) - for(var/turf/T in block(locate(center.x-current_range,center.y-current_range,center.z-square_depth_down),locate(center.x+current_range, center.y+current_range,center.z+square_depth_up))) - field_turfs_new += T - edge_turfs_new = field_turfs_new.Copy() - if(current_range >= 1) - var/list/turf/center_turfs = list() - for(var/turf/T in block(locate(center.x-current_range+1,center.y-current_range+1,center.z-square_depth_down),locate(center.x+current_range-1, center.y+current_range-1,center.z+square_depth_up))) - center_turfs += T - for(var/turf/T in center_turfs) - edge_turfs_new -= T - if(FIELD_SHAPE_CUSTOM_SQUARE) - for(var/turf/T in block(locate(center.x-square_width,center.y-square_height,center.z-square_depth_down),locate(center.x+square_width, center.y+square_height,center.z+square_depth_up))) - field_turfs_new += T - edge_turfs_new = field_turfs_new.Copy() - if(square_height >= 1 && square_width >= 1) - var/list/turf/center_turfs = list() - for(var/turf/T in block(locate(center.x-square_width+1,center.y-square_height+1,center.z-square_depth_down),locate(center.x+square_width-1, center.y+square_height-1,center.z+square_depth_up))) - center_turfs += T - for(var/turf/T in center_turfs) - edge_turfs_new -= T - -//Gets edge direction/corner, only works with square radius/WDH fields! -/datum/proximity_monitor/advanced/proc/get_edgeturf_direction(turf/T, turf/center_override = null) - var/turf/checking_from = get_turf(host) - if(istype(center_override)) - checking_from = center_override - if(field_shape != FIELD_SHAPE_RADIUS_SQUARE && field_shape != FIELD_SHAPE_CUSTOM_SQUARE) - return - if(!(T in edge_turfs)) - return - switch(field_shape) - if(FIELD_SHAPE_RADIUS_SQUARE) - if(((T.x == (checking_from.x + current_range)) || (T.x == (checking_from.x - current_range))) && ((T.y == (checking_from.y + current_range)) || (T.y == (checking_from.y - current_range)))) - return get_dir(checking_from, T) - if(T.x == (checking_from.x + current_range)) - return EAST - if(T.x == (checking_from.x - current_range)) - return WEST - if(T.y == (checking_from.y - current_range)) - return SOUTH - if(T.y == (checking_from.y + current_range)) - return NORTH - if(FIELD_SHAPE_CUSTOM_SQUARE) - if(((T.x == (checking_from.x + square_width)) || (T.x == (checking_from.x - square_width))) && ((T.y == (checking_from.y + square_height)) || (T.y == (checking_from.y - square_height)))) - return get_dir(checking_from, T) - if(T.x == (checking_from.x + square_width)) - return EAST - if(T.x == (checking_from.x - square_width)) - return WEST - if(T.y == (checking_from.y - square_height)) - return SOUTH - if(T.y == (checking_from.y + square_height)) - return NORTH - -//DEBUG FIELDS -/datum/proximity_monitor/advanced/debug - name = "\improper Color Matrix Field" - field_shape = FIELD_SHAPE_RADIUS_SQUARE - current_range = 5 - var/set_fieldturf_color = "#aaffff" - var/set_edgeturf_color = "#ffaaff" - setup_field_turfs = TRUE - setup_edge_turfs = TRUE - - -/datum/proximity_monitor/advanced/debug/setup_edge_turf(turf/T) - T.color = set_edgeturf_color - ..() - -/datum/proximity_monitor/advanced/debug/cleanup_edge_turf(turf/T) - T.color = initial(T.color) - ..() - if(T in field_turfs) - T.color = set_fieldturf_color - -/datum/proximity_monitor/advanced/debug/setup_field_turf(turf/T) - T.color = set_fieldturf_color - ..() - -/datum/proximity_monitor/advanced/debug/cleanup_field_turf(turf/T) - T.color = initial(T.color) - ..() - -//DEBUG FIELD ITEM -/obj/item/multitool/field_debug - name = "strange multitool" - desc = "Seems to project a colored field!" - var/list/field_params = list("field_shape" = FIELD_SHAPE_RADIUS_SQUARE, "current_range" = 5, "set_fieldturf_color" = "#aaffff", "set_edgeturf_color" = "#ffaaff") - var/field_type = /datum/proximity_monitor/advanced/debug - var/operating = FALSE - var/datum/proximity_monitor/advanced/current = null - var/mob/listeningTo - -/obj/item/multitool/field_debug/Initialize() - . = ..() - START_PROCESSING(SSobj, src) - -/obj/item/multitool/field_debug/Destroy() - STOP_PROCESSING(SSobj, src) - QDEL_NULL(current) - listeningTo = null - return ..() - -/obj/item/multitool/field_debug/proc/setup_debug_field() - var/list/new_params = field_params.Copy() - new_params["host"] = src - current = make_field(field_type, new_params) - -/obj/item/multitool/field_debug/attack_self(mob/user) - operating = !operating - to_chat(user, "You turn [src] [operating? "on":"off"].") - UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) - listeningTo = null - if(!istype(current) && operating) - RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move) - listeningTo = user - setup_debug_field() - else if(!operating) - QDEL_NULL(current) - -/obj/item/multitool/field_debug/dropped() - . = ..() - if(listeningTo) - UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED) - listeningTo = null - -/obj/item/multitool/field_debug/proc/on_mob_move() - SIGNAL_HANDLER - - check_turf(get_turf(src)) - -/obj/item/multitool/field_debug/process() - check_turf(get_turf(src)) - -/obj/item/multitool/field_debug/proc/check_turf(turf/T) - current.HandleMove() diff --git a/code/modules/fields/turf_objects.dm b/code/modules/fields/turf_objects.dm deleted file mode 100644 index ce872622b0c3..000000000000 --- a/code/modules/fields/turf_objects.dm +++ /dev/null @@ -1,67 +0,0 @@ - -/obj/effect/abstract/proximity_checker/advanced - name = "field" - desc = "Why can you see energy fields?!" - icon = null - icon_state = null - alpha = 0 - invisibility = INVISIBILITY_ABSTRACT - flags_1 = ON_BORDER_1 - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - var/datum/proximity_monitor/advanced/parent = null - -/obj/effect/abstract/proximity_checker/advanced/Initialize(mapload, _monitor) - if(_monitor) - parent = _monitor - return ..() - -/obj/effect/abstract/proximity_checker/advanced/center - name = "field anchor" - desc = "No." - -/obj/effect/abstract/proximity_checker/advanced/field_turf - name = "energy field" - desc = "Get off my turf!" - -/obj/effect/abstract/proximity_checker/advanced/field_turf/CanAllowThrough(atom/movable/AM, turf/target) - . = ..() - if(parent) - return parent.field_turf_canpass(AM, src, target) - -/obj/effect/abstract/proximity_checker/advanced/field_turf/on_entered(datum/source, atom/movable/AM) - if(parent) - return parent.field_turf_crossed(AM, src) - return TRUE - -/obj/effect/abstract/proximity_checker/advanced/field_turf/on_uncrossed(datum/source, atom/movable/AM) - if(parent) - return parent.field_turf_uncrossed(AM, src) - return TRUE - -/obj/effect/abstract/proximity_checker/advanced/field_edge - name = "energy field edge" - desc = "Edgy description here." - -/obj/effect/abstract/proximity_checker/advanced/field_edge/CanAllowThrough(atom/movable/AM, turf/target) - . = ..() - if(parent) - return parent.field_edge_canpass(AM, src, target) - -/obj/effect/abstract/proximity_checker/advanced/field_edge/on_entered(datum/source, atom/movable/AM) - if(parent) - return parent.field_edge_crossed(AM, src) - return TRUE - -/obj/effect/abstract/proximity_checker/advanced/field_edge/on_uncrossed(datum/source, atom/movable/AM) - if(parent) - return parent.field_edge_uncrossed(AM, src) - return TRUE - -/proc/is_turf_in_field(turf/T, datum/proximity_monitor/advanced/F) //Looking for ways to optimize this! - for(var/obj/effect/abstract/proximity_checker/advanced/O in T) - if(istype(O, /obj/effect/abstract/proximity_checker/advanced/field_edge)) - if(O.parent == F) - return FIELD_EDGE - if(O.parent == F) - return FIELD_TURF - return FALSE diff --git a/code/modules/fishing/aquarium/aquarium.dm b/code/modules/fishing/aquarium/aquarium.dm index 4bb131f49460..1850d7afee22 100644 --- a/code/modules/fishing/aquarium/aquarium.dm +++ b/code/modules/fishing/aquarium/aquarium.dm @@ -43,7 +43,7 @@ /obj/structure/aquarium/Initialize(mapload) . = ..() update_appearance() - RegisterSignal(src,COMSIG_PARENT_ATTACKBY, .proc/feed_feedback) + RegisterSignal(src,COMSIG_PARENT_ATTACKBY, PROC_REF(feed_feedback)) /obj/structure/aquarium/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs) . = ..() diff --git a/code/modules/fishing/fish/_fish.dm b/code/modules/fishing/fish/_fish.dm index 4d65e0cea0f6..48219cf98f2f 100644 --- a/code/modules/fishing/fish/_fish.dm +++ b/code/modules/fishing/fish/_fish.dm @@ -33,7 +33,7 @@ /// What type of reagent this fish needs to be fed. var/food = /datum/reagent/consumable/nutriment /// How often the fish needs to be fed - var/feeding_frequency = 5 MINUTES + var/feeding_frequency = 20 MINUTES /// Time of last feedeing var/last_feeding @@ -103,8 +103,8 @@ . = ..() /* if(fillet_type) AddElement(/datum/element/processable, TOOL_KNIFE, fillet_type, 1, 5) */ - AddComponent(/datum/component/aquarium_content, .proc/get_aquarium_animation, list(COMSIG_FISH_STATUS_CHANGED,COMSIG_FISH_STIRRED)) - RegisterSignal(src, COMSIG_ATOM_TEMPORARY_ANIMATION_START, .proc/on_temp_animation) + AddComponent(/datum/component/aquarium_content, PROC_REF(get_aquarium_animation), list(COMSIG_FISH_STATUS_CHANGED,COMSIG_FISH_STIRRED)) + RegisterSignal(src, COMSIG_ATOM_TEMPORARY_ANIMATION_START, PROC_REF(on_temp_animation)) check_environment_after_movement() if(status != FISH_DEAD) @@ -165,8 +165,8 @@ /obj/item/fish/proc/on_aquarium_insertion(obj/structure/aquarium) if(isnull(last_feeding)) //Fish start fed. last_feeding = world.time - RegisterSignal(aquarium, COMSIG_ATOM_EXITED, .proc/aquarium_exited) - RegisterSignal(aquarium, COMSIG_PARENT_ATTACKBY, .proc/attack_reaction) + RegisterSignal(aquarium, COMSIG_ATOM_EXITED, PROC_REF(aquarium_exited)) + RegisterSignal(aquarium, COMSIG_PARENT_ATTACKBY, PROC_REF(attack_reaction)) /obj/item/fish/proc/aquarium_exited(datum/source, atom/movable/gone, direction) SIGNAL_HANDLER @@ -265,10 +265,10 @@ var/health_change_per_second = 0 if(!proper_environment()) health_change_per_second -= 3 //Dying here - if(world.time - last_feeding >= feeding_frequency) - health_change_per_second -= 0.5 //Starving - else + if(world.time - last_feeding <= feeding_frequency) health_change_per_second += 0.5 //Slowly healing + else + return adjust_health(health + health_change_per_second) /obj/item/fish/proc/adjust_health(amt) @@ -291,6 +291,8 @@ return if(length(aquarium.tracked_fish) >= AQUARIUM_MAX_BREEDING_POPULATION) //so aquariums full of fish don't need to do these expensive checks return + if(world.time - last_feeding >= feeding_frequency) + return var/list/other_fish_of_same_type = list() for(var/obj/item/fish/fish_in_aquarium in aquarium) if(fish_in_aquarium == src || fish_in_aquarium.type != type) @@ -363,7 +365,7 @@ /// Refreshes flopping animation after temporary animation finishes /obj/item/fish/proc/on_temp_animation(datum/source, animation_duration) if(animation_duration > 0) - addtimer(CALLBACK(src, .proc/refresh_flopping), animation_duration) + addtimer(CALLBACK(src, PROC_REF(refresh_flopping)), animation_duration) /obj/item/fish/proc/refresh_flopping() if(flopping) diff --git a/code/modules/fishing/fishing_minigame.dm b/code/modules/fishing/fishing_minigame.dm index ce91cbf03321..18db513aa6ee 100644 --- a/code/modules/fishing/fishing_minigame.dm +++ b/code/modules/fishing/fishing_minigame.dm @@ -77,10 +77,10 @@ /// Create fishing line visuals fishing_line = used_rod.create_fishing_line(lure, target_py = 5) // If fishing line breaks los / rod gets dropped / deleted - RegisterSignal(fishing_line, COMSIG_FISHING_LINE_SNAPPED, .proc/interrupt) + RegisterSignal(fishing_line, COMSIG_FISHING_LINE_SNAPPED, PROC_REF(interrupt)) ADD_TRAIT(user, TRAIT_GONE_FISHING, REF(src)) SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "fishing", /datum/mood_event/fishing) - RegisterSignal(user, COMSIG_MOB_CLICKON, .proc/handle_click) + RegisterSignal(user, COMSIG_MOB_CLICKON, PROC_REF(handle_click)) start_baiting_phase() to_chat(user, span_notice("You start fishing...")) playsound(lure, 'sound/effects/splash.ogg', 100) @@ -137,7 +137,7 @@ animate(pixel_y = -1, time = 1 SECONDS, flags = ANIMATION_RELATIVE) //Setup next phase var/wait_time = rand(1 SECONDS, 30 SECONDS) - next_phase_timer = addtimer(CALLBACK(src, .proc/start_biting_phase), wait_time, TIMER_STOPPABLE) + next_phase_timer = addtimer(CALLBACK(src, PROC_REF(start_biting_phase)), wait_time, TIMER_STOPPABLE) /datum/fishing_challenge/proc/start_biting_phase() phase = BITING_PHASE @@ -148,7 +148,7 @@ animate(pixel_y = -3, time = 5, flags = ANIMATION_RELATIVE) // Setup next phase var/wait_time = rand(3 SECONDS, 6 SECONDS) - next_phase_timer = addtimer(CALLBACK(src, .proc/start_baiting_phase), wait_time, TIMER_STOPPABLE) + next_phase_timer = addtimer(CALLBACK(src, PROC_REF(start_baiting_phase)), wait_time, TIMER_STOPPABLE) /datum/fishing_challenge/proc/start_minigame_phase() phase = MINIGAME_PHASE diff --git a/code/modules/fishing/fishing_rod.dm b/code/modules/fishing/fishing_rod.dm index 176a7183f560..aa6841f7f355 100644 --- a/code/modules/fishing/fishing_rod.dm +++ b/code/modules/fishing/fishing_rod.dm @@ -88,10 +88,10 @@ var/beam_color = line?.line_color || default_line_color var/datum/beam/fishing_line/fishing_line_beam = new(user, target, icon_state = "fishing_line", beam_color = beam_color, override_target_pixel_y = target_py) fishing_line_beam.lefthand = user.get_held_index_of_item(src) % 2 == 1 - RegisterSignal(fishing_line_beam, COMSIG_BEAM_BEFORE_DRAW, .proc/check_los) - RegisterSignal(fishing_line_beam, COMSIG_PARENT_QDELETING, .proc/clear_line) + RegisterSignal(fishing_line_beam, COMSIG_BEAM_BEFORE_DRAW, PROC_REF(check_los)) + RegisterSignal(fishing_line_beam, COMSIG_PARENT_QDELETING, PROC_REF(clear_line)) fishing_lines += fishing_line_beam - INVOKE_ASYNC(fishing_line_beam, /datum/beam/.proc/Start) + INVOKE_ASYNC(fishing_line_beam, TYPE_PROC_REF(/datum/beam, Start)) user.update_inv_hands() return fishing_line_beam @@ -118,7 +118,7 @@ return currently_hooked_item = target_atom hooked_item_fishing_line = create_fishing_line(target_atom) - RegisterSignal(hooked_item_fishing_line, COMSIG_FISHING_LINE_SNAPPED, .proc/clear_hooked_item) + RegisterSignal(hooked_item_fishing_line, COMSIG_FISHING_LINE_SNAPPED, PROC_REF(clear_hooked_item)) /// Checks what can be hooked /obj/item/fishing_rod/proc/can_be_hooked(atom/movable/target) @@ -160,7 +160,7 @@ cast_projectile.original = target cast_projectile.fired_from = src cast_projectile.firer = user - cast_projectile.impacted = list(user = TRUE) + LAZYSET(cast_projectile.impacted, user, TRUE) cast_projectile.preparePixelProjectile(target, user) cast_projectile.fire() @@ -411,7 +411,7 @@ /datum/beam/fishing_line/Start() update_offsets(origin.dir) . = ..() - RegisterSignal(origin, COMSIG_ATOM_DIR_CHANGE, .proc/handle_dir_change) + RegisterSignal(origin, COMSIG_ATOM_DIR_CHANGE, PROC_REF(handle_dir_change)) /datum/beam/fishing_line/Destroy() UnregisterSignal(origin, COMSIG_ATOM_DIR_CHANGE) @@ -420,7 +420,7 @@ /datum/beam/fishing_line/proc/handle_dir_change(atom/movable/source, olddir, newdir) SIGNAL_HANDLER update_offsets(newdir) - INVOKE_ASYNC(src, /datum/beam/.proc/redrawing) + INVOKE_ASYNC(src, TYPE_PROC_REF(/datum/beam, redrawing)) /datum/beam/fishing_line/proc/update_offsets(user_dir) switch(user_dir) diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm index 3f0ba7f94ff8..ac6fae8bc53f 100644 --- a/code/modules/flufftext/Dreaming.dm +++ b/code/modules/flufftext/Dreaming.dm @@ -64,7 +64,7 @@ dream_fragments.Cut(1,2) to_chat(src, "... [next_message] ...") if(LAZYLEN(dream_fragments)) - dream_timer = addtimer(CALLBACK(src, .proc/dream_sequence, dream_fragments), rand(1, 3) SECONDS, TIMER_STOPPABLE) + dream_timer = addtimer(CALLBACK(src, PROC_REF(dream_sequence), dream_fragments), rand(1, 3) SECONDS, TIMER_STOPPABLE) else stop_dreaming() diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 61c63b5407b0..7bf30e86d498 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -101,6 +101,9 @@ GLOBAL_LIST_INIT(hallucination_list, list( /obj/effect/hallucination/simple/Initialize(mapload, mob/living/carbon/T) . = ..() + if(!T) + stack_trace("A hallucination was created with no target") + return INITIALIZE_HINT_QDEL target = T current_image = GetImage() if(target.client) @@ -318,7 +321,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.client.images |= fakerune target.playsound_local(wall,'sound/effects/meteorimpact.ogg', 150, 1) bubblegum = new(wall, target) - addtimer(CALLBACK(src, .proc/bubble_attack, landing), 10) + addtimer(CALLBACK(src, PROC_REF(bubble_attack), landing), 10) /datum/hallucination/oh_yeah/proc/bubble_attack(turf/landing) var/charged = FALSE //only get hit once @@ -362,10 +365,10 @@ GLOBAL_LIST_INIT(hallucination_list, list( for(var/i in 1 to rand(5, 10)) target.playsound_local(source, 'sound/weapons/laser.ogg', 25, 1) if(prob(50)) - addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/sear.ogg', 25, 1), rand(5,10)) + addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, 'sound/weapons/sear.ogg', 25, 1), rand(5,10)) hits++ else - addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/effects/searwall.ogg', 25, 1), rand(5,10)) + addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, 'sound/weapons/effects/searwall.ogg', 25, 1), rand(5,10)) sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 6)) if(hits >= 4 && prob(70)) target.playsound_local(source, get_sfx("bodyfall"), 25, 1) @@ -375,10 +378,10 @@ GLOBAL_LIST_INIT(hallucination_list, list( for(var/i in 1 to rand(5, 10)) target.playsound_local(source, 'sound/weapons/taser2.ogg', 25, 1) if(prob(50)) - addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/tap.ogg', 25, 1), rand(5,10)) + addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, 'sound/weapons/tap.ogg', 25, 1), rand(5,10)) hits++ else - addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/effects/searwall.ogg', 25, 1), rand(5,10)) + addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, 'sound/weapons/effects/searwall.ogg', 25, 1), rand(5,10)) sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 6)) if(hits >= 3 && prob(70)) target.playsound_local(source, get_sfx("bodyfall"), 25, 1) @@ -396,10 +399,10 @@ GLOBAL_LIST_INIT(hallucination_list, list( for(var/i in 1 to rand(3, 6)) target.playsound_local(source, 'sound/weapons/gun/shotgun/shot.ogg', 25, TRUE) if(prob(60)) - addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/pierce.ogg', 25, 1), rand(5,10)) + addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, 'sound/weapons/pierce.ogg', 25, 1), rand(5,10)) hits++ else - addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, "ricochet", 25, 1), rand(5,10)) + addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, "ricochet", 25, 1), rand(5,10)) sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 6)) if(hits >= 2 && prob(80)) target.playsound_local(source, get_sfx("bodyfall"), 25, 1) @@ -660,7 +663,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( target.playsound_local(get_turf(airlock), 'sound/machines/boltsup.ogg',30,0,3) qdel(src) -/obj/effect/hallucination/fake_door_lock/CanAllowThrough(atom/movable/mover, turf/_target) +/obj/effect/hallucination/fake_door_lock/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(mover == target && airlock.density) return FALSE @@ -725,7 +728,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( // Display message if (!is_radio && !target.client?.prefs.chat_on_map) var/image/speech_overlay = image('icons/mob/talk.dmi', person, "default0", layer = ABOVE_MOB_LAYER) - INVOKE_ASYNC(GLOBAL_PROC, /proc/flick_overlay, speech_overlay, list(target.client), 30) + INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay), speech_overlay, list(target.client), 30) if (target.client?.prefs.chat_on_map) target.create_chat_message(speaker || person, understood_language, chosen, spans) to_chat(target, message) @@ -1095,7 +1098,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( /obj/effect/hallucination/danger/lava/Initialize(mapload, _target) . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -1116,7 +1119,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( /obj/effect/hallucination/danger/chasm/Initialize(mapload, _target) . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -1133,7 +1136,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( return to_chat(target, "You fall into the chasm!") target.Paralyze(40) - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, target, "It's surprisingly shallow."), 15) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(to_chat), target, "It's surprisingly shallow."), 15) QDEL_IN(src, 30) /obj/effect/hallucination/danger/anomaly @@ -1143,7 +1146,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( . = ..() START_PROCESSING(SSobj, src) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -1260,13 +1263,13 @@ GLOBAL_LIST_INIT(hallucination_list, list( if(target.client) target.client.images |= shock_image target.client.images |= electrocution_skeleton_anim - addtimer(CALLBACK(src, .proc/reset_shock_animation), 40) + addtimer(CALLBACK(src, PROC_REF(reset_shock_animation)), 40) target.playsound_local(get_turf(src), "sparks", 100, 1) target.staminaloss += 50 target.Stun(40) target.jitteriness += 1000 target.do_jitter_animation(target.jitteriness) - addtimer(CALLBACK(src, .proc/shock_drop), 20) + addtimer(CALLBACK(src, PROC_REF(shock_drop)), 20) /datum/hallucination/shock/proc/reset_shock_animation() if(target.client) diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 542c2383cb27..cd372392b927 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -79,7 +79,7 @@ if(iscyborg(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell var/mob/living/silicon/robot/bro = user bro.cell.use(30) - addtimer(CALLBACK(reagents, /datum/reagents.proc/add_reagent, refill, trans), 600) + addtimer(CALLBACK(reagents, TYPE_PROC_REF(/datum/reagents, add_reagent), refill, trans), 600) else if(target.is_drainable()) //A dispenser. Transfer FROM it TO us. if (!is_refillable()) @@ -123,7 +123,7 @@ /obj/item/reagent_containers/food/drinks/proc/smash(atom/target, mob/thrower, ranged = FALSE) if(!isGlass) return - if(QDELING(src) || !target) //Invalid loc + if(QDELING(src) || !target || !(flags_1 & INITIALIZED_1)) //Invalid loc return if(bartender_check(target) && ranged) return @@ -738,3 +738,40 @@ desc = "A dangerous fusion of flavors!" icon_state = "plasma" list_reagents = list(/datum/reagent/medicine/molten_bubbles/plasma = 50) + +/obj/item/reagent_containers/food/drinks/ration + name = "empty ration pouch" + desc = "If you ever wondered where air came from..." + list_reagents = list(/datum/reagent/oxygen = 6, /datum/reagent/nitrogen = 24) + icon = 'icons/obj/food/ration.dmi' + icon_state = "ration_package" + drop_sound = 'sound/items/handling/cardboardbox_drop.ogg' + pickup_sound = 'sound/items/handling/cardboardbox_pickup.ogg' + in_container = TRUE + reagent_flags = NONE + spillable = FALSE + w_class = WEIGHT_CLASS_SMALL + volume = 50 + +/obj/item/reagent_containers/food/drinks/ration/proc/open_ration(mob/user) + to_chat(user, "You tear open \the [src].") + playsound(user.loc, 'sound/effects/rip3.ogg', 50) + reagents.flags |= OPENCONTAINER + spillable = TRUE + +/obj/item/reagent_containers/food/drinks/ration/attack_self(mob/user) + if(!is_drainable()) + open_ration(user) + icon_state = "[icon_state]_open" + return ..() + +/obj/item/reagent_containers/food/drinks/ration/attack(mob/living/M, mob/user, def_zone) + if (!is_drainable()) + to_chat(user, "The [src] is sealed shut!") + return 0 + return ..() + +/obj/item/reagent_containers/food/drinks/ration/pan_genezan_vodka + name = "Pan-Genezan vodka" + desc = "Vodka made from the finest potatoes." + list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 15) diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 65c3ac05dd5b..b4d8cf8090c9 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -35,6 +35,8 @@ custom_price = 55 /obj/item/reagent_containers/food/drinks/bottle/smash(mob/living/target, mob/thrower, ranged = FALSE) + if(QDELING(src) || !target || !(flags_1 & INITIALIZED_1)) //Invalid loc + return //Creates a shattering noise and replaces the bottle with a broken_bottle if(bartender_check(target) && ranged) return @@ -177,13 +179,13 @@ /obj/item/reagent_containers/food/drinks/bottle/vodka name = "Tunguska triple distilled" - desc = "Aah, vodka. Prime choice of drink AND fuel by Russians worldwide." + desc = "Vodka, prime choice of drink and fuel." icon_state = "vodkabottle" list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 100) /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka name = "Badminka vodka" - desc = "The label's written in Cyrillic. All you can make out is the name and a word that looks vaguely like 'Vodka'." + desc = "The label's written in some unknown language. All you can make out is the name and a word that looks vaguely like 'Vodka'." icon_state = "badminka" list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 100) @@ -530,7 +532,7 @@ to_chat(user, "You light [src] on fire.") add_overlay(custom_fire_overlay ? custom_fire_overlay : GLOB.fire_overlay) if(!isGlass) - addtimer(CALLBACK(src, .proc/explode), 5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(explode)), 5 SECONDS) /obj/item/reagent_containers/food/drinks/bottle/molotov/proc/explode() if(!active) @@ -565,7 +567,7 @@ /obj/item/reagent_containers/food/drinks/bottle/pruno/Initialize() . = ..() - RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/check_fermentation) + RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(check_fermentation)) /obj/item/reagent_containers/food/drinks/bottle/pruno/Destroy() UnregisterSignal(src, COMSIG_MOVABLE_MOVED) @@ -585,7 +587,7 @@ return if(!fermentation_time_remaining) fermentation_time_remaining = fermentation_time - fermentation_timer = addtimer(CALLBACK(src, .proc/do_fermentation), fermentation_time_remaining, TIMER_UNIQUE|TIMER_STOPPABLE) + fermentation_timer = addtimer(CALLBACK(src, PROC_REF(do_fermentation)), fermentation_time_remaining, TIMER_UNIQUE|TIMER_STOPPABLE) fermentation_time_remaining = null // actually ferment diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index b1b53adff787..2baf670d807d 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -248,10 +248,6 @@ //You can tear the bag open above food to put the condiments on it, obviously. if(istype(target, /obj/item/reagent_containers/food/snacks)) - if(!reagents.total_volume) - to_chat(user, "You tear open [src], but there's nothing in it.") - qdel(src) - return if(target.reagents.total_volume >= target.reagents.maximum_volume) to_chat(user, "You tear open [src], but [target] is stacked so high that it just drips off!" ) qdel(src) @@ -297,7 +293,6 @@ originalname = "bbq sauce" list_reagents = list(/datum/reagent/consumable/bbqsauce = 10) - /obj/item/reagent_containers/food/condiment/ketchup name = "ketchup bottle" desc = "You feel more american already" diff --git a/code/modules/food_and_drinks/food/ration.dm b/code/modules/food_and_drinks/food/ration.dm new file mode 100644 index 000000000000..b74db1f0ccb7 --- /dev/null +++ b/code/modules/food_and_drinks/food/ration.dm @@ -0,0 +1,815 @@ +/obj/item/reagent_containers/food/snacks/ration + name = "nutriment ration" + desc = "standard issue ration" + filling_color = "#664330" + list_reagents = list(/datum/reagent/consumable/nutriment = 4) + icon = 'icons/obj/food/ration.dmi' + icon_state = "ration_side" + in_container = TRUE + reagent_flags = NONE + spillable = FALSE + w_class = WEIGHT_CLASS_SMALL + volume = 50 + var/cookable = FALSE + var/cooked = FALSE + +/obj/item/reagent_containers/food/snacks/ration/Initialize(mapload) + . = ..() + update_overlays() + +/obj/item/reagent_containers/food/snacks/ration/update_overlays() + . = ..() + var/mutable_appearance/ration_overlay + if(icon_exists(icon, "[icon_state]_filling")) + ration_overlay = mutable_appearance(icon, "[icon_state]_filling") + else if(icon_exists(icon, "[initial(icon_state)]_filling")) + ration_overlay = mutable_appearance(icon, "[initial(icon_state)]_filling") + else + return + ration_overlay.color = filling_color + add_overlay(ration_overlay) + +/obj/item/reagent_containers/food/snacks/ration/proc/open_ration(mob/user) + to_chat(user, "You tear open \the [src].") + playsound(user.loc, 'sound/effects/rip3.ogg', 50) + reagents.flags |= OPENCONTAINER + desc += "\nIt's been opened." + update_overlays() + +/obj/item/reagent_containers/food/snacks/ration/attack_self(mob/user) + if(!is_drainable()) + icon_state = "[icon_state]_open" + open_ration(user) + return ..() + +/obj/item/reagent_containers/food/snacks/ration/attack(mob/living/M, mob/user, def_zone) + if (!is_drainable()) + to_chat(user, "The [src] is sealed shut!") + return 0 + return ..() + +/obj/item/reagent_containers/food/snacks/ration/microwave_act(obj/machinery/microwave/Heater) + if (cookable == FALSE) + ..() + else if (cooked == TRUE) + ..() + else + name = "warm [initial(name)]" + bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) + cooked = TRUE + +/obj/item/reagent_containers/food/snacks/ration/examine(mob/user) + . = ..() + if(cookable && !cooked) + . += "It can be cooked in a microwave or warmed using a flameless ration heater." + +/obj/item/reagent_containers/food/snacks/ration/entree + icon_state = "ration_main" + list_reagents = list(/datum/reagent/consumable/nutriment = 6) + cookable = TRUE + +/obj/item/reagent_containers/food/snacks/ration/side + icon_state = "ration_side" + list_reagents = list(/datum/reagent/consumable/nutriment = 4) + +/obj/item/reagent_containers/food/snacks/ration/snack + icon_state = "ration_side" + list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/sugar = 3) + +/obj/item/reagent_containers/food/snacks/ration/bar + icon_state = "ration_bar" + list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/sugar = 2) + +/obj/item/reagent_containers/food/snacks/ration/condiment + name = "condiment pack" + desc = "Just your average condiment pacl." + icon_state = "ration_condi" + volume = 10 + amount_per_transfer_from_this = 10 + possible_transfer_amounts = list() + +/obj/item/reagent_containers/food/snacks/ration/condiment/attack(mob/living/M, mob/user, def_zone) + if (!is_drainable()) + to_chat(user, "[src] is sealed shut!") + return 0 + else + to_chat(user, "[src] cant be eaten like that!") + return 0 + +/obj/item/reagent_containers/food/snacks/ration/condiment/afterattack(obj/target, mob/user , proximity) + . = ..() + if(!is_drainable()) + to_chat(user, "[src] is sealed shut!") + return + if(!proximity) + return + //You can tear the bag open above food to put the condiments on it, obviously. + if(istype(target, /obj/item/reagent_containers/food/snacks)) + if(target.reagents.total_volume >= target.reagents.maximum_volume) + to_chat(user, "[target] is too full!" ) + return + else + to_chat(user, "You tear open [src] above [target] and the condiments drip onto it.") + src.reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user) + qdel(src) + +/obj/item/reagent_containers/food/snacks/ration/pack + name = "powder pack" + desc = "Mix into a bottle of water and shake." + icon_state = "ration_condi" + volume = 10 + amount_per_transfer_from_this = 10 + possible_transfer_amounts = list() + +/obj/item/reagent_containers/food/snacks/ration/pack/attack(mob/living/M, mob/user, def_zone) + if (!is_drainable()) + to_chat(user, "[src] is sealed shut!") + return 0 + else + to_chat(user, "[src] cant be eaten like that!") + return 0 + +/obj/item/reagent_containers/food/snacks/ration/pack/afterattack(obj/target, mob/user , proximity) + . = ..() + if(!is_drainable()) + to_chat(user, "[src] is sealed shut!") + return + if(!proximity) + return + if(istype(target, /obj/item/reagent_containers)) + if(target.reagents.total_volume >= target.reagents.maximum_volume) + to_chat(user, "[target] is too full!" ) + return + else + to_chat(user, "You pour the [src] into [target] and shake.") + src.reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user) + qdel(src) + +/obj/item/reagent_containers/food/snacks/ration/entree/vegan_chili + name = "vegan chili with beans" + desc = "A hearty and flavorful vegan chili made with beans. It's so delicious, you won't believe it's not meat!" + filling_color = "#B22222" + tastes = list("beans" = 1, "off" = 1) + foodtype = VEGETABLES + +/obj/item/reagent_containers/food/snacks/ration/entree/shredded_beef + name = "shredded beef in barbecue sauce" + desc = "Tender, juicy shredded beef coated in smoky barbecue sauce. A savory treat that satisfies your hunger." + filling_color = "#7a3c19" + tastes = list("beef" = 1) + foodtype = MEAT | SUGAR + +/obj/item/reagent_containers/food/snacks/ration/entree/pork_spaghetti + name = "spaghetti with pork and sauce" + desc = "A hearty dish of spaghetti with tender pork and a savory sauce. A ration_overlay and delicious meal to satisfy your hunger." + filling_color = "#b82121" + tastes = list("pork" = 1, "spaghetti" = 1, "sauce" = 1) + foodtype = MEAT | GRAIN | VEGETABLES + +/obj/item/reagent_containers/food/snacks/ration/entree/fried_fish + name = "fried fish chunks" + desc = "Crispy and delicious fried fish chunks, perfect for seafood lovers. Satisfy your cravings with this delightful fried treat." + filling_color = "#f08934" + tastes = list("fish" = 1, "fried" = 1) + foodtype = FRIED + +/obj/item/reagent_containers/food/snacks/ration/entree/beef_strips + name = "beef strips in tomato sauce" + desc = "Tender beef strips cooked in a rich tomato sauce, creating a delightful and comforting combination. A hearty and delicious meal to enjoy." + filling_color = "#644815" + tastes = list("beef" = 1, "tomato" = 1) + foodtype = MEAT | VEGETABLES + +/obj/item/reagent_containers/food/snacks/ration/entree/chili_macaroni + name = "chili macaroni" + desc = "A comforting dish of macaroni combined with flavorful chili, providing a hearty and satisfying meal." + filling_color = "#994d00" + tastes = list("chili" = 1, "macaroni" = 1) + foodtype = MEAT | GRAIN + +/obj/item/reagent_containers/food/snacks/ration/entree/chicken_wings_hot_sauce + name = "chicken wings with hot sauce" + desc = "Crispy and flavorful chicken wings tossed in a spicy hot sauce, delivering a bold and satisfying taste." + filling_color = "#ff3300" + tastes = list("chicken" = 1, "hot sauce" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/ration/entree/fish_stew + name = "fish stew" + desc = "A hearty fish stew featuring a rich broth and tender pieces of fish, creating a flavorful and comforting meal." + filling_color = "#336699" + tastes = list("fish" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/ration/entree/lemon_pepper_chicken + name = "lemon pepper chicken" + desc = "Tender chicken seasoned with zesty lemon and fragrant pepper, offering a flavorful and satisfying dish." + filling_color = "#ffff66" + tastes = list("lemon" = 1, "pepper" = 1, "chicken" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/ration/entree/sausage_peppers_onions + name = "sausage with peppers and onions" + desc = "Grilled sausage served with sautéed peppers and onions, creating a flavorful and satisfying dish." + filling_color = "#cc3300" + tastes = list("sausage" = 1, "peppers" = 1, "onions" = 1) + foodtype = MEAT | VEGETABLES + +/obj/item/reagent_containers/food/snacks/ration/entree/dumplings_chili_sauce + name = "dumplings with chili sauce" + desc = "Delicious dumplings served with a flavorful chili sauce, providing a hearty and satisfying meal." + filling_color = "#b8711b" + tastes = list("dumplings" = 1, "chili sauce" = 1) + foodtype = GRAIN | MEAT + +/obj/item/reagent_containers/food/snacks/ration/entree/battered_fish_sticks + name = "battered fish sticks" + desc = "Crispy battered fish sticks, deep-fried to perfection and offering a delicious seafood snack." + filling_color = "#336699" + tastes = list("fish" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/ration/entree/assorted_salted_offal + name = "assorted salted offal" + desc = "A mix of various salted offal, providing a unique and flavorful snack for those with adventurous tastes." + filling_color = "#cc3300" + tastes = list("assorted offal" = 1) + foodtype = MEAT | GORE //its literally entrails + +/obj/item/reagent_containers/food/snacks/ration/entree/maple_pork_sausage_patty + name = "maple pork sausage patty" + desc = "Juicy pork sausage patty infused with the sweetness of maple, offering a hearty and flavorful snack." + filling_color = "#b8711b" + tastes = list("maple" = 1, "pork sausage" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/ration/entree/pepper_jack_beef_patty + name = "jalapeno pepper jack beef patty" + desc = "Spicy jalapeno and pepper jack-infused beef patty, offering a bold and flavorful snack option." + filling_color = "#ff9900" + tastes = list("jalapeno" = 1, "pepper jack" = 1, "beef patty" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/ration/entree/beef_goulash + name = "beef goulash" + desc = "A hearty and flavorful beef goulash, combining tender pieces of beef with savory spices for a satisfying meal." + filling_color = "#b82121" + tastes = list("beef" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/ration/entree/pepperoni_pizza_slice + name = "pepperoni pizza slice" + desc = "A classic pepperoni pizza slice topped with melted cheese and savory pepperoni, offering a delicious snack." + filling_color = "#cc3300" + tastes = list("pepperoni" = 1, "pizza" = 1) + foodtype = GRAIN | DAIRY | MEAT + +/obj/item/reagent_containers/food/snacks/ration/entree/blackened_calamari + name = "blackened calamari" + desc = "Tender calamari coated in a savory blackened seasoning, creating a flavorful and satisfying seafood dish." + filling_color = "#336699" + tastes = list("calamari" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/ration/entree/elbow_macaroni + name = "elbow macaroni" + desc = "A classic dish of elbow macaroni, offering a simple and satisfying meal." + filling_color = "#ffcc00" + tastes = list("macaroni" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/ration/entree/cheese_pizza_slice + name = "cheese pizza slice" + desc = "A classic cheese pizza slice topped with melted cheese, offering a simple and satisfying snack." + filling_color = "#ffcc00" + tastes = list("cheese" = 1, "pizza" = 1) + foodtype = GRAIN | DAIRY + +/obj/item/reagent_containers/food/snacks/ration/side/vegan_crackers + name = "vegetable 'crackers'" + desc = "Delicious vegetable-based crackers that are the perfect crunchy and nutritious snack." + filling_color = "#9ED41B" + tastes = list("cracker" = 1) + foodtype = VEGETABLES + +/obj/item/reagent_containers/food/snacks/ration/side/vegan_crackers/open_ration(mob/user) + .=..() + to_chat(user, "\the [src] makes a nice hiss.") + +/obj/item/reagent_containers/food/snacks/ration/side/cornbread + name = "cornbread" + desc = "Deliciously crumbly cornbread, a delightful blend of sweet and savory flavors." + filling_color = "#DDB63B" + tastes = list("corn" = 1) + foodtype = VEGETABLES | GRAIN + +/obj/item/reagent_containers/food/snacks/ration/side/jerky_wrap + name = "jerky wraps" + desc = "Thin slices of flavorful beef jerky, carefully wrapped to create a portable and protein-packed snack. Ideal for satisfying your hunger on the go." + filling_color = "#532d0e" + tastes = list("dry" = 1, "jerky" = 1, "beef" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/ration/side/bread_sticks + name = "seasoned bread sticks" + desc = "Crunchy and flavorful seasoned bread sticks, a delightful accompaniment to your meal or a satisfying snack on their own." + filling_color = "#e2904d" + tastes = list("bread" = 1, "seasoned" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/ration/side/tortilla + name = "tortillas" + desc = "Soft and pliable tortillas, a versatile staple that complements various fillings and flavors. A great choice for a quick and satisfying meal." + filling_color = "#f3ac69" + tastes = list("tortilla" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/ration/side/wheat_bread + name = "white wheat snack bread" + desc = "Soft and fluffy white wheat snack bread, a versatile snack or accompaniment to your meals. Enjoy the wholesome goodness of wheat." + filling_color = "#8d5a30" + tastes = list("wheat" = 1, "bread" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/ration/side/beef_sticks + name = "teriyaki beef sticks" + desc = "Savory teriyaki-flavored beef sticks, a protein-packed snack that satisfies your taste buds. Ideal for meat lovers." + filling_color = "#664a20" + tastes = list("beef" = 1, "teriyaki" = 1) + foodtype = MEAT | SUGAR + +/obj/item/reagent_containers/food/snacks/ration/side/garlic_mashed_potatoes + name = "garlic mashed potatoes" + desc = "Creamy mashed potatoes infused with aromatic garlic, creating a comforting and savory side dish." + filling_color = "#e6e600" + tastes = list("garlic" = 1, "potatoes" = 1) + foodtype = GRAIN | VEGETABLES + cookable = TRUE + +/obj/item/reagent_containers/food/snacks/ration/side/soup_crackers + name = "soup crackers" + desc = "Crunchy and satisfying crackers, perfect for dipping into a warm bowl of soup or enjoying on their own." + filling_color = "#663300" + tastes = list("crackers" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/ration/side/griddled_mushrooms_chili + name = "griddled mushrooms with chili" + desc = "Savory mushrooms griddled to perfection and topped with a spicy chili sauce, offering a delightful burst of flavors." + filling_color = "#b82121" + tastes = list("mushrooms" = 1, "chili" = 1) + foodtype = VEGETABLES | MEAT + cookable = TRUE + +/obj/item/reagent_containers/food/snacks/ration/side/white_sandwich_bread + name = "white sandwich bread" + desc = "Soft and fluffy white bread, perfect for making sandwiches or enjoying as a quick and simple snack." + filling_color = "#ffffff" + tastes = list("bread" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/ration/side/baked_cheddarcheese_chips + name = "baked cheddar cheese chips" + desc = "Crispy and savory cheddar cheese chips, baked to perfection for a flavorful and satisfying snack." + filling_color = "#ffcc00" + tastes = list("cheddar cheese" = 1, "chips" = 1) + foodtype = DAIRY + +/obj/item/reagent_containers/food/snacks/ration/side/fried_potato_curls + name = "fried potato curls" + desc = "Crispy and golden potato curls, fried to perfection and seasoned for a delightful and savory snack." + filling_color = "#ffcc00" + tastes = list("potato" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/ration/side/stewed_asparagus_butter + name = "stewed asparagus with butter" + desc = "Tender stewed asparagus served with a generous drizzle of melted butter, creating a delightful and savory side." + filling_color = "#99cc00" + tastes = list("asparagus" = 1, "butter" = 1) + foodtype = VEGETABLES + cookable = TRUE + +/obj/item/reagent_containers/food/snacks/ration/side/broth_tuna_rice + name = "bone broth with tuna and rice" + desc = "A warm and comforting broth with tender tuna and rice, offering a nourishing and satisfying meal." + filling_color = "#669999" + tastes = list("broth" = 1, "tuna" = 1, "rice" = 1) + foodtype = MEAT | GRAIN + cookable = TRUE + +/obj/item/reagent_containers/food/snacks/ration/side/trail_crackers + name = "trail crackers" + desc = "Nutritious and energy-packed crackers, perfect for on-the-go snacking during outdoor adventures." + filling_color = "#ffcc00" + tastes = list("crackers" = 1) + foodtype = GRAIN | FRUIT + +/obj/item/reagent_containers/food/snacks/ration/side/hash_brown_bacon + name = "hash brown potatoes with bacon, peppers and onions" + desc = "Crispy hash brown paired with savory bacon, creating a satisfying and indulgent snack option." + filling_color = "#ffcc00" + tastes = list("hash brown" = 1, "bacon" = 1) + foodtype = GRAIN | MEAT + cookable = TRUE + +/obj/item/reagent_containers/food/snacks/ration/side/granola_milk_blueberries + name = "granola with milk and blueberries" + desc = "Nutrient-rich granola served with creamy milk and plump blueberries, providing a wholesome and delicious snack." + filling_color = "#6699ff" + tastes = list("granola" = 1, "milk" = 1, "blueberries" = 1) + foodtype = GRAIN | DAIRY + +/obj/item/reagent_containers/food/snacks/ration/side/maple_muffin + name = "maple muffin" + desc = "A delightful muffin infused with the rich flavor of maple, offering a sweet and satisfying treat." + filling_color = "#b8711b" + tastes = list("maple" = 1, "muffin" = 1) + foodtype = SUGAR | GRAIN + +/obj/item/reagent_containers/food/snacks/ration/side/au_gratin_potatoes + name = "au gratin potatoes" + desc = "Creamy au gratin potatoes topped with a golden cheesy crust, providing a comforting and satisfying side dish." + filling_color = "#ffcc00" + tastes = list("au gratin potatoes" = 1) + foodtype = GRAIN | DAIRY | VEGETABLES + cookable = TRUE + +/obj/item/reagent_containers/food/snacks/ration/side/applesauce_carb_enhanced + name = "carb-enhanced applesauce" + desc = "Applesauce enriched with carbohydrates, providing a quick and energy-boosting snack option." + filling_color = "#ff9900" + tastes = list("applesauce" = 1) + foodtype = FRUIT | SUGAR + +/obj/item/reagent_containers/food/snacks/ration/side/white_bread_mini_loaf + name = "mini loaf of white bread" + desc = "A small loaf of soft and fluffy white bread, perfect for making sandwiches or enjoying as a simple snack." + filling_color = "#ffffff" + tastes = list("bread" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/ration/side/apples_in_spiced_sauce + name = "apples in spiced sauce" + desc = "Tender apple slices coated in a spiced sauce, creating a flavorful and comforting snack option." + filling_color = "#ff3300" + tastes = list("apples" = 1, "spiced sauce" = 1) + foodtype = FRUIT + +/obj/item/reagent_containers/food/snacks/ration/side/pretzel_sticks_honey_mustard + name = "pretzel sticks with honey mustard" + desc = "Crunchy pretzel sticks served with a delectable honey mustard dipping sauce, creating a delightful snack." + filling_color = "#996633" + tastes = list("pretzel" = 1, "honey mustard" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/ration/side/jellied_eels + name = "jellied eels" + desc = "A classic dish of jellied eels, offering a unique combination of flavors and textures for a nostalgic treat." + filling_color = "#669999" + tastes = list("jellied eels" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/ration/side/trail_mix_beef_jerky + name = "trail mix with beef jerky" + desc = "A hearty trail mix featuring a blend of nuts, seeds, and dried fruit, with savory beef jerky for a protein-packed snack." + filling_color = "#996633" + tastes = list("trail mix" = 1, "beef jerky" = 1) + foodtype = MEAT | FRUIT + +/obj/item/reagent_containers/food/snacks/ration/side/crackers + name = "crackers" + desc = "Crunchy and satisfying crackers, perfect for dipping into a warm bowl of soup or enjoying on their own." + filling_color = "#663300" + tastes = list("crackers" = 1) + foodtype = GRAIN + +/obj/item/reagent_containers/food/snacks/ration/side/barbecue_fried_pork_rinds + name = "barbecue fried pork rinds" + desc = "Crispy and flavorful fried pork rinds coated in a savory barbecue seasoning, creating a satisfying snack option." + filling_color = "#b82121" + tastes = list("pork rinds" = 1, "barbecue" = 1) + foodtype = MEAT + +/obj/item/reagent_containers/food/snacks/ration/side/applesauce_mango_peach_puree + name = "applesauce with mango and peach puree" + desc = "A delightful blend of applesauce with mango and peach puree, creating a sweet and satisfying snack option." + filling_color = "#ff9900" + tastes = list("applesauce" = 1, "mango" = 1, "peach" = 1) + foodtype = FRUIT | SUGAR + +/obj/item/reagent_containers/food/snacks/ration/snack/pizza_crackers + name = "pepperoni pizza cheese filled crackers" + desc = "Irresistible cheese-filled crackers with a savory pepperoni pizza flavor. A delicious and addictive snack." + filling_color = "#b82121" + tastes = list("pizza" = 3, "pepperoni" = 1, "cheese" = 1) + foodtype = MEAT | DAIRY | GRAIN | JUNKFOOD + +/obj/item/reagent_containers/food/snacks/ration/snack/fruit_puree + name = "apple, strawberry, and carrot fruit puree squeeze" + desc = "A delightful blend of fresh apple, succulent strawberry, and nutritious carrot, all pureed into a convenient squeeze pouch. A burst of fruity goodness in every bite." + filling_color = "#cc3131" + tastes = list("apple" = 1, "strawberry" = 1, "carrot" = 1) + foodtype = VEGETABLES | FRUIT | SUGAR + +/obj/item/reagent_containers/food/snacks/ration/snack/cinnamon_bun + name = "cinnamon bun" + desc = "A delectable pastry swirled with cinnamon and drizzled with a sweet glaze. Warm and fluffy, this cinnamon bun is a delightful treat to enjoy with your favorite beverage." + filling_color = "#b18d40" + tastes = list("cinnamon" = 3, "airy" = 1, "sweet" = 1) + foodtype = GRAIN | SUGAR + +/obj/item/reagent_containers/food/snacks/ration/snack/toaster_pastry + name = "chocolate chip toaster pastry" + desc = "A delicious chocolate chip toaster pastry, perfect for a quick breakfast or a tasty snack. Indulge in the delightful blend of chocolate and pastry." + filling_color = "#e2a054" + tastes = list("chocolate" = 1, "pastry" = 1, "sweet" = 1) + foodtype = SUGAR | GRAIN | JUNKFOOD | BREAKFAST + cookable = TRUE + +/obj/item/reagent_containers/food/snacks/ration/snack/dried_raisins + name = "dried raisins" + desc = "Sweet and chewy dried raisins, a natural and healthy snack option. Packed with natural sugars and nutrients for a burst of energy." + filling_color = "#1b1146" + tastes = list("raisins" = 1, "sweet" = 1) + foodtype = FRUIT | SUGAR + +/obj/item/reagent_containers/food/snacks/ration/snack/corn_kernels + name = "toasted corn kernels, barbecue" + desc = "Toasted corn kernels with a savory barbecue flavor. A crunchy and flavorful snack to enjoy anytime." + filling_color = "#836b1d" + tastes = list("corn" = 1, "barbecue" = 1) + foodtype = SUGAR | VEGETABLES | JUNKFOOD + +/obj/item/reagent_containers/food/snacks/ration/snack/chocolate_pudding + name = "chocolate pudding" + desc = "Creamy and decadent chocolate pudding, a delightful dessert to indulge your sweet tooth." + filling_color = "#3b2406" + tastes = list("chocolate" = 3, "pudding" = 1, "sweet" = 1) + foodtype = SUGAR | JUNKFOOD + +/obj/item/reagent_containers/food/snacks/ration/snack/blackberry_preserves + name = "blackberry preserves" + desc = "Sweet and tangy blackberry preserves, perfect for spreading on toast or pairing with your favorite snacks." + filling_color = "#26133b" + tastes = list("blackberry" = 1, "sweet" = 1) + foodtype = FRUIT + +/obj/item/reagent_containers/food/snacks/ration/snack/candy_rings + name = "peppermint candy rings" + desc = "Colorful and refreshing peppermint candy rings, a sweet and delightful treat that brings a burst of coolness to your taste buds." + filling_color = "#ecafaf" + tastes = list("peppermint" = 3, "sweet" = 1) + foodtype = SUGAR | JUNKFOOD + +/obj/item/reagent_containers/food/snacks/ration/snack/lemon_pound_cake + name = "lemon pound cake" + desc = "A zesty and moist lemon pound cake that delivers a burst of citrus flavor in every bite. A delightful dessert to enjoy." + filling_color = "#ffff99" + tastes = list("lemon" = 1, "cake" = 1) + foodtype = SUGAR + +/obj/item/reagent_containers/food/snacks/ration/snack/cherry_snackers + name = "cherry snackers" + desc = "Juicy and plump cherries, perfectly preserved and packed for a delightful and refreshing snack." + filling_color = "#ff0066" + tastes = list("cherry" = 1) + foodtype = FRUIT + +/obj/item/reagent_containers/food/snacks/ration/snack/mint_chocolate_snack_cake + name = "mint chocolate snack cake" + desc = "A delectable snack cake featuring the perfect blend of refreshing mint and rich chocolate flavors." + filling_color = "#00cc66" + tastes = list("mint" = 1, "chocolate" = 1, "cake" = 1) + foodtype = SUGAR + +/obj/item/reagent_containers/food/snacks/ration/snack/strawberry_preserves + name = "strawberry preserves" + desc = "Sweet and luscious strawberry preserves, perfect for spreading on bread or enjoying as a tasty topping." + filling_color = "#ff3300" + tastes = list("strawberry" = 1) + foodtype = SUGAR | FRUIT + +/obj/item/reagent_containers/food/snacks/ration/snack/sour_gummy_worms + name = "sour gummy worms" + desc = "Tangy and chewy gummy worms coated in a sour sugar blend, providing a fun and flavorful snacking experience." + filling_color = "#ff9900" + tastes = list("sour" = 1, "gummy" = 1) + foodtype = SUGAR + +/obj/item/reagent_containers/food/snacks/ration/snack/blue_raspberry_candies + name = "blue raspberry candies" + desc = "Sweet and vibrant blue raspberry-flavored candies, perfect for indulging your sweet tooth." + filling_color = "#3399ff" + tastes = list("blue raspberry" = 1) + foodtype = SUGAR + +/obj/item/reagent_containers/food/snacks/ration/snack/peanut_cranberry_mix + name = "peanut cranberry mix" + desc = "A satisfying mix of crunchy peanuts and tangy dried cranberries, offering a balanced and flavorful snack." + filling_color = "#cc3300" + tastes = list("peanut" = 1, "cranberry" = 1) + foodtype = FRUIT + +/obj/item/reagent_containers/food/snacks/ration/snack/channeler_meat_candy + name = "channeler meat candy" + desc = "A traditional meat-candy from the Antechannel League on Kalixcis, offering an unusual and captivating flavor experience." + filling_color = "#9933ff" + tastes = list("channeler meat" = 1, "candy" = 1) + foodtype = MEAT | SUGAR + +/obj/item/reagent_containers/food/snacks/ration/snack/chocolate_orange_snack_cake + name = "chocolate orange snack cake" + desc = "A delightful snack cake combining rich chocolate and zesty orange flavors for a mouthwatering treat." + filling_color = "#ff6600" + tastes = list("chocolate" = 1, "orange" = 1, "cake" = 1) + foodtype = SUGAR + +/obj/item/reagent_containers/food/snacks/ration/snack/pick_me_up_energy_gum + name = "Pick-Me-Up energy gum" + desc = "Energy-boosting gum that provides a quick and refreshing burst of vitality when you need it the most." + filling_color = "#00cc66" + tastes = list("energy gum" = 1) + foodtype = SUGAR + +/obj/item/reagent_containers/food/snacks/ration/snack/apple_slices + name = "apple slices" + desc = "Fresh and crisp apple slices, perfect for a refreshing and healthy snack option." + filling_color = "#ff3300" + tastes = list("apple" = 1) + foodtype = FRUIT + +/obj/item/reagent_containers/food/snacks/ration/snack/candied_pineapple_chunks + name = "candied pineapple chunks" + desc = "Sweet and chewy candied pineapple chunks, offering a burst of tropical flavor in every bite." + filling_color = "#ff6600" + tastes = list("candied pineapple" = 1) + foodtype = SUGAR | FRUIT + +/obj/item/reagent_containers/food/snacks/ration/snack/smoked_almonds + name = "smoked almonds" + desc = "Savory smoked almonds, offering a flavorful and protein-packed snack option." + filling_color = "#663300" + tastes = list("smoked almonds" = 1) + foodtype = FRUIT + +/obj/item/reagent_containers/food/snacks/ration/snack/chocolate_chunk_oatmeal_cookie + name = "chocolate chunk oatmeal cookie" + desc = "A scrumptious oatmeal cookie studded with rich chocolate chunks for a delightful and indulgent treat." + filling_color = "#663300" + tastes = list("chocolate" = 1, "oatmeal cookie" = 1) + foodtype = SUGAR | GRAIN + +/obj/item/reagent_containers/food/snacks/ration/snack/peanut_candies + name = "peanut candies" + desc = "Sweet and nutty peanut candies, providing a delightful and energy-boosting snack." + filling_color = "#ff9900" + tastes = list("peanut" = 1) + foodtype = SUGAR | FRUIT + +/obj/item/reagent_containers/food/snacks/ration/snack/patriotic_sugar_cookies + name = "patriotic sugar cookies" + desc = "Colorful sugar cookies with patriotic designs, providing a festive and sweet treat for special occasions." + filling_color = "#ffcc00" + tastes = list("sugar cookies" = 1) + foodtype = SUGAR + +/obj/item/reagent_containers/food/snacks/ration/snack/oatmeal_cookie + name = "oatmeal cookie" + desc = "A delicious oatmeal cookie, offering a wholesome and satisfying treat for any time of day." + filling_color = "#663300" + tastes = list("oatmeal cookie" = 1) + foodtype = SUGAR | GRAIN + +/obj/item/reagent_containers/food/snacks/ration/snack/dried_cranberries + name = "dried cranberries" + desc = "Tangy and chewy dried cranberries, a healthy and nutritious snack option." + filling_color = "#cc3300" + tastes = list("cranberries" = 1) + foodtype = FRUIT + +/obj/item/reagent_containers/food/snacks/ration/snack/dry_roasted_peanuts + name = "dry roasted peanuts" + desc = "Crunchy and flavorful dry roasted peanuts, a satisfying and protein-packed snack option." + filling_color = "#663300" + tastes = list("peanuts" = 1) + foodtype = FRUIT + +/obj/item/reagent_containers/food/snacks/ration/snack/jalapeno_cashews + name = "jalapeno cashews" + desc = "Savory cashews coated in a spicy jalapeno seasoning, creating a flavorful and satisfying snack option." + filling_color = "#663300" + tastes = list("jalapeno" = 1, "cashews" = 1) + foodtype = FRUIT + +/obj/item/reagent_containers/food/snacks/ration/bar/energy_bar + name = "quik-energy bar, apple-cinnamon" + desc = "A power-packed quik-energy bar infused with the flavors of apple and cinnamon. Ideal for a quick energy boost on the go." + filling_color = "#ee3e1f" + tastes = list("apple" = 1, "cinnamon" = 1) + foodtype = FRUIT | GRAIN + +/obj/item/reagent_containers/food/snacks/ration/bar/tropical_energy_bar + name = "tropical energy bar" + desc = "An energy-boosting bar packed with tropical flavors and essential nutrients for sustained vitality." + filling_color = "#ff9900" + tastes = list("tropical" = 1, "energy bar" = 1) + foodtype = SUGAR | FRUIT + +/obj/item/reagent_containers/food/snacks/ration/bar/rationers_guild_chocolate_bar + name = "Rationer's Guild chocolate bar" + desc = "A chocolate bar made by the Rationer's Guild, offering a rich and indulgent treat for a quick pick-me-up." + filling_color = "#663300" + tastes = list("chocolate" = 1) + foodtype = SUGAR + +/obj/item/reagent_containers/food/snacks/ration/bar/quik_energy_bar_chocolate + name = "quik-energy bar chocolate" + desc = "A power-packed quik-energy bar infused with the rich flavor of chocolate. Ideal for a quick energy boost on the go." + filling_color = "#663300" + tastes = list("chocolate" = 1) + foodtype = SUGAR + +/obj/item/reagent_containers/food/snacks/ration/condiment/cheese_spread + name = "cheese spread pack" + list_reagents = list(/datum/reagent/consumable/cheese_spread = 8) + +/obj/item/reagent_containers/food/snacks/ration/condiment/hot_cheese_spread + name = "jalapeno cheddar cheese spread pack" + list_reagents = list(/datum/reagent/consumable/cheese_spread = 5 , /datum/reagent/consumable/capsaicin = 3) + +/obj/item/reagent_containers/food/snacks/ration/condiment/garlic_cheese_spread + name = "garlic parmesan cheese spread pack" + list_reagents = list(/datum/reagent/consumable/cheese_spread = 8) + +/obj/item/reagent_containers/food/snacks/ration/condiment/bacon_cheddar_cheese_spread + name = "bacon cheddar cheese spread pack" + list_reagents = list(/datum/reagent/consumable/cheese_spread = 8) + +/obj/item/reagent_containers/food/snacks/ration/condiment/peanut_butter + name = "peanut butter pack" + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/peanut_butter = 5) + +/obj/item/reagent_containers/food/snacks/ration/condiment/chunky_peanut_butter + name = "chunky peanut butter pack" + list_reagents = list(/datum/reagent/consumable/peanut_butter = 10) + +/obj/item/reagent_containers/food/snacks/ration/condiment/maple_syrup + name = "maple syrup pack" + list_reagents = list(/datum/reagent/consumable/sugar = 10) + +/obj/item/reagent_containers/food/snacks/ration/pack/chocolate_protein_beverage + name = "chocolate hazelnut protein drink powder pack" + list_reagents = list(/datum/reagent/consumable/coco = 5, /datum/reagent/consumable/eggyolk = 5) + +/obj/item/reagent_containers/food/snacks/ration/pack/fruit_beverage + name = "fruit punch beverage powder, carb-electrolyte pack" + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/applejuice = 2, /datum/reagent/consumable/orangejuice = 2) + +/obj/item/reagent_containers/food/snacks/ration/pack/fruit_smoothie_beverage + name = "tropical blend fruit and vegetable smoothie powder pack" + list_reagents = list(/datum/reagent/consumable/pineapplejuice = 3, /datum/reagent/consumable/orangejuice = 3, /datum/reagent/consumable/eggyolk = 3) + +/obj/item/reagent_containers/food/snacks/ration/pack/grape_beverage + name = "grape beverage powder, carb-fortified pack" + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/grapejuice = 5) + +/obj/item/reagent_containers/food/snacks/ration/pack/grape_beverage_sugar_free + name = "sugar-free grape beverage base powder" + list_reagents = list(/datum/reagent/consumable/grapejuice = 10) + +/obj/item/reagent_containers/food/snacks/ration/pack/lemonade_beverage + name = "lemonade drink powder pack" + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/lemonjuice = 5) + +/obj/item/reagent_containers/food/snacks/ration/pack/lemonade_beverage_suger_free + name = "lemonade sugar-free beverage base pack" + list_reagents = list(/datum/reagent/consumable/lemonjuice = 10) + +/obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage + name = "orange beverage powder, carb-fortified pack" + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/orangejuice = 5) + +/obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage_sugar_free + name = "orange beverage base, sugar-free pack" + list_reagents = list(/datum/reagent/consumable/orangejuice = 10) + +/obj/item/reagent_containers/food/snacks/ration/pack/cherry_beverage + name = "cherry high-energy beverage powder pack" + list_reagents = list(/datum/reagent/consumable/sugar = 5, /datum/reagent/consumable/cherryjelly = 5) + +/obj/item/reagent_containers/food/snacks/ration/pack/pineapple_beverage + name = "pinapple fruit beverage base pack" + list_reagents = list(/datum/reagent/consumable/pineapplejuice = 10) + +/obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_orange + name = "freeze-dried coffee flavored with orange pack" + list_reagents = list(/datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/orangejuice = 3) + +/obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_chocolate + name = "freeze-dried coffee flavored with chocolate pack" + list_reagents = list(/datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/coco = 3) + +/obj/item/reagent_containers/food/snacks/ration/pack/freeze_dried_coffee_hazelnut + name = "freeze-dried coffee flavored with hazelnut pack" + list_reagents = list(/datum/reagent/consumable/coffee = 5, /datum/reagent/consumable/coco = 3) diff --git a/code/modules/food_and_drinks/food/snacks/meat.dm b/code/modules/food_and_drinks/food/snacks/meat.dm index 81f0fc8923ac..86323c2e00bc 100644 --- a/code/modules/food_and_drinks/food/snacks/meat.dm +++ b/code/modules/food_and_drinks/food/snacks/meat.dm @@ -39,7 +39,7 @@ cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/plain/human slice_path = /obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human tastes = list("tender meat" = 1) - foodtype = MEAT | RAW | GROSS + foodtype = MEAT | RAW | GORE /obj/item/reagent_containers/food/snacks/meat/slab/human/initialize_slice(obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human/slice, reagents_per_slice) ..() @@ -88,7 +88,7 @@ cooked_type = /obj/item/reagent_containers/food/snacks/meat/steak/plain/human/lizard filling_color = "#6B8E23" tastes = list("meat" = 4, "scales" = 1) - foodtype = MEAT | RAW + foodtype = MEAT | RAW | GORE /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant icon_state = "plantmeat" @@ -102,21 +102,21 @@ desc = "Ow, the edge." filling_color = "#202020" tastes = list("darkness" = 1, "meat" = 1) - foodtype = MEAT | RAW + foodtype = MEAT | RAW | GORE /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly icon_state = "flymeat" desc = "Nothing says tasty like maggot filled radioactive mutant flesh." list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/uranium = 3) tastes = list("maggots" = 1, "the inside of a reactor" = 1) - foodtype = MEAT | RAW | GROSS + foodtype = MEAT | RAW | GROSS | GORE /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/moth icon_state = "mothmeat" desc = "Unpleasantly powdery and dry. Kind of pretty, though." filling_color = "#BF896B" tastes = list("dust" = 1, "powder" = 1, "meat" = 2) - foodtype = MEAT | RAW + foodtype = MEAT | RAW | GORE /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/squid name = "calamari" @@ -131,8 +131,8 @@ desc = "There's a point where this needs to stop, and clearly we have passed it." filling_color = "#F0F0F0" tastes = list("bone" = 1) - slice_path = null //can't slice a bone into cutlets - foodtype = GROSS + slice_path = null //can't slice a bone into cutlets + foodtype = GROSS | GORE /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/zombie name = " meat (rotten)" @@ -140,7 +140,7 @@ desc = "Halfway to becoming fertilizer for your garden." filling_color = "#6B8E23" tastes = list("brains" = 1, "meat" = 1) - foodtype = RAW | MEAT | TOXIC + foodtype = RAW | MEAT | TOXIC | GORE | GROSS // who the hell would eat this /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ethereal name = "crystalline cellulose" @@ -176,23 +176,23 @@ /obj/item/reagent_containers/food/snacks/meat/slab/mouse name = "mouse meat" desc = "A slab of mouse meat. Best not eat it raw." - foodtype = RAW | MEAT | GROSS + foodtype = RAW | MEAT | GORE /obj/item/reagent_containers/food/snacks/meat/slab/mothroach name = "mothroach meat" - desc = "A light slab of meat." - foodtype = RAW | MEAT | GROSS + desc = "A light slab of mothroach meat." + foodtype = RAW | MEAT | GORE /obj/item/reagent_containers/food/snacks/meat/slab/corgi name = "corgi meat" desc = "Tastes like... well you know..." tastes = list("meat" = 4, "a fondness for wearing hats" = 1) - foodtype = RAW | MEAT | GROSS + foodtype = RAW | MEAT | GORE /obj/item/reagent_containers/food/snacks/meat/slab/pug name = "pug meat" desc = "Tastes like... well you know..." - foodtype = RAW | MEAT | GROSS + foodtype = RAW | MEAT | GORE /obj/item/reagent_containers/food/snacks/meat/slab/killertomato name = "killer tomato meat" @@ -358,7 +358,7 @@ /obj/item/reagent_containers/food/snacks/meat/steak/plain/human tastes = list("tender meat" = 1) - foodtype = MEAT | GROSS + foodtype = MEAT | GORE /obj/item/reagent_containers/food/snacks/meat/steak/killertomato name = "killer tomato steak" @@ -396,7 +396,7 @@ tastes = list("beef" = 1, "cod fish" = 1) /obj/item/reagent_containers/food/snacks/meat/steak/chicken - name = "chicken steak" //Can you have chicken steaks? Maybe this should be renamed once it gets new sprites. + name = "chicken steak" //Can you have chicken steaks? Maybe this should be renamed once it gets new sprites. //I concur icon_state = "birdsteak" tastes = list("chicken" = 1) @@ -444,7 +444,7 @@ /obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human cooked_type = /obj/item/reagent_containers/food/snacks/meat/cutlet/plain/human tastes = list("tender meat" = 1) - foodtype = MEAT | RAW | GROSS + foodtype = MEAT | RAW | GORE /obj/item/reagent_containers/food/snacks/meat/rawcutlet/plain/human/initialize_cooked_food(obj/item/reagent_containers/food/snacks/S, cooking_efficiency) ..() @@ -506,7 +506,7 @@ /obj/item/reagent_containers/food/snacks/meat/cutlet/plain/human tastes = list("tender meat" = 1) - foodtype = MEAT | GROSS + foodtype = MEAT | GORE /obj/item/reagent_containers/food/snacks/meat/cutlet/killertomato name = "killer tomato cutlet" diff --git a/code/modules/food_and_drinks/food/snacks_burgers.dm b/code/modules/food_and_drinks/food/snacks_burgers.dm index 5bff4f8edb27..44ee559641e3 100644 --- a/code/modules/food_and_drinks/food/snacks_burgers.dm +++ b/code/modules/food_and_drinks/food/snacks_burgers.dm @@ -33,7 +33,7 @@ desc = "A bloody burger." bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("bun" = 2, "long pig" = 4) - foodtype = MEAT | GRAIN | GROSS + foodtype = MEAT | GRAIN | GORE /obj/item/reagent_containers/food/snacks/burger/human/CheckParts(list/parts_list) ..() @@ -52,7 +52,7 @@ name = "corgi burger" desc = "You monster." bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 5) - foodtype = GRAIN | MEAT | GROSS + foodtype = GRAIN | MEAT | GORE /obj/item/reagent_containers/food/snacks/burger/appendix name = "appendix burger" @@ -60,7 +60,7 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 6) icon_state = "appendixburger" tastes = list("bun" = 4, "grass" = 2) - foodtype = GRAIN | MEAT | GROSS + foodtype = GRAIN | MEAT | GORE /obj/item/reagent_containers/food/snacks/burger/fish name = "fillet -o- carp sandwich" @@ -133,7 +133,7 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/medicine/mannitol = 6, /datum/reagent/consumable/nutriment/vitamin = 5) list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/medicine/mannitol = 5, /datum/reagent/consumable/nutriment/vitamin = 1) tastes = list("bun" = 4, "brains" = 2) - foodtype = GRAIN | MEAT | GROSS + foodtype = GRAIN | MEAT | GORE /obj/item/reagent_containers/food/snacks/burger/ghost name = "ghost burger" @@ -305,7 +305,7 @@ desc = "Pretty much what you'd expect..." icon_state = "ratburger" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1) - foodtype = GRAIN | MEAT | GROSS + foodtype = GRAIN | MEAT | GORE /obj/item/reagent_containers/food/snacks/burger/baseball name = "home run baseball burger" diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index 515ef35bd882..78999078193c 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -321,7 +321,7 @@ /obj/item/reagent_containers/food/snacks/boiledspiderleg name = "boiled spider leg" - desc = "A giant spider's leg that's still twitching after being cooked. Gross!" + desc = "A giant spider's leg that's still twitching after being cooked. Yum!" //Its cooked and not GORE, so it shouldnt imply that its gross to eat icon_state = "spiderlegcooked" trash = /obj/item/trash/plate bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/capsaicin = 2, /datum/reagent/consumable/nutriment/vitamin = 2) @@ -414,7 +414,7 @@ desc = "A human meat, on a stick." bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) tastes = list("tender meat" = 3, "metal" = 1) - foodtype = MEAT | GROSS + foodtype = MEAT | GORE /obj/item/reagent_containers/food/snacks/kebab/monkey name = "meat-kebab" @@ -436,7 +436,7 @@ desc = "Severed lizard tail on a stick." bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("meat" = 8, "metal" = 4, "scales" = 1) - foodtype = MEAT + foodtype = MEAT // NOT GORE, tastes delicious! /obj/item/reagent_containers/food/snacks/kebab/rat name = "rat-kebab" @@ -445,7 +445,7 @@ w_class = WEIGHT_CLASS_NORMAL list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) tastes = list("rat meat" = 1, "metal" = 1) - foodtype = MEAT | GROSS + foodtype = MEAT | GORE /obj/item/reagent_containers/food/snacks/kebab/rat/double name = "double rat-kebab" diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index b923c87f1537..3d5adf18e6fd 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -506,7 +506,7 @@ /obj/item/reagent_containers/food/snacks/chewable/lollipop/cyborg/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/spamcheck), 1200) + addtimer(CALLBACK(src, PROC_REF(spamcheck)), 1200) /obj/item/reagent_containers/food/snacks/chewable/lollipop/cyborg/equipped(mob/living/user, slot) . = ..(user, slot) @@ -584,7 +584,7 @@ /obj/item/reagent_containers/food/snacks/gumball/cyborg/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/spamcheck), 1200) + addtimer(CALLBACK(src, PROC_REF(spamcheck)), 1200) /obj/item/reagent_containers/food/snacks/gumball/cyborg/equipped(mob/living/user, slot) . = ..(user, slot) @@ -734,14 +734,14 @@ foodtype = FRUIT | SUGAR /obj/item/reagent_containers/food/snacks/canned/peaches/maint - name = "Maintenance Peaches" + name = "maintenance peaches" desc = "I have a mouth and I must eat." icon_state = "peachcanmaint" trash = /obj/item/trash/can/food/peaches/maint tastes = list("peaches" = 1, "tin" = 7) /obj/item/reagent_containers/food/snacks/crab_rangoon - name = "Crab Rangoon" + name = "crab rangoon" desc = "Has many names, like crab puffs, cheese wontons, crab dumplings? Whatever you call them, they're a fabulous blast of cream cheesy crab." icon_state = "crabrangoon" list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 5) @@ -761,3 +761,5 @@ filling_color = "#ECA735" tastes = list("fried corn" = 1) foodtype = JUNKFOOD | FRIED + + diff --git a/code/modules/food_and_drinks/food/snacks_pastry.dm b/code/modules/food_and_drinks/food/snacks_pastry.dm index 6cedb2a98142..d060dc1c2969 100644 --- a/code/modules/food_and_drinks/food/snacks_pastry.dm +++ b/code/modules/food_and_drinks/food/snacks_pastry.dm @@ -76,7 +76,7 @@ bonus_reagents = list(/datum/reagent/consumable/ketchup = 1) list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/ketchup = 2) tastes = list("meat" = 1) - foodtype = JUNKFOOD | MEAT | GROSS | FRIED | BREAKFAST + foodtype = JUNKFOOD | MEAT | GORE | FRIED | BREAKFAST is_decorated = TRUE /obj/item/reagent_containers/food/snacks/donut/berry @@ -377,13 +377,14 @@ /obj/item/reagent_containers/food/snacks/soylentgreen name = "\improper Soylent Green" - desc = "Not made of people. Honest." //Totally people. + desc = "Not made of people. Honest*." //Totally people. icon_state = "soylent_green" trash = /obj/item/trash/waffles bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 1) list_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 1) filling_color = "#9ACD32" tastes = list("waffles" = 7, "people" = 1) + // The wafers are supposed to be flavorful and nutritious in the movie. They shouldn't be gross in a dystopian future where the chef regularly feeds people from the morgue to you. foodtype = GRAIN | MEAT /obj/item/reagent_containers/food/snacks/soylenviridians diff --git a/code/modules/food_and_drinks/food/snacks_soup.dm b/code/modules/food_and_drinks/food/snacks_soup.dm index 3933ff4b233a..c7bcf963faf2 100644 --- a/code/modules/food_and_drinks/food/snacks_soup.dm +++ b/code/modules/food_and_drinks/food/snacks_soup.dm @@ -54,7 +54,7 @@ bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 6) list_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/blood = 10, /datum/reagent/water = 5, /datum/reagent/consumable/nutriment/vitamin = 4) tastes = list("iron" = 1) - foodtype = GROSS + foodtype = GORE //its literally blood /obj/item/reagent_containers/food/snacks/soup/wingfangchu name = "wing fang chu" @@ -157,7 +157,7 @@ icon_state = "eyeballsoup" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/liquidgibs = 3) tastes = list("tomato" = 1, "squirming" = 1) - foodtype = MEAT | GROSS + foodtype = MEAT | GORE /obj/item/reagent_containers/food/snacks/soup/milo name = "milosoup" diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 327c7b422398..4fa5354339c5 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -59,6 +59,11 @@ RefreshParts() fry_loop = new(list(src), FALSE) +/obj/machinery/deepfryer/Destroy() + QDEL_NULL(frying) + QDEL_NULL(fry_loop) + return ..() + /obj/machinery/deepfryer/RefreshParts() var/oil_efficiency for(var/obj/item/stock_parts/micro_laser/M in component_parts) diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 3a7c7245955c..ca8900c1dda3 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -200,7 +200,7 @@ mob_occupant.death(1) mob_occupant.ghostize() qdel(src.occupant) - addtimer(CALLBACK(src, .proc/make_meat, skin, allmeat, meat_produced, gibtype, diseases), gibtime) + addtimer(CALLBACK(src, PROC_REF(make_meat), skin, allmeat, meat_produced, gibtype, diseases), gibtime) /obj/machinery/gibber/proc/make_meat(obj/item/stack/sheet/animalhide/skin, list/obj/item/reagent_containers/food/snacks/meat/slab/allmeat, meat_produced, gibtype, list/datum/disease/diseases) playsound(src.loc, 'sound/effects/splat.ogg', 50, TRUE) diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill.dm b/code/modules/food_and_drinks/kitchen_machinery/grill.dm index 90fb5c27ae7b..4c1a8695d838 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm @@ -93,8 +93,9 @@ . = ..() /obj/machinery/grill/Destroy() - grilled_item = null - . = ..() + QDEL_NULL(grilled_item) + QDEL_NULL(grill_loop) + return ..() /obj/machinery/grill/handle_atom_del(atom/A) if(A == grilled_item) diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index 101b733d3677..13a35b579679 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -40,6 +40,8 @@ /obj/machinery/microwave/Destroy() eject() + QDEL_NULL(soundloop) + QDEL_LIST(ingredients) if(wires) QDEL_NULL(wires) . = ..() @@ -307,7 +309,7 @@ return time-- use_power(500) - addtimer(CALLBACK(src, .proc/loop, type, time, wait), wait) + addtimer(CALLBACK(src, PROC_REF(loop), type, time, wait), wait) /obj/machinery/microwave/proc/loop_finish() operating = FALSE @@ -358,6 +360,60 @@ soundloop.stop() update_appearance() +/obj/item/ration_heater + name = "flameless ration heater" + desc = "A magnisium based ration heater. It can be used to heat up entrees and other food items. reaches the same temperature as a microwave with half the volume." + icon = 'icons/obj/food/ration.dmi' + icon_state = "ration_package" + grind_results = list(/datum/reagent/iron = 10, /datum/reagent/water = 10, /datum/reagent/consumable/sodiumchloride = 5) + heat = 3800 + var/obj/item/tocook = null + var/mutable_appearance/ration_overlay + var/uses = 3 + +/obj/item/ration_heater/Initialize() + . = ..() + ration_overlay = mutable_appearance(icon, icon_state, LOW_ITEM_LAYER) + +/obj/item/ration_heater/afterattack(atom/target, mob/user, flag) + if(istype(target, /obj/item/reagent_containers/food) || istype(target, /obj/item/grown)) + to_chat(user, "You start sliding \the [src] under the [target]...") + if(do_after(user, 10)) + tocook = target + RegisterSignal(tocook, COMSIG_PARENT_QDELETING, PROC_REF(clear_cooking)) + target.add_overlay(ration_overlay) + addtimer(CALLBACK(src, PROC_REF(cook)), 100) + target.visible_message("\The [target] rapidly begins cooking...") + playsound(src, 'sound/items/cig_light.ogg', 50, 1) + moveToNullspace() + +/obj/item/ration_heater/proc/clear_cooking(datum/source) + SIGNAL_HANDLER + UnregisterSignal(tocook, COMSIG_PARENT_QDELETING) + tocook.cut_overlay(ration_overlay) + tocook = null + +/obj/item/ration_heater/proc/cook() + if(!QDELETED(tocook)) + var/cookturf = get_turf(tocook) + tocook.visible_message("\The [src] lets out a final hiss...") + playsound(tocook, 'sound/items/cig_snuff.ogg', 50, 1) + if(istype(tocook, /obj/item/reagent_containers/food) || istype(tocook, /obj/item/grown)) + tocook.visible_message("\The [tocook] is done warming up!") + tocook.microwave_act() + if(!QDELETED(tocook)) + clear_cooking() + if(uses == 0) + qdel() + else + uses-- + src.forceMove(cookturf) + +/obj/item/ration_heater/examine(mob/user) + . = ..() + . += "It has [uses] uses left..." + . += "Examine rations to see which ones can be microwaved." + #undef MICROWAVE_NORMAL #undef MICROWAVE_MUCK #undef MICROWAVE_PRE diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index 0566a655dc3e..005ffa7632ba 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -82,7 +82,7 @@ GLOBAL_LIST_EMPTY(monkey_recyclers) use_power(500) stored_matter += cube_production addtimer(VARSET_CALLBACK(src, pixel_x, base_pixel_x)) - addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, user, "The machine now has [stored_matter] monkey\s worth of material stored.")) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), user, "The machine now has [stored_matter] monkey\s worth of material stored.")) /obj/machinery/monkey_recycler/interact(mob/user) if(stored_matter >= 1) diff --git a/code/modules/holiday/halloween.dm b/code/modules/holiday/halloween.dm index af1a89a1a38a..e95bdb2063a8 100644 --- a/code/modules/holiday/halloween.dm +++ b/code/modules/holiday/halloween.dm @@ -205,7 +205,7 @@ ///Adds a timer to call stalk() on Aggro /mob/living/simple_animal/hostile/clown_insane/Aggro() . = ..() - timer = addtimer(CALLBACK(src, .proc/stalk), 30, TIMER_STOPPABLE|TIMER_UNIQUE) + timer = addtimer(CALLBACK(src, PROC_REF(stalk)), 30, TIMER_STOPPABLE|TIMER_UNIQUE) /mob/living/simple_animal/hostile/clown_insane/LoseAggro() . = ..() @@ -224,8 +224,8 @@ qdel(src) return playsound(M, pick('sound/spookoween/scary_horn.ogg','sound/spookoween/scary_horn2.ogg', 'sound/spookoween/scary_horn3.ogg'), 100, TRUE) - timer = addtimer(CALLBACK(src, .proc/stalk), 30, TIMER_STOPPABLE|TIMER_UNIQUE) - addtimer(CALLBACK(src, .proc/teleport_to_target), 12, TIMER_STOPPABLE|TIMER_UNIQUE) + timer = addtimer(CALLBACK(src, PROC_REF(stalk)), 30, TIMER_STOPPABLE|TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(teleport_to_target)), 12, TIMER_STOPPABLE|TIMER_UNIQUE) ///Does what's in the name. Teleports to target.loc. Called from a timer. /mob/living/simple_animal/hostile/clown_insane/proc/teleport_to_target() diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index e962dbb520a1..ae19b1dea376 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -528,7 +528,7 @@ return "Have a merry Christmas!" /datum/holiday/xmas/celebrate() - SSticker.OnRoundstart(CALLBACK(src, .proc/roundstart_celebrate)) + SSticker.OnRoundstart(CALLBACK(src, PROC_REF(roundstart_celebrate))) GLOB.maintenance_loot += list( /obj/item/toy/xmas_cracker = 3, /obj/item/clothing/head/santa = 1, diff --git a/code/modules/holodeck/area_copy.dm b/code/modules/holodeck/area_copy.dm index 92687709e7d9..3ef68c2345d3 100644 --- a/code/modules/holodeck/area_copy.dm +++ b/code/modules/holodeck/area_copy.dm @@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(duplicate_forbidden_vars,list( if(islist(original.vars[V])) var/list/L = original.vars[V] O.vars[V] = L.Copy() - else if(istype(original.vars[V], /datum)) + else if(istype(original.vars[V], /datum) || ismob(original.vars[V])) continue // this would reference the original's object, that will break when it is used or deleted. else O.vars[V] = original.vars[V] @@ -52,8 +52,12 @@ GLOBAL_LIST_INIT(duplicate_forbidden_vars,list( contained_atom.flags_1 |= HOLOGRAM_1 if(M.circuit) M.circuit.flags_1 |= HOLOGRAM_1 - return O + if(ismob(O)) //Overlays are carried over despite disallowing them, if a fix is found remove this. + var/mob/M = O + M.cut_overlays() + M.regenerate_icons() + return O /area/proc/copy_contents_to(area/A , platingRequired = 0, nerf_weapons = 0) //Takes: Area. Optional: If it should copy to areas that don't have plating diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm index e8c31b9c4c7b..e6a1c90ede6e 100644 --- a/code/modules/holodeck/computer.dm +++ b/code/modules/holodeck/computer.dm @@ -89,7 +89,6 @@ and clear when youre done! if you dont i will use :newspaper2: on you /obj/machinery/computer/holodeck/LateInitialize()//from here linked is populated and the program list is generated. its also set to load the offline program linked = GLOB.areas_by_type[mapped_start_area] - bottom_left = locate(linked.x, linked.y, src.z) var/area/computer_area = get_area(src) if(istype(computer_area, /area/holodeck)) @@ -99,7 +98,7 @@ and clear when youre done! if you dont i will use :newspaper2: on you // the following is necessary for power reasons if(!linked) - log_world("No matching holodeck area found") + log_mapping("No matching holodeck area found") qdel(src) return else if (!offline_program) @@ -115,6 +114,7 @@ and clear when youre done! if you dont i will use :newspaper2: on you else linked.power_usage = list(AREA_USAGE_LEN) + bottom_left = locate(linked.x, linked.y, z) COOLDOWN_START(src, holodeck_cooldown, HOLODECK_CD) generate_program_list() load_program(offline_program,TRUE) @@ -183,7 +183,7 @@ and clear when youre done! if you dont i will use :newspaper2: on you var/turf/possible_blacklist = _turf if (possible_blacklist.holodeck_compatible) continue - input_blacklist += possible_blacklist + input_blacklist[possible_blacklist] = TRUE ///loads the template whose id string it was given ("offline_program" loads datum/map_template/holodeck/offline) /obj/machinery/computer/holodeck/proc/load_program(map_id, force = FALSE, add_delay = TRUE) @@ -248,7 +248,7 @@ and clear when youre done! if you dont i will use :newspaper2: on you continue atoms.flags_1 |= HOLOGRAM_1 - RegisterSignal(atoms, COMSIG_PARENT_PREQDELETED, .proc/remove_from_holo_lists) + RegisterSignal(atoms, COMSIG_PARENT_PREQDELETED, PROC_REF(remove_from_holo_lists)) if (isholoeffect(atoms))//activates holo effects and transfers them from the spawned list into the effects list var/obj/effect/holodeck_effect/holo_effect = atoms @@ -333,7 +333,7 @@ and clear when youre done! if you dont i will use :newspaper2: on you if(toggleOn) if(last_program && (last_program != offline_program)) - addtimer(CALLBACK(src,.proc/load_program, last_program, TRUE), 25) + addtimer(CALLBACK(src, PROC_REF(load_program), last_program, TRUE), 25) active = TRUE else last_program = program @@ -342,7 +342,7 @@ and clear when youre done! if you dont i will use :newspaper2: on you /obj/machinery/computer/holodeck/power_change() . = ..() - INVOKE_ASYNC(src, .proc/toggle_power, !machine_stat) + INVOKE_ASYNC(src, PROC_REF(toggle_power), !machine_stat) ///shuts down the holodeck and force loads the offline_program /obj/machinery/computer/holodeck/proc/emergency_shutdown() diff --git a/code/modules/holodeck/holo_effect.dm b/code/modules/holodeck/holo_effect.dm index 3f164952fbb4..122c852fbc9a 100644 --- a/code/modules/holodeck/holo_effect.dm +++ b/code/modules/holodeck/holo_effect.dm @@ -28,31 +28,36 @@ /obj/effect/holodeck_effect/cards icon = 'icons/obj/toy.dmi' icon_state = "deck_nanotrasen_full" - var/obj/item/toy/cards/deck/D + var/obj/item/toy/cards/deck/deck /obj/effect/holodeck_effect/cards/activate(obj/machinery/computer/holodeck/HC) - D = new(loc) + deck = new(loc) safety(!(HC.obj_flags & EMAGGED)) - D.holo = HC - return D + deck.holo = HC + RegisterSignal(deck, COMSIG_PARENT_QDELETING, PROC_REF(handle_card_delete)) + return deck + +/obj/effect/holodeck_effect/cards/proc/handle_card_delete(datum/source) + SIGNAL_HANDLER + deck = null /obj/effect/holodeck_effect/cards/safety(active) - if(!D) + if(!deck) return if(active) - D.card_hitsound = null - D.card_force = 0 - D.card_throwforce = 0 - D.card_throw_speed = 3 - D.card_throw_range = 7 - D.card_attack_verb = list("attacked") + deck.card_hitsound = null + deck.card_force = 0 + deck.card_throwforce = 0 + deck.card_throw_speed = 3 + deck.card_throw_range = 7 + deck.card_attack_verb = list("attacked") else - D.card_hitsound = 'sound/weapons/bladeslice.ogg' - D.card_force = 5 - D.card_throwforce = 10 - D.card_throw_speed = 3 - D.card_throw_range = 7 - D.card_attack_verb = list("attacked", "sliced", "diced", "slashed", "cut") + deck.card_hitsound = 'sound/weapons/bladeslice.ogg' + deck.card_force = 5 + deck.card_throwforce = 10 + deck.card_throw_speed = 3 + deck.card_throw_range = 7 + deck.card_attack_verb = list("attacked", "sliced", "diced", "slashed", "cut") /obj/effect/holodeck_effect/sparks/activate(obj/machinery/computer/holodeck/HC) @@ -68,24 +73,29 @@ /obj/effect/holodeck_effect/mobspawner var/mobtype = /mob/living/simple_animal/hostile/carp/holocarp - var/mob/mob = null + var/mob/our_mob = null /obj/effect/holodeck_effect/mobspawner/activate(obj/machinery/computer/holodeck/HC) if(islist(mobtype)) mobtype = pick(mobtype) - mob = new mobtype(loc) - mob.flags_1 |= HOLOGRAM_1 + our_mob = new mobtype(loc) + our_mob.flags_1 |= HOLOGRAM_1 // these vars are not really standardized but all would theoretically create stuff on death - for(var/v in list("butcher_results","corpse","weapon1","weapon2","blood_volume") & mob.vars) - mob.vars[v] = null - return mob + for(var/v in list("butcher_results","corpse","weapon1","weapon2","blood_volume") & our_mob.vars) + our_mob.vars[v] = null + RegisterSignal(our_mob, COMSIG_PARENT_QDELETING, PROC_REF(handle_mob_delete)) + return our_mob /obj/effect/holodeck_effect/mobspawner/deactivate(obj/machinery/computer/holodeck/HC) - if(mob) - HC.derez(mob) + if(our_mob) + HC.derez(our_mob) qdel(src) +/obj/effect/holodeck_effect/mobspawner/proc/handle_mob_delete(datum/source) + SIGNAL_HANDLER + our_mob = null + /obj/effect/holodeck_effect/mobspawner/pet mobtype = list( /mob/living/simple_animal/butterfly, /mob/living/simple_animal/chick/holo, diff --git a/code/modules/holodeck/turfs.dm b/code/modules/holodeck/turfs.dm index 26ea485474aa..b69c05e34653 100644 --- a/code/modules/holodeck/turfs.dm +++ b/code/modules/holodeck/turfs.dm @@ -147,7 +147,7 @@ /turf/open/floor/holofloor/carpet/Initialize(mapload, inherited_virtual_z) . = ..() - addtimer(CALLBACK(src, /atom/.proc/update_icon), 1) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 1) /turf/open/floor/holofloor/carpet/update_icon() . = ..() diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index 4c9eb274dcb0..b98175f4cf6a 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -48,7 +48,7 @@ to_chat(user, "[I] is stuck to your hand!") return TRUE to_chat(user, "You place [I] into [src] to start the fermentation process.") - addtimer(CALLBACK(src, .proc/makeWine, fruit), rand(80, 120) * speed_multiplier) + addtimer(CALLBACK(src, PROC_REF(makeWine), fruit), rand(80, 120) * speed_multiplier) return TRUE if(I) if(I.is_refillable()) diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index c7f0ebe190bf..7fa710323207 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -33,6 +33,9 @@ // This is for adminspawn or map-placed growns. They get the default stats of their seed type. seed = new seed() seed.adjust_potency(50-seed.potency) + else if(!seed) + stack_trace("Grown object created without a seed. WTF") + return INITIALIZE_HINT_QDEL pixel_x = base_pixel_x + rand(-5, 5) pixel_y = base_pixel_y + rand(-5, 5) diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm index 75e9b3fbfcdc..ec05b821371a 100644 --- a/code/modules/hydroponics/grown/citrus.dm +++ b/code/modules/hydroponics/grown/citrus.dm @@ -126,7 +126,7 @@ log_bomber(user, "primed a", src, "for detonation") icon_state = "firelemon_active" playsound(loc, 'sound/weapons/armbomb.ogg', 75, TRUE, -3) - addtimer(CALLBACK(src, .proc/prime), rand(10, 60)) + addtimer(CALLBACK(src, PROC_REF(prime)), rand(10, 60)) /obj/item/reagent_containers/food/snacks/grown/firelemon/burn() prime() diff --git a/code/modules/hydroponics/grown/cotton.dm b/code/modules/hydroponics/grown/cotton.dm index b9d903ddf72a..ec6618df7fc9 100644 --- a/code/modules/hydroponics/grown/cotton.dm +++ b/code/modules/hydroponics/grown/cotton.dm @@ -38,9 +38,17 @@ seed_modifier = round(seed.potency / 25) var/obj/item/stack/cotton = new cotton_type(user.loc, 1 + seed_modifier) var/old_cotton_amount = cotton.amount - for(var/obj/item/stack/ST in user.loc) - if(ST != cotton && istype(ST, cotton_type) && ST.amount < ST.max_amount) - ST.attackby(cotton, user) + for(var/obj/item/stack/potential_stack in user.loc) + if(QDELETED(potential_stack)) + continue + if(potential_stack == cotton) + continue + if(!istype(potential_stack, cotton_type)) + continue + if(potential_stack.amount >= potential_stack.max_amount) + continue + potential_stack.attackby(cotton, user) + if(cotton.amount > old_cotton_amount) to_chat(user, "You add the newly-formed [cotton_name] to the stack. It now contains [cotton.amount] [cotton_name].") qdel(src) diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm index 627a13354078..1378fb0253fc 100644 --- a/code/modules/hydroponics/grown/melon.dm +++ b/code/modules/hydroponics/grown/melon.dm @@ -58,7 +58,7 @@ var/uses = 1 if(seed) uses = round(seed.potency / 20) - AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, ITEM_SLOT_HANDS, uses, TRUE, CALLBACK(src, .proc/block_magic), CALLBACK(src, .proc/expire)) //deliver us from evil o melon god + AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, ITEM_SLOT_HANDS, uses, TRUE, CALLBACK(src, PROC_REF(block_magic)), CALLBACK(src, PROC_REF(expire))) //deliver us from evil o melon god /obj/item/reagent_containers/food/snacks/grown/holymelon/proc/block_magic(mob/user, major) if(major) diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm index 0ec5046e659c..6c44d2ad3788 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -137,7 +137,7 @@ return to_chat(user, "You begin to awaken the Killer Tomato...") awakening = TRUE - addtimer(CALLBACK(src, .proc/awaken), 3 SECONDS) + addtimer(CALLBACK(src, PROC_REF(awaken)), 3 SECONDS) log_game("[key_name(user)] awakened a killer tomato at [AREACOORD(user)].") /obj/item/reagent_containers/food/snacks/grown/tomato/killer/proc/awaken() diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index b786c854dba6..e9be7685e152 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -171,7 +171,7 @@ /obj/structure/bonfire/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index b38eeac048cb..74d004849a2a 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -85,7 +85,7 @@ /obj/item/cultivator/rake/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index fee6a3857d67..7063207255f5 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -35,7 +35,7 @@ // Here lies irrigation. You won't be missed, because you were never used. /obj/machinery/hydroponics/Initialize() - RegisterSignal(src, COMSIG_ATOM_EXITED, .proc/on_exited) + RegisterSignal(src, COMSIG_ATOM_EXITED, PROC_REF(on_exited)) //Here lies "nutrilevel", killed by ArcaneMusic 20??-2019. Finally, we strive for a better future. Please use "reagents" instead create_reagents(20) reagents.add_reagent(/datum/reagent/plantnutriment/eznutriment, 10) //Half filled nutrient trays for dirt trays to have more to grow with in prison/lavaland. @@ -48,7 +48,7 @@ /obj/machinery/hydroponics/constructable/ComponentInitialize() . = ..() - AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated)) + AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, PROC_REF(can_be_rotated))) AddComponent(/datum/component/plumbing/simple_demand) /obj/machinery/hydroponics/constructable/proc/can_be_rotated(mob/user, rotation_type) diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index bc18ce87377b..a57934dc551d 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -241,7 +241,7 @@ if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent(/datum/reagent/lube))) stun_len /= 3 - G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src, .proc/handle_slip, G)) + G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src, PROC_REF(handle_slip), G)) /datum/plant_gene/trait/slip/proc/handle_slip(obj/item/reagent_containers/food/snacks/grown/G, mob/M) for(var/datum/plant_gene/trait/T in G.seed.genes) diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index c04bd8ee3195..008009a35765 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -8,7 +8,7 @@ w_class = WEIGHT_CLASS_TINY resistance_flags = FLAMMABLE var/plantname = "Plants" // Name of plant when planted. - var/obj/item/product // A type path. The thing that is created when the plant is harvested. + var/obj/item/product // A type path. The thing that is created when the plant is harvested. var/productdesc var/species = "" // Used to update icons. Should match the name in the sprites unless all icon_* are overridden. @@ -24,7 +24,7 @@ var/yield = 3 // Amount of growns created per harvest. If is -1, the plant/shroom/weed is never meant to be harvested. var/potency = 10 // The 'power' of a plant. Generally effects the amount of reagent in a plant, also used in other ways. var/growthstages = 6 // Amount of growth sprites the plant has. - var/instability = 5 //Chance that a plant will mutate in each stage of it's life. + var/instability = 5 // Chance that a plant will mutate in each stage of it's life. var/rarity = 0 // How rare the plant is. Used for giving points to cargo when shipping off to CentCom. var/list/mutatelist = list() // The type of plants that this plant can mutate into. var/list/genes = list() // Plant genes are stored here, see plant_genes.dm for more info. @@ -35,10 +35,10 @@ // Stronger reagents must always come first to avoid being displaced by weaker ones. // Total amount of any reagent in plant is calculated by formula: 1 + round(potency * multiplier) - var/weed_rate = 1 //If the chance below passes, then this many weeds sprout during growth - var/weed_chance = 5 //Percentage chance per tray update to grow weeds - var/research = 0 //defines "discovery value", which will give a one-time point payout if a seed is given to an R&D console. Seed discovery is determined on a ship-by-ship basis. - var/seed_flags = MUTATE_EARLY //Determines if a plant is allowed to mutate early at 30+ instability + var/weed_rate = 1 // If the chance below passes, then this many weeds sprout during growth + var/weed_chance = 5 // Percentage chance per tray update to grow weeds + var/research = 0 // Defines "discovery value", which will give a one-time point payout if a seed is given to an R&D console. Seed discovery is determined on a ship-by-ship basis. + var/seed_flags = MUTATE_EARLY // Determines if a plant is allowed to mutate early at 30+ instability /obj/item/seeds/Initialize(mapload, nogenes = 0) . = ..() @@ -75,6 +75,11 @@ genes += new /datum/plant_gene/reagent(reag_id, reagents_add[reag_id]) reagents_from_genes() //quality coding +/obj/item/seeds/Destroy() + if(flags_1 & INITIALIZED_1) + QDEL_LIST(genes) + return ..() + /obj/item/seeds/examine(mob/user) . = ..() . += "Use a pen on it to rename it or change its description." @@ -259,7 +264,7 @@ var/list/data = null if(rid == "blood") // Hack to make blood in plants always O- data = list("blood_type" = "O-") - if(rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin) + if(istype(T) && (rid == /datum/reagent/consumable/nutriment || rid == /datum/reagent/consumable/nutriment/vitamin)) // apple tastes of apple. data = T.tastes diff --git a/code/modules/instruments/items.dm b/code/modules/instruments/items.dm index 146d8e32d7e2..149f78437fa4 100644 --- a/code/modules/instruments/items.dm +++ b/code/modules/instruments/items.dm @@ -85,8 +85,8 @@ /obj/item/instrument/piano_synth/headphones/ComponentInitialize() . = ..() AddElement(/datum/element/update_icon_updates_onmob) - RegisterSignal(src, COMSIG_SONG_START, .proc/start_playing) - RegisterSignal(src, COMSIG_SONG_END, .proc/stop_playing) + RegisterSignal(src, COMSIG_SONG_START, PROC_REF(start_playing)) + RegisterSignal(src, COMSIG_SONG_END, PROC_REF(stop_playing)) /** * Called by a component signal when our song starts playing. @@ -249,7 +249,7 @@ /obj/item/instrument/harmonica/equipped(mob/M, slot) . = ..() - RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech)) /obj/item/instrument/harmonica/dropped(mob/M) . = ..() diff --git a/code/modules/instruments/songs/_song.dm b/code/modules/instruments/songs/_song.dm index 10b8a019233d..99eae15ba9ca 100644 --- a/code/modules/instruments/songs/_song.dm +++ b/code/modules/instruments/songs/_song.dm @@ -146,7 +146,9 @@ stop_playing() SSinstruments.on_song_del(src) lines = null - using_instrument = null + if(using_instrument) + using_instrument.songs_using -= src + using_instrument = null allowed_instrument_ids = null parent = null return ..() diff --git a/code/modules/instruments/songs/editor.dm b/code/modules/instruments/songs/editor.dm index f672c0ecac61..ba411709edfc 100644 --- a/code/modules/instruments/songs/editor.dm +++ b/code/modules/instruments/songs/editor.dm @@ -160,7 +160,7 @@ tempo = sanitize_tempo(tempo + text2num(href_list["tempo"])) else if(href_list["play"]) - INVOKE_ASYNC(src, .proc/start_playing, usr) + INVOKE_ASYNC(src, PROC_REF(start_playing), usr) else if(href_list["newline"]) var/newline = html_encode(input("Enter your line: ", parent.name) as text|null) diff --git a/code/modules/interview/interview.dm b/code/modules/interview/interview.dm index 452ce2a9b5f5..c1ed4dcd87ec 100644 --- a/code/modules/interview/interview.dm +++ b/code/modules/interview/interview.dm @@ -65,7 +65,7 @@ SEND_SOUND(owner, sound('sound/effects/adminhelp.ogg')) to_chat(owner, "-- Interview Update --" \ + "\nYour interview was approved, you will now be reconnected in 5 seconds.", confidential = TRUE) - addtimer(CALLBACK(src, .proc/reconnect_owner), 50) + addtimer(CALLBACK(src, PROC_REF(reconnect_owner)), 50) /** * Denies the interview and adds the owner to the cooldown for new interviews. @@ -80,7 +80,7 @@ GLOB.interviews.cooldown_ckeys |= owner_ckey log_admin_private("[key_name(denied_by)] has denied interview #[id] for [owner_ckey][!owner ? "(DC)": ""].") message_admins("[key_name(denied_by)] has denied interview #[id] for [owner_ckey][!owner ? "(DC)": ""].") - addtimer(CALLBACK(GLOB.interviews, /datum/interview_manager.proc/release_from_cooldown, owner_ckey), 180) + addtimer(CALLBACK(GLOB.interviews, TYPE_PROC_REF(/datum/interview_manager, release_from_cooldown), owner_ckey), 180) if (owner) SEND_SOUND(owner, sound('sound/effects/adminhelp.ogg')) to_chat(owner, "-- Interview Update --" \ diff --git a/code/modules/jobs/job_exp.dm b/code/modules/jobs/job_exp.dm index 2184cd3869f0..159c1e1df6aa 100644 --- a/code/modules/jobs/job_exp.dm +++ b/code/modules/jobs/job_exp.dm @@ -92,7 +92,7 @@ GLOBAL_PROTECT(exp_to_update) play_records[exp_read.item[1]] = text2num(exp_read.item[2]) qdel(exp_read) - for(var/rtype in SSjob.name_occupations) + for(var/rtype in GLOB.name_occupations) if(!play_records[rtype]) play_records[rtype] = 0 for(var/rtype in GLOB.exp_specialmap) @@ -143,7 +143,7 @@ GLOBAL_PROTECT(exp_to_update) if(announce_changes) to_chat(src,"You got: [minutes] Living EXP!") if(mob.mind.assigned_role) - for(var/job in SSjob.name_occupations) + for(var/job in GLOB.name_occupations) if(mob.mind.assigned_role == job) rolefound = TRUE play_records[job] += minutes @@ -191,7 +191,7 @@ GLOBAL_PROTECT(exp_to_update) "ckey" = ckey, "minutes" = jvalue))) prefs.exp[jtype] += jvalue - addtimer(CALLBACK(SSblackbox,/datum/controller/subsystem/blackbox/proc/update_exp_db),20,TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(SSblackbox, TYPE_PROC_REF(/datum/controller/subsystem/blackbox, update_exp_db)),20,TIMER_OVERRIDE|TIMER_UNIQUE) //ALWAYS call this at beginning to any proc touching player flags, or your database admin will probably be mad diff --git a/code/modules/jobs/job_report.dm b/code/modules/jobs/job_report.dm index 88c7f7ad1902..cbc43f4110bf 100644 --- a/code/modules/jobs/job_report.dm +++ b/code/modules/jobs/job_report.dm @@ -32,7 +32,7 @@ data["jobPlaytimes"] = list() data["specialPlaytimes"] = list() - for (var/job_name in SSjob.name_occupations) + for (var/job_name in GLOB.name_occupations) var/playtime = play_records[job_name] ? text2num(play_records[job_name]) : 0 data["jobPlaytimes"][job_name] = playtime diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 550b496344ff..206c0746bc85 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -15,15 +15,6 @@ //Bitflags for the job var/auto_deadmin_role_flags = NONE - //How many players can be this job - var/total_positions = 0 - - //How many players can spawn in as this job - var/spawn_positions = 0 - - //How many players have this job - var/current_positions = 0 - //If you have the use_age_restriction_for_jobs config option enabled and the database set up, this option will add a requirement for players to be at least minimal_player_age days old. (meaning they first signed in at least that many days before.) var/minimal_player_age = 0 @@ -42,6 +33,14 @@ if(new_name) name = new_name outfit = new_outfit + register() + +/datum/job/proc/register() + GLOB.occupations += src + if(name in GLOB.name_occupations) + return + + GLOB.name_occupations[name] = src //Only override this proc //H is usually a human unless an /equip override transformed it @@ -95,8 +94,6 @@ if(living_mob.client.holder) if(CONFIG_GET(flag/auto_deadmin_players) || (living_mob.client.prefs?.toggles & DEADMIN_ALWAYS)) living_mob.client.holder.auto_deadmin() - else - SSjob.handle_auto_deadmin_roles(living_mob.client, name) radio_help_message(living_mob) //WS Begin - Wikilinks @@ -264,9 +261,9 @@ if(visualsOnly) return - var/datum/job/J = SSjob.GetJobType(jobtype) + var/datum/job/J = GLOB.type_occupations[jobtype] if(!J) - J = SSjob.GetJob(H.job) + J = GLOB.name_occupations[H.job] var/obj/item/card/id/C = H.wear_id if(istype(C)) diff --git a/code/modules/jobs/job_types/ai.dm b/code/modules/jobs/job_types/ai.dm index e3df96314769..146a21b35be8 100644 --- a/code/modules/jobs/job_types/ai.dm +++ b/code/modules/jobs/job_types/ai.dm @@ -1,8 +1,6 @@ /datum/job/ai name = "AI" auto_deadmin_role_flags = DEADMIN_POSITION_SILICON - total_positions = 1 - spawn_positions = 1 minimal_player_age = 30 display_order = JOB_DISPLAY_ORDER_AI var/do_special_check = TRUE diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index 33fe24c4ff5d..b6e6c9e2b731 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -3,8 +3,6 @@ Assistant */ /datum/job/assistant name = "Assistant" - total_positions = 5 - spawn_positions = 5 access = list() //See /datum/job/assistant/get_access() minimal_access = list() //See /datum/job/assistant/get_access() outfit = /datum/outfit/job/assistant diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index bd3788944c42..eb2df5a68039 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -1,7 +1,5 @@ /datum/job/atmos name = "Atmospheric Technician" - total_positions = 3 - spawn_positions = 2 wiki_page = "Guide_to_Atmospherics" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/atmos diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index ca6517ae78a0..680fe6ee880d 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -1,7 +1,5 @@ /datum/job/bartender name = "Bartender" - total_positions = 1 - spawn_positions = 1 wiki_page = "Drinks" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/bartender diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm index 63d90f19abbd..27906b1d8bac 100644 --- a/code/modules/jobs/job_types/botanist.dm +++ b/code/modules/jobs/job_types/botanist.dm @@ -1,7 +1,5 @@ /datum/job/hydro name = "Botanist" - total_positions = 3 - spawn_positions = 2 wiki_page = "Guide_to_Botany" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/botanist diff --git a/code/modules/jobs/job_types/brig_physician.dm b/code/modules/jobs/job_types/brig_physician.dm index 40a740e7e844..6b670693186e 100644 --- a/code/modules/jobs/job_types/brig_physician.dm +++ b/code/modules/jobs/job_types/brig_physician.dm @@ -1,7 +1,5 @@ /datum/job/brig_phys name = "Brig Physician" - total_positions = 1 - spawn_positions = 1 minimal_player_age = 7 wiki_page = "Guide_to_Medicine" //WS Edit - Wikilinks/Warning diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index d9c410d39555..229d98435c46 100644 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -1,8 +1,6 @@ /datum/job/captain name = "Captain" auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY - total_positions = 1 - spawn_positions = 1 minimal_player_age = 30 officer = TRUE wiki_page = "Captain" @@ -56,14 +54,23 @@ ears = /obj/item/radio/headset/nanotrasen/captain uniform = /obj/item/clothing/under/rank/command/captain/nt + gloves = /obj/item/clothing/gloves/color/captain/nt shoes = /obj/item/clothing/shoes/laceup head = /obj/item/clothing/head/caphat/nt +/datum/outfit/job/captain/nt/heron + name = "Captain (Nanotrasen)" + + uniform = /obj/item/clothing/under/rank/centcom/officer + gloves = /obj/item/clothing/gloves/combat + head = /obj/item/clothing/head/centhat + suit = /obj/item/clothing/suit/armor/vest/bulletproof + /datum/outfit/job/captain/pirate name = "Captain (Pirate)" ears = /obj/item/radio/headset/pirate/captain - uniform = /obj/item/clothing/under/costume/russian_officer + uniform = /obj/item/clothing/under/costume/pirate shoes = /obj/item/clothing/shoes/jackboots head = /obj/item/clothing/head/pirate/captain suit = /obj/item/clothing/suit/pirate/captain @@ -192,7 +199,7 @@ satchel = /obj/item/storage/backpack/satchel/ duffelbag = /obj/item/storage/backpack/duffelbag courierbag = /obj/item/storage/backpack/messenger - backpack_contents = list(/obj/item/gun/ballistic/automatic/pistol/commander=1, /obj/item/clothing/accessory/medal/gold/captain=1, /obj/item/spacecash/bundle/c10000=1) + backpack_contents = list(/obj/item/clothing/accessory/medal/gold/captain=1, /obj/item/spacecash/bundle/c10000=1) /datum/outfit/job/captain/inteq name = "IRMG Vanguard (Inteq)" @@ -212,7 +219,7 @@ accessory = null courierbag = /obj/item/storage/backpack/messenger/inteq - backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/ammo_box/magazine/co9mm=1, /obj/item/pda/captain) + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/pda/captain) /datum/outfit/job/captain/inteq/naked name = "IRMG Vanguard (Inteq) (Naked)" diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index 09d0fa1631ab..c5d2b14aa0eb 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -1,7 +1,5 @@ /datum/job/cargo_tech name = "Cargo Technician" - total_positions = 3 - spawn_positions = 2 wiki_page = "Cargo_technician" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/cargo_tech diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index efb9292353b7..97a2a2403717 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -1,7 +1,5 @@ /datum/job/chaplain name = "Chaplain" - total_positions = 1 - spawn_positions = 1 wiki_page = "Chaplain" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/chaplain diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index 4173863dda34..9e26a0787865 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -1,7 +1,5 @@ /datum/job/chemist name = "Chemist" - total_positions = 2 - spawn_positions = 2 wiki_page = "Guide_to_Chemistry" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/chemist diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index 2012b1dd9716..76d49f4b0f4d 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -1,8 +1,6 @@ /datum/job/chief_engineer name = "Chief Engineer" auto_deadmin_role_flags = DEADMIN_POSITION_HEAD - total_positions = 1 - spawn_positions = 1 minimal_player_age = 7 officer = TRUE wiki_page = "Chief_Engineer" //WS Edit - Wikilinks/Warning @@ -117,6 +115,13 @@ courierbag = /obj/item/storage/backpack/messenger/inteq +/datum/outfit/job/ce/nt + name = "Chief Engineer (NT)" + + head = /obj/item/clothing/head/beret/ce + belt = /obj/item/storage/belt/utility/full + suit = /obj/item/clothing/suit/hazardvest + /datum/outfit/job/ce/frontiersmen name = "Head Carpenter (Frontiersmen)" diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index 4ad8cea562a8..92e270ee22e7 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -1,8 +1,6 @@ /datum/job/cmo name = "Chief Medical Officer" auto_deadmin_role_flags = DEADMIN_POSITION_HEAD - total_positions = 1 - spawn_positions = 1 minimal_player_age = 7 officer = TRUE wiki_page = "Chief_Medical_Officer" diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index cecfb2fd8f63..d131d8ad4cd4 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -1,7 +1,5 @@ /datum/job/clown name = "Clown" - total_positions = 1 - spawn_positions = 1 wiki_page = "Clown" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/clown diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm index 6f90a883267e..d1006a5b154f 100644 --- a/code/modules/jobs/job_types/cook.dm +++ b/code/modules/jobs/job_types/cook.dm @@ -1,7 +1,5 @@ /datum/job/cook name = "Cook" - total_positions = 2 - spawn_positions = 1 wiki_page = "Food" //WS Edit - Wikilinks/Warning var/cooks = 0 //Counts cooks amount diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm index 791c1ba667c6..d069e3411bbc 100644 --- a/code/modules/jobs/job_types/curator.dm +++ b/code/modules/jobs/job_types/curator.dm @@ -1,7 +1,5 @@ /datum/job/curator name = "Curator" - total_positions = 1 - spawn_positions = 1 wiki_page = "Curator" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/curator diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm index 3eddc92c017d..460406436e97 100644 --- a/code/modules/jobs/job_types/cyborg.dm +++ b/code/modules/jobs/job_types/cyborg.dm @@ -1,8 +1,6 @@ /datum/job/cyborg name = "Cyborg" auto_deadmin_role_flags = DEADMIN_POSITION_SILICON - total_positions = 0 - spawn_positions = 1 //Nodrak minimal_player_age = 21 wiki_page = "Cyborg" //WS Edit - Wikilinks/Warning diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 9a263ae85207..450ac5064e34 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -1,8 +1,6 @@ /datum/job/detective name = "Detective" auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY - total_positions = 1 - spawn_positions = 1 minimal_player_age = 7 wiki_page = "Space_Law" //WS Edit - Wikilinks/Warning diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index 181109e65c31..2720dcf064fd 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -1,7 +1,5 @@ /datum/job/geneticist - name = "Geneticist" //WS Edit - More Gen/Sci Split - total_positions = 2 - spawn_positions = 2 //WS Edit - Gen/Sci Split + name = "Geneticist" wiki_page = "Guide_to_Genetics" //WS Edit - Wikilinks outfit = /datum/outfit/job/geneticist diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index 205d5e57bb94..2e97961b7fcb 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -1,8 +1,6 @@ /datum/job/head_of_personnel name = "Head of Personnel" auto_deadmin_role_flags = DEADMIN_POSITION_HEAD - total_positions = 1 - spawn_positions = 1 minimal_player_age = 10 officer = TRUE wiki_page = "Head_of_Personnel" //WS Edit - Wikilinks/Warning @@ -67,7 +65,7 @@ /datum/outfit/job/head_of_personnel/pirate name = "First Mate (Pirate)" ears = /obj/item/radio/headset/pirate - uniform = /obj/item/clothing/under/costume/russian_officer + uniform = /obj/item/clothing/under/costume/pirate shoes = /obj/item/clothing/shoes/jackboots head = /obj/item/clothing/head/pirate suit = /obj/item/clothing/suit/pirate @@ -142,3 +140,11 @@ glasses = /obj/item/clothing/glasses/sunglasses suit = /obj/item/clothing/suit/armor/vest/bulletproof/frontier +/datum/outfit/job/head_of_personnel/pilot/heron + name = "pilot" + + uniform = /obj/item/clothing/under/rank/security/officer/military + suit = /obj/item/clothing/suit/jacket/leather/duster + glasses = /obj/item/clothing/glasses/hud/spacecop + accessory = /obj/item/clothing/accessory/holster + head = /obj/item/clothing/head/beret/lt diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index c2c91c204fa4..f38c9fd3a901 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -1,8 +1,6 @@ /datum/job/hos name = "Head of Security" auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY - total_positions = 1 - spawn_positions = 1 minimal_player_age = 14 officer = TRUE wiki_page = "Head_of_Security" //WS Edit - Wikilinks/Warning @@ -40,10 +38,10 @@ gloves = /obj/item/clothing/gloves/color/black head = /obj/item/clothing/head/HoS glasses = /obj/item/clothing/glasses/hud/security/sunglasses - suit_store = /obj/item/gun/energy/e_gun + suit_store = null r_pocket = /obj/item/assembly/flash/handheld l_pocket = /obj/item/restraints/handcuffs - backpack_contents = list(/obj/item/melee/baton/loaded=1) + backpack_contents = list(/obj/item/melee/classic_baton=1) backpack = /obj/item/storage/backpack/security satchel = /obj/item/storage/backpack/satchel/sec @@ -71,7 +69,7 @@ head = /obj/item/clothing/head/warden suit = /obj/item/clothing/suit/armor/vest/syndie id = /obj/item/card/id/syndicate_command/crew_id - backpack_contents = list(/obj/item/melee/baton/loaded=1, /obj/item/storage/box/survival/syndie=1) + backpack_contents = list(/obj/item/melee/classic_baton=1,/obj/item/storage/box/survival/syndie=1) /datum/outfit/job/hos/nanotrasen name = "Head of Security (Nanotrasen)" diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm index 6abec33ca735..6f673a06195d 100644 --- a/code/modules/jobs/job_types/janitor.dm +++ b/code/modules/jobs/job_types/janitor.dm @@ -1,7 +1,5 @@ /datum/job/janitor name = "Janitor" - total_positions = 2 - spawn_positions = 1 wiki_page = "Janitor" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/janitor diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm index af30fb3e129e..d0777a8af2f8 100644 --- a/code/modules/jobs/job_types/lawyer.dm +++ b/code/modules/jobs/job_types/lawyer.dm @@ -1,7 +1,5 @@ /datum/job/lawyer name = "Lawyer" - total_positions = 2 - spawn_positions = 2 wiki_page = "Lawyer" //WS Edit - Wikilinks/Warning var/lawyers = 0 //Counts lawyer amount diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index a1ea895ee0d6..49a23855c3c8 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -1,7 +1,5 @@ /datum/job/doctor name = "Medical Doctor" - total_positions = 5 - spawn_positions = 3 wiki_page = "Guide_to_Medicine" outfit = /datum/outfit/job/doctor diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm index b9cca8f02106..3d165c8610b7 100644 --- a/code/modules/jobs/job_types/mime.dm +++ b/code/modules/jobs/job_types/mime.dm @@ -1,7 +1,5 @@ /datum/job/mime name = "Mime" - total_positions = 1 - spawn_positions = 1 wiki_page = "Mime" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/mime diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm index 01fd52f07dcf..a51249c10f7d 100644 --- a/code/modules/jobs/job_types/paramedic.dm +++ b/code/modules/jobs/job_types/paramedic.dm @@ -1,7 +1,5 @@ /datum/job/paramedic name = "Paramedic" - total_positions = 2 - spawn_positions = 2 wiki_page = "Paramedic" outfit = /datum/outfit/job/paramedic diff --git a/code/modules/jobs/job_types/prisoner.dm b/code/modules/jobs/job_types/prisoner.dm index 2e26dd90d67a..16195bfc1a85 100644 --- a/code/modules/jobs/job_types/prisoner.dm +++ b/code/modules/jobs/job_types/prisoner.dm @@ -1,7 +1,5 @@ /datum/job/prisoner name = "Prisoner" - total_positions = 0 - spawn_positions = 2 outfit = /datum/outfit/job/prisoner diff --git a/code/modules/jobs/job_types/psychologist.dm b/code/modules/jobs/job_types/psychologist.dm index 5bf7d50c790c..de4a0eb10a24 100644 --- a/code/modules/jobs/job_types/psychologist.dm +++ b/code/modules/jobs/job_types/psychologist.dm @@ -1,8 +1,6 @@ //psychologist back :) /datum/job/psychologist name = "Psychologist" - total_positions = 1 - spawn_positions = 1 outfit = /datum/outfit/job/psychologist diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index e7a94cc0f99e..3399fb9de9f1 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -1,7 +1,5 @@ /datum/job/qm name = "Quartermaster" - total_positions = 1 - spawn_positions = 1 wiki_page = "Quartermaster" //WS Edit - Wikilinks/Warning officer = TRUE diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 2fd7fea06db7..7a91f58996a4 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -1,8 +1,6 @@ /datum/job/rd name = "Research Director" auto_deadmin_role_flags = DEADMIN_POSITION_HEAD - total_positions = 1 - spawn_positions = 1 minimal_player_age = 7 officer = TRUE wiki_page = "Research_Director" //WS Edit - Wikilinks/Warning diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm index bf08b5667e5f..d842f57edf37 100644 --- a/code/modules/jobs/job_types/roboticist.dm +++ b/code/modules/jobs/job_types/roboticist.dm @@ -1,7 +1,5 @@ /datum/job/roboticist name = "Roboticist" - total_positions = 2 - spawn_positions = 2 wiki_page = "Guide_to_Robotics" outfit = /datum/outfit/job/roboticist @@ -38,3 +36,13 @@ ears = /obj/item/radio/headset/minutemen suit = /obj/item/clothing/suit/toggle/labcoat/science +/datum/outfit/job/roboticist/heron + name = "Mech Technician (Nanotrasen)" + + uniform = /obj/item/clothing/under/rank/rnd/roboticist + suit = /obj/item/clothing/suit/longcoat/robowhite + ears = /obj/item/radio/headset/nanotrasen + glasses = /obj/item/clothing/glasses/welding + + backpack_contents = list(/obj/item/weldingtool/hugetank) + diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm index 6db93bac91a7..78f0407d2604 100644 --- a/code/modules/jobs/job_types/scientist.dm +++ b/code/modules/jobs/job_types/scientist.dm @@ -1,7 +1,5 @@ /datum/job/scientist name = "Scientist" - total_positions = 5 - spawn_positions = 3 wiki_page = "Scientist" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/scientist diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index c0680de24236..781e6f360dc5 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -1,8 +1,6 @@ /datum/job/officer name = "Security Officer" auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY - total_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions() - spawn_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions() minimal_player_age = 7 wiki_page = "Space_Law" //WS Edit - Wikilinks/Warning @@ -89,7 +87,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S shoes = /obj/item/clothing/shoes/jackboots l_pocket = /obj/item/restraints/handcuffs r_pocket = /obj/item/assembly/flash/handheld - backpack_contents = list(/obj/item/melee/baton/loaded=1, /obj/item/ammo_box/magazine/co9mm=1, /obj/item/gun_voucher=1) //WS edit - security rearming + backpack_contents = null //WS edit - security rearming // SHIPTEST EDIT - security re-disarming. certified whitesands moment. backpack = /obj/item/storage/backpack/security satchel = /obj/item/storage/backpack/satchel/sec @@ -167,7 +165,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S /datum/outfit/job/security/minutemen/armed name = "Minuteman (Colonial Minutemen) (Armed)" - suit_store = /obj/item/gun/ballistic/automatic/assualt/p16/minutemen + suit_store = /obj/item/gun/ballistic/automatic/assault/p16/minutemen belt = /obj/item/storage/belt/military/minutemen/loaded /datum/outfit/job/security/minutemen/mechpilot @@ -177,7 +175,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S gloves = /obj/item/clothing/gloves/tackler/combat/insulated glasses = /obj/item/clothing/glasses/hud/diagnostic - backpack_contents = list(/obj/item/melee/classic_baton=1, /obj/item/gun/ballistic/automatic/pistol/commander=1, /obj/item/restraints/handcuffs=1) + backpack_contents = list(/obj/item/melee/classic_baton=1, /obj/item/restraints/handcuffs=1) /datum/outfit/job/security/inteq name = "IRMG Enforcer (Inteq)" @@ -192,8 +190,10 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S glasses = /obj/item/clothing/glasses/hud/security/sunglasses/inteq gloves = /obj/item/clothing/gloves/combat + backpack = /obj/item/storage/backpack/messenger/inteq + satchel = /obj/item/storage/backpack/messenger/inteq courierbag = /obj/item/storage/backpack/messenger/inteq - backpack_contents = list(/obj/item/melee/baton/loaded=1, /obj/item/ammo_box/magazine/co9mm=1, /obj/item/gun_voucher=1,/obj/item/pda/security) + backpack_contents = list(/obj/item/pda/security) /datum/outfit/job/security/inteq/beluga name = "IRMG Enforcer (Beluga)" @@ -208,6 +208,8 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S glasses = null gloves = /obj/item/clothing/gloves/color/evening + backpack = /obj/item/storage/backpack/messenger/inteq + satchel = /obj/item/storage/backpack/messenger/inteq courierbag = /obj/item/storage/backpack/messenger/inteq backpack_contents = list(/obj/item/pda/security) @@ -224,6 +226,52 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S uniform = /obj/item/clothing/under/rank/security/officer/nt alt_uniform = null + backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) + +/datum/outfit/job/security/nanotrasen/ert + name = "ERT Officer (Nanotrasen)" + + uniform = /obj/item/clothing/under/rank/security/officer/camo + head = null + backpack = /obj/item/storage/backpack/ert/security + belt = /obj/item/storage/belt/military + id = /obj/item/card/id/ert/security + r_pocket = /obj/item/kitchen/knife/combat/survival + backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) + +/datum/outfit/job/security/nanotrasen/ert/engi + name = "ERT Engineering Officer (Nanotrasen)" + + uniform = /obj/item/clothing/under/rank/security/officer/camo + head = null + backpack = /obj/item/storage/backpack/ert/engineer + belt = /obj/item/storage/belt/utility/full/ert + id = /obj/item/card/id/ert/security + r_pocket = /obj/item/kitchen/knife/combat/survival + backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) + accessory = /obj/item/clothing/accessory/armband/engine + glasses = /obj/item/clothing/glasses/hud/diagnostic/sunglasses + +/datum/outfit/job/security/nanotrasen/ert/med + name = "ERT Medical Officer (Nanotrasen)" + + uniform = /obj/item/clothing/under/rank/security/officer/camo + head = /obj/item/clothing/head/beret/med + backpack = /obj/item/storage/backpack/ert/medical + belt = /obj/item/storage/belt/medical/webbing/paramedic + id = /obj/item/card/id/ert/security + r_pocket = /obj/item/kitchen/knife/combat/survival + backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) + accessory = /obj/item/clothing/accessory/armband/med + glasses = /obj/item/clothing/glasses/hud/health/night + +/datum/outfit/job/security/nanotrasen/mech_pilot + name = "Mech Pilot (Nanotrasen)" + + uniform = /obj/item/clothing/under/rank/security/officer/military/eng + head = /obj/item/clothing/head/beret/sec/officer + suit = /obj/item/clothing/suit/armor/vest/bulletproof + backpack_contents = list(/obj/item/radio, /obj/item/flashlight/seclite) /datum/outfit/job/security/roumain name = "Hunter (Saint-Roumain Militia)" diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 49bb500f9e00..1fade6b2ecf0 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -1,7 +1,5 @@ /datum/job/mining name = "Shaft Miner" - total_positions = 3 - spawn_positions = 3 wiki_page = "Shaft_Miner" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/miner @@ -29,7 +27,6 @@ backpack_contents = list( /obj/item/flashlight/seclite=1,\ /obj/item/kitchen/knife/combat/survival=1,\ - /obj/item/mining_voucher=1,\ /obj/item/stack/marker_beacon/ten=1) backpack = /obj/item/storage/backpack/explorer @@ -54,7 +51,6 @@ backpack_contents = list( /obj/item/flashlight/seclite=1,\ /obj/item/kitchen/knife/combat/survival=1, - /obj/item/mining_voucher=1, /obj/item/mining_scanner=1, /obj/item/stack/marker_beacon/ten=1) belt = /obj/item/gun/energy/kinetic_accelerator @@ -154,7 +150,6 @@ backpack_contents = list( /obj/item/flashlight/seclite=1, /obj/item/kitchen/knife/combat/survival=1, - /obj/item/mining_voucher=1, /obj/item/mining_scanner=1, /obj/item/wrench=1 ) @@ -163,7 +158,6 @@ backpack_contents = list( /obj/item/flashlight/seclite=1, /obj/item/kitchen/knife/combat/survival=1, - /obj/item/mining_voucher=1, /obj/item/stack/marker_beacon/ten=1, /obj/item/borg/upgrade/modkit/aoe=1 ) diff --git a/code/modules/jobs/job_types/solgov_rep.dm b/code/modules/jobs/job_types/solgov_rep.dm index a7c185624763..f95b520e2850 100644 --- a/code/modules/jobs/job_types/solgov_rep.dm +++ b/code/modules/jobs/job_types/solgov_rep.dm @@ -4,8 +4,6 @@ SolGov Representative /datum/job/solgov name = "SolGov Representative" - total_positions = 2 - spawn_positions = 2 wiki_page = "Government_Attaché" minimal_player_age = 7 officer = TRUE diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index 42a6e0774f2f..cf774d8a25bb 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -1,7 +1,5 @@ /datum/job/engineer name = "Station Engineer" - total_positions = 5 - spawn_positions = 5 wiki_page = "Station_Engineer" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/engineer diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index 85f038e1b476..ac0a3986634d 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -1,7 +1,5 @@ /datum/job/virologist name = "Virologist" - total_positions = 1 - spawn_positions = 1 wiki_page = "Infections" //WS Edit - Wikilinks/Warning outfit = /datum/outfit/job/virologist diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index 6d56e869c09d..a59b68a49892 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -1,8 +1,6 @@ /datum/job/warden name = "Warden" auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY - total_positions = 1 - spawn_positions = 1 minimal_player_age = 7 officer = TRUE wiki_page = "Space_Law" //WS Edit - Wikilinks/Warning @@ -38,8 +36,8 @@ glasses = /obj/item/clothing/glasses/hud/security/sunglasses r_pocket = /obj/item/assembly/flash/handheld l_pocket = /obj/item/restraints/handcuffs - suit_store = /obj/item/gun/energy/e_gun/advtaser //WS edit - Readds tasers - backpack_contents = list(/obj/item/melee/baton/loaded=1, /obj/item/ammo_box/magazine/co9mm=1) //WS edit - free lethals + suit_store = null //WS edit - Readds tasers //SHIPTEST EDIT - removes tasers + backpack_contents = list(/obj/item/melee/classic_baton) //WS edit - free lethals // SHIPTEST EDIT - nope backpack = /obj/item/storage/backpack/security satchel = /obj/item/storage/backpack/satchel/sec @@ -79,7 +77,7 @@ /datum/outfit/job/warden/minutemen/armed name = "Field Commander (Colonial Minutemen) (Armed)" - suit_store = /obj/item/gun/ballistic/automatic/assualt/p16/minutemen + suit_store = /obj/item/gun/ballistic/automatic/assault/p16/minutemen belt = /obj/item/storage/belt/military/minutemen/loaded backpack_contents = list(/obj/item/melee/classic_baton=1, /obj/item/gun/ballistic/automatic/pistol/commander=1, /obj/item/restraints/handcuffs=1, /obj/item/gun/energy/e_gun/advtaser=1) @@ -97,10 +95,10 @@ dcoat = /obj/item/clothing/suit/hooded/wintercoat/security/inteq shoes = /obj/item/clothing/shoes/combat gloves = /obj/item/clothing/gloves/combat - suit_store = /obj/item/gun/energy/disabler + suit_store = null courierbag = /obj/item/storage/backpack/messenger/inteq - backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/ammo_box/magazine/co9mm=1, /obj/item/pda/warden) + backpack_contents = list(/obj/item/melee/classic_baton=1, /obj/item/pda/warden) /datum/outfit/job/warden/nanotrasen name = "Warden (Nanotrasen)" diff --git a/code/modules/keybindings/bindings_atom.dm b/code/modules/keybindings/bindings_atom.dm index 47d6b16feb5e..8f2a4433db65 100644 --- a/code/modules/keybindings/bindings_atom.dm +++ b/code/modules/keybindings/bindings_atom.dm @@ -16,3 +16,6 @@ if((movement_dir & EAST) && (movement_dir & WEST)) movement_dir &= ~(EAST|WEST) user.Move(get_step(src, movement_dir), movement_dir) + return !!movement_dir //true if there was actually any player input + + return FALSE diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index 9a32cacb53e5..61570535cbbf 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -53,7 +53,9 @@ Key procs var/atom/owner /// Initializes, and copies in the languages from the current atom if available. -/datum/language_holder/New(_owner) +/datum/language_holder/New(atom/_owner) + if(_owner && QDELETED(_owner)) + CRASH("Langauge holder added to a qdeleting thing, what the fuck [text_ref(_owner)]") owner = _owner if(istype(owner, /datum/mind)) var/datum/mind/M = owner diff --git a/code/modules/language/mouse.dm b/code/modules/language/mouse.dm index 8e488c93e5ac..98dcd9133c74 100644 --- a/code/modules/language/mouse.dm +++ b/code/modules/language/mouse.dm @@ -4,7 +4,7 @@ speech_verb = "squeaks" ask_verb = "squeaks" exclaim_verb = "squeaks" - key = "m" + key = "l" flags = NO_STUTTER | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD | LANGUAGE_HIDE_ICON_IF_UNDERSTOOD /datum/language/mouse/scramble(input) diff --git a/code/modules/library/lib_codex_gigas.dm b/code/modules/library/lib_codex_gigas.dm index be017a07ef6b..c4263a771b0d 100644 --- a/code/modules/library/lib_codex_gigas.dm +++ b/code/modules/library/lib_codex_gigas.dm @@ -71,7 +71,7 @@ return FALSE if(action == "search") SStgui.close_uis(src) - addtimer(CALLBACK(src, .proc/perform_research, usr, currentName), 0) + addtimer(CALLBACK(src, PROC_REF(perform_research), usr, currentName), 0) currentName = "" currentSection = PRE_TITLE return FALSE diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm index c05d901a02cb..a5a68d98d609 100644 --- a/code/modules/lighting/lighting_atom.dm +++ b/code/modules/lighting/lighting_atom.dm @@ -26,9 +26,7 @@ // Will update the light (duh). // Creates or destroys it if needed, makes it update values, makes sure it's got the correct source turf... /atom/proc/update_light() - set waitfor = FALSE - if (QDELETED(src)) - return + SHOULD_NOT_SLEEP(TRUE) if(light_system != STATIC_LIGHT) CRASH("update_light() for [src] with following light_system value: [light_system]") diff --git a/code/modules/lighting/lighting_object.dm b/code/modules/lighting/lighting_object.dm index bdc18d230029..7b6bc79aec45 100644 --- a/code/modules/lighting/lighting_object.dm +++ b/code/modules/lighting/lighting_object.dm @@ -34,7 +34,7 @@ /atom/movable/lighting_object/Destroy(force) if (force) SSlighting.objects_queue -= src - if (loc != myturf) + if (loc != myturf && loc) var/turf/oldturf = get_turf(myturf) var/turf/newturf = get_turf(loc) stack_trace("A lighting object was qdeleted with a different loc then it is suppose to have ([COORD(oldturf)] -> [COORD(newturf)])") diff --git a/code/modules/lighting/lighting_setup.dm b/code/modules/lighting/lighting_setup.dm index baf98d801337..fd26e1215f7c 100644 --- a/code/modules/lighting/lighting_setup.dm +++ b/code/modules/lighting/lighting_setup.dm @@ -2,7 +2,7 @@ for(var/turf/T in world) var/area/A = T.loc if(IS_DYNAMIC_LIGHTING(T) && IS_DYNAMIC_LIGHTING(A)) - new/atom/movable/lighting_object(T) + new /atom/movable/lighting_object(T) // Initial starlight updates used to be done in lighting_object initialize, // but doing them here means ChangeTurf doesn't occasionally update starlight twice. diff --git a/code/modules/lighting/lighting_source.dm b/code/modules/lighting/lighting_source.dm index a83591fe97ab..9aeed0602f24 100644 --- a/code/modules/lighting/lighting_source.dm +++ b/code/modules/lighting/lighting_source.dm @@ -61,7 +61,8 @@ source_atom = null source_turf = null pixel_turf = null - . = ..() + + return ..() // Yes this doesn't align correctly on anything other than 4 width tabs. // If you want it to go switch everybody to elastic tab stops. diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm index 57ffb011c438..b3f5b1078b20 100644 --- a/code/modules/mapping/map_template.dm +++ b/code/modules/mapping/map_template.dm @@ -149,6 +149,7 @@ for(var/turf/turf_to_disable as anything in border) turf_to_disable.blocks_air = TRUE turf_to_disable.set_sleeping(TRUE) + turf_to_disable.air_update_turf(TRUE) // Accept cached maps, but don't save them automatically - we don't want // ruins clogging up memory for the whole round. @@ -158,6 +159,7 @@ var/list/turf_blacklist = list() update_blacklist(T, turf_blacklist) + UNSETEMPTY(turf_blacklist) parsed.turf_blacklist = turf_blacklist if(!parsed.load(T.x, T.y, T.z, cropMap=TRUE, no_changeturf=(SSatoms.initialized == INITIALIZATION_INSSATOMS), placeOnTop=should_place_on_top)) return diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm index 5adc1b373471..e9ac7662edab 100644 --- a/code/modules/mapping/mapping_helpers.dm +++ b/code/modules/mapping/mapping_helpers.dm @@ -240,12 +240,11 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) var/obj/structure/bodycontainer/morgue/j = pick(trays) var/mob/living/carbon/human/h = new /mob/living/carbon/human(j, 1) h.death() - for (var/part in h.internal_organs) //randomly remove organs from each body, set those we keep to be in stasis + for (var/obj/item/organ/internal_organ as anything in h.internal_organs) //randomly remove organs from each body, set those we keep to be in stasis if (prob(40)) - qdel(part) + qdel(internal_organ) else - var/obj/item/organ/O = part - O.organ_flags |= ORGAN_FROZEN + internal_organ.organ_flags |= ORGAN_FROZEN j.update_appearance() qdel(src) @@ -277,11 +276,14 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava) new /obj/item/toy/balloon/corgi(thing) else openturfs += thing + //cake + knife to cut it! - var/turf/food_turf = get_turf(pick(table)) - new /obj/item/kitchen/knife(food_turf) - var/obj/item/reagent_containers/food/snacks/store/cake/birthday/iancake = new(food_turf) - iancake.desc = "Happy birthday, Ian!" + if(length(table)) + var/turf/food_turf = get_turf(pick(table)) + new /obj/item/kitchen/knife(food_turf) + var/obj/item/reagent_containers/food/snacks/store/cake/birthday/iancake = new(food_turf) + iancake.desc = "Happy birthday, Ian!" + //some balloons! this picks an open turf and pops a few balloons in and around that turf, yay. for(var/i in 1 to balloon_clusters) var/turf/clusterspot = pick_n_take(openturfs) diff --git a/code/modules/mapping/preloader.dm b/code/modules/mapping/preloader.dm index 4b61663f668e..59480159f1c8 100644 --- a/code/modules/mapping/preloader.dm +++ b/code/modules/mapping/preloader.dm @@ -1,6 +1,7 @@ // global datum that will preload variables on atoms instanciation GLOBAL_VAR_INIT(use_preloader, FALSE) -GLOBAL_DATUM_INIT(_preloader, /datum/map_preloader, new) +GLOBAL_LIST_INIT(_preloader_attributes, null) +GLOBAL_LIST_INIT(_preloader_path, null) /// Preloader datum /datum/map_preloader @@ -11,15 +12,14 @@ GLOBAL_DATUM_INIT(_preloader, /datum/map_preloader, new) /world/proc/preloader_setup(list/the_attributes, path) if(the_attributes.len) GLOB.use_preloader = TRUE - var/datum/map_preloader/preloader_local = GLOB._preloader - preloader_local.attributes = the_attributes - preloader_local.target_path = path + GLOB._preloader_attributes = the_attributes + GLOB._preloader_path = path /world/proc/preloader_load(atom/what) GLOB.use_preloader = FALSE - var/datum/map_preloader/preloader_local = GLOB._preloader - for(var/attribute in preloader_local.attributes) - var/value = preloader_local.attributes[attribute] + var/list/attributes = GLOB._preloader_attributes + for(var/attribute in attributes) + var/value = attributes[attribute] if(islist(value)) value = deepCopyList(value) #ifdef TESTING diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index 59c0bb14dbc4..9e12fb7d4ce7 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -11,9 +11,13 @@ /datum/parsed_map var/original_path + /// The length of a key in this file. This is promised by the standard to be static var/key_len = 0 var/list/grid_models = list() var/list/gridSets = list() + /// List of area types we've loaded AS A PART OF THIS MAP + /// We do this to allow non unique areas, so we'll only load one per map + var/list/area/loaded_areas = list() var/list/modelCache @@ -23,19 +27,21 @@ var/list/bounds var/did_expand = FALSE - ///any turf in this list is skipped inside of build_coordinate - var/list/turf_blacklist = list() + ///any turf in this list is skipped inside of build_coordinate. Lazy assoc list + var/list/turf_blacklist // raw strings used to represent regexes more accurately // '' used to avoid confusing syntax highlighting var/static/regex/dmmRegex = new(@'"([a-zA-Z]+)" = \(((?:.|\n)*?)\)\n(?!\t)|\((\d+),(\d+),(\d+)\) = \{"([a-zA-Z\n]*)"\}', "g") - var/static/regex/trimQuotesRegex = new(@'^[\s\n]+"?|"?[\s\n]+$|^"|"$', "g") var/static/regex/trimRegex = new(@'^[\s\n]+|[\s\n]+$', "g") #ifdef TESTING var/turfsSkipped = 0 #endif +//text trimming (both directions) helper macro +#define TRIM_TEXT(text) (trim_reduced(text)) + /// Shortcut function to parse a map and apply it to the world. /// /// - `dmm_file`: A .dmm file to load (Required). @@ -53,6 +59,9 @@ /// Parse a map, possibly cropping it. /datum/parsed_map/New(tfile, x_lower = -INFINITY, x_upper = INFINITY, y_lower = -INFINITY, y_upper=INFINITY, measureOnly=FALSE) + // This proc sleeps for like 6 seconds. why? + // Is it file accesses? if so, can those be done ahead of time, async to save on time here? I wonder. + // Love ya :) if(isfile(tfile)) original_path = "[tfile]" tfile = file2text(tfile) @@ -60,16 +69,23 @@ // create a new datum without loading a map return - bounds = parsed_bounds = list(1.#INF, 1.#INF, 1.#INF, -1.#INF, -1.#INF, -1.#INF) - var/stored_index = 1 + src.bounds = parsed_bounds = list(1.#INF, 1.#INF, 1.#INF, -1.#INF, -1.#INF, -1.#INF) + // lists are structs don't you know :) + var/list/bounds = src.bounds + var/list/grid_models = src.grid_models + var/key_len = src.key_len + var/stored_index = 1 + var/list/regexOutput //multiz lool while(dmmRegex.Find(tfile, stored_index)) stored_index = dmmRegex.next + // Datum var lookup is expensive, this isn't + regexOutput = dmmRegex.group // "aa" = (/type{vars=blah}) - if(dmmRegex.group[1]) // Model - var/key = dmmRegex.group[1] + if(regexOutput[1]) // Model + var/key = regexOutput[1] if(grid_models[key]) // Duplicate model keys are ignored in DMMs continue if(key_len != length(key)) @@ -78,14 +94,14 @@ else CRASH("Inconsistent key length in DMM") if(!measureOnly) - grid_models[key] = dmmRegex.group[2] + grid_models[key] = regexOutput[2] // (1,1,1) = {"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"} - else if(dmmRegex.group[3]) // Coords + else if(regexOutput[3]) // Coords if(!key_len) CRASH("Coords before model definition in DMM") - var/curr_x = text2num(dmmRegex.group[3]) + var/curr_x = text2num(regexOutput[3]) if(curr_x < x_lower || curr_x > x_upper) continue @@ -94,69 +110,96 @@ gridSet.xcrd = curr_x //position of the currently processed square - gridSet.ycrd = text2num(dmmRegex.group[4]) - gridSet.zcrd = text2num(dmmRegex.group[5]) + gridSet.ycrd = text2num(regexOutput[4]) + gridSet.zcrd = text2num(regexOutput[5]) - bounds[MAP_MINX] = min(bounds[MAP_MINX], clamp(gridSet.xcrd, x_lower, x_upper)) + bounds[MAP_MINX] = min(bounds[MAP_MINX], curr_x) bounds[MAP_MINZ] = min(bounds[MAP_MINZ], gridSet.zcrd) bounds[MAP_MAXZ] = max(bounds[MAP_MAXZ], gridSet.zcrd) - var/list/gridLines = splittext(dmmRegex.group[6], "\n") + var/list/gridLines = splittext(regexOutput[6], "\n") gridSet.gridLines = gridLines var/leadingBlanks = 0 - while(leadingBlanks < gridLines.len && gridLines[++leadingBlanks] == "") + while(leadingBlanks < length(gridLines) && gridLines[++leadingBlanks] == "") if(leadingBlanks > 1) gridLines.Cut(1, leadingBlanks) // Remove all leading blank lines. - if(!gridLines.len) // Skip it if only blank lines exist. + if(!length(gridLines)) // Skip it if only blank lines exist. continue gridSets += gridSet - if(gridLines.len && gridLines[gridLines.len] == "") - gridLines.Cut(gridLines.len) // Remove only one blank line at the end. + if(gridLines[length(gridLines)] == "") + gridLines.Cut(length(gridLines)) // Remove only one blank line at the end. - bounds[MAP_MINY] = min(bounds[MAP_MINY], clamp(gridSet.ycrd, y_lower, y_upper)) - gridSet.ycrd += gridLines.len - 1 // Start at the top and work down - bounds[MAP_MAXY] = max(bounds[MAP_MAXY], clamp(gridSet.ycrd, y_lower, y_upper)) + bounds[MAP_MINY] = min(bounds[MAP_MINY], gridSet.ycrd) + gridSet.ycrd += length(gridLines) - 1 // Start at the top and work down + bounds[MAP_MAXY] = max(bounds[MAP_MAXY], gridSet.ycrd) - var/maxx = gridSet.xcrd - if(gridLines.len) //Not an empty map - maxx = max(maxx, gridSet.xcrd + length(gridLines[1]) / key_len - 1) + var/maxx = curr_x + if(length(gridLines)) //Not an empty map + maxx = max(maxx, curr_x + length(gridLines[1]) / key_len - 1) - bounds[MAP_MAXX] = clamp(max(bounds[MAP_MAXX], maxx), x_lower, x_upper) + bounds[MAP_MAXX] = max(bounds[MAP_MAXX], maxx) CHECK_TICK // Indicate failure to parse any coordinates by nulling bounds if(bounds[1] == 1.#INF) - bounds = null - parsed_bounds = bounds + src.bounds = null + else + // Clamp all our mins and maxes down to the proscribed limits + bounds[MAP_MINX] = clamp(bounds[MAP_MINX], x_lower, x_upper) + bounds[MAP_MAXX] = clamp(bounds[MAP_MAXX], x_lower, x_upper) + bounds[MAP_MINY] = clamp(bounds[MAP_MINY], y_lower, y_upper) + bounds[MAP_MAXY] = clamp(bounds[MAP_MAXY], y_lower, y_upper) + + parsed_bounds = src.bounds + src.key_len = key_len /// Load the parsed map into the world. See [/proc/load_map] for arguments. -/datum/parsed_map/proc/load(x_offset, y_offset, z_offset, cropMap, no_changeturf, x_lower, x_upper, y_lower, y_upper, placeOnTop) +/datum/parsed_map/proc/load(x_offset, y_offset, z_offset, cropMap, no_changeturf, x_lower, x_upper, y_lower, y_upper, placeOnTop, whitelist = FALSE) //How I wish for RAII Master.StartLoadingMap() . = _load_impl(x_offset, y_offset, z_offset, cropMap, no_changeturf, x_lower, x_upper, y_lower, y_upper, placeOnTop) Master.StopLoadingMap() + +#define MAPLOADING_CHECK_TICK \ + if(TICK_CHECK) { \ + SSatoms.map_loader_stop(); \ + stoplag(); \ + SSatoms.map_loader_begin(); \ + } // Do not call except via load() above. /datum/parsed_map/proc/_load_impl(x_offset = 1, y_offset = 1, z_offset = world.maxz + 1, cropMap = FALSE, no_changeturf = FALSE, x_lower = -INFINITY, x_upper = INFINITY, y_lower = -INFINITY, y_upper = INFINITY, placeOnTop = FALSE) PRIVATE_PROC(TRUE) - var/list/areaCache = list() var/list/modelCache = build_cache(no_changeturf) var/space_key = modelCache[SPACE_KEY] var/list/bounds + var/key_len = src.key_len src.bounds = bounds = list(1.#INF, 1.#INF, 1.#INF, -1.#INF, -1.#INF, -1.#INF) - for(var/I in gridSets) - var/datum/grid_set/gset = I - var/ycrd = gset.ycrd + y_offset - 1 + // Tell ss atoms that we're doing maploading + // We'll have to account for this in the following tick_checks so it doesn't overflow + SSatoms.map_loader_begin() + + //used for sending the maxx and maxy expanded global signals at the end of this proc + var/has_expanded_world_maxx = FALSE + var/has_expanded_world_maxy = FALSE + var/y_relative_to_absolute = y_offset - 1 + var/x_relative_to_absolute = x_offset - 1 + for(var/datum/grid_set/gset as anything in gridSets) + var/relative_x = gset.xcrd + var/relative_y = gset.ycrd + var/true_xcrd = relative_x + x_relative_to_absolute + var/ycrd = relative_y + y_relative_to_absolute var/zcrd = gset.zcrd + z_offset - 1 if(!cropMap && ycrd > world.maxy) world.maxy = ycrd // Expand Y here. X is expanded in the loop below did_expand = TRUE var/zexpansion = zcrd > world.maxz + var/no_afterchange = no_changeturf if(zexpansion) if(cropMap) continue @@ -166,50 +209,141 @@ did_expand = FALSE if(!no_changeturf) WARNING("Z-level expansion occurred without no_changeturf set, this may cause problems when /turf/AfterChange is called") - - for(var/line in gset.gridLines) - if((ycrd - y_offset + 1) < y_lower || (ycrd - y_offset + 1) > y_upper) //Reverse operation and check if it is out of bounds of cropping. - --ycrd + no_afterchange = TRUE + // Ok so like. something important + // We talk in "relative" coords here, so the coordinate system of the map datum + // This is so we can do offsets, but it is NOT the same as positions in game + // That's why there's some uses of - y_relative_to_absolute here, to turn absolute positions into relative ones + + // Skip Y coords that are above the smallest of the three params + // So maxy and y_upper get to act as thresholds, and relative_y can play + var/y_skip_above = min(world.maxy - y_relative_to_absolute, y_upper, relative_y) + // How many lines to skip because they'd be above the y cuttoff line + var/y_starting_skip = relative_y - y_skip_above + ycrd += y_starting_skip + + // Y is the LOWEST it will ever be here, so we can easily set a threshold for how low to go + var/line_count = length(gset.gridLines) + var/lowest_y = relative_y - (line_count - 1) // -1 because we decrement at the end of the loop, not the start + var/y_ending_skip = max(max(y_lower, 1 - y_relative_to_absolute) - lowest_y, 0) + + // Now we're gonna precompute the x thresholds + // We skip all the entries below the lower x, or 1 + var/starting_x_delta = max(max(x_lower, 1 - x_relative_to_absolute) - relative_x, 0) + // The x loop counts by key length, so we gotta multiply here + var/x_starting_skip = starting_x_delta * key_len + true_xcrd += starting_x_delta + + var/line_length = 0 + if(line_count) + // This is promised as static, so we will treat it as such + line_length = length(gset.gridLines[1]) + // We're gonna skip all the entries above the upper x, or maxx if cropMap is set + var/x_target = line_length - key_len + 1 + var/x_step_count = ROUND_UP(x_target / key_len) + var/final_x = relative_x + (x_step_count - 1) + var/x_delta_with = x_upper + if(cropMap) + // Take our smaller crop threshold yes? + x_delta_with = min(x_delta_with, world.maxx) + if(final_x > x_delta_with) + // If our relative x is greater then X upper, well then we've gotta limit our expansion + var/delta = max(final_x - x_delta_with, 0) + x_step_count -= delta + final_x -= delta + x_target = x_step_count * key_len + if(final_x > world.maxx && !cropMap) + world.maxx = final_x + has_expanded_world_maxx = TRUE + + // We're gonna track the first and last pairs of coords we find + // The first x is guarenteed to be the lowest, the first y the highest, and vis versa + // This is faster then doing mins and maxes inside the hot loop below + var/first_found = FALSE + var/first_x = 0 + var/first_y = 0 + var/last_x = 0 + var/last_y = 0 + + // Everything following this line is VERY hot. How hot depends on the map format + // (Yes this does mean dmm is technically faster to parse. shut up) + + // This is the "is this map tgm" check + if(key_len == line_length) + // Wanna clear something up about maps, talking in 255x255 here + // In the tgm format, each gridset contains 255 lines, each line representing one tile, with 255 total gridsets + // In the dmm format, each gridset contains 255 lines, each line representing one row of tiles, containing 255 * line length characters, with one gridset per z + // since this is the tgm branch any cutoff of x means we just shouldn't iterate this gridset + if(!x_step_count || x_starting_skip) continue - if(ycrd <= world.maxy && ycrd >= 1) - var/xcrd = gset.xcrd + x_offset - 1 - for(var/tpos = 1 to length(line) - key_len + 1 step key_len) - if((xcrd - x_offset + 1) < x_lower || (xcrd - x_offset + 1) > x_upper) //Same as above. - ++xcrd - continue //X cropping. - if(xcrd > world.maxx) - if(cropMap) - break - else - world.maxx = xcrd - did_expand = TRUE - - if(xcrd >= 1) - var/model_key = copytext(line, tpos, tpos + key_len) - var/no_afterchange = no_changeturf || zexpansion - if(!no_afterchange || (model_key != space_key)) - var/list/cache = modelCache[model_key] - if(!cache) - CRASH("Undefined model key in DMM: [model_key]") - build_coordinate(areaCache, cache, locate(xcrd, ycrd, zcrd), no_afterchange, placeOnTop) - - // only bother with bounds that actually exist - bounds[MAP_MINX] = min(bounds[MAP_MINX], xcrd) - bounds[MAP_MINY] = min(bounds[MAP_MINY], ycrd) - bounds[MAP_MINZ] = min(bounds[MAP_MINZ], zcrd) - bounds[MAP_MAXX] = max(bounds[MAP_MAXX], xcrd) - bounds[MAP_MAXY] = max(bounds[MAP_MAXY], ycrd) - bounds[MAP_MAXZ] = max(bounds[MAP_MAXZ], zcrd) + for(var/i in 1 + y_starting_skip to line_count - y_ending_skip) + var/line = gset.gridLines[i] + if(line == space_key && no_afterchange) + #ifdef TESTING + ++turfsSkipped + #endif + ycrd-- + MAPLOADING_CHECK_TICK + continue + + var/list/cache = modelCache[line] + if(!cache) + SSatoms.map_loader_stop() + CRASH("Undefined model key in DMM: [line]") + build_coordinate(cache, locate(true_xcrd, ycrd, zcrd), no_afterchange, placeOnTop) + + // only bother with bounds that actually exist + if(!first_found) + first_found = TRUE + first_y = ycrd + last_y = ycrd + ycrd-- + MAPLOADING_CHECK_TICK + // The x coord never changes, so this is safe + if(first_found) + first_x = true_xcrd + last_x = true_xcrd + else + // This is the dmm parser, note the double loop + for(var/i in 1 + y_starting_skip to line_count - y_ending_skip) + var/line = gset.gridLines[i] + + var/xcrd = true_xcrd + for(var/tpos in 1 + x_starting_skip to x_target step key_len) + var/model_key = copytext(line, tpos, tpos + key_len) + if(model_key == space_key && no_afterchange) #ifdef TESTING - else - ++turfsSkipped + ++turfsSkipped #endif - CHECK_TICK + MAPLOADING_CHECK_TICK + ++xcrd + continue + var/list/cache = modelCache[model_key] + if(!cache) + SSatoms.map_loader_stop() + CRASH("Undefined model key in DMM: [model_key]") + build_coordinate(cache, locate(xcrd, ycrd, zcrd), no_afterchange, placeOnTop) + + // only bother with bounds that actually exist + if(!first_found) + first_found = TRUE + first_x = xcrd + first_y = ycrd + last_x = xcrd + last_y = ycrd + MAPLOADING_CHECK_TICK ++xcrd - --ycrd - - CHECK_TICK - + ycrd-- + MAPLOADING_CHECK_TICK + bounds[MAP_MINX] = min(bounds[MAP_MINX], first_x) + bounds[MAP_MINY] = min(bounds[MAP_MINY], last_y) + bounds[MAP_MINZ] = min(bounds[MAP_MINZ], zcrd) + bounds[MAP_MAXX] = max(bounds[MAP_MAXX], last_x) + bounds[MAP_MAXY] = max(bounds[MAP_MAXY], first_y) + bounds[MAP_MAXZ] = max(bounds[MAP_MAXZ], zcrd) + + // And we are done lads, call it off + SSatoms.map_loader_stop() if(!no_changeturf) for(var/t in block(locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]), locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ]))) var/turf/T = t @@ -221,180 +355,176 @@ testing("Skipped loading [turfsSkipped] default turfs") #endif + if(has_expanded_world_maxx || has_expanded_world_maxy) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_EXPANDED_WORLD_BOUNDS, has_expanded_world_maxx, has_expanded_world_maxy) + if(did_expand) world.refresh_atmos_grid() return TRUE +GLOBAL_LIST_EMPTY(map_model_default) + /datum/parsed_map/proc/build_cache(no_changeturf, bad_paths=null) if(modelCache && !bad_paths) return modelCache . = modelCache = list() var/list/grid_models = src.grid_models + var/set_space = FALSE + // Use where a list is needed, but where it will not be modified + // Used here to remove the cost of needing to make a new list for each fields entry when it's set manually later + var/static/list/default_list = GLOB.map_model_default for(var/model_key in grid_models) var/model = grid_models[model_key] - var/list/members = list() //will contain all members (paths) in model (in our example : /turf/unsimulated/wall and /area/mine/explored) - var/list/members_attributes = list() //will contain lists filled with corresponding variables, if any (in our example : list(icon_state = "rock") and list()) + // This is safe because dmm strings will never actually newline + // So we can parse things just fine + var/list/entries = splittext(model, ",\n") + //will contain all members (paths) in model (in our example : /turf/unsimulated/wall and /area/mine/explored) + var/list/members = new /list(length(entries)) + //will contain lists filled with corresponding variables, if any (in our example : list(icon_state = "rock") and list()) + //member attributes are rarish, so we could lazyinit this + var/list/members_attributes = new /list(length(entries)) ///////////////////////////////////////////////////////// //Constructing members and corresponding variables lists //////////////////////////////////////////////////////// var/index = 1 - var/old_position = 1 - var/dpos - - while(dpos != 0) - //finding next member (e.g /turf/unsimulated/wall{icon_state = "rock"} or /area/mine/explored) - dpos = find_next_delimiter_position(model, old_position, ",", "{", "}") //find next delimiter (comma here) that's not within {...} - - var/full_def = trim_text(copytext(model, old_position, dpos)) //full definition, e.g : /obj/foo/bar{variables=derp} - var/variables_start = findtext(full_def, "{") - var/path_text = trim_text(copytext(full_def, 1, variables_start)) + for(var/member_string in entries) + var/variables_start = 0 + //findtext is a bit expensive, lets only do this if the last char of our string is a } (IE: we know we have vars) + //this saves about 25 miliseconds on my machine. Not a major optimization + if(member_string[length(member_string)] == "}") + variables_start = findtext(member_string, "{") + + var/path_text = TRIM_TEXT(copytext(member_string, 1, variables_start)) var/atom_def = text2path(path_text) //path definition, e.g /obj/foo/bar - if(dpos) - old_position = dpos + length(model[dpos]) if(!ispath(atom_def, /atom)) // Skip the item if the path does not exist. Fix your crap, mappers! if(bad_paths) LAZYOR(bad_paths[path_text], model_key) continue - members.Add(atom_def) + members[index] = atom_def //transform the variables in text format into a list (e.g {var1="derp"; var2; var3=7} => list(var1="derp", var2, var3=7)) - var/list/fields = list() - + var/list/fields = default_list if(variables_start)//if there's any variable - full_def = copytext(full_def, variables_start + length(full_def[variables_start]), -length(copytext_char(full_def, -1))) //removing the last '}' - fields = readlist(full_def, ";") - if(fields.len) - if(!trim(fields[fields.len])) - --fields.len - for(var/I in fields) - var/value = fields[I] - if(istext(value)) - fields[I] = apply_text_macros(value) + member_string = copytext(member_string, variables_start + length(member_string[variables_start]), -length(copytext_char(member_string, -1))) //removing the last '}' + fields = readlist(member_string, ";") + for(var/I in fields) + var/value = fields[I] + if(istext(value)) + fields[I] = apply_text_macros(value) //then fill the members_attributes list with the corresponding variables - members_attributes.len++ members_attributes[index++] = fields - CHECK_TICK //check and see if we can just skip this turf //So you don't have to understand this horrid statement, we can do this if - // 1. no_changeturf is set - // 2. the space_key isn't set yet + // 1. the space_key isn't set yet + // 2. no_changeturf is set // 3. there are exactly 2 members // 4. with no attributes // 5. and the members are world.turf and world.area // Basically, if we find an entry like this: "XXX" = (/turf/default, /area/default) // We can skip calling this proc every time we see XXX - if(no_changeturf \ - && !(.[SPACE_KEY]) \ + if(!set_space \ + && no_changeturf \ && members.len == 2 \ && members_attributes.len == 2 \ && length(members_attributes[1]) == 0 \ && length(members_attributes[2]) == 0 \ && (world.area in members) \ && (world.turf in members)) - + set_space = TRUE .[SPACE_KEY] = model_key continue - .[model_key] = list(members, members_attributes) -/datum/parsed_map/proc/build_coordinate(list/areaCache, list/model, turf/crds, no_changeturf as num, placeOnTop as num) +/datum/parsed_map/proc/build_coordinate(list/model, turf/crds, no_changeturf as num, placeOnTop as num) + // If we don't have a turf, nothing we will do next will actually acomplish anything, so just go back + // Note, this would actually drop area vvs in the tile, but like, why tho + if(!crds) + return var/index var/list/members = model[1] var/list/members_attributes = model[2] + // We use static lists here because it's cheaper then passing them around + var/static/list/default_list = GLOB.map_model_default //////////////// //Instanciation //////////////// - for (var/turf_in_blacklist in turf_blacklist) - if (crds == turf_in_blacklist) //if the given turf is blacklisted, dont do anything with it - return + if(turf_blacklist?[crds]) + return //The next part of the code assumes there's ALWAYS an /area AND a /turf on a given tile //first instance the /area and remove it from the members list index = members.len + var/atom/instance if(members[index] != /area/template_noop) - var/atype = members[index] - world.preloader_setup(members_attributes[index], atype)//preloader for assigning set variables on atom creation - var/atom/instance = areaCache[atype] - if (!instance) - instance = GLOB.areas_by_type[atype] + if(members_attributes[index] != default_list) + world.preloader_setup(members_attributes[index], members[index])//preloader for assigning set variables on atom creation + instance = loaded_areas[members[index]] + if(!instance) + var/area_type = members[index] + // If this parsed map doesn't have that area already, we check the global cache + instance = GLOB.areas_by_type[area_type] + // If the global list DOESN'T have this area it's either not a unique area, or it just hasn't been created yet if (!instance) - instance = new atype(null) - areaCache[atype] = instance - if(crds) - instance.contents.Add(crds) + instance = new area_type(null) + if(!instance) + CRASH("[area_type] failed to be new'd, what'd you do?") + loaded_areas[area_type] = instance - if(GLOB.use_preloader && instance) - world.preloader_load(instance) + instance.contents.Add(crds) - //then instance the /turf and, if multiple tiles are presents, simulates the DMM underlays piling effect + if(GLOB.use_preloader) + world.preloader_load(instance) - var/first_turf_index = 1 - while(!ispath(members[first_turf_index], /turf)) //find first /turf object in members - first_turf_index++ + // Index right before /area is /turf + index-- + //then instance the /turf + //NOTE: this used to place any turfs before the last "underneath" it using .appearance and underlays + //We don't actually use this, and all it did was cost cpu, so we don't do this anymore + if(members[index] != /turf/template_noop) + if(members_attributes[index] != default_list) + world.preloader_setup(members_attributes[index], members[index]) + + // Note: we make the assertion that the last path WILL be a turf. if it isn't, this will fail. + var/old_virtual_z = crds.virtual_z + if(placeOnTop) + instance = crds.PlaceOnTop(null, members[index], CHANGETURF_DEFER_CHANGE | (no_changeturf ? CHANGETURF_SKIP : NONE)) + else if(!no_changeturf) + instance = crds.ChangeTurf(members[index], null, CHANGETURF_DEFER_CHANGE) + else + instance = create_turf(members[index], crds , old_virtual_z)//first preloader pass + var/turf/new_turf = instance + new_turf.virtual_z = old_virtual_z //UNDER NO CIRCUMSTANCES LOOSE THIS VARIABLE - //turn off base new Initialization until the whole thing is loaded - SSatoms.map_loader_begin() - //instanciate the first /turf - var/turf/T - if(members[first_turf_index] != /turf/template_noop) - T = instance_atom(members[first_turf_index],members_attributes[first_turf_index],crds,no_changeturf,placeOnTop) - - if(T) - //if others /turf are presents, simulates the underlays piling effect - index = first_turf_index + 1 - while(index <= members.len - 1) // Last item is an /area - var/underlay = T.appearance - T = instance_atom(members[index],members_attributes[index],crds,no_changeturf,placeOnTop)//instance new turf - T.underlays += underlay - index++ + if(GLOB.use_preloader && instance)//second preloader pass, for those atoms that don't ..() in New() + world.preloader_load(instance) + MAPLOADING_CHECK_TICK //finally instance all remainings objects/mobs - for(index in 1 to first_turf_index-1) - instance_atom(members[index],members_attributes[index],crds,no_changeturf,placeOnTop) - //Restore initialization to the previous value - SSatoms.map_loader_stop() + for(var/atom_index in 1 to index-1) + if(members_attributes[atom_index] != default_list) + world.preloader_setup(members_attributes[atom_index], members[atom_index]) + + // We make the assertion that only /atom s will be in this portion of the code. if that isn't true, this will fail + instance = create_atom(members[atom_index], crds)//first preloader pass + + if(GLOB.use_preloader && instance)//second preloader pass, for those atoms that don't ..() in New() + world.preloader_load(instance) + MAPLOADING_CHECK_TICK //////////////// //Helpers procs //////////////// -//Instance an atom at (x,y,z) and gives it the variables in attributes -/datum/parsed_map/proc/instance_atom(path,list/attributes, turf/crds, no_changeturf, placeOnTop) - world.preloader_setup(attributes, path) - - if(crds) - if(ispath(path, /turf)) - var/old_virtual_z = crds.virtual_z - if(placeOnTop) - . = crds.PlaceOnTop(null, path, CHANGETURF_DEFER_CHANGE | (no_changeturf ? CHANGETURF_SKIP : NONE)) - else if(!no_changeturf) - . = crds.ChangeTurf(path, null, CHANGETURF_DEFER_CHANGE) - else - . = create_turf(path, crds , old_virtual_z)//first preloader pass - var/turf/new_turf = . - new_turf.virtual_z = old_virtual_z //UNDER NO CIRCUMSTANCES LOOSE THIS VARIABLE - else - . = create_atom(path, crds)//first preloader pass - - if(GLOB.use_preloader && .)//second preloader pass, for those atoms that don't ..() in New() - world.preloader_load(.) - - //custom CHECK_TICK here because we don't want things created while we're sleeping to not initialize - if(TICK_CHECK) - SSatoms.map_loader_stop() - stoplag() - SSatoms.map_loader_begin() - /datum/parsed_map/proc/create_turf(path, crds, virtual_z) set waitfor = FALSE . = new path (crds, virtual_z) @@ -403,15 +533,6 @@ set waitfor = FALSE . = new path (crds) -//text trimming (both directions) helper proc -//optionally removes quotes before and after the text (for variable name) -/datum/parsed_map/proc/trim_text(what as text,trim_quotes=0) - if(trim_quotes) - return trimQuotesRegex.Replace(what, "") - else - return trimRegex.Replace(what, "") - - //find the position of the next delimiter,skipping whatever is comprised between opening_escape and closing_escape //returns 0 if reached the last delimiter /datum/parsed_map/proc/find_next_delimiter_position(text as text,initial_position as num, delimiter=",",opening_escape="\"",closing_escape="\"") @@ -426,7 +547,6 @@ return next_delimiter - //build a list from variables in text form (e.g {var1="derp"; var2; var3=7} => list(var1="derp", var2, var3=7)) //return the filled list /datum/parsed_map/proc/readlist(text as text, delimiter=",") @@ -434,30 +554,49 @@ if (!text) return - var/position - var/old_position = 1 - - while(position != 0) - // find next delimiter that is not within "..." - position = find_next_delimiter_position(text,old_position,delimiter) - - // check if this is a simple variable (as in list(var1, var2)) or an associative one (as in list(var1="foo",var2=7)) - var/equal_position = findtext(text,"=",old_position, position) - - var/trim_left = trim_text(copytext(text,old_position,(equal_position ? equal_position : position))) - var/left_constant = delimiter == ";" ? trim_left : parse_constant(trim_left) - if(position) - old_position = position + length(text[position]) + // If we're using a semi colon, we can do this as splittext rather then constant calls to find_next_delimiter_position + // This does make the code a bit harder to read, but saves a good bit of time so suck it up + var/using_semicolon = delimiter == ";" + if(using_semicolon) + var/list/line_entries = splittext(text, ";\n") + for(var/entry in line_entries) + // check if this is a simple variable (as in list(var1, var2)) or an associative one (as in list(var1="foo",var2=7)) + var/equal_position = findtext(entry,"=") + // This could in theory happen if someone inserts an improper newline + // Let's be nice and kill it here rather then later, it'll save like 0.02 seconds if we don't need to run trims in build_cache + if(!equal_position) + continue + var/trim_left = TRIM_TEXT(copytext(entry,1,equal_position)) - if(equal_position && !isnum(left_constant)) // Associative var, so do the association. // Note that numbers cannot be keys - the RHS is dropped if so. - var/trim_right = trim_text(copytext(text, equal_position + length(text[equal_position]), position)) + var/trim_right = TRIM_TEXT(copytext(entry, equal_position + length(entry[equal_position]))) var/right_constant = parse_constant(trim_right) - .[left_constant] = right_constant + .[trim_left] = right_constant + else + var/position + var/old_position = 1 + while(position != 0) + // find next delimiter that is not within "..." + position = find_next_delimiter_position(text,old_position,delimiter) + + // check if this is a simple variable (as in list(var1, var2)) or an associative one (as in list(var1="foo",var2=7)) + var/equal_position = findtext(text,"=",old_position, position) + var/trim_left = TRIM_TEXT(copytext(text,old_position,(equal_position ? equal_position : position))) + var/left_constant = parse_constant(trim_left) + if(position) + old_position = position + length(text[position]) + if(!left_constant) // damn newlines man. Exists to provide behavior consistency with the above loop. not a major cost becuase this path is cold + continue - else // simple var - . += list(left_constant) + if(equal_position && !isnum(left_constant)) + // Associative var, so do the association. + // Note that numbers cannot be keys - the RHS is dropped if so. + var/trim_right = TRIM_TEXT(copytext(text, equal_position + length(text[equal_position]), position)) + var/right_constant = parse_constant(trim_right) + .[left_constant] = right_constant + else // simple var + . += list(left_constant) /datum/parsed_map/proc/parse_constant(text) // number @@ -467,7 +606,10 @@ // string if(text[1] == "\"") - return copytext(text, length(text[1]) + 1, findtext(text, "\"", length(text[1]) + 1)) + // insert implied locate \" and length("\"") here + // It's a minimal timesave but it is a timesave + // Safe becuase we're guarenteed trimmed constants + return copytext(text, 2, -1) // list if(copytext(text, 1, 6) == "list(")//6 == length("list(") + 1 @@ -495,7 +637,8 @@ /datum/parsed_map/Destroy() ..() - turf_blacklist.Cut() + if(turf_blacklist) + turf_blacklist.Cut() parsed_bounds.Cut() bounds.Cut() grid_models.Cut() diff --git a/code/modules/mentor/verbs/mentorhelp.dm b/code/modules/mentor/verbs/mentorhelp.dm index 0099d7eb20e5..a81ec907320c 100644 --- a/code/modules/mentor/verbs/mentorhelp.dm +++ b/code/modules/mentor/verbs/mentorhelp.dm @@ -23,7 +23,7 @@ //spam prevention, 60 second delay remove_verb(src, /client/verb/mentorhelp) - addtimer(CALLBACK(GLOBAL_PROC, .proc/add_verb, src, /client/verb/mentorhelp), 1 MINUTES, TIMER_STOPPABLE) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(add_verb), src, /client/verb/mentorhelp), 1 MINUTES, TIMER_STOPPABLE) /proc/get_mentor_counts() . = list("total" = 0, "afk" = 0, "present" = 0) diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index f36c7c441bad..8cf62d92abd4 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -33,8 +33,8 @@ /obj/item/kinetic_crusher/Initialize() . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, .proc/on_wield) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, .proc/on_unwield) + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/kinetic_crusher/ComponentInitialize() . = ..() @@ -111,7 +111,7 @@ D.fire() charged = FALSE update_appearance() - addtimer(CALLBACK(src, .proc/Recharge), charge_time) + addtimer(CALLBACK(src, PROC_REF(Recharge)), charge_time) return if(proximity_flag && isliving(target)) var/mob/living/L = target @@ -352,7 +352,7 @@ /obj/item/crusher_trophy/magma_wing/on_mark_detonation(mob/living/target, mob/living/user) deadly_shot = TRUE - addtimer(CALLBACK(src, .proc/reset_deadly_shot), 300, TIMER_UNIQUE|TIMER_OVERRIDE) + addtimer(CALLBACK(src, PROC_REF(reset_deadly_shot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE) /obj/item/crusher_trophy/magma_wing/proc/reset_deadly_shot() deadly_shot = FALSE @@ -405,7 +405,7 @@ /obj/item/crusher_trophy/watcher_wing_forgotten/on_mark_detonation(mob/living/target, mob/living/user) deadly_shot = TRUE - addtimer(CALLBACK(src, .proc/reset_deadly_shot), 300, TIMER_UNIQUE|TIMER_OVERRIDE) + addtimer(CALLBACK(src, PROC_REF(reset_deadly_shot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE) /obj/item/crusher_trophy/watcher_wing_forgotten/proc/reset_deadly_shot() deadly_shot = FALSE @@ -538,7 +538,7 @@ continue playsound(L, 'sound/magic/fireball.ogg', 20, TRUE) new /obj/effect/temp_visual/fire(L.loc) - addtimer(CALLBACK(src, .proc/pushback, L, user), 1) //no free backstabs, we push AFTER module stuff is done + addtimer(CALLBACK(src, PROC_REF(pushback), L, user), 1) //no free backstabs, we push AFTER module stuff is done L.adjustFireLoss(bonus_value, forced = TRUE) /obj/item/crusher_trophy/tail_spike/proc/pushback(mob/living/target, mob/living/user) @@ -572,7 +572,7 @@ continue playsound(L, 'sound/magic/fireball.ogg', 20, TRUE) new /obj/effect/temp_visual/fire(L.loc) - addtimer(CALLBACK(src, .proc/pushback, L, user), 1) //no free backstabs, we push AFTER module stuff is done + addtimer(CALLBACK(src, PROC_REF(pushback), L, user), 1) //no free backstabs, we push AFTER module stuff is done L.adjustFireLoss(bonus_value, forced = TRUE) /obj/item/crusher_trophy/ash_spike/proc/pushback(mob/living/target, mob/living/user) @@ -640,7 +640,7 @@ /obj/item/crusher_trophy/blaster_tubes/on_mark_detonation(mob/living/target, mob/living/user) deadly_shot = TRUE - addtimer(CALLBACK(src, .proc/reset_deadly_shot), 300, TIMER_UNIQUE|TIMER_OVERRIDE) + addtimer(CALLBACK(src, PROC_REF(reset_deadly_shot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE) /obj/item/crusher_trophy/blaster_tubes/proc/reset_deadly_shot() deadly_shot = FALSE diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index b8240b34ddd2..bf0877262923 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -35,7 +35,7 @@ /obj/item/organ/regenerative_core/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/inert_check), 2400) + addtimer(CALLBACK(src, PROC_REF(inert_check)), 2400) /obj/item/organ/regenerative_core/proc/inert_check() if(!preserved) @@ -142,7 +142,7 @@ update_appearance() /obj/item/organ/regenerative_core/update_icon_state() - icon_state = inert ? "legion_soul_inert" : "legion_soul" + icon_state = inert ? "[icon_state]_inert" : "[icon_state]" return ..() /obj/item/organ/regenerative_core/update_overlays() @@ -162,6 +162,7 @@ /obj/item/organ/regenerative_core/legion/crystal name = "crystal heart" desc = "A strange rock in the shape of a heart symbol. Applying will repair your body with crystals, but may have additional side effects. It seems it can't survive for very long outside a host." + icon_state = "crystal_heart" crackle_animation = FALSE /obj/item/organ/regenerative_core/legion/crystal/Initialize() @@ -191,7 +192,6 @@ qdel(src) /obj/item/organ/regenerative_core/legion/crystal/update_icon_state() - icon_state = inert ? "crystal_heart_inert" : "crystal_heart" if(preserved) icon_state = "crystal_heart_preserved" return ..() diff --git a/code/modules/mining/equipment/resonator.dm b/code/modules/mining/equipment/resonator.dm index 9e911966f023..ce299cea1c71 100644 --- a/code/modules/mining/equipment/resonator.dm +++ b/code/modules/mining/equipment/resonator.dm @@ -73,7 +73,7 @@ transform = matrix()*0.75 animate(src, transform = matrix()*1.5, time = duration) deltimer(timerid) - timerid = addtimer(CALLBACK(src, .proc/burst), duration, TIMER_STOPPABLE) + timerid = addtimer(CALLBACK(src, PROC_REF(burst)), duration, TIMER_STOPPABLE) /obj/effect/temp_visual/resonance/Destroy() if(res) diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm index 1e281e2f856d..9c989b986a33 100644 --- a/code/modules/mining/equipment/wormhole_jaunter.dm +++ b/code/modules/mining/equipment/wormhole_jaunter.dm @@ -99,4 +99,4 @@ L.Paralyze(60) if(ishuman(L)) shake_camera(L, 20, 1) - addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20) + addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living/carbon, vomit)), 20) diff --git a/code/modules/mining/fulton.dm b/code/modules/mining/fulton.dm index 5d412ad6fb8f..5d4db89f59d1 100644 --- a/code/modules/mining/fulton.dm +++ b/code/modules/mining/fulton.dm @@ -172,7 +172,7 @@ GLOBAL_LIST_EMPTY(total_extraction_beacons) /obj/structure/extraction_point/Destroy() GLOB.total_extraction_beacons -= src - ..() + return ..() /obj/effect/extraction_holder name = "extraction holder" diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index bad8c876d39d..dc42690d1b68 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -17,9 +17,12 @@ GLOBAL_LIST(labor_sheet_values) /obj/machinery/mineral/labor_claim_console/Initialize() . = ..() - Radio = new/obj/item/radio(src) + Radio = new /obj/item/radio(src) Radio.listening = FALSE locate_stacking_machine() + //If we can't find a stacking machine end it all ok? + if(!stacking_machine) + return INITIALIZE_HINT_QDEL if(!GLOB.labor_sheet_values) var/sheet_list = list() @@ -30,6 +33,13 @@ GLOBAL_LIST(labor_sheet_values) sheet_list += list(list("ore" = initial(sheet.name), "value" = initial(sheet.point_value))) GLOB.labor_sheet_values = sortList(sheet_list, /proc/cmp_sheet_list) +/obj/machinery/mineral/labor_claim_console/Destroy() + QDEL_NULL(Radio) + if(stacking_machine) + stacking_machine.console = null + stacking_machine = null + return ..() + /proc/cmp_sheet_list(list/a, list/b) return a["value"] - b["value"] @@ -88,9 +98,7 @@ GLOBAL_LIST(labor_sheet_values) /obj/machinery/mineral/labor_claim_console/proc/locate_stacking_machine() stacking_machine = locate(/obj/machinery/mineral/stacking_machine, get_step(src, machinedir)) if(stacking_machine) - stacking_machine.CONSOLE = src - else - qdel(src) + stacking_machine.console = src /obj/machinery/mineral/labor_claim_console/emag_act(mob/user) if(!(obj_flags & EMAGGED)) diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index d88bddc3188c..cc90920f96a7 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -53,7 +53,7 @@ name = harvested_name desc = harvested_desc harvested = TRUE - addtimer(CALLBACK(src, .proc/regrow), rand(regrowth_time_low, regrowth_time_high)) + addtimer(CALLBACK(src, PROC_REF(regrow)), rand(regrowth_time_low, regrowth_time_high)) return 1 /obj/structure/flora/ash/proc/regrow() @@ -496,7 +496,7 @@ name = harvested_name desc = harvested_desc harvested = TRUE - addtimer(CALLBACK(src, .proc/regrow), rand(regrowth_time_low, regrowth_time_high)) + addtimer(CALLBACK(src, PROC_REF(regrow)), rand(regrowth_time_low, regrowth_time_high)) return 1 /obj/structure/flora/ash/glowshroom diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 77947d71043b..a291811d5e83 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -393,7 +393,7 @@ /obj/effect/wisp/orbit(atom/thing, radius, clockwise, rotation_speed, rotation_segments, pre_rotation, lockinorbit) . = ..() if(ismob(thing)) - RegisterSignal(thing, COMSIG_MOB_UPDATE_SIGHT, .proc/update_user_sight) + RegisterSignal(thing, COMSIG_MOB_UPDATE_SIGHT, PROC_REF(update_user_sight)) var/mob/being = thing being.update_sight() to_chat(thing, "The wisp enhances your vision.") @@ -419,6 +419,12 @@ var/obj/item/warp_cube/linked var/teleporting = FALSE +/obj/item/warp_cube/Destroy() + if(!QDELETED(linked)) + qdel(linked) + linked = null + return ..() + /obj/item/warp_cube/attack_self(mob/user) var/turf/current_location = get_turf(user) var/area/current_area = current_location.loc @@ -624,7 +630,7 @@ can_destroy = FALSE - addtimer(CALLBACK(src, .proc/unvanish, user), 15 SECONDS) + addtimer(CALLBACK(src, PROC_REF(unvanish), user), 15 SECONDS) /obj/effect/immortality_talisman/proc/unvanish(mob/user) user.status_flags &= ~GODMODE @@ -859,7 +865,7 @@ if(ismovable(hit_atom) && !caught && (!thrown_by || thrown_by && COOLDOWN_FINISHED(src, freeze_cooldown))) freeze(hit_atom) if(thrown_by && !caught) - addtimer(CALLBACK(src, /atom/movable.proc/throw_at, thrown_by, throw_range+2, throw_speed, null, TRUE), 1) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom/movable, throw_at), thrown_by, throw_range+2, throw_speed, null, TRUE), 1) /obj/item/freeze_cube/proc/freeze(atom/movable/hit_atom) playsound(src, 'sound/effects/glassbr3.ogg', 50, TRUE) @@ -898,8 +904,8 @@ . = ..() if(slot == ITEM_SLOT_GLOVES) tool_behaviour = TOOL_MINING - RegisterSignal(user, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, .proc/rocksmash) - RegisterSignal(user, COMSIG_MOVABLE_BUMP, .proc/rocksmash) + RegisterSignal(user, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, PROC_REF(rocksmash)) + RegisterSignal(user, COMSIG_MOVABLE_BUMP, PROC_REF(rocksmash)) else stopmining(user) @@ -944,6 +950,12 @@ . += "This weapon contains a gradual heat accelerator that increases shot power as the weapon's energy stores are depleted. Shots at low power are significantly stronger, but also have incredibly short range." /obj/item/gun/energy/spur/update_appearance() + if(!cell) + chargesound = null + recoil = 1 + fire_sound = 'sound/weapons/spur_high.ogg' + return + var/maxcharge = cell.maxcharge var/charge = cell.charge @@ -1508,7 +1520,7 @@ /obj/item/mayhem/attack_self(mob/user) for(var/mob/living/carbon/human/H in range(7,user)) var/obj/effect/mine/pickup/bloodbath/B = new(H) - INVOKE_ASYNC(B, /obj/effect/mine/pickup/bloodbath/.proc/mineEffect, H) + INVOKE_ASYNC(B, TYPE_PROC_REF(/obj/effect/mine/pickup/bloodbath, mineEffect), H) to_chat(user, "You shatter the bottle!") playsound(user.loc, 'sound/effects/glassbr1.ogg', 100, TRUE) message_admins("[ADMIN_LOOKUPFLW(user)] has activated a bottle of mayhem!") @@ -1624,11 +1636,11 @@ calculate_anger_mod(user) timer = world.time + CLICK_CD_MELEE //by default, melee attacks only cause melee blasts, and have an accordingly short cooldown if(proximity_flag) - INVOKE_ASYNC(src, .proc/aoe_burst, T, user) + INVOKE_ASYNC(src, PROC_REF(aoe_burst), T, user) log_combat(user, target, "fired 3x3 blast at", src) else if(ismineralturf(target) && get_dist(user, target) < 6) //target is minerals, we can hit it(even if we can't see it) - INVOKE_ASYNC(src, .proc/cardinal_blasts, T, user) + INVOKE_ASYNC(src, PROC_REF(cardinal_blasts), T, user) timer = world.time + cooldown_time else if(target in view(5, get_turf(user))) //if the target is in view, hit it timer = world.time + cooldown_time @@ -1639,12 +1651,12 @@ C.monster_damage_boost = FALSE log_combat(user, target, "fired a chaser at", src) else - INVOKE_ASYNC(src, .proc/cardinal_blasts, T, user) //otherwise, just do cardinal blast + INVOKE_ASYNC(src, PROC_REF(cardinal_blasts), T, user) //otherwise, just do cardinal blast log_combat(user, target, "fired cardinal blast at", src) else to_chat(user, "That target is out of range!" ) timer = world.time - INVOKE_ASYNC(src, .proc/prepare_icon_update) + INVOKE_ASYNC(src, PROC_REF(prepare_icon_update)) /obj/item/hierophant_club/proc/calculate_anger_mod(mob/user) //we get stronger as the user loses health chaser_cooldown = initial(chaser_cooldown) @@ -1683,7 +1695,7 @@ user.visible_message("[user] starts fiddling with [src]'s pommel...", \ "You start detaching the hierophant beacon...") timer = world.time + 51 - INVOKE_ASYNC(src, .proc/prepare_icon_update) + INVOKE_ASYNC(src, PROC_REF(prepare_icon_update)) if(do_after(user, 50, target = user) && !beacon) var/turf/T = get_turf(user) playsound(T,'sound/magic/blind.ogg', 200, TRUE, -4) @@ -1695,7 +1707,7 @@ You can remove the beacon to place it again by striking it with the club.") else timer = world.time - INVOKE_ASYNC(src, .proc/prepare_icon_update) + INVOKE_ASYNC(src, PROC_REF(prepare_icon_update)) else to_chat(user, "You need to be on solid ground to detach the beacon!") return @@ -1713,7 +1725,7 @@ user.update_action_buttons_icon() user.visible_message("[user] starts to glow faintly...") timer = world.time + 50 - INVOKE_ASYNC(src, .proc/prepare_icon_update) + INVOKE_ASYNC(src, PROC_REF(prepare_icon_update)) beacon.icon_state = "hierophant_tele_on" var/obj/effect/temp_visual/hierophant/telegraph/edge/TE1 = new /obj/effect/temp_visual/hierophant/telegraph/edge(user.loc) var/obj/effect/temp_visual/hierophant/telegraph/edge/TE2 = new /obj/effect/temp_visual/hierophant/telegraph/edge(beacon.loc) @@ -1725,7 +1737,7 @@ to_chat(user, "The beacon is blocked by something, preventing teleportation!") user.update_action_buttons_icon() timer = world.time - INVOKE_ASYNC(src, .proc/prepare_icon_update) + INVOKE_ASYNC(src, PROC_REF(prepare_icon_update)) beacon.icon_state = "hierophant_tele_off" return new /obj/effect/temp_visual/hierophant/telegraph(T, user) @@ -1737,7 +1749,7 @@ if(user) user.update_action_buttons_icon() timer = world.time - INVOKE_ASYNC(src, .proc/prepare_icon_update) + INVOKE_ASYNC(src, PROC_REF(prepare_icon_update)) if(beacon) beacon.icon_state = "hierophant_tele_off" return @@ -1746,7 +1758,7 @@ to_chat(user, "The beacon is blocked by something, preventing teleportation!") user.update_action_buttons_icon() timer = world.time - INVOKE_ASYNC(src, .proc/prepare_icon_update) + INVOKE_ASYNC(src, PROC_REF(prepare_icon_update)) beacon.icon_state = "hierophant_tele_off" return user.log_message("teleported self from [AREACOORD(source)] to [beacon]", LOG_GAME) @@ -1759,7 +1771,7 @@ var/obj/effect/temp_visual/hierophant/blast/B = new /obj/effect/temp_visual/hierophant/blast(t, user, TRUE) //but absolutely will hurt enemies B.damage = 30 for(var/mob/living/L in range(1, source)) - INVOKE_ASYNC(src, .proc/teleport_mob, source, L, T, user) //regardless, take all mobs near us along + INVOKE_ASYNC(src, PROC_REF(teleport_mob), source, L, T, user) //regardless, take all mobs near us along sleep(6) //at this point the blasts detonate if(beacon) beacon.icon_state = "hierophant_tele_off" @@ -1767,7 +1779,7 @@ qdel(TE1) qdel(TE2) timer = world.time - INVOKE_ASYNC(src, .proc/prepare_icon_update) + INVOKE_ASYNC(src, PROC_REF(prepare_icon_update)) if(beacon) beacon.icon_state = "hierophant_tele_off" teleporting = FALSE @@ -1808,7 +1820,7 @@ B.damage = HIEROPHANT_CLUB_CARDINAL_DAMAGE B.monster_damage_boost = FALSE for(var/d in GLOB.cardinals) - INVOKE_ASYNC(src, .proc/blast_wall, T, d, user) + INVOKE_ASYNC(src, PROC_REF(blast_wall), T, d, user) /obj/item/hierophant_club/proc/blast_wall(turf/T, dir, mob/living/user) //make a wall of blasts blast_range tiles long if(!T) diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 508cea2c3507..10f43aad4580 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -19,16 +19,17 @@ if(needs_item_input && anchored) register_input_turf() -/// Gets the turf in the `input_dir` direction adjacent to the machine, and registers signals for ATOM_ENTERED and ATOM_CREATED. Calls the `pickup_item()` proc when it receives these signals. +/// Gets the turf in the `input_dir` direction adjacent to the machine, and registers signals for ATOM_ENTERED. Calls the `pickup_item()` proc when it receives these signals. +/// DO NOT ADD COMSIG_ATOM_CREATED, SINCE PICKUP_ITEM WILL QDEL THE ITEM AND QDELING AN INITIALISING THING IS STUPID /obj/machinery/mineral/proc/register_input_turf() input_turf = get_step(src, input_dir) if(input_turf) // make sure there is actually a turf - RegisterSignal(input_turf, list(COMSIG_ATOM_CREATED, COMSIG_ATOM_ENTERED), .proc/pickup_item) + RegisterSignal(input_turf, COMSIG_ATOM_ENTERED, PROC_REF(pickup_item)) /// Unregisters signals that are registered the machine's input turf, if it has one. /obj/machinery/mineral/proc/unregister_input_turf() if(input_turf) - UnregisterSignal(input_turf, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_CREATED)) + UnregisterSignal(input_turf, COMSIG_ATOM_ENTERED) /obj/machinery/mineral/Moved() . = ..() @@ -135,6 +136,8 @@ var/datum/material/selected_material = null var/selected_alloy = null var/datum/techweb/stored_research + ///Proximity monitor associated with this atom, needed for proximity checks. + var/datum/proximity_monitor/proximity_monitor /obj/machinery/mineral/processing_unit/Initialize() . = ..() diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index 68c9666aa9eb..4f1cc8a08bc1 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -16,7 +16,13 @@ . = ..() machine = locate(/obj/machinery/mineral/stacking_machine, get_step(src, machinedir)) if (machine) - machine.CONSOLE = src + machine.console = src + +/obj/machinery/mineral/stacking_unit_console/Destroy() + if(machine) + machine.console = null + machine = null + return ..() /obj/machinery/mineral/stacking_unit_console/multitool_act(mob/living/user, obj/item/I) if(!multitool_check_buffer(user, I)) @@ -78,13 +84,15 @@ circuit = /obj/item/circuitboard/machine/stacking_machine input_dir = EAST output_dir = WEST - var/obj/machinery/mineral/stacking_unit_console/CONSOLE + var/obj/machinery/mineral/stacking_unit_console/console var/stk_types = list() var/stk_amt = list() var/stack_list[0] //Key: Type. Value: Instance of type. var/stack_amt = 50 //amount to stack before releassing var/datum/component/remote_materials/materials var/force_connect = FALSE + ///Proximity monitor associated with this atom, needed for proximity checks. + var/datum/proximity_monitor/proximity_monitor /obj/machinery/mineral/stacking_machine/Initialize(mapload) . = ..() @@ -92,7 +100,9 @@ materials = AddComponent(/datum/component/remote_materials, "stacking", mapload, FALSE, mapload && force_connect) /obj/machinery/mineral/stacking_machine/Destroy() - CONSOLE = null + if(console) + console.machine = null + console = null materials = null return ..() @@ -103,8 +113,8 @@ /obj/machinery/mineral/stacking_machine/multitool_act(mob/living/user, obj/item/multitool/M) if(istype(M)) if(istype(M.buffer, /obj/machinery/mineral/stacking_unit_console)) - CONSOLE = M.buffer - CONSOLE.machine = src + console = M.buffer + console.machine = src to_chat(user, "You link [src] to the console in [M]'s buffer.") return TRUE diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index 6df19e1a11de..707d68a871f7 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -48,6 +48,7 @@ /mob/living/simple_animal/hostile/mining_drone/Initialize() . = ..() + stored_gun = new(src) var/datum/action/innate/minedrone/toggle_light/toggle_light_action = new() toggle_light_action.Grant(src) @@ -68,6 +69,7 @@ /mob/living/simple_animal/hostile/mining_drone/Destroy() + QDEL_NULL(stored_gun) for (var/datum/action/innate/minedrone/action in actions) qdel(action) return ..() @@ -140,16 +142,14 @@ to_chat(M, "[src] has been set to attack hostile wildlife.") return -/mob/living/simple_animal/hostile/mining_drone/CanAllowThrough(atom/movable/O) +/mob/living/simple_animal/hostile/mining_drone/CanAllowThrough(atom/movable/mover, border_dir) . = ..() - if(istype(O, /obj/projectile/kinetic)) - var/obj/projectile/kinetic/K = O - if(K.kinetic_gun) - for(var/A in K.kinetic_gun.get_modkits()) - var/obj/item/borg/upgrade/modkit/M = A - if(istype(M, /obj/item/borg/upgrade/modkit/minebot_passthrough)) - return TRUE - if(istype(O, /obj/projectile/destabilizer)) + if(istype(mover, /obj/projectile/kinetic)) + var/obj/projectile/kinetic/projectile = mover + if(projectile.kinetic_gun) + if (locate(/obj/item/borg/upgrade/modkit/minebot_passthrough) in projectile.kinetic_gun.modkits) + return TRUE + else if(istype(mover, /obj/projectile/destabilizer)) return TRUE /mob/living/simple_animal/hostile/mining_drone/proc/SetCollectBehavior() diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index 2b93f03deb72..ec971ed84bed 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -129,7 +129,7 @@ icon_state = "wasteplanet_sand" item_state = "wasteplanet_sand" singular_name = "rocky dust" - grind_results = list(/datum/reagent/silicon = 10, /datum/reagent/lithium = 2, /datum/reagent/radium = 1, /datum/reagent/chlorine = 1, /datum/reagent/aluminium = 1)//may be unsafe for human consumption + grind_results = list(/datum/reagent/silicon = 10, /datum/reagent/lithium = 2, /datum/reagent/uranium/radium = 1, /datum/reagent/chlorine = 1, /datum/reagent/aluminium = 1)//may be unsafe for human consumption /obj/item/stack/ore/glass/beach name = "beige sand pile" @@ -332,7 +332,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ else user.visible_message("[user] strikes \the [src], causing a chain reaction!", "You strike \the [src], causing a chain reaction.") log_bomber(user, "has primed a", src, "for detonation", notify_admins) - det_timer = addtimer(CALLBACK(src, .proc/detonate, notify_admins), det_time, TIMER_STOPPABLE) + det_timer = addtimer(CALLBACK(src, PROC_REF(detonate), notify_admins), det_time, TIMER_STOPPABLE) /obj/item/gibtonite/proc/detonate(notify_admins) if(primed) diff --git a/code/modules/mob/dead/crew_manifest.dm b/code/modules/mob/dead/crew_manifest.dm index 355af961f299..c7ca52968f86 100644 --- a/code/modules/mob/dead/crew_manifest.dm +++ b/code/modules/mob/dead/crew_manifest.dm @@ -19,5 +19,5 @@ /datum/crew_manifest/ui_static_data(mob/user) return list( - "manifest" = SSjob.get_manifest() + "manifest" = SSovermap.get_manifest() ) diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm index 3d22ed748ea7..ee74d0475a34 100644 --- a/code/modules/mob/dead/dead.dm +++ b/code/modules/mob/dead/dead.dm @@ -99,6 +99,10 @@ INITIALIZE_IMMEDIATE(/mob/dead) /mob/dead/auto_deadmin_on_login() return +/mob/dead/Destroy() + LAZYREMOVEASSOC(SSmobs.dead_players_by_virtual_z, "[virtual_z()]", src) + return ..() + /mob/dead/Login() . = ..() if(!client) diff --git a/code/modules/mob/dead/new_player/login.dm b/code/modules/mob/dead/new_player/login.dm index 373950e296dc..5c47ccd6d526 100644 --- a/code/modules/mob/dead/new_player/login.dm +++ b/code/modules/mob/dead/new_player/login.dm @@ -6,8 +6,8 @@ client.set_db_player_flags() if(!mind) mind = new /datum/mind(key) - mind.active = 1 - mind.current = src + mind.active = TRUE + mind.set_current(src) . = ..() if(!. || !client) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 79a5feac5966..d7865c9d2276 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -220,7 +220,10 @@ ready = PLAYER_NOT_READY return FALSE - var/this_is_like_playing_right = alert(src,"Are you sure you wish to observe? You will [CONFIG_GET(flag/norespawn) ? "not " : "" ]be able to respawn later.","Player Setup","Yes","No") + var/less_input_message + if(SSlag_switch.measures[DISABLE_DEAD_KEYLOOP]) + less_input_message = " - Notice: Observer freelook is currently disabled." + var/this_is_like_playing_right = tgui_alert(src, "Are you sure you wish to observe? You will [CONFIG_GET(flag/norespawn) ? "not " : "" ]be able to respawn later.[less_input_message]", "Player Setup", list("Yes","No")) if(QDELETED(src) || !src.client || this_is_like_playing_right != "Yes") ready = PLAYER_NOT_READY @@ -288,6 +291,12 @@ if(auth_check) return + if(!client.prefs.randomise[RANDOM_NAME]) // do they have random names enabled + var/name = client.prefs.real_name + if(GLOB.real_names_joined.Find(name)) // is there someone who spawned with the same name + to_chat(usr, "Someone has spawned with this name already.") + return FALSE + var/error = IsJobUnavailable(job, ship, check_playtime) if(error != JOB_AVAILABLE) alert(src, get_job_unavailable_error_message(error, job)) @@ -306,7 +315,8 @@ character = equip if(job && !job.override_latejoin_spawn(character)) - SSjob.SendToLateJoin(character, destination = pick(ship.shuttle_port.spawn_points)) + var/atom/spawn_point = pick(ship.shuttle_port.spawn_points) + spawn_point.join_player_here(character) var/atom/movable/screen/splash/Spl = new(character.client, TRUE) Spl.Fade(TRUE) character.playsound_local(get_turf(character), 'sound/voice/ApproachingTG.ogg', 25) @@ -360,10 +370,11 @@ GLOB.ship_select_tgui.ui_interact(src) /mob/dead/new_player/proc/can_join_round(silent = FALSE) - if(!GLOB.enter_allowed) - if(!silent) - to_chat(usr, "There is an administrative lock on entering the game!") - return FALSE + if(SSlag_switch.measures[DISABLE_NON_OBSJOBS]) + if(silent) + return + to_chat(usr, span_notice("There is an administrative lock on entering the game!")) + return if(!SSticker?.IsRoundInProgress()) if(!silent) @@ -393,6 +404,7 @@ close_spawn_windows() var/mob/living/carbon/human/H = new(loc) + GLOB.joined_player_list += ckey var/frn = CONFIG_GET(flag/force_random_names) var/admin_anon_names = SSticker.anonymousnames @@ -413,12 +425,15 @@ is_antag = TRUE client.prefs.copy_to(H, antagonist = is_antag) + update_names_joined_list(H.real_name) H.dna.update_dna_identity() if(mind) if(transfer_after) mind.late_joiner = TRUE - mind.active = 0 //we wish to transfer the key manually - mind.transfer_to(H) //won't transfer key since the mind is not active + mind.active = FALSE //we wish to transfer the key manually + mind.original_character_slot_index = client.prefs.default_slot + mind.transfer_to(H) //won't transfer key since the mind is not active + mind.set_original_character(H) H.name = real_name client.init_verbs() diff --git a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm index 443f13c6917f..afe97c858cff 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm @@ -54,7 +54,7 @@ var/gender_specific //Something that can be worn by either gender, but looks different on each var/use_static //determines if the accessory will be skipped by color preferences var/color_src = MUTCOLORS //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/hasinner //Decides if this sprite has an "inner" part, such as the fleshy parts on ears. + var/secondary_color //Decides if this sprite has a secondary color in use. var/locked = FALSE //Is this part locked from roundstart selection? Used for parts that apply effects var/center = FALSE //Should we center the sprite? var/limbs_id //The limbs id supplied for full-body replacing features. diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm index 36b2f4d91dab..8b0ec1d6f79d 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm @@ -11,13 +11,13 @@ icon = 'icons/mob/species/misc/cat.dmi' name = "Cat" icon_state = "cat" - hasinner = 1 + secondary_color = TRUE color_src = HAIR /datum/sprite_accessory/ears/cat/slime name = "Slimecat" icon_state = "cat" - hasinner = FALSE + secondary_color = FALSE color_src = HAIR image_alpha = 150 @@ -25,11 +25,11 @@ icon = 'icons/mob/species/misc/fox.dmi' name = "Fox" icon_state = "fox" - hasinner = 1 + secondary_color = TRUE color_src = HAIR /datum/sprite_accessory/ears/elf name = "Elf" icon_state = "elf" - hasinner = FALSE + secondary_color = FALSE color_src = SKINCOLORS diff --git a/code/modules/mob/dead/new_player/sprite_accessories/lizard.dm b/code/modules/mob/dead/new_player/sprite_accessories/lizard.dm index 28bf95b28dbc..ce536a403e48 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/lizard.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/lizard.dm @@ -168,7 +168,12 @@ /datum/sprite_accessory/frills/none name = "None" icon_state = "none" - +//Ears are here because having frills+ears would overlap and be weird. +/datum/sprite_accessory/frills/ears + name = "Normal ears" + icon_state = "ears" + secondary_color = TRUE +//End ears /datum/sprite_accessory/frills/simple name = "Simple" icon_state = "simple" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/rachnid.dm b/code/modules/mob/dead/new_player/sprite_accessories/rachnid.dm index 1e60fd1d7ab5..d34b915e3e35 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/rachnid.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/rachnid.dm @@ -4,52 +4,37 @@ /datum/sprite_accessory/spider_legs icon = 'icons/mob/species/rachnid/spider_legs.dmi' - color_src = MUTCOLORS - -/datum/sprite_accessory/spider_legs/plain - name = "Plain" - icon_state = "plain" + color_src = 0 + secondary_color = TRUE -/datum/sprite_accessory/spider_legs/fuzzy - name = "Fuzzy" - icon_state = "fuzzy" - -/datum/sprite_accessory/spider_legs/spiky - name = "Spiky" - icon_state = "spiky" +/datum/sprite_accessory/spider_legs/carapace + name = "Carapace" + icon_state = "carapace" //Start spinner /datum/sprite_accessory/spider_spinneret icon = 'icons/mob/species/rachnid/spider_spinneret.dmi' color_src = MUTCOLORS + secondary_color = TRUE -/datum/sprite_accessory/spider_spinneret/plain - name = "Plain" - icon_state = "plain" - -/datum/sprite_accessory/spider_spinneret/fuzzy - name = "Fuzzy" - icon_state = "fuzzy" +/datum/sprite_accessory/spider_spinneret/spikecore + name = "Spikecore" + icon_state = "spikecore" -/datum/sprite_accessory/spider_spinneret/black_widow - name = "Black Widow" - icon_state = "blackwidow" - -//Start mandible - -/datum/sprite_accessory/spider_mandibles - icon = 'icons/mob/species/rachnid/spider_mandibles.dmi' - color_src = MUTCOLORS +/datum/sprite_accessory/spider_spinneret/cerberus + name = "Cerberus" + icon_state = "cerberus" -/datum/sprite_accessory/spider_mandibles/plain - name = "Plain" - icon_state = "plain" +/datum/sprite_accessory/spider_spinneret/queen + name = "Queen" + icon_state = "queen" -/datum/sprite_accessory/spider_mandibles/fuzzy - name = "Fuzzy" - icon_state = "fuzzy" +/datum/sprite_accessory/spider_spinneret/folds + name = "Folds" + icon_state = "folds" + secondary_color = FALSE -/datum/sprite_accessory/spider_mandibles/spiky - name = "Spiky" - icon_state = "spiky" +/datum/sprite_accessory/spider_spinneret/prongs + name = "Prongs" + icon_state = "prongs" diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 87b241dc8d53..5d8c44bbc188 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -156,7 +156,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) var/old_color = color color = "#960000" animate(src, color = old_color, time = 10, flags = ANIMATION_PARALLEL) - addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 10) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 10) /mob/dead/observer/Destroy() // Update our old body's medhud since we're abandoning it @@ -367,6 +367,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp return client.view_size.setDefault(getScreenSize(client.prefs.widescreenpref))//Let's reset so people can't become allseeing gods SStgui.on_transfer(src, mind.current) // Transfer NanoUIs. + if(mind.current.stat == DEAD && SSlag_switch.measures[DISABLE_DEAD_KEYLOOP]) + to_chat(src, span_warning("To leave your body again use the Ghost verb.")) mind.current.key = key mind.current.client.init_verbs() return TRUE @@ -514,6 +516,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set name = "View Range" set desc = "Change your view range." + if(SSlag_switch.measures[DISABLE_GHOST_ZOOM_TRAY] && !client?.holder) + to_chat(usr, span_notice("That verb is currently globally disabled.")) + return + var/max_view = client.prefs.unlock_content ? GHOST_MAX_VIEW_RANGE_MEMBER : GHOST_MAX_VIEW_RANGE_DEFAULT if(client.view_size.getView() == client.view_size.default) var/list/views = list() @@ -528,6 +534,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/verb/add_view_range(input as num) set name = "Add View Range" set hidden = TRUE + + if(SSlag_switch.measures[DISABLE_GHOST_ZOOM_TRAY] && !client?.holder) + to_chat(usr, span_notice("That verb is currently globally disabled.")) + return + var/max_view = client.prefs.unlock_content ? GHOST_MAX_VIEW_RANGE_MEMBER : GHOST_MAX_VIEW_RANGE_DEFAULT if(input) client.rescale_view(input, 0, ((max_view*2)+1) - 15) @@ -651,14 +662,11 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp target.faction = list("neutral") return TRUE -//this is a mob verb instead of atom for performance reasons -//see /mob/verb/examinate() in mob.dm for more info -//overridden here and in /mob/living for different point span classes and sanity checks -/mob/dead/observer/pointed(atom/A as mob|obj|turf in view(client.view, src)) +/mob/dead/observer/_pointed(atom/pointed_at) if(!..()) return FALSE - usr.visible_message("[src] points to [A].") - return TRUE + + usr.visible_message("[src] points to [pointed_at].") /mob/dead/observer/verb/view_manifest() set name = "View Crew Manifest" @@ -927,6 +935,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set desc = "Toggles a view of sub-floor objects" var/static/t_ray_view = FALSE + if(SSlag_switch.measures[DISABLE_GHOST_ZOOM_TRAY] && !client?.holder && !t_ray_view) + to_chat(usr, span_notice("That verb is currently globally disabled.")) + return t_ray_view = !t_ray_view var/list/t_ray_images = list() diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 85a3fd324809..de07b3d4f0fd 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -431,6 +431,10 @@ set name = "quick-equip" set hidden = TRUE + DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(execute_quick_equip))) + +///proc extender of [/mob/verb/quick_equip] used to make the verb queuable if the server is overloaded +/mob/proc/execute_quick_equip() var/obj/item/I = get_active_held_item() if (I) I.equip_to_best_slot(src) @@ -439,6 +443,9 @@ set name = "equipment-swap" set hidden = TRUE + DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(execute_equipment_swap))) + +/mob/proc/execute_equipment_swap() var/obj/item/I = get_active_held_item() if (I) if(!do_after(src, 1 SECONDS, target = I)) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index a577cbcc9f25..aec75960989d 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -9,7 +9,7 @@ return else bleedsuppress = TRUE - addtimer(CALLBACK(src, .proc/resume_bleeding), amount) + addtimer(CALLBACK(src, PROC_REF(resume_bleeding)), amount) /mob/living/carbon/human/proc/resume_bleeding() bleedsuppress = 0 @@ -179,7 +179,6 @@ if(blood_id == /datum/reagent/blood) //actual blood reagent var/blood_data = list() //set the blood data - blood_data["donor"] = src blood_data["viruses"] = list() for(var/thing in diseases) @@ -280,6 +279,8 @@ break if(!B) B = new /obj/effect/decal/cleanable/blood/splatter(T, get_static_viruses()) + if(QDELETED(B)) //Give it up + return B.bloodiness = min((B.bloodiness + BLOOD_AMOUNT_PER_DECAL), BLOOD_POOL_MAX) B.transfer_mob_blood_dna(src) //give blood info to the blood decal. if(temp_blood_DNA) diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm index 6aaa361b0bfb..bc0f3849360f 100644 --- a/code/modules/mob/living/bloodcrawl.dm +++ b/code/modules/mob/living/bloodcrawl.dm @@ -38,7 +38,7 @@ C.regenerate_icons() notransform = TRUE - INVOKE_ASYNC(src, .proc/bloodpool_sink, B) + INVOKE_ASYNC(src, PROC_REF(bloodpool_sink), B) return TRUE @@ -155,7 +155,7 @@ newcolor = rgb(43, 186, 0) add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY) // but only for a few seconds - addtimer(CALLBACK(src, /atom/.proc/remove_atom_colour, TEMPORARY_COLOUR_PRIORITY, newcolor), 6 SECONDS) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, remove_atom_colour), TEMPORARY_COLOUR_PRIORITY, newcolor), 6 SECONDS) /mob/living/proc/phasein(obj/effect/decal/cleanable/B) if(notransform) diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm index b87ebfc0a97d..80daa8de3e3c 100644 --- a/code/modules/mob/living/brain/brain.dm +++ b/code/modules/mob/living/brain/brain.dm @@ -28,13 +28,14 @@ stored_dna.species = new rando_race() /mob/living/brain/Destroy() - if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting. - if(stat!=DEAD) //If not dead. - death(1) //Brains can die again. AND THEY SHOULD AHA HA HA HA HA HA - if(mind) //You aren't allowed to return to brains that don't exist - mind.current = null - ghostize() //Ghostize checks for key so nothing else is necessary. + if(key) //If there is a mob connected to this thing. Have to check key twice to avoid false death reporting. + if(stat!=DEAD) //If not dead. + death(1) //Brains can die again. AND THEY SHOULD AHA HA HA HA HA HA + if(mind) //You aren't allowed to return to brains that don't exist + mind.set_current(null) + ghostize() //Ghostize checks for key so nothing else is necessary. container = null + QDEL_NULL(stored_dna) return ..() /mob/living/brain/ex_act() //you cant blow up brainmobs because it makes transfer_to() freak out when borgs blow up. diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index 3f55549c3b6f..a70520462f39 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -184,6 +184,9 @@ if(brainmob) QDEL_NULL(brainmob) QDEL_LIST(traumas) + + if(owner?.mind) //You aren't allowed to return to brains that don't exist + owner.mind.set_current(null) return ..() /obj/item/organ/brain/on_life() diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index 06bc7e0bc886..1cba16cc0a9a 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -58,7 +58,7 @@ GLOBAL_VAR(posibrain_notify_cooldown) next_ask = world.time + askDelay searching = TRUE update_appearance() - addtimer(CALLBACK(src, .proc/check_success), askDelay) + addtimer(CALLBACK(src, PROC_REF(check_success)), askDelay) /obj/item/mmi/posibrain/AltClick(mob/living/user) if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index 3c1bebae21ac..5163821a9573 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -37,7 +37,7 @@ if(!hit_atom) return if(!isliving(hit_atom)) - if(hit_atom.density && !hit_atom.CanPass(src)) + if(hit_atom.density && !hit_atom.CanPass(src, get_dir(hit_atom, src))) visible_message("[src] smashes into [hit_atom]!", "[src] smashes into [hit_atom]!") Paralyze(40, ignore_canstun = TRUE) return @@ -103,7 +103,7 @@ leaping = 1 weather_immunities += "lava" update_icons() - throw_at(leap_target, MAX_ALIEN_LEAP_DIST, 2, src, FALSE, TRUE, callback = CALLBACK(src, .proc/leap_end)) + throw_at(leap_target, MAX_ALIEN_LEAP_DIST, 2, src, FALSE, TRUE, callback = CALLBACK(src, PROC_REF(leap_end))) #undef MAX_ALIEN_LEAP_DIST diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index 33e8cb7ab708..8faa15b83929 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -137,7 +137,7 @@ recent_queen_death = 1 owner.throw_alert("alien_noqueen", /atom/movable/screen/alert/alien_vulnerable) - addtimer(CALLBACK(src, .proc/clear_queen_death), QUEEN_DEATH_DEBUFF_DURATION) + addtimer(CALLBACK(src, PROC_REF(clear_queen_death)), QUEEN_DEATH_DEBUFF_DURATION) /obj/item/organ/alien/hivenode/proc/clear_queen_death() 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 b2020b3b9c71..49ff1e88937b 100644 --- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm +++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm @@ -49,7 +49,7 @@ /obj/item/organ/body_egg/alien_embryo/egg_process() if(stage < 5 && prob(3)) stage++ - INVOKE_ASYNC(src, .proc/RefreshInfectionImage) + INVOKE_ASYNC(src, PROC_REF(RefreshInfectionImage)) if(stage == 5 && prob(50)) for(var/datum/surgery/S in owner.surgeries) diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index ee011b69715c..a9caeba37208 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -71,6 +71,10 @@ var/obj/item/clothing/mask/facehugger_item/hugger_item = BecomeItem() user.put_in_hands(hugger_item) +/mob/living/simple_animal/hostile/facehugger/Destroy() + mask_facehugger?.facehugger_mob = null + return ..() + /** * Attempts to have the facehugger couple with the given target. Checks all possibilities and plays them out accordingly. * @@ -202,7 +206,7 @@ if(!facehugger_mob.sterile) target.take_bodypart_damage(brute = facehugger_mob.melee_damage_upper) target.Unconscious(facehugger_mob.pregnation_time) - addtimer(CALLBACK(src, .proc/Impregnate, target), facehugger_mob.pregnation_time) + addtimer(CALLBACK(src, PROC_REF(Impregnate), target), facehugger_mob.pregnation_time) COOLDOWN_START(facehugger_mob, coupling_cooldown, facehugger_mob.couple_retry_time) /** diff --git a/code/modules/mob/living/carbon/alien/utilities/structures.dm b/code/modules/mob/living/carbon/alien/utilities/structures.dm index 6989434995f9..0ac30d207a41 100644 --- a/code/modules/mob/living/carbon/alien/utilities/structures.dm +++ b/code/modules/mob/living/carbon/alien/utilities/structures.dm @@ -195,7 +195,7 @@ check_weed = new(check_turf) //set the new one's parent node to our parent node check_weed.parent_node = parent_node - check_weed.RegisterSignal(parent_node, COMSIG_PARENT_QDELETING, .proc/after_parent_destroyed) + check_weed.RegisterSignal(parent_node, COMSIG_PARENT_QDELETING, PROC_REF(after_parent_destroyed)) /** * Called when the parent node is destroyed @@ -203,7 +203,7 @@ /obj/structure/alien/weeds/proc/after_parent_destroyed() if(!find_new_parent()) var/random_time = rand(2 SECONDS, 8 SECONDS) - addtimer(CALLBACK(src, .proc/do_qdel), random_time) + addtimer(CALLBACK(src, PROC_REF(do_qdel)), random_time) /** * Called when trying to find a new parent after our previous parent died @@ -218,7 +218,7 @@ continue parent_node = new_parent - RegisterSignal(parent_node, COMSIG_PARENT_QDELETING, .proc/after_parent_destroyed) + RegisterSignal(parent_node, COMSIG_PARENT_QDELETING, PROC_REF(after_parent_destroyed)) return parent_node return FALSE @@ -310,6 +310,8 @@ var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive layer = MOB_LAYER var/mob/living/simple_animal/hostile/facehugger/child + ///Proximity monitor associated with this atom, needed for proximity checks. + var/datum/proximity_monitor/proximity_monitor /obj/structure/alien/egg/Initialize(mapload) . = ..() @@ -317,7 +319,7 @@ if(status == GROWING || status == GROWN) child = new(src) if(status == GROWING) - addtimer(CALLBACK(src, .proc/Grow), GROWTH_TIME) + addtimer(CALLBACK(src, PROC_REF(Grow)), GROWTH_TIME) proximity_monitor = new(src, status == GROWN ? 1 : 0) if(status == BURST) obj_integrity = integrity_failure * max_integrity @@ -364,16 +366,16 @@ /obj/structure/alien/egg/proc/Grow() status = GROWN update_appearance() - proximity_monitor.SetRange(1) + proximity_monitor.set_range(1) //drops and kills the hugger if any is remaining /obj/structure/alien/egg/proc/Burst(kill = TRUE) if(status == GROWN || status == GROWING) - proximity_monitor.SetRange(0) status = BURST + proximity_monitor.set_range(0) update_appearance() flick("egg_opening", src) - addtimer(CALLBACK(src, .proc/finish_bursting, kill), 15) + addtimer(CALLBACK(src, PROC_REF(finish_bursting), kill), 15) /obj/structure/alien/egg/proc/finish_bursting(kill = TRUE) if(child) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index f6bf7d8d08ab..82c27e95174b 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -11,6 +11,7 @@ QDEL_LIST(hand_bodyparts) QDEL_LIST(internal_organs) + internal_organs_slot.Cut() QDEL_LIST(bodyparts) QDEL_LIST(implants) remove_from_all_data_huds() @@ -398,7 +399,7 @@ switch(rand(1,100)+modifier) //91-100=Nothing special happens if(-INFINITY to 0) //attack yourself - INVOKE_ASYNC(I, /obj/item.proc/attack, src, src) + INVOKE_ASYNC(I, TYPE_PROC_REF(/obj/item, attack), src, src) if(1 to 30) //throw it at yourself I.throw_impact(src) if(31 to 60) //Throw object in facing direction diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index a99baf1baf54..df9b5c22704d 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -248,7 +248,7 @@ target.visible_message("[name] kicks [target.name] onto [target.p_their()] side!", "You're kicked onto your side by [name]!", "You hear aggressive shuffling followed by a loud thud!", COMBAT_MESSAGE_RANGE, src) to_chat(src, "You kick [target.name] onto [target.p_their()] side!") - addtimer(CALLBACK(target, /mob/living/proc/SetKnockdown, 0), SHOVE_CHAIN_PARALYZE) + addtimer(CALLBACK(target, TYPE_PROC_REF(/mob/living, SetKnockdown), 0), SHOVE_CHAIN_PARALYZE) log_combat(src, target, "kicks", "onto their side (paralyzing)") if(shove_blocked && !target.is_shove_knockdown_blocked() && !target.buckled) @@ -304,7 +304,7 @@ if(target_held_item) target.visible_message("[target.name]'s grip on \the [target_held_item] loosens!", "Your grip on \the [target_held_item] loosens!", null, COMBAT_MESSAGE_RANGE) - addtimer(CALLBACK(target, /mob/living/carbon/proc/clear_shove_slowdown), SHOVE_SLOWDOWN_LENGTH) + addtimer(CALLBACK(target, TYPE_PROC_REF(/mob/living/carbon, clear_shove_slowdown)), SHOVE_SLOWDOWN_LENGTH) else if(target_held_item) target.dropItemToGround(target_held_item) knocked_item = TRUE @@ -374,7 +374,7 @@ jitteriness += 1000 do_jitter_animation(jitteriness) stuttering += 2 - addtimer(CALLBACK(src, .proc/secondary_shock, should_stun), 20) + addtimer(CALLBACK(src, PROC_REF(secondary_shock), should_stun), 20) return shock_damage ///Called slightly after electrocute act to reduce jittering and apply a secondary stun. diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 4da26d4406ca..2045bfe4aa18 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -25,12 +25,16 @@ update_damage_overlays() else //no bodypart, we deal damage with a more general method. adjustBruteLoss(damage_amount, forced = forced) + if(stat <= HARD_CRIT) + shake_animation(damage_amount) if(BURN) if(BP) if(BP.receive_damage(0, damage_amount, break_modifier)) update_damage_overlays() else adjustFireLoss(damage_amount, forced = forced) + if(stat <= HARD_CRIT) + shake_animation(damage_amount) if(TOX) adjustToxLoss(damage_amount, forced = forced) if(OXY) @@ -43,6 +47,8 @@ update_damage_overlays() else adjustStaminaLoss(damage_amount, forced = forced) + if(stat <= HARD_CRIT) + shake_animation(damage_amount) return TRUE diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm index 5062adbff8a1..8c1a36c2061b 100644 --- a/code/modules/mob/living/carbon/death.dm +++ b/code/modules/mob/living/carbon/death.dm @@ -6,7 +6,7 @@ losebreath = 0 if(!gibbed) - INVOKE_ASYNC(src, .proc/emote, "deathgasp") + INVOKE_ASYNC(src, PROC_REF(emote), "deathgasp") reagents.end_metabolization(src) . = ..() @@ -19,7 +19,7 @@ SSticker.mode.check_win() //Calls the rounds wincheck, mainly for wizard, malf, and changeling now /mob/living/carbon/proc/inflate_gib() // Plays an animation that makes mobs appear to inflate before finally gibbing - addtimer(CALLBACK(src, .proc/gib, null, null, TRUE, TRUE), 25) + addtimer(CALLBACK(src, PROC_REF(gib), null, null, TRUE, TRUE), 25) var/matrix/M = matrix() M.Scale(1.8, 1.2) animate(src, time = 40, transform = M, easing = SINE_EASING) diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index d38b04d9c714..55b01d4200e2 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -26,7 +26,7 @@ var/list/key_emotes = GLOB.emote_list["blink"] for(var/datum/emote/living/carbon/blink/living_emote in key_emotes) // The existing timer restarts if it's already running - blink_timer = addtimer(CALLBACK(living_emote, .proc/end_blink, living_user), BLINK_DURATION, TIMER_UNIQUE | TIMER_OVERRIDE) + blink_timer = addtimer(CALLBACK(living_emote, PROC_REF(end_blink), living_user), BLINK_DURATION, TIMER_UNIQUE | TIMER_OVERRIDE) /datum/emote/living/carbon/blink/proc/end_blink(mob/living/living_user) if(!QDELETED(living_user)) @@ -385,7 +385,7 @@ blown_kiss.original = target blown_kiss.fired_from = user blown_kiss.firer = user // don't hit ourself that would be really annoying - blown_kiss.impacted = list(user = TRUE) // just to make sure we don't hit the wearer + LAZYSET(blown_kiss.impacted, user, TRUE) // just to make sure we don't hit the wearer blown_kiss.preparePixelProjectile(target, user) blown_kiss.fire() qdel(src) @@ -411,7 +411,7 @@ blown_kiss.original = taker blown_kiss.fired_from = offerer blown_kiss.firer = offerer // don't hit ourself that would be really annoying - blown_kiss.impacted = list(offerer = TRUE) // just to make sure we don't hit the wearer + LAZYSET(blown_kiss.impacted, offerer, TRUE) // just to make sure we don't hit the wearer blown_kiss.preparePixelProjectile(taker, offerer) blown_kiss.suppressed = SUPPRESSED_VERY // this also means it's a direct offer blown_kiss.fire() @@ -429,7 +429,7 @@ icon = 'icons/mob/animal.dmi' icon_state = "heart" hitsound = 'sound/effects/kiss.ogg' - hitsound_wall = 'sound/effects/kiss.ogg' + hitsound_non_living = 'sound/effects/kiss.ogg' pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE speed = 1.6 damage_type = BRUTE @@ -480,7 +480,7 @@ if(2) other_msg = "stammers softly for a moment before choking on something!" self_msg = "You feel your tongue disappear down your throat as you fight to remember how to make words!" - addtimer(CALLBACK(living_target, /atom/movable.proc/say, pick("Uhhh...", "O-oh, uhm...", "I- uhhhhh??", "You too!!", "What?")), rand(0.5 SECONDS, 1.5 SECONDS)) + addtimer(CALLBACK(living_target, TYPE_PROC_REF(/atom/movable, say), pick("Uhhh...", "O-oh, uhm...", "I- uhhhhh??", "You too!!", "What?")), rand(0.5 SECONDS, 1.5 SECONDS)) living_target.stuttering += rand(5, 15) if(3) other_msg = "locks up with a stunned look on [living_target.p_their()] face, staring at [firer ? firer : "the ceiling"]!" @@ -528,7 +528,7 @@ var/mob/living/owner = loc if(!istype(owner)) return - RegisterSignal(owner, COMSIG_PARENT_EXAMINE, .proc/ownerExamined) + RegisterSignal(owner, COMSIG_PARENT_EXAMINE, PROC_REF(ownerExamined)) /obj/item/circlegame/Destroy() var/mob/owner = loc @@ -543,7 +543,7 @@ if(!istype(sucker) || !in_range(owner, sucker)) return - addtimer(CALLBACK(src, .proc/waitASecond, owner, sucker), 4) + addtimer(CALLBACK(src, PROC_REF(waitASecond), owner, sucker), 4) /// Stage 2: Fear sets in /obj/item/circlegame/proc/waitASecond(mob/living/owner, mob/living/sucker) @@ -552,10 +552,10 @@ if(owner == sucker) // big mood to_chat(owner, "Wait a second... you just looked at your own [src.name]!") - addtimer(CALLBACK(src, .proc/selfGottem, owner), 10) + addtimer(CALLBACK(src, PROC_REF(selfGottem), owner), 10) else to_chat(sucker, "Wait a second... was that a-") - addtimer(CALLBACK(src, .proc/GOTTEM, owner, sucker), 6) + addtimer(CALLBACK(src, PROC_REF(GOTTEM), owner, sucker), 6) /// Stage 3A: We face our own failures /obj/item/circlegame/proc/selfGottem(mob/living/owner) diff --git a/code/modules/mob/living/carbon/hologram/em_holopads.dm b/code/modules/mob/living/carbon/hologram/em_holopads.dm index 96947ef44326..5e0462d6f3cc 100644 --- a/code/modules/mob/living/carbon/hologram/em_holopads.dm +++ b/code/modules/mob/living/carbon/hologram/em_holopads.dm @@ -99,7 +99,7 @@ em_starting = TRUE icon_state = "holopad_ringing" calling = TRUE - addtimer(CALLBACK(src, .proc/stop_starting), 300) + addtimer(CALLBACK(src, PROC_REF(stop_starting)), 300) else QDEL_NULL(em) em_cooldown = TRUE diff --git a/code/modules/mob/living/carbon/hologram/hologram.dm b/code/modules/mob/living/carbon/hologram/hologram.dm index 9479a2357c36..4283e2304fed 100644 --- a/code/modules/mob/living/carbon/hologram/hologram.dm +++ b/code/modules/mob/living/carbon/hologram/hologram.dm @@ -51,7 +51,7 @@ O.r_hand = null O.l_hand = null //It would be confusing if, say, the medical hologram had a fake medkit - INVOKE_ASYNC(src, .proc/icon_setup, O, _prefs) + INVOKE_ASYNC(src, PROC_REF(icon_setup), O, _prefs) access_card = new /obj/item/card/id(src) access_card?.access |= job_type.access //dunno how the access card would delete itself before then, but this is DM, after all @@ -159,7 +159,7 @@ /mob/living/simple_animal/hologram/proc/disco() color = pick(HOLOGRAM_CYCLE_COLORS) alpha = rand(75, 180) - addtimer(CALLBACK(src, .proc/disco, src), 5) //Call ourselves every 0.5 seconds to change color + addtimer(CALLBACK(src, PROC_REF(disco), src), 5) //Call ourselves every 0.5 seconds to change color /mob/living/simple_animal/hologram/med_hud_set_health() var/image/holder = hud_list[DIAG_HUD] @@ -225,7 +225,7 @@ var/formatted_laws = "Hologram law:\n" formatted_laws += flavortext ? "[flavortext]" : "No laws set!" //If flavortext set, show it, else show "No laws set!" formatted_laws += "\nEmergency holograms are ghost spawns that can majorly affect the round due to their versatility. Act with common sense.\n"+\ - "Using the role to grief or metagame against your set laws will be met with a silicon ban.\n" + "Using the role to grief or metagame against your set laws will be met with a silicon ban.\n" var/policy = get_policy(ROLE_POSIBRAIN) //if we need something different than the use of posibrains for policy and bans, ping mark and he'll add a new define for it if(policy) diff --git a/code/modules/mob/living/carbon/human/consistent_human.dm b/code/modules/mob/living/carbon/human/consistent_human.dm index c28328fde590..c35d8a71759e 100644 --- a/code/modules/mob/living/carbon/human/consistent_human.dm +++ b/code/modules/mob/living/carbon/human/consistent_human.dm @@ -24,7 +24,6 @@ dna.features["moth_fluff"] = GLOB.moth_fluff_list[seed % length(GLOB.moth_fluff_list) + 1] dna.features["spider_legs"] = GLOB.spider_legs_list[seed % length(GLOB.spider_legs_list) + 1] dna.features["spider_spinneret"] = GLOB.spider_spinneret_list[seed % length(GLOB.spider_spinneret_list) + 1] - dna.features["spider_mandibles"] = GLOB.spider_mandibles_list[seed % length(GLOB.spider_mandibles_list) + 1] dna.features["squid_face"] = GLOB.squid_face_list[seed % length(GLOB.squid_face_list) + 1] dna.features["kepori_feathers"] = GLOB.kepori_feathers_list[seed % length(GLOB.kepori_feathers_list) + 1] dna.features["kepori_body_feathers"] = GLOB.kepori_body_feathers_list[seed % length(GLOB.kepori_body_feathers_list) + 1] diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 822a49c65e65..55adc5bd5d17 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -51,7 +51,6 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift) jitteriness = 0 if(client && !(client in GLOB.dead_players_during_shift)) GLOB.dead_players_during_shift += client - GLOB.deaths_during_shift++ if(ismecha(loc)) var/obj/mecha/M = loc if(M.occupant == src) @@ -64,7 +63,7 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift) SSblackbox.ReportDeath(src) log_message("has died (BRUTE: [src.getBruteLoss()], BURN: [src.getFireLoss()], TOX: [src.getToxLoss()], OXY: [src.getOxyLoss()], CLONE: [src.getCloneLoss()])", LOG_ATTACK) if(is_devil(src)) - INVOKE_ASYNC(is_devil(src), /datum/antagonist/devil.proc/beginResurrectionCheck, src) + INVOKE_ASYNC(is_devil(src), TYPE_PROC_REF(/datum/antagonist/devil, beginResurrectionCheck), src) to_chat(src, "You have died. Barring complete bodyloss, you can in most cases be revived by other players. If you do not wish to be brought back, use the \"Do Not Resuscitate\" verb in the ghost tab.") diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 42dd3f9ba1e3..a260f164829f 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -1,6 +1,7 @@ /mob/living/carbon/human/examine(mob/user) //this is very slightly better than it was because you can use it more places. still can't do \his[src] though. var/t_He = p_they(TRUE) + var/t_he = p_they() var/t_His = p_their(TRUE) var/t_his = p_their() var/t_him = p_them() @@ -126,7 +127,7 @@ . += "[t_His] soul seems to have been ripped out of [t_his] body. Revival is impossible." . += "" if(getorgan(/obj/item/organ/brain) && !key && !get_ghost(FALSE, TRUE)) - . += "[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_his] soul has departed..." + . += "[t_He] [t_is] limp and unresponsive; there are no signs of life and [t_he] won't be coming back..." else . += "[t_He] [t_is] limp and unresponsive; there are no signs of life..." diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d1ec98b84d4b..8c72925e7c96 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -13,7 +13,7 @@ prepare_huds() //Prevents a nasty runtime on human init if(dna.species) - INVOKE_ASYNC(src, .proc/set_species, dna.species.type) //This generates new limbs based on the species, beware. + INVOKE_ASYNC(src, PROC_REF(set_species), dna.species.type) //This generates new limbs based on the species, beware. //initialise organs create_internal_organs() //most of it is done in set_species now, this is only for parent call @@ -21,7 +21,7 @@ . = ..() - RegisterSignal(src, COMSIG_COMPONENT_CLEAN_FACE_ACT, .proc/clean_face) + RegisterSignal(src, COMSIG_COMPONENT_CLEAN_FACE_ACT, PROC_REF(clean_face)) AddComponent(/datum/component/personal_crafting) AddComponent(/datum/component/footstep, FOOTSTEP_MOB_HUMAN, 1, -6) AddComponent(/datum/component/bloodysoles/feet) @@ -40,6 +40,7 @@ /mob/living/carbon/human/Destroy() QDEL_NULL(physiology) + QDEL_LIST(bioware) GLOB.human_list -= src return ..() @@ -843,7 +844,7 @@ electrocution_skeleton_anim = mutable_appearance(icon, "electrocuted_base") electrocution_skeleton_anim.appearance_flags |= RESET_COLOR|KEEP_APART add_overlay(electrocution_skeleton_anim) - addtimer(CALLBACK(src, .proc/end_electrocution_animation, electrocution_skeleton_anim), anim_duration) + addtimer(CALLBACK(src, PROC_REF(end_electrocution_animation), electrocution_skeleton_anim), anim_duration) else //or just do a generic animation flick_overlay_view(image(icon,src,"electrocuted_generic",ABOVE_MOB_LAYER), src, anim_duration) @@ -1318,7 +1319,7 @@ /mob/living/carbon/human/species/Initialize() . = ..() - INVOKE_ASYNC(src, .proc/set_species, race) + INVOKE_ASYNC(src, PROC_REF(set_species), race) /mob/living/carbon/human/species/abductor race = /datum/species/abductor @@ -1412,13 +1413,6 @@ /mob/living/carbon/human/species/golem/snow race = /datum/species/golem/snow - -/mob/living/carbon/human/species/golem/capitalist - race = /datum/species/golem/capitalist - -/mob/living/carbon/human/species/golem/soviet - race = /datum/species/golem/soviet - /mob/living/carbon/human/species/jelly race = /datum/species/jelly diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 25651680b46d..fb2071302cb1 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -141,7 +141,7 @@ if(istype(AM, /obj/item)) I = AM throwpower = I.throwforce - if(I.thrownby == src) //No throwing stuff at yourself to trigger hit reactions + if(I.thrownby == WEAKREF(src)) //No throwing stuff at yourself to trigger hit reactions return ..() if(check_shields(AM, throwpower, "\the [AM.name]", THROWN_PROJECTILE_ATTACK)) hitpush = FALSE diff --git a/code/modules/mob/living/carbon/human/human_say.dm b/code/modules/mob/living/carbon/human/human_say.dm index c54c453dc15f..551e60501940 100644 --- a/code/modules/mob/living/carbon/human/human_say.dm +++ b/code/modules/mob/living/carbon/human/human_say.dm @@ -60,7 +60,7 @@ if(dongle.translate_binary) return TRUE -/mob/living/carbon/human/radio(message, list/message_mods = list(), list/spans, language) //Poly has a copy of this, lazy bastard +/mob/living/carbon/human/radio(message, list/message_mods = list(), list/spans, language) //Polly has a copy of this, lazy bastard . = ..() if(. != FALSE) return . diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 459de6c78c0d..eab67e22a6be 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -978,8 +978,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) S = GLOB.spider_legs_list[H.dna.features["spider_legs"]] if("spider_spinneret") S = GLOB.spider_spinneret_list[H.dna.features["spider_spinneret"]] - if ("spider_mandibles") - S = GLOB.spider_mandibles_list[H.dna.features["spider_mandibles"]] if("kepori_body_feathers") S = GLOB.kepori_body_feathers_list[H.dna.features["kepori_body_feathers"]] if("kepori_tail_feathers") @@ -1054,17 +1052,17 @@ GLOBAL_LIST_EMPTY(roundstart_races) accessory_overlay.color = forced_colour standing += accessory_overlay - if(S.hasinner) - var/mutable_appearance/inner_accessory_overlay = mutable_appearance(S.icon, layer = -layer) + if(S.secondary_color) + var/mutable_appearance/secondary_color_overlay = mutable_appearance(S.icon, layer = -layer) if(S.gender_specific) - inner_accessory_overlay.icon_state = "[g]_[bodypart]inner_[S.icon_state]_[layertext]" + secondary_color_overlay.icon_state = "[g]_[bodypart]_secondary_[S.icon_state]_[layertext]" else - inner_accessory_overlay.icon_state = "m_[bodypart]inner_[S.icon_state]_[layertext]" + secondary_color_overlay.icon_state = "m_[bodypart]_secondary_[S.icon_state]_[layertext]" if(S.center) - inner_accessory_overlay = center_image(inner_accessory_overlay, S.dimension_x, S.dimension_y) - inner_accessory_overlay.color = "#[H.dna.features["mcolor2"]]" - standing += inner_accessory_overlay + secondary_color_overlay = center_image(secondary_color_overlay, S.dimension_x, S.dimension_y) + secondary_color_overlay.color = "#[H.dna.features["mcolor2"]]" + standing += secondary_color_overlay H.overlays_standing[layer] = standing.Copy() standing = list() @@ -1467,7 +1465,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) if(radiation > RAD_MOB_HAIRLOSS) if(prob(15) && !(H.hairstyle == "Bald") && (HAIR in species_traits)) to_chat(H, "Your hair starts to fall out in clumps...") - addtimer(CALLBACK(src, .proc/go_bald, H), 50) + addtimer(CALLBACK(src, PROC_REF(go_bald), H), 50) /datum/species/proc/go_bald(mob/living/carbon/human/H) if(QDELETED(H)) //may be called from a timer @@ -1713,11 +1711,6 @@ GLOBAL_LIST_EMPTY(roundstart_races) else H.adjustOrganLoss(ORGAN_SLOT_BRAIN, I.force * 0.2) - if(H.mind && H.stat == CONSCIOUS && H != user && prob(I.force + ((100 - H.health) * 0.5))) // rev deconversion through blunt trauma. - var/datum/antagonist/rev/rev = H.mind.has_antag_datum(/datum/antagonist/rev) - if(rev) - rev.remove_revolutionary(FALSE, user) - if(bloody) //Apply blood if(H.wear_mask) H.wear_mask.add_mob_blood(H) @@ -1773,6 +1766,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.update_damage_overlays() else//no bodypart, we deal damage with a more general method. H.adjustBruteLoss(damage_amount) + if(H.stat <= HARD_CRIT) + H.shake_animation(damage_amount) if(BURN) H.damageoverlaytemp = 20 var/damage_amount = forced ? damage : damage * hit_percent * burnmod * H.physiology.burn_mod @@ -1781,6 +1776,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.update_damage_overlays() else H.adjustFireLoss(damage_amount) + if(H.stat <= HARD_CRIT) + H.shake_animation(damage_amount) if(TOX) var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.tox_mod H.adjustToxLoss(damage_amount) @@ -1797,6 +1794,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) H.update_stamina() else H.adjustStaminaLoss(damage_amount) + if(H.stat <= HARD_CRIT) + H.shake_animation(damage_amount) if(BRAIN) var/damage_amount = forced ? damage : damage * hit_percent * H.physiology.brain_mod H.adjustOrganLoss(ORGAN_SLOT_BRAIN, damage_amount) @@ -2238,7 +2237,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) buckled_obj.unbuckle_mob(H) step(buckled_obj, olddir) else - new /datum/forced_movement(H, get_ranged_target_turf(H, olddir, 4), 1, FALSE, CALLBACK(H, /mob/living/carbon/.proc/spin, 1, 1)) + new /datum/forced_movement(H, get_ranged_target_turf(H, olddir, 4), 1, FALSE, CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon, spin), 1, 1)) return TRUE //UNSAFE PROC, should only be called through the Activate or other sources that check for CanFly diff --git a/code/modules/mob/living/carbon/human/species_types/IPC.dm b/code/modules/mob/living/carbon/human/species_types/IPC.dm index 38eeeb9d9c18..dfa12f329054 100644 --- a/code/modules/mob/living/carbon/human/species_types/IPC.dm +++ b/code/modules/mob/living/carbon/human/species_types/IPC.dm @@ -86,7 +86,7 @@ saved_screen = C.dna.features["ipc_screen"] C.dna.features["ipc_screen"] = "BSOD" C.update_body() - addtimer(CALLBACK(src, .proc/post_death, C), 5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(post_death), C), 5 SECONDS) /datum/species/ipc/proc/post_death(mob/living/carbon/C) if(C.stat < DEAD) @@ -218,7 +218,7 @@ H.dna.features["ipc_screen"] = "BSOD" H.update_body() H.say("Reactivating [pick("core systems", "central subroutines", "key functions")]...") - addtimer(CALLBACK(src, .proc/post_revival, H), 6 SECONDS) + addtimer(CALLBACK(src, PROC_REF(post_revival), H), 6 SECONDS) /datum/species/ipc/proc/post_revival(mob/living/carbon/human/H) if(H.stat == DEAD) diff --git a/code/modules/mob/living/carbon/human/species_types/dullahan.dm b/code/modules/mob/living/carbon/human/species_types/dullahan.dm index 55217a814d35..26ed84073c99 100644 --- a/code/modules/mob/living/carbon/human/species_types/dullahan.dm +++ b/code/modules/mob/living/carbon/human/species_types/dullahan.dm @@ -17,12 +17,6 @@ var/obj/item/dullahan_relay/myhead - -/datum/species/dullahan/check_roundstart_eligible() - if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) - return TRUE - return FALSE - /datum/species/dullahan/on_species_gain(mob/living/carbon/human/H, datum/species/old_species) . = ..() H.lose_hearing_sensitivity(ORGAN_TRAIT) @@ -122,10 +116,10 @@ return INITIALIZE_HINT_QDEL owner = new_owner START_PROCESSING(SSobj, src) - RegisterSignal(owner, COMSIG_CLICK_SHIFT, .proc/examinate_check) - RegisterSignal(src, COMSIG_ATOM_HEARER_IN_VIEW, .proc/include_owner) - RegisterSignal(owner, COMSIG_LIVING_REGENERATE_LIMBS, .proc/unlist_head) - RegisterSignal(owner, COMSIG_LIVING_REVIVE, .proc/retrieve_head) + RegisterSignal(owner, COMSIG_CLICK_SHIFT, PROC_REF(examinate_check)) + RegisterSignal(src, COMSIG_ATOM_HEARER_IN_VIEW, PROC_REF(include_owner)) + RegisterSignal(owner, COMSIG_LIVING_REGENERATE_LIMBS, PROC_REF(unlist_head)) + RegisterSignal(owner, COMSIG_LIVING_REVIVE, PROC_REF(retrieve_head)) become_hearing_sensitive(ROUNDSTART_TRAIT) /obj/item/dullahan_relay/process() diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index 2a0e8a2d62fe..a2ff92508d61 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -58,8 +58,8 @@ return var/mob/living/carbon/human/ethereal = C default_color = "#[ethereal.dna.features["ethcolor"]]" - RegisterSignal(ethereal, COMSIG_ATOM_EMAG_ACT, .proc/on_emag_act) - RegisterSignal(ethereal, COMSIG_ATOM_EMP_ACT, .proc/on_emp_act) + RegisterSignal(ethereal, COMSIG_ATOM_EMAG_ACT, PROC_REF(on_emag_act)) + RegisterSignal(ethereal, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp_act)) ethereal_light = ethereal.mob_light() spec_updatehealth(ethereal) @@ -143,9 +143,9 @@ to_chat(H, "You feel the light of your body leave you.") switch(severity) if(EMP_LIGHT) - addtimer(CALLBACK(src, .proc/stop_emp, H), 10 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //We're out for 10 seconds + addtimer(CALLBACK(src, PROC_REF(stop_emp), H), 10 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //We're out for 10 seconds if(EMP_HEAVY) - addtimer(CALLBACK(src, .proc/stop_emp, H), 20 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //We're out for 20 seconds + addtimer(CALLBACK(src, PROC_REF(stop_emp), H), 20 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //We're out for 20 seconds /datum/species/ethereal/proc/on_emag_act(mob/living/carbon/human/H, mob/user) if(emag_effect) @@ -155,7 +155,7 @@ to_chat(user, "You tap [H] on the back with your card.") H.visible_message("[H] starts flickering in an array of colors!") handle_emag(H) - addtimer(CALLBACK(src, .proc/stop_emag, H), 30 SECONDS) //Disco mode for 30 seconds! This doesn't affect the ethereal at all besides either annoying some players, or making someone look badass. + addtimer(CALLBACK(src, PROC_REF(stop_emag), H), 30 SECONDS) //Disco mode for 30 seconds! This doesn't affect the ethereal at all besides either annoying some players, or making someone look badass. /datum/species/ethereal/spec_life(mob/living/carbon/human/H) .=..() @@ -171,7 +171,7 @@ return current_color = pick(ETHEREAL_EMAG_COLORS) spec_updatehealth(H) - addtimer(CALLBACK(src, .proc/handle_emag, H), 5) //Call ourselves every 0.5 seconds to change color + addtimer(CALLBACK(src, PROC_REF(handle_emag), H), 5) //Call ourselves every 0.5 seconds to change color /datum/species/ethereal/proc/stop_emag(mob/living/carbon/human/H) emag_effect = FALSE diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index c7486730d7bb..af19f1316ce2 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -8,7 +8,7 @@ mutantstomach = /obj/item/organ/stomach/fly meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/fly disliked_food = null - liked_food = GROSS + liked_food = GORE | RAW // Sure, the raw... the bloody... but I think stuff GROSS, like baseball burgers, are liked changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT species_language_holder = /datum/language_holder/fly diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 5f4a7d708e80..380d91aebbe6 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -54,6 +54,7 @@ /datum/species/golem/random name = "Random Golem" + id = "random golem" changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN var/static/list/random_golem_types @@ -445,7 +446,7 @@ var/obj/item/I if(istype(AM, /obj/item)) I = AM - if(I.thrownby == H) //No throwing stuff at yourself to trigger the teleport + if(I.thrownby == WEAKREF(H)) //No throwing stuff at yourself to trigger the teleport return 0 else reactive_teleport(H) @@ -495,7 +496,7 @@ var/mob/living/carbon/human/H = owner H.visible_message("[H] starts vibrating!", "You start charging your bluespace core...") playsound(get_turf(H), 'sound/weapons/flash.ogg', 25, TRUE) - addtimer(CALLBACK(src, .proc/teleport, H), 15) + addtimer(CALLBACK(src, PROC_REF(teleport), H), 15) /datum/action/innate/unstable_teleport/proc/teleport(mob/living/carbon/human/H) H.visible_message("[H] disappears in a shower of sparks!", "You teleport!") @@ -507,7 +508,7 @@ last_teleport = world.time UpdateButtonIcon() //action icon looks unavailable //action icon looks available again - addtimer(CALLBACK(src, .proc/UpdateButtonIcon), cooldown + 5) + addtimer(CALLBACK(src, PROC_REF(UpdateButtonIcon)), cooldown + 5) //honk @@ -543,7 +544,7 @@ ..() last_banana = world.time last_honk = world.time - RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech)) /datum/species/golem/bananium/on_species_loss(mob/living/carbon/C) . = ..() @@ -577,7 +578,7 @@ var/obj/item/I if(istype(AM, /obj/item)) I = AM - if(I.thrownby == H) //No throwing stuff at yourself to make bananas + if(I.thrownby == WEAKREF(H)) //No throwing stuff at yourself to make bananas return 0 else new/obj/item/grown/bananapeel/specialpeel(get_turf(H)) @@ -695,11 +696,6 @@ REMOVE_TRAIT(C, TRAIT_HOLY, SPECIES_TRAIT) ..() -/datum/species/golem/cloth/check_roundstart_eligible() - if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) - return TRUE - return ..() - /datum/species/golem/cloth/random_name(gender,unique,lastname) var/pharaoh_name = pick("Neferkare", "Hudjefa", "Khufu", "Mentuhotep", "Ahmose", "Amenhotep", "Thutmose", "Hatshepsut", "Tutankhamun", "Ramses", "Seti", \ "Merenptah", "Djer", "Semerkhet", "Nynetjer", "Khafre", "Pepi", "Intef", "Ay") //yes, Ay was an actual pharaoh @@ -742,7 +738,7 @@ H.forceMove(src) cloth_golem = H to_chat(cloth_golem, "You start gathering your life energy, preparing to rise again...") - addtimer(CALLBACK(src, .proc/revive), revive_time) + addtimer(CALLBACK(src, PROC_REF(revive)), revive_time) else return INITIALIZE_HINT_QDEL @@ -1048,7 +1044,7 @@ badtime.appearance_flags = RESET_COLOR H.overlays_standing[FIRE_LAYER+0.5] = badtime H.apply_overlay(FIRE_LAYER+0.5) - addtimer(CALLBACK(H, /mob/living/carbon/.proc/remove_overlay, FIRE_LAYER+0.5), 25) + addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon, remove_overlay), FIRE_LAYER+0.5), 25) else playsound(get_turf(owner),'sound/magic/RATTLEMEBONES.ogg', 100) for(var/mob/living/L in orange(7, get_turf(owner))) @@ -1115,89 +1111,3 @@ charge_max = 15 action_icon = 'icons/obj/toy.dmi' action_icon_state = "snowball" - -/datum/species/golem/capitalist - name = "Capitalist Golem" - id = "capitalist golem" - prefix = "Capitalist" - attack_verb = "monopoliz" - special_names = list("John D. Rockefeller","Rich Uncle Pennybags","Commodore Vanderbilt","Entrepreneur","Mr. Moneybags", "Adam Smith") - species_traits = list(NOBLOOD,NO_UNDERWEAR,NOEYESPRITES) - fixed_mut_color = null - inherent_traits = list(TRAIT_NOFLASH,TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_RADIMMUNE,TRAIT_GENELESS,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) - info_text = "As a Capitalist Golem, your fist spreads the powerful industrializing light of capitalism." - changesource_flags = MIRROR_BADMIN - random_eligible = FALSE - - var/last_cash = 0 - var/cash_cooldown = 100 - -/datum/species/golem/capitalist/on_species_gain(mob/living/carbon/C, datum/species/old_species) - . = ..() - C.equip_to_slot_or_del(new /obj/item/clothing/head/that (), ITEM_SLOT_HEAD) - C.equip_to_slot_or_del(new /obj/item/clothing/glasses/monocle (), ITEM_SLOT_EYES) - C.revive(full_heal = TRUE, admin_revive = FALSE) - - SEND_SOUND(C, sound('sound/misc/capitialism.ogg')) - C.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock ()) - RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech) - -/datum/species/golem/capitalist/on_species_loss(mob/living/carbon/C) - . = ..() - UnregisterSignal(C, COMSIG_MOB_SAY) - for(var/obj/effect/proc_holder/spell/aoe_turf/knock/spell in C.mob_spell_list) - C.RemoveSpell(spell) - -/datum/species/golem/capitalist/spec_unarmedattacked(mob/living/carbon/human/user, mob/living/carbon/human/target) - ..() - if(isgolem(target)) - return - if(target.nutrition >= NUTRITION_LEVEL_FAT) - target.set_species(/datum/species/golem/capitalist) - return - target.adjust_nutrition(40) - -/datum/species/golem/capitalist/proc/handle_speech(datum/source, list/speech_args) - playsound(source, 'sound/misc/mymoney.ogg', 25, FALSE) - speech_args[SPEECH_MESSAGE] = "Hello, I like money!" - -/datum/species/golem/soviet - name = "Soviet Golem" - id = "soviet golem" - prefix = "Comrade" - attack_verb = "nationaliz" - special_names = list("Stalin","Lenin","Trotsky","Marx","Comrade") //comrade comrade - species_traits = list(NOBLOOD,NO_UNDERWEAR,NOEYESPRITES) - fixed_mut_color = null - inherent_traits = list(TRAIT_NOFLASH, TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_NOFIRE,TRAIT_RADIMMUNE,TRAIT_GENELESS,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER) - info_text = "As a Soviet Golem, your fist spreads the bright soviet light of communism." - changesource_flags = MIRROR_BADMIN - random_eligible = FALSE - -/datum/species/golem/soviet/on_species_gain(mob/living/carbon/C, datum/species/old_species) - . = ..() - C.equip_to_slot_or_del(new /obj/item/clothing/head/trapper (), ITEM_SLOT_HEAD) - C.revive(full_heal = TRUE, admin_revive = FALSE) - - SEND_SOUND(C, sound('sound/misc/Russian_Anthem_chorus.ogg')) - C.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock ()) - RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech) - -/datum/species/golem/soviet/on_species_loss(mob/living/carbon/C) - . = ..() - for(var/obj/effect/proc_holder/spell/aoe_turf/knock/spell in C.mob_spell_list) - C.RemoveSpell(spell) - UnregisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech) - -/datum/species/golem/soviet/spec_unarmedattacked(mob/living/carbon/human/user, mob/living/carbon/human/target) - ..() - if(isgolem(target)) - return - if(target.nutrition <= NUTRITION_LEVEL_STARVING) - target.set_species(/datum/species/golem/soviet) - return - target.adjust_nutrition(-40) - -/datum/species/golem/soviet/proc/handle_speech(datum/source, list/speech_args) - playsound(source, 'sound/misc/Cyka Blyat.ogg', 25, FALSE) - speech_args[SPEECH_MESSAGE] = "Cyka Blyat" diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index dc671c736e69..885be6f5886a 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -7,7 +7,7 @@ mutant_bodyparts = list("ears", "tail_human") use_skintones = TRUE skinned_type = /obj/item/stack/sheet/animalhide/human - disliked_food = GROSS | RAW + disliked_food = GROSS | RAW | CLOTH liked_food = JUNKFOOD | FRIED | SUGAR changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT loreblurb = "Mostly hairless mammalians. Their home system, Sol, lies in a sort of \"bluespace dead-zone\" that blocks anything from entering or exiting Sol's dead-zone through bluespace without a relay. While it leaves Sol extremely well-defended, it meant that they went unnoticed and uncontacted until they were themselves able to breach it." diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 084113dd1b7f..eb78ef131644 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -14,7 +14,7 @@ damage_overlay_type = "" var/datum/action/innate/regenerate_limbs/regenerate_limbs var/datum/action/innate/humanoid_customization/humanoid_customization - liked_food = MEAT + liked_food = MEAT | GORE // Spliced with humans, they still never lost their carnivorous drive disliked_food = NONE toxic_food = NONE coldmod = 6 // = 3x cold damage @@ -525,18 +525,25 @@ examine_limb_id = SPECIES_JELLYPERSON +//Species datums don't normally implement destroy, but JELLIES SUCK ASS OUT OF A STEEL STRAW +/datum/species/jelly/luminescent/Destroy(force, ...) + current_extract = null + QDEL_NULL(glow) + QDEL_NULL(integrate_extract) + QDEL_NULL(extract_major) + QDEL_NULL(extract_minor) + return ..() + + /datum/species/jelly/luminescent/on_species_loss(mob/living/carbon/C) ..() if(current_extract) current_extract.forceMove(C.drop_location()) current_extract = null - qdel(glow) - if(integrate_extract) - integrate_extract.Remove(C) - if(extract_minor) - extract_minor.Remove(C) - if(extract_major) - extract_major.Remove(C) + QDEL_NULL(glow) + QDEL_NULL(integrate_extract) + QDEL_NULL(extract_major) + QDEL_NULL(extract_minor) /datum/species/jelly/luminescent/on_species_gain(mob/living/carbon/C, datum/species/old_species) ..() @@ -558,7 +565,7 @@ /datum/species/jelly/luminescent/proc/update_glow(mob/living/carbon/C, intensity) if(intensity) glow_intensity = intensity - glow.set_light(glow_intensity, glow_intensity, C.dna.features["mcolor"]) + glow.set_light_range_power_color(glow_intensity, glow_intensity, C.dna.features["mcolor"]) /obj/effect/dummy/luminescent_glow name = "luminescent glow" @@ -582,13 +589,9 @@ button_icon_state = "slimeconsume" icon_icon = 'icons/mob/actions/actions_slime.dmi' background_icon_state = "bg_alien" - var/datum/species/jelly/luminescent/species - -/datum/action/innate/integrate_extract/New(_species) - ..() - species = _species /datum/action/innate/integrate_extract/proc/update_name() + var/datum/species/jelly/luminescent/species = target if(!species || !species.current_extract) name = "Integrate Extract" desc = "Eat a slime extract to use its properties." @@ -597,6 +600,7 @@ desc = "Eject your current slime extract." /datum/action/innate/integrate_extract/UpdateButtonIcon(status_only, force) + var/datum/species/jelly/luminescent/species = target if(!species || !species.current_extract) button_icon_state = "slimeconsume" else @@ -605,11 +609,13 @@ /datum/action/innate/integrate_extract/ApplyIcon(atom/movable/screen/movable/action_button/current_button, force) ..(current_button, TRUE) - if(species && species.current_extract) + var/datum/species/jelly/luminescent/species = target + if(species?.current_extract) current_button.add_overlay(mutable_appearance(species.current_extract.icon, species.current_extract.icon_state)) /datum/action/innate/integrate_extract/Activate() var/mob/living/carbon/human/H = owner + var/datum/species/jelly/luminescent/species = target if(!is_species(H, /datum/species/jelly/luminescent) || !species) return CHECK_DNA_AND_SPECIES(H) @@ -645,25 +651,23 @@ icon_icon = 'icons/mob/actions/actions_slime.dmi' background_icon_state = "bg_alien" var/activation_type = SLIME_ACTIVATE_MINOR - var/datum/species/jelly/luminescent/species - -/datum/action/innate/use_extract/New(_species) - ..() - species = _species /datum/action/innate/use_extract/IsAvailable() if(..()) + var/datum/species/jelly/luminescent/species = target if(species && species.current_extract && (world.time > species.extract_cooldown)) return TRUE return FALSE /datum/action/innate/use_extract/ApplyIcon(atom/movable/screen/movable/action_button/current_button, force) ..(current_button, TRUE) - if(species && species.current_extract) + var/datum/species/jelly/luminescent/species = owner + if(species?.current_extract) current_button.add_overlay(mutable_appearance(species.current_extract.icon, species.current_extract.icon_state)) /datum/action/innate/use_extract/Activate() var/mob/living/carbon/human/H = owner + var/datum/species/jelly/luminescent/species = owner if(!is_species(H, /datum/species/jelly/luminescent) || !species) return CHECK_DNA_AND_SPECIES(H) @@ -690,24 +694,35 @@ var/datum/action/innate/link_minds/link_minds var/list/mob/living/linked_mobs = list() var/list/datum/action/innate/linked_speech/linked_actions = list() - var/mob/living/carbon/human/slimelink_owner + var/datum/weakref/slimelink_owner var/current_link_id = 0 examine_limb_id = SPECIES_JELLYPERSON +//Species datums don't normally implement destroy, but JELLIES SUCK ASS OUT OF A STEEL STRAW +/datum/species/jelly/stargazer/Destroy() + for(var/mob/living/link_to_clear as anything in linked_mobs) + unlink_mob(link_to_clear) + linked_mobs.Cut() + QDEL_NULL(project_thought) + QDEL_NULL(link_minds) + slimelink_owner = null + return ..() + /datum/species/jelly/stargazer/on_species_loss(mob/living/carbon/C) ..() - for(var/M in linked_mobs) - unlink_mob(M) + for(var/mob/living/link_to_clear as anything in linked_mobs) + unlink_mob(link_to_clear) if(project_thought) - project_thought.Remove(C) + QDEL_NULL(project_thought) if(link_minds) - link_minds.Remove(C) + QDEL_NULL(link_minds) + slimelink_owner = null /datum/species/jelly/stargazer/spec_death(gibbed, mob/living/carbon/human/H) ..() - for(var/M in linked_mobs) - unlink_mob(M) + for(var/mob/living/link_to_clear as anything in linked_mobs) + unlink_mob(link_to_clear) /datum/species/jelly/stargazer/on_species_gain(mob/living/carbon/C, datum/species/old_species) ..() @@ -715,7 +730,7 @@ project_thought.Grant(C) link_minds = new(src) link_minds.Grant(C) - slimelink_owner = C + slimelink_owner = WEAKREF(C) link_mob(C) /datum/species/jelly/stargazer/proc/link_mob(mob/living/M) @@ -727,13 +742,16 @@ return FALSE if(M in linked_mobs) return FALSE + var/mob/living/carbon/human/owner = slimelink_owner.resolve() + if(!owner) + return FALSE linked_mobs.Add(M) - to_chat(M, "You are now connected to [slimelink_owner.real_name]'s Slime Link.") + to_chat(M, "You are now connected to [owner.real_name]'s Slime Link.") var/datum/action/innate/linked_speech/action = new(src) linked_actions.Add(action) action.Grant(M) - RegisterSignal(M, COMSIG_MOB_DEATH , .proc/unlink_mob) - RegisterSignal(M, COMSIG_PARENT_QDELETING, .proc/unlink_mob) + RegisterSignal(M, COMSIG_MOB_DEATH , PROC_REF(unlink_mob)) + RegisterSignal(M, COMSIG_PARENT_QDELETING, PROC_REF(unlink_mob)) return TRUE /datum/species/jelly/stargazer/proc/unlink_mob(mob/living/M) @@ -743,9 +761,12 @@ UnregisterSignal(M, list(COMSIG_MOB_DEATH, COMSIG_PARENT_QDELETING)) var/datum/action/innate/linked_speech/action = linked_actions[link_id] action.Remove(M) - to_chat(M, "You are no longer connected to [slimelink_owner.real_name]'s Slime Link.") - linked_mobs[link_id] = null - linked_actions[link_id] = null + var/mob/living/carbon/human/owner = slimelink_owner.resolve() + if(owner) + to_chat(M, "You are no longer connected to [owner.real_name]'s Slime Link.") + linked_mobs -= M + linked_actions -= action + qdel(action) /datum/action/innate/linked_speech name = "Slimelink" @@ -753,14 +774,12 @@ button_icon_state = "link_speech" icon_icon = 'icons/mob/actions/actions_slime.dmi' background_icon_state = "bg_alien" - var/datum/species/jelly/stargazer/species - -/datum/action/innate/linked_speech/New(_species) - ..() - species = _species /datum/action/innate/linked_speech/Activate() var/mob/living/carbon/human/H = owner + if(H.stat == DEAD) + return + var/datum/species/jelly/stargazer/species = target if(!species || !(H in species.linked_mobs)) to_chat(H, "The link seems to have been severed...") Remove(H) @@ -773,9 +792,11 @@ Remove(H) return - if(message) - var/msg = "\[[species.slimelink_owner.real_name]'s Slime Link\] [H]: [message]" - log_directed_talk(H, species.slimelink_owner, msg, LOG_SAY, "slime link") + var/mob/living/carbon/human/star_owner = species.slimelink_owner.resolve() + + if(message && star_owner) + var/msg = "\[[star_owner.real_name]'s Slime Link\] [H]: [message]" + log_directed_talk(H, star_owner, msg, LOG_SAY, "slime link") for(var/X in species.linked_mobs) var/mob/living/M = X to_chat(M, msg) @@ -830,11 +851,6 @@ button_icon_state = "mindlink" icon_icon = 'icons/mob/actions/actions_slime.dmi' background_icon_state = "bg_alien" - var/datum/species/jelly/stargazer/species - -/datum/action/innate/link_minds/New(_species) - ..() - species = _species /datum/action/innate/link_minds/Activate() var/mob/living/carbon/human/H = owner @@ -847,6 +863,7 @@ return var/mob/living/target = H.pulling + var/datum/species/jelly/stargazer/species = target to_chat(H, "You begin linking [target]'s mind to yours...") to_chat(target, "You feel a foreign presence within your mind...") diff --git a/code/modules/mob/living/carbon/human/species_types/kepori.dm b/code/modules/mob/living/carbon/human/species_types/kepori.dm index 469c012a2d9d..5693c646cf3f 100644 --- a/code/modules/mob/living/carbon/human/species_types/kepori.dm +++ b/code/modules/mob/living/carbon/human/species_types/kepori.dm @@ -7,8 +7,8 @@ mutant_bodyparts = list("kepori_body_feathers", "kepori_tail_feathers", "kepori_feathers") default_features = list("mcolor" = "0F0", "wings" = "None", "kepori_feathers" = "Plain", "kepori_body_feathers" = "Plain", "kepori_tail_feathers" = "Fan", "body_size" = "Normal") meat = /obj/item/reagent_containers/food/snacks/meat/slab/chicken - disliked_food = GROSS | FRIED - liked_food = MEAT + disliked_food = FRIED | GROSS | CLOTH + liked_food = MEAT | GORE changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT loreblurb = "Kepori are a species covered in feathers vaguely reminiscent of earth’s extinct troodontidae. They’re small and sometimes seen as weak by other species due to their hollow bones but make up for that in speed and reflexes. Those found in space are commonly known as rollaways. They tend to woop when excited, scared, or for any other reason at all." attack_verb = "slash" diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 1391e33ee7c0..141efed98e12 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -18,8 +18,8 @@ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard skinned_type = /obj/item/stack/sheet/animalhide/lizard exotic_bloodtype = "L" - disliked_food = GRAIN | DAIRY - liked_food = GROSS | MEAT + disliked_food = GRAIN | DAIRY | CLOTH | GROSS + liked_food = GORE | MEAT inert_mutation = FIREBREATH deathsound = 'sound/voice/lizard/deathsound.ogg' wings_icons = list("Dragon") diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index d284224c37d0..02ddf79f6bc4 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -11,9 +11,9 @@ attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/moth - liked_food = FRUIT | SUGAR + liked_food = FRUIT | SUGAR | CLOTH disliked_food = GROSS - toxic_food = MEAT | RAW + toxic_food = MEAT | RAW | GORE mutanteyes = /obj/item/organ/eyes/compound //WS Edit - Compound eyes mutanttongue = /obj/item/organ/tongue/moth //WS Edit - Insectoid language changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT diff --git a/code/modules/mob/living/carbon/human/species_types/podpeople.dm b/code/modules/mob/living/carbon/human/species_types/podpeople.dm index 6d14741c13b6..daa645a662a8 100644 --- a/code/modules/mob/living/carbon/human/species_types/podpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/podpeople.dm @@ -14,7 +14,7 @@ heatmod = 1.5 meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant disliked_food = MEAT | DAIRY - liked_food = VEGETABLES | FRUIT | GRAIN + liked_food = VEGETABLES | FRUIT | GRAIN | CLOTH //cannibals apparentely changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT species_language_holder = /datum/language_holder/plant diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index f54c9dff634d..6e4ae1cdb9a3 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -32,11 +32,6 @@ else if (light_amount < SHADOW_SPECIES_LIGHT_THRESHOLD) //heal in the dark H.heal_overall_damage(1,1, 0, BODYTYPE_ORGANIC) -/datum/species/shadow/check_roundstart_eligible() - if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) - return TRUE - return ..() - /datum/species/shadow/nightmare name = "Nightmare" id = "nightmare" diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index caa36764a1ff..920115f52c02 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -23,11 +23,6 @@ species_l_leg = /obj/item/bodypart/leg/left/skeleton species_r_leg = /obj/item/bodypart/leg/right/skeleton -/datum/species/skeleton/check_roundstart_eligible() - if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) - return TRUE - return ..() - //Can still metabolize milk through meme magic /datum/species/skeleton/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.type == /datum/reagent/consumable/milk) diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm index 36766f34ca53..4d9d41bd411d 100644 --- a/code/modules/mob/living/carbon/human/species_types/snail.dm +++ b/code/modules/mob/living/carbon/human/species_types/snail.dm @@ -67,6 +67,12 @@ max_integrity = 200 resistance_flags = FIRE_PROOF | ACID_PROOF +/obj/item/storage/backpack/snail/dropped(mob/user, silent) + . = ..() + emptyStorage() + if(!QDELETED(src)) + qdel(src) + /obj/item/storage/backpack/snail/Initialize() . = ..() ADD_TRAIT(src, TRAIT_NODROP, "snailshell") diff --git a/code/modules/mob/living/carbon/human/species_types/spider.dm b/code/modules/mob/living/carbon/human/species_types/spider.dm index 0e6082b9d87d..f7ae4f6bef10 100644 --- a/code/modules/mob/living/carbon/human/species_types/spider.dm +++ b/code/modules/mob/living/carbon/human/species_types/spider.dm @@ -45,13 +45,13 @@ GLOBAL_LIST_INIT(spider_last, world.file2list("strings/names/spider_last.txt")) default_color = "00FF00" species_traits = list(LIPS, NOEYESPRITES, MUTCOLORS_PARTSONLY) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG - mutant_bodyparts = list("spider_legs", "spider_spinneret", "spider_mandibles") - default_features = list("spider_legs" = "Plain", "spider_spinneret" = "Plain", "spider_mandibles" = "Plain", "body_size" = "Normal") + mutant_bodyparts = list("spider_legs", "spider_spinneret") + default_features = list("spider_legs" = "Carapaced", "spider_spinneret" = "Plain", "body_size" = "Normal") attack_verb = "slash" attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/spider - liked_food = MEAT | RAW + liked_food = MEAT | RAW | GORE // Regular spiders literally liquify the insides of their prey and drink em like a smoothie. I think this fits disliked_food = FRUIT | GROSS toxic_food = VEGETABLES | DAIRY | CLOTH mutanteyes = /obj/item/organ/eyes/night_vision/spider @@ -187,7 +187,7 @@ GLOBAL_LIST_INIT(spider_last, world.file2list("strings/names/spider_last.txt")) (Press ALT+CLICK or MMB on the target to start wrapping.)") H.adjust_nutrition(E.spinner_rate * -0.5) addtimer(VARSET_CALLBACK(E, web_ready, TRUE), E.web_cooldown) - RegisterSignal(H, list(COMSIG_MOB_MIDDLECLICKON, COMSIG_MOB_ALTCLICKON), .proc/cocoonAtom) + RegisterSignal(H, list(COMSIG_MOB_MIDDLECLICKON, COMSIG_MOB_ALTCLICKON), PROC_REF(cocoonAtom)) return else to_chat(H, "You're too hungry to spin web right now, eat something first!") 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 b4c9fac9db08..ebc923c01075 100644 --- a/code/modules/mob/living/carbon/human/species_types/vampire.dm +++ b/code/modules/mob/living/carbon/human/species_types/vampire.dm @@ -16,14 +16,6 @@ var/info_text = "You are a Vampire. You will slowly but constantly lose blood if outside of a coffin. If inside a coffin, you will slowly heal. You may gain more blood by grabbing a live victim and using your drain ability." var/obj/effect/proc_holder/spell/targeted/shapeshift/bat/batform //attached to the datum itself to avoid cloning memes, and other duplicates - - - -/datum/species/vampire/check_roundstart_eligible() - if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) - return TRUE - return FALSE - /datum/species/vampire/on_species_gain(mob/living/carbon/human/C, datum/species/old_species) . = ..() to_chat(C, "[info_text]") diff --git a/code/modules/mob/living/carbon/human/species_types/vox.dm b/code/modules/mob/living/carbon/human/species_types/vox.dm index de92657cb519..e1a0107bc0ad 100644 --- a/code/modules/mob/living/carbon/human/species_types/vox.dm +++ b/code/modules/mob/living/carbon/human/species_types/vox.dm @@ -139,7 +139,7 @@ /datum/action/innate/tail_hold/Grant(mob/M) . = ..() - RegisterSignal(owner, COMSIG_ATOM_DIR_CHANGE, .proc/handle_sprite_magic, override = TRUE) + RegisterSignal(owner, COMSIG_ATOM_DIR_CHANGE, PROC_REF(handle_sprite_magic), override = TRUE) /datum/action/innate/tail_hold/Trigger() var/mob/living/carbon/human/H = owner @@ -156,7 +156,7 @@ if(H.temporarilyRemoveItemFromInventory(I, FALSE, FALSE)) held_item = I to_chat(H,"You move \the [I] into your tail's grip.") - RegisterSignal(owner, COMSIG_PARENT_EXAMINE, .proc/on_examine) + RegisterSignal(owner, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) handle_sprite_magic(force = TRUE) return 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 96410f0cdcb7..702adfb224a2 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -24,11 +24,6 @@ species_l_leg = /obj/item/bodypart/leg/left/zombie species_r_leg = /obj/item/bodypart/leg/right/zombie -/datum/species/zombie/check_roundstart_eligible() - if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) - return TRUE - return ..() - /datum/species/zombie/infectious name = "\improper Infectious Zombie" id = "memezombies" @@ -108,22 +103,4 @@ species_l_leg = /obj/item/bodypart/leg/left/zombie species_r_leg = /obj/item/bodypart/leg/right/zombie -/datum/species/human/krokodil_addict/replace_body(mob/living/carbon/C, datum/species/new_species, robotic = FALSE) - ..() - var/skintone - if(ishuman(C)) - var/mob/living/carbon/human/H = C - skintone = H.skin_tone - - for(var/obj/item/bodypart/BP as anything in C.bodyparts) - if(IS_ORGANIC_LIMB(BP)) - if(BP.body_zone == BODY_ZONE_HEAD || BP.body_zone == BODY_ZONE_CHEST) - BP.is_dimorphic = TRUE - BP.skin_tone ||= skintone - BP.limb_id = SPECIES_HUMAN - BP.should_draw_greyscale = TRUE - BP.name = "human [parse_zone(BP.body_zone)]" - BP.update_limb() - - #undef REGENERATION_DELAY diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index feaf0973c9c9..0fc21db37d8c 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -8,6 +8,10 @@ damageoverlaytemp = 0 update_damage_hud() + //Just don't run if we're qdeleted already + if(QDELETED(src)) + return ..() + if(!IS_IN_STASIS(src)) //Reagent processing needs to come before breathing, to prevent edge cases. @@ -15,7 +19,7 @@ . = ..() - if (QDELETED(src)) + if(QDELETED(src)) return if(.) //not dead diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm index 832c2a375095..1f730de799d0 100644 --- a/code/modules/mob/living/carbon/monkey/combat.dm +++ b/code/modules/mob/living/carbon/monkey/combat.dm @@ -80,7 +80,7 @@ else if(istype(I, /obj/item/clothing)) var/obj/item/clothing/C = I monkeyDrop(C) - addtimer(CALLBACK(src, .proc/pickup_and_wear, C), 5) + addtimer(CALLBACK(src, PROC_REF(pickup_and_wear), C), 5) return TRUE // EVERYTHING ELSE @@ -95,7 +95,7 @@ /mob/living/carbon/monkey/proc/pickup_and_wear(obj/item/clothing/C) if(!equip_to_appropriate_slot(C)) monkeyDrop(get_item_by_slot(C)) // remove the existing item if worn - addtimer(CALLBACK(src, .proc/equip_to_appropriate_slot, C), 5) + addtimer(CALLBACK(src, PROC_REF(equip_to_appropriate_slot), C), 5) /mob/living/carbon/monkey/resist_restraints() var/obj/item/I = null @@ -132,7 +132,7 @@ pickupTarget = null pickupTimer = 0 else - INVOKE_ASYNC(src, .proc/walk2derpless, pickupTarget.loc) + INVOKE_ASYNC(src, PROC_REF(walk2derpless), pickupTarget.loc) if(Adjacent(pickupTarget) || Adjacent(pickupTarget.loc)) // next to target drop_all_held_items() // who cares about these items, i want that one! if(isturf(pickupTarget.loc)) // on floor @@ -144,7 +144,7 @@ if(!pickpocketing) pickpocketing = TRUE M.visible_message("[src] starts trying to take [pickupTarget] from [M]!", "[src] tries to take [pickupTarget]!") - INVOKE_ASYNC(src, .proc/pickpocket, M) + INVOKE_ASYNC(src, PROC_REF(pickpocket), M) return TRUE switch(mode) @@ -180,7 +180,7 @@ return TRUE if(target != null) - INVOKE_ASYNC(src, .proc/walk2derpless, target) + INVOKE_ASYNC(src, PROC_REF(walk2derpless), target) // pickup any nearby weapon if(!pickupTarget && prob(MONKEY_WEAPON_PROB)) @@ -265,7 +265,7 @@ if(target.pulledby != src && !istype(target.pulledby, /mob/living/carbon/monkey/)) - INVOKE_ASYNC(src, .proc/walk2derpless, target.loc) + INVOKE_ASYNC(src, PROC_REF(walk2derpless), target.loc) if(Adjacent(target) && isturf(target.loc)) a_intent = INTENT_GRAB @@ -278,11 +278,11 @@ frustration = 0 else if(!disposing_body) - INVOKE_ASYNC(src, .proc/walk2derpless, bodyDisposal.loc) + INVOKE_ASYNC(src, PROC_REF(walk2derpless), bodyDisposal.loc) if(Adjacent(bodyDisposal)) disposing_body = TRUE - addtimer(CALLBACK(src, .proc/stuff_mob_in), 5) + addtimer(CALLBACK(src, PROC_REF(stuff_mob_in)), 5) else var/turf/olddist = get_dist(src, bodyDisposal) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index e32369c360d7..b4469ea5b63c 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -17,7 +17,7 @@ if(!resisting && prob(MONKEY_RESIST_PROB)) resisting = TRUE walk_to(src,0) - resist() + execute_resist() else if(resisting) resisting = FALSE else if((mode == MONKEY_IDLE && !pickupTarget && !prob(MONKEY_SHENANIGAN_PROB)) || !handle_combat()) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 1c7f480e0121..6a66c0546f6e 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -115,12 +115,6 @@ internal = null return - -/mob/living/carbon/monkey/IsAdvancedToolUser()//Unless its monkey mode monkeys can't use advanced tools - if(mind && is_monkey(mind)) - return TRUE - return FALSE - /mob/living/carbon/monkey/can_use_guns(obj/item/G) if(G.trigger_guard == TRIGGER_GUARD_NONE) to_chat(src, "You are unable to fire this!") diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 308abdb92f36..c80c9a821fd0 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -343,7 +343,7 @@ GLOBAL_LIST_EMPTY(masked_leg_icons_cache) /mob/living/carbon/proc/update_hands_on_rotate() //Required for unconventionally placed hands on species SIGNAL_HANDLER if(!layered_hands) //Defined in human_defines.dm - RegisterSignal(src, COMSIG_ATOM_DIR_CHANGE, .proc/special_update_hands) + RegisterSignal(src, COMSIG_ATOM_DIR_CHANGE, PROC_REF(special_update_hands)) layered_hands = TRUE /mob/living/carbon/proc/stop_updating_hands() diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 057abfc3c1f3..76daa5ba21d4 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -17,14 +17,18 @@ /mob/living/proc/apply_damage(damage = 0,damagetype = BRUTE, def_zone = null, blocked = FALSE, forced = FALSE, spread_damage = FALSE, break_modifier = 1)//WS Edit - Breakable Bones SEND_SIGNAL(src, COMSIG_MOB_APPLY_DAMGE, damage, damagetype, def_zone) var/hit_percent = (100-blocked)/100 - if(!damage || (!forced && hit_percent <= 0)) + if(!damage || (!forced && hit_percent <= 0) || !(flags_1 & INITIALIZED_1)) return FALSE var/damage_amount = forced ? damage : damage * hit_percent switch(damagetype) if(BRUTE) adjustBruteLoss(damage_amount, forced = forced) + if(stat <= HARD_CRIT) + shake_animation(damage_amount) if(BURN) adjustFireLoss(damage_amount, forced = forced) + if(stat <= HARD_CRIT) + shake_animation(damage_amount) if(TOX) adjustToxLoss(damage_amount, forced = forced) if(OXY) @@ -33,6 +37,8 @@ adjustCloneLoss(damage_amount, forced = forced) if(STAMINA) adjustStaminaLoss(damage_amount, forced = forced) + if(stat <= HARD_CRIT) + shake_animation(damage_amount) return TRUE ///like [apply_damage][/mob/living/proc/apply_damage] except it always uses the damage procs diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index f8233fad9d10..e334655b3848 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -59,6 +59,9 @@ I.on_mob_death(src, gibbed) if(mind && mind.name && mind.active && !istype(T.loc, /area/ctf)) deadchat_broadcast(" has died at [get_area_name(T)].", "[mind.name]", follow_target = src, turf_target = T, message_type=DEADCHAT_DEATHRATTLE) + if(SSlag_switch.measures[DISABLE_DEAD_KEYLOOP] && !client?.holder) + to_chat(src, span_deadsay(span_big("Observer freelook is disabled.\nPlease use Orbit, Teleport, and Jump to look around."))) + ghostize(TRUE) if(mind) mind.store_memory("Time of death: [tod]", 0) remove_from_alive_mob_list() diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 7b11668db56a..56ae0db795e5 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -26,7 +26,7 @@ var/list/key_emotes = GLOB.emote_list["blush"] for(var/datum/emote/living/blush/living_emote in key_emotes) // The existing timer restarts if it's already running - blush_timer = addtimer(CALLBACK(living_emote, .proc/end_blush, living_user), BLUSH_DURATION, TIMER_UNIQUE | TIMER_OVERRIDE) + blush_timer = addtimer(CALLBACK(living_emote, PROC_REF(end_blush), living_user), BLUSH_DURATION, TIMER_UNIQUE | TIMER_OVERRIDE) /datum/emote/living/blush/proc/end_blush(mob/living/living_user) if(!QDELETED(living_user)) @@ -169,7 +169,7 @@ H.CloseWings() else H.OpenWings() - addtimer(CALLBACK(H, open ? /mob/living/carbon/human.proc/OpenWings : /mob/living/carbon/human.proc/CloseWings), wing_time) + addtimer(CALLBACK(H, open ? TYPE_PROC_REF(/mob/living/carbon/human, OpenWings) : TYPE_PROC_REF(/mob/living/carbon/human, CloseWings)), wing_time) /datum/emote/living/flap/aflap key = "aflap" @@ -417,7 +417,7 @@ var/list/key_emotes = GLOB.emote_list["snore"] for(var/datum/emote/living/snore/living_emote in key_emotes) // The existing timer restarts if it's already running - snore_timer = addtimer(CALLBACK(living_emote, .proc/end_snore, living_user), SNORE_DURATION, TIMER_UNIQUE | TIMER_OVERRIDE) + snore_timer = addtimer(CALLBACK(living_emote, PROC_REF(end_snore), living_user), SNORE_DURATION, TIMER_UNIQUE | TIMER_OVERRIDE) /datum/emote/living/snore/proc/end_snore(mob/living/living_user) if(!QDELETED(living_user)) diff --git a/code/modules/mob/living/inhand_holder.dm b/code/modules/mob/living/inhand_holder.dm index f4b5f85b91a6..e16dcf9e3326 100644 --- a/code/modules/mob/living/inhand_holder.dm +++ b/code/modules/mob/living/inhand_holder.dm @@ -85,6 +85,12 @@ /obj/item/clothing/head/mob_holder/container_resist_act() release() +/obj/item/clothing/head/mob_holder/drone/Initialize(mapload, mob/living/M, worn_state, head_icon, lh_icon, rh_icon, worn_slot_flags = NONE) + //If we're not being put onto a drone, end it all + if(!isdrone(M)) + return INITIALIZE_HINT_QDEL + return ..() + /obj/item/clothing/head/mob_holder/drone/deposit(mob/living/L) . = ..() if(!isdrone(L)) diff --git a/code/modules/mob/living/init_signals.dm b/code/modules/mob/living/init_signals.dm index 65bb3b762955..d3f9f0ebd8a9 100644 --- a/code/modules/mob/living/init_signals.dm +++ b/code/modules/mob/living/init_signals.dm @@ -1,31 +1,31 @@ /// Called on [/mob/living/Initialize()], for the mob to register to relevant signals. /mob/living/proc/register_init_signals() - RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT), .proc/on_knockedout_trait_gain) - RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT), .proc/on_knockedout_trait_loss) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT), PROC_REF(on_knockedout_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT), PROC_REF(on_knockedout_trait_loss)) - RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_DEATHCOMA), .proc/on_deathcoma_trait_gain) - RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_DEATHCOMA), .proc/on_deathcoma_trait_loss) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_DEATHCOMA), PROC_REF(on_deathcoma_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_DEATHCOMA), PROC_REF(on_deathcoma_trait_loss)) - RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_IMMOBILIZED), .proc/on_immobilized_trait_gain) - RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_IMMOBILIZED), .proc/on_immobilized_trait_loss) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_IMMOBILIZED), PROC_REF(on_immobilized_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_IMMOBILIZED), PROC_REF(on_immobilized_trait_loss)) - RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_FLOORED), .proc/on_floored_trait_gain) - RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_FLOORED), .proc/on_floored_trait_loss) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_FLOORED), PROC_REF(on_floored_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_FLOORED), PROC_REF(on_floored_trait_loss)) - RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_HANDS_BLOCKED), .proc/on_handsblocked_trait_gain) - RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_HANDS_BLOCKED), .proc/on_handsblocked_trait_loss) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_HANDS_BLOCKED), PROC_REF(on_handsblocked_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_HANDS_BLOCKED), PROC_REF(on_handsblocked_trait_loss)) - RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_UI_BLOCKED), .proc/on_ui_blocked_trait_gain) - RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_UI_BLOCKED), .proc/on_ui_blocked_trait_loss) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_UI_BLOCKED), PROC_REF(on_ui_blocked_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_UI_BLOCKED), PROC_REF(on_ui_blocked_trait_loss)) - RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_PULL_BLOCKED), .proc/on_pull_blocked_trait_gain) - RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_PULL_BLOCKED), .proc/on_pull_blocked_trait_loss) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_PULL_BLOCKED), PROC_REF(on_pull_blocked_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_PULL_BLOCKED), PROC_REF(on_pull_blocked_trait_loss)) - RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_INCAPACITATED), .proc/on_incapacitated_trait_gain) - RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_INCAPACITATED), .proc/on_incapacitated_trait_loss) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_INCAPACITATED), PROC_REF(on_incapacitated_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_INCAPACITATED), PROC_REF(on_incapacitated_trait_loss)) - RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_RESTRAINED), .proc/on_restrained_trait_gain) - RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_RESTRAINED), .proc/on_restrained_trait_loss) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_RESTRAINED), PROC_REF(on_restrained_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_RESTRAINED), PROC_REF(on_restrained_trait_loss)) RegisterSignal(src, list( SIGNAL_ADDTRAIT(TRAIT_CRITICAL_CONDITION), @@ -33,7 +33,7 @@ SIGNAL_ADDTRAIT(TRAIT_NODEATH), SIGNAL_REMOVETRAIT(TRAIT_NODEATH), - ), .proc/update_succumb_action) + ), PROC_REF(update_succumb_action)) /// Called when [TRAIT_KNOCKEDOUT] is added to the mob. diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 33d73b6e4997..47fc5bd82ecb 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -130,7 +130,7 @@ /mob/living/proc/gravity_animate() if(!get_filter("gravity")) add_filter("gravity",1,list("type"="motion_blur", "x"=0, "y"=0)) - INVOKE_ASYNC(src, .proc/gravity_pulse_animation) + INVOKE_ASYNC(src, PROC_REF(gravity_pulse_animation)) /mob/living/proc/gravity_pulse_animation() animate(get_filter("gravity"), y = 1, time = 10) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index a26d45c16add..821bef7d25ff 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -13,7 +13,7 @@ update_living_varspeed() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -314,7 +314,7 @@ if(!iscarbon(src)) M.LAssailant = null else - M.LAssailant = usr + M.LAssailant = WEAKREF(usr) if(isliving(M)) var/mob/living/L = M SEND_SIGNAL(M, COMSIG_LIVING_GET_PULLED, src) @@ -398,11 +398,14 @@ /mob/living/pointed(atom/A as mob|obj|turf in view(client.view, src)) if(incapacitated()) return FALSE + + return ..() + +/mob/living/_pointed(atom/pointing_at) if(!..()) return FALSE - visible_message("[src] points at [A].", "You point at [A].") - return TRUE - + log_message("points at [pointing_at]", LOG_EMOTE) + visible_message("[span_name("[src]")] points at [pointing_at].", span_notice("You point at [pointing_at].")) /mob/living/verb/succumb(whispered as null) set hidden = TRUE @@ -499,8 +502,7 @@ /mob/living/proc/get_up(instant = FALSE) set waitfor = FALSE - var/static/datum/callback/rest_checks = CALLBACK(src, .proc/rest_checks_callback) - if(!instant && !do_mob(src, src, 2 SECONDS, uninterruptible = TRUE, extra_checks = rest_checks)) + if(!instant && !do_mob(src, src, 2 SECONDS, uninterruptible = TRUE, extra_checks = CALLBACK(src, TYPE_PROC_REF(/mob/living, rest_checks_callback)))) return if(resting || body_position == STANDING_UP || HAS_TRAIT(src, TRAIT_FLOORED)) return @@ -654,7 +656,7 @@ var/obj/effect/proc_holder/spell/spell = S spell.updateButtonIcon() if(excess_healing) - INVOKE_ASYNC(src, .proc/emote, "gasp") + INVOKE_ASYNC(src, PROC_REF(emote), "gasp") log_combat(src, src, "revived") /mob/living/proc/remove_CC() @@ -859,6 +861,10 @@ set name = "Resist" set category = "IC" + DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(execute_resist))) + +///proc extender of [/mob/living/verb/resist] meant to make the process queable if the server is overloaded when the verb is called +/mob/living/proc/execute_resist() if(!can_resist()) return changeNext_move(CLICK_CD_RESIST) @@ -884,7 +890,6 @@ else if(last_special <= world.time) resist_restraints() //trying to remove cuffs. - /mob/proc/resist_grab(moving_resist) return 1 //returning 0 means we successfully broke free @@ -1520,8 +1525,8 @@ if(!can_look_up()) return changeNext_move(CLICK_CD_LOOK_UP) - RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, .proc/stop_look_up) //We stop looking up if we move. - RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/start_look_up) //We start looking again after we move. + RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(stop_look_up)) //We stop looking up if we move. + RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(start_look_up)) //We start looking again after we move. start_look_up() /mob/living/proc/start_look_up() @@ -1565,8 +1570,8 @@ if(!can_look_up()) //if we cant look up, we cant look down. return changeNext_move(CLICK_CD_LOOK_UP) - RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, .proc/stop_look_down) //We stop looking down if we move. - RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/start_look_down) //We start looking again after we move. + RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(stop_look_down)) //We stop looking down if we move. + RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(start_look_down)) //We start looking again after we move. start_look_down() /mob/living/proc/start_look_down() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 6bb9e9aad856..f119c7dbc308 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -55,6 +55,7 @@ var/on_hit_state = P.on_hit(src, armor, piercing_hit) if(!P.nodamage && on_hit_state != BULLET_ACT_BLOCK && !QDELETED(src)) //QDELETED literally just for the instagib rifle. Yeah. apply_damage(P.damage, P.damage_type, def_zone, armor) + recoil_camera(src, clamp((P.damage-armor)/4,0.5,10), clamp((P.damage-armor)/4,0.5,10), P.damage/8, P.Angle) apply_effects(P.stun, P.knockdown, P.unconscious, P.irradiate, P.slur, P.stutter, P.eyeblur, P.drowsy, armor, P.stamina, P.jitter, P.paralyze, P.immobilize) if(P.dismemberment) check_projectile_dismemberment(P, def_zone) @@ -93,8 +94,9 @@ "Your armor has softened a hit to your [parse_zone(zone)]." ) apply_damage(I.throwforce, dtype, zone, armor) - if(I.thrownby) - log_combat(I.thrownby, src, "threw and hit", I) + var/mob/thrown_by = I.thrownby?.resolve() + if(thrown_by) + log_combat(thrown_by, src, "threw and hit", I) else return 1 else @@ -397,8 +399,8 @@ if((GLOB.cult_narsie.souls == GLOB.cult_narsie.soul_goal) && (GLOB.cult_narsie.resolved == FALSE)) GLOB.cult_narsie.resolved = TRUE sound_to_playing_players('sound/machines/alarm.ogg') - addtimer(CALLBACK(GLOBAL_PROC, .proc/cult_ending_helper, 1), 120) - addtimer(CALLBACK(GLOBAL_PROC, .proc/ending_helper), 270) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(cult_ending_helper), 1), 120) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(ending_helper)), 270) if(client) makeNewConstruct(/mob/living/simple_animal/hostile/construct/harvester, src, cultoverride = TRUE) else @@ -421,7 +423,7 @@ return FALSE if(get_eye_protection() < intensity && (override_blindness_check || !is_blind())) overlay_fullscreen("flash", type) - addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", 25), 25) + addtimer(CALLBACK(src, PROC_REF(clear_fullscreen), "flash", 25), 25) return TRUE return FALSE diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm index 709550cbc562..9634040582e0 100644 --- a/code/modules/mob/living/living_movement.dm +++ b/code/modules/mob/living/living_movement.dm @@ -3,7 +3,7 @@ update_turf_movespeed(loc) -/mob/living/CanAllowThrough(atom/movable/mover, turf/target) +/mob/living/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(.) return diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index ba8983691bdd..17ef76413220 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -128,6 +128,12 @@ GLOBAL_LIST_INIT(department_radio_keys, list( say_dead(original_message) return + if(client && SSlag_switch.measures[SLOWMODE_SAY] && !HAS_TRAIT(src, TRAIT_BYPASS_MEASURES) && !forced && src == usr) + if(!COOLDOWN_FINISHED(client, say_slowmode)) + to_chat(src, span_warning("Message not sent due to slowmode. Please wait [SSlag_switch.slowmode_cooldown/10] seconds between messages.\n\"[message]\"")) + return + COOLDOWN_START(client, say_slowmode, SSlag_switch.slowmode_cooldown) + if(!can_speak_basic(original_message, ignore_spam, forced)) return @@ -287,11 +293,11 @@ GLOBAL_LIST_INIT(department_radio_keys, list( //speech bubble var/list/speech_bubble_recipients = list() for(var/mob/M in listening) - if(M.client && !M.client.prefs.chat_on_map) + if(M.client && (!M.client.prefs.chat_on_map || (SSlag_switch.measures[DISABLE_RUNECHAT] && !HAS_TRAIT(src, TRAIT_BYPASS_MEASURES)))) speech_bubble_recipients.Add(M.client) var/image/I = image('icons/mob/talk.dmi', src, "[bubble_type][say_test(message)]", FLY_LAYER) I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA - INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, I, speech_bubble_recipients, 30) + INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay), I, speech_bubble_recipients, 30) /mob/proc/binarycheck() return FALSE diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index d782d21dfd53..2223a1491a6c 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -38,14 +38,14 @@ var/can_be_carded = TRUE var/alarms = list("Motion"=list(), "Fire"=list(), "Atmosphere"=list(), "Power"=list(), "Camera"=list(), "Burglar"=list()) var/viewalerts = 0 - var/icon/holo_icon//Default is assigned when AI is created. + var/icon/holo_icon //Default is assigned when AI is created. var/obj/mecha/controlled_mech //For controlled_mech a mech, to determine whether to relaymove or use the AI eye. var/radio_enabled = TRUE //Determins if a carded AI can speak with its built in radio or not. radiomod = ";" //AIs will, by default, state their laws on the internal radio. var/obj/item/multitool/aiMulti var/mob/living/simple_animal/bot/Bot var/tracking = FALSE //this is 1 if the AI is currently tracking somebody, but the track has not yet been completed. - var/datum/effect_system/spark_spread/spark_system//So they can initialize sparks whenever/N + var/datum/effect_system/spark_spread/spark_system //So they can initialize sparks whenever/N //MALFUNCTION var/datum/module_picker/malf_picker @@ -106,7 +106,7 @@ new/obj/structure/AIcore/deactivated(loc) //New empty terminal. return INITIALIZE_HINT_QDEL //Delete AI. - ADD_TRAIT(src, TRAIT_NO_TELEPORT, src) + ADD_TRAIT(src, TRAIT_NO_TELEPORT, AI_ANCHOR_TRAIT) if(L && istype(L, /datum/ai_laws)) laws = L laws.associate(src) @@ -134,7 +134,7 @@ create_eye() if(client) - INVOKE_ASYNC(src, .proc/apply_pref_name,"ai",client) + INVOKE_ASYNC(src, PROC_REF(apply_pref_name),"ai",client) set_core_display_icon() @@ -193,7 +193,11 @@ /mob/living/silicon/ai/Destroy() GLOB.ai_list -= src - qdel(eyeobj) // No AI, no Eye + QDEL_NULL(eyeobj) // No AI, no Eye + QDEL_NULL(aiMulti) + QDEL_NULL(spark_system) + if(robot_control) + QDEL_NULL(robot_control) malfhack = null . = ..() @@ -335,11 +339,11 @@ var/is_anchored = FALSE if(move_resist == MOVE_FORCE_OVERPOWERING) move_resist = MOVE_FORCE_NORMAL - REMOVE_TRAIT(src, TRAIT_NO_TELEPORT, src) + REMOVE_TRAIT(src, TRAIT_NO_TELEPORT, AI_ANCHOR_TRAIT) else is_anchored = TRUE move_resist = MOVE_FORCE_OVERPOWERING - ADD_TRAIT(src, TRAIT_NO_TELEPORT, src) + ADD_TRAIT(src, TRAIT_NO_TELEPORT, AI_ANCHOR_TRAIT) to_chat(src, "You are now [is_anchored ? "" : "un"]anchored.") // the message in the [] will change depending whether or not the AI is anchored @@ -381,9 +385,11 @@ trackeable += track.humans + track.others var/list/target = list() for(var/I in trackeable) - var/mob/M = trackeable[I] - if(M.name == string) - target += M + var/datum/weakref/to_resolve = trackeable[I] + var/mob/to_track = to_resolve.resolve() + if(!to_track || to_track.name != string) + continue + target += to_track if(name == string) target += src if(target.len) @@ -989,9 +995,9 @@ return /mob/living/silicon/ai/spawned/Initialize(mapload, datum/ai_laws/L, mob/target_ai) - . = ..() if(!target_ai) target_ai = src //cheat! just give... ourselves as the spawned AI, because that's technically correct + . = ..() /mob/living/silicon/ai/proc/camera_visibility(mob/camera/aiEye/moved_eye) GLOB.cameranet.visibility(moved_eye, client, all_eyes, USE_STATIC_OPAQUE) diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm index 8c42baf4914e..f66d00b5f7aa 100644 --- a/code/modules/mob/living/silicon/ai/death.dm +++ b/code/modules/mob/living/silicon/ai/death.dm @@ -24,7 +24,7 @@ ShutOffDoomsdayDevice() if(explosive) - addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, loc, 3, 6, 12, 15), 1 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), loc, 3, 6, 12, 15), 1 SECONDS) if(src.key) for(var/each in GLOB.ai_status_displays) //change status diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm index a3ffd460dd67..27136c4bbc94 100644 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm @@ -9,20 +9,20 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) /datum/cameranet var/name = "Camera Net" // Name to show for VV and stat() - // The cameras on the map, no matter if they work or not. Updated in obj/machinery/camera.dm by New() and Del(). + /// The cameras on the map, no matter if they work or not. Updated in obj/machinery/camera.dm by New() and Del(). var/list/cameras = list() - // The chunks of the map, mapping the areas that the cameras can see. + /// The chunks of the map, mapping the areas that the cameras can see. var/list/chunks = list() var/ready = 0 - // The object used for the clickable stat() button. + /// The object used for the clickable stat() button. var/obj/effect/statclick/statclick - // The objects used in vis_contents of obscured turfs + /// The objects used in vis_contents of obscured turfs var/list/vis_contents_objects var/obj/effect/overlay/camera_static/vis_contents_opaque var/obj/effect/overlay/camera_static/vis_contents_transparent - // The image given to the effect in vis_contents on AI clients + /// The image given to the effect in vis_contents on AI clients var/image/obscured var/image/obscured_transparent @@ -37,14 +37,14 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) obscured_transparent = new('icons/effects/cameravis.dmi', vis_contents_transparent, null, CAMERA_STATIC_LAYER) obscured_transparent.plane = CAMERA_STATIC_PLANE -// Checks if a chunk has been Generated in x, y, z. +/// Checks if a chunk has been Generated in x, y, z. /datum/cameranet/proc/chunkGenerated(x, y, z) x &= ~(CHUNK_SIZE - 1) y &= ~(CHUNK_SIZE - 1) return chunks["[x],[y],[z]"] -// Returns the chunk in the x, y, z. -// If there is no chunk, it creates a new chunk and returns that. +/// Returns the chunk in the x, y, z. +/// If there is no chunk, it creates a new chunk and returns that. /datum/cameranet/proc/getCameraChunk(x, y, z) x &= ~(CHUNK_SIZE - 1) y &= ~(CHUNK_SIZE - 1) @@ -53,8 +53,7 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) if(!.) chunks[key] = . = new /datum/camerachunk(x, y, z) -// Updates what the aiEye can see. It is recommended you use this when the aiEye moves or it's location is set. - +/// Updates what the aiEye can see. It is recommended you use this when the aiEye moves or it's location is set. /datum/cameranet/proc/visibility(list/moved_eyes, client/C, list/other_eyes, use_static = USE_STATIC_OPAQUE) if(!islist(moved_eyes)) moved_eyes = moved_eyes ? list(moved_eyes) : list() @@ -106,8 +105,7 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) if(USE_STATIC_OPAQUE) client.images -= GLOB.cameranet.obscured -// Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open. - +/// Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open. /datum/cameranet/proc/updateVisibility(atom/A, opacity_check = 1) if(!SSticker || (opacity_check && !A.opacity)) return @@ -119,29 +117,25 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) return chunk.hasChanged() -// Removes a camera from a chunk. - +/// Removes a camera from a chunk. /datum/cameranet/proc/removeCamera(obj/machinery/camera/c) majorChunkChange(c, 0) -// Add a camera to a chunk. - +/// Add a camera to a chunk. /datum/cameranet/proc/addCamera(obj/machinery/camera/c) if(c.can_use()) majorChunkChange(c, 1) -// Used for Cyborg cameras. Since portable cameras can be in ANY chunk. - +/// Used for Cyborg cameras. Since portable cameras can be in ANY chunk. /datum/cameranet/proc/updatePortableCamera(obj/machinery/camera/c) if(c.can_use()) majorChunkChange(c, 1) -// Never access this proc directly!!!! -// This will update the chunk and all the surrounding chunks. -// It will also add the atom to the cameras list if you set the choice to 1. -// Setting the choice to 0 will remove the camera from the chunks. -// If you want to update the chunks around an object, without adding/removing a camera, use choice 2. - +/// Never access this proc directly!!!! +/// This will update the chunk and all the surrounding chunks. +/// It will also add the atom to the cameras list if you set the choice to 1. +/// Setting the choice to 0 will remove the camera from the chunks. +/// If you want to update the chunks around an object, without adding/removing a camera, use choice 2. /datum/cameranet/proc/majorChunkChange(atom/c, choice) if(!c) return @@ -164,8 +158,19 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) chunk.cameras |= c chunk.hasChanged() -// Will check if a mob is on a viewable turf. Returns 1 if it is, otherwise returns 0. - +/// A faster, turf only version of [/datum/cameranet/proc/majorChunkChange] +/// For use in sensitive code, be careful with it +/datum/cameranet/proc/bareMajorChunkChange(turf/changed) + var/x1 = max(1, changed.x - (CHUNK_SIZE / 2)) + var/y1 = max(1, changed.y - (CHUNK_SIZE / 2)) + var/x2 = min(world.maxx, changed.x + (CHUNK_SIZE / 2)) + var/y2 = min(world.maxy, changed.y + (CHUNK_SIZE / 2)) + for(var/x = x1; x <= x2; x += CHUNK_SIZE) + for(var/y = y1; y <= y2; y += CHUNK_SIZE) + var/datum/camerachunk/chunk = chunkGenerated(x, y, changed.z) + chunk?.hasChanged() + +/// Will check if a mob is on a viewable turf. Returns 1 if it is, otherwise returns 0. /datum/cameranet/proc/checkCameraVis(mob/living/target) var/turf/position = get_turf(target) return checkTurfVis(position) diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index 4591720b7986..124028009116 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -50,7 +50,7 @@ /datum/camerachunk/proc/hasChanged(update_now = 0) if(seenby.len || update_now) - addtimer(CALLBACK(src, .proc/update), UPDATE_BUFFER, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(update)), UPDATE_BUFFER, TIMER_UNIQUE) else changed = 1 diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 85b20d068be2..b8af19155f09 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -170,4 +170,4 @@ blind_eyes(1) update_sight() to_chat(src, "You've lost power!") - addtimer(CALLBACK(src, .proc/start_RestorePowerRoutine), 20) + addtimer(CALLBACK(src, PROC_REF(start_RestorePowerRoutine)), 20) diff --git a/code/modules/mob/living/silicon/ai/robot_control.dm b/code/modules/mob/living/silicon/ai/robot_control.dm index e84a62694d3c..b70ae816b790 100644 --- a/code/modules/mob/living/silicon/ai/robot_control.dm +++ b/code/modules/mob/living/silicon/ai/robot_control.dm @@ -1,6 +1,12 @@ /datum/robot_control var/mob/living/silicon/ai/owner +/datum/robot_control/Destroy(force, ...) + if(!QDELETED(owner)) + CRASH("Robot Control panel destroyed even though owner AI is not being destroyed.") + owner = null + return ..() + /datum/robot_control/New(mob/living/silicon/ai/new_owner) if(!istype(new_owner)) qdel(src) diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm index ca35a7544222..30c7cd435068 100644 --- a/code/modules/mob/living/silicon/laws.dm +++ b/code/modules/mob/living/silicon/laws.dm @@ -15,8 +15,8 @@ if(announce && last_lawchange_announce != world.time) to_chat(src, "Your laws have been changed.") // lawset modules cause this function to be executed multiple times in a tick, so we wait for the next tick in order to be able to see the entire lawset - addtimer(CALLBACK(src, .proc/show_laws), 0) - addtimer(CALLBACK(src, .proc/deadchat_lawchange), 0) + addtimer(CALLBACK(src, PROC_REF(show_laws)), 0) + addtimer(CALLBACK(src, PROC_REF(deadchat_lawchange)), 0) last_lawchange_announce = world.time /mob/living/silicon/proc/set_law_sixsixsix(law, announce = TRUE) diff --git a/code/modules/mob/living/silicon/login.dm b/code/modules/mob/living/silicon/login.dm index ad28d663690d..559ad42b1768 100644 --- a/code/modules/mob/living/silicon/login.dm +++ b/code/modules/mob/living/silicon/login.dm @@ -1,9 +1,6 @@ /mob/living/silicon/Login() if(mind && SSticker.mode) SSticker.mode.remove_cultist(mind, 0, 0) - var/datum/antagonist/rev/rev = mind.has_antag_datum(/datum/antagonist/rev) - if(rev) - rev.remove_revolutionary(TRUE) return ..() diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 7ec7f6b83459..be79cf7184ab 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -90,6 +90,7 @@ /mob/living/silicon/pai/Destroy() QDEL_NULL(internal_instrument) + QDEL_NULL(laws) if(cable) QDEL_NULL(cable) if (loc != card) @@ -120,12 +121,12 @@ aicamera = new /obj/item/camera/siliconcam/ai_camera(src) aicamera.flash_enabled = TRUE - addtimer(CALLBACK(src, .proc/pdaconfig), 5) + addtimer(CALLBACK(src, PROC_REF(pdaconfig)), 5) . = ..() emittersemicd = TRUE - addtimer(CALLBACK(src, .proc/emittercool), 600) + addtimer(CALLBACK(src, PROC_REF(emittercool)), 600) if(!holoform) ADD_TRAIT(src, TRAIT_IMMOBILIZED, PAI_FOLDED) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 279d37045cc5..ca65a416691c 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -17,7 +17,7 @@ return FALSE emittersemicd = TRUE - addtimer(CALLBACK(src, .proc/emittercool), emittercd) + addtimer(CALLBACK(src, PROC_REF(emittercool)), emittercd) REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, PAI_FOLDED) REMOVE_TRAIT(src, TRAIT_HANDS_BLOCKED, PAI_FOLDED) density = TRUE @@ -47,9 +47,9 @@ /mob/living/silicon/pai/proc/fold_in(force = FALSE) emittersemicd = TRUE if(!force) - addtimer(CALLBACK(src, .proc/emittercool), emittercd) + addtimer(CALLBACK(src, PROC_REF(emittercool)), emittercd) else - addtimer(CALLBACK(src, .proc/emittercool), emitteroverloadcd) + addtimer(CALLBACK(src, PROC_REF(emittercool)), emitteroverloadcd) icon_state = "[chassis]" if(!holoform) . = fold_out(force) diff --git a/code/modules/mob/living/silicon/robot/laws.dm b/code/modules/mob/living/silicon/robot/laws.dm index b35afb1558e6..df62df082751 100644 --- a/code/modules/mob/living/silicon/robot/laws.dm +++ b/code/modules/mob/living/silicon/robot/laws.dm @@ -84,4 +84,4 @@ /mob/living/silicon/robot/post_lawchange(announce = TRUE) . = ..() - addtimer(CALLBACK(src, .proc/logevent,"Law update processed."), 0, TIMER_UNIQUE | TIMER_OVERRIDE) //Post_Lawchange gets spammed by some law boards, so let's wait it out + addtimer(CALLBACK(src, PROC_REF(logevent),"Law update processed."), 0, TIMER_UNIQUE | TIMER_OVERRIDE) //Post_Lawchange gets spammed by some law boards, so let's wait it out diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 02f1918ccef4..44bfe5626754 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -111,7 +111,7 @@ wires = new /datum/wires/robot(src) AddComponent(/datum/component/empprotection, EMP_PROTECT_WIRES) - RegisterSignal(src, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, .proc/charge) + RegisterSignal(src, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(charge)) robot_modules_background = new() robot_modules_background.icon_state = "block" @@ -157,7 +157,7 @@ mmi.brainmob.container = mmi mmi.update_appearance() - INVOKE_ASYNC(src, .proc/updatename) + INVOKE_ASYNC(src, PROC_REF(updatename)) playsound(loc, 'sound/voice/liveagain.ogg', 75, TRUE) aicamera = new/obj/item/camera/siliconcam/robot_camera(src) @@ -200,12 +200,14 @@ if(T && istype(radio) && istype(radio.keyslot)) radio.keyslot.forceMove(T) radio.keyslot = null - qdel(wires) - qdel(module) - qdel(eye_lights) - wires = null - module = null - eye_lights = null + QDEL_NULL(wires) + QDEL_NULL(module) + QDEL_NULL(eye_lights) + QDEL_NULL(inv1) + QDEL_NULL(inv2) + QDEL_NULL(inv3) + QDEL_NULL(spark_system) + QDEL_LIST(upgrades) cell = null return ..() @@ -438,11 +440,11 @@ return update_icons() /mob/living/silicon/robot/update_icons() + if(QDELETED(src)) + return cut_overlays() icon_state = module.cyborg_base_icon - //WS changes - Thanks Cit - Allows modules to use different icon files icon = (module.cyborg_icon_override ? module.cyborg_icon_override : initial(icon)) - //EndWS Changes if(module.cyborg_base_icon == "robot") icon = 'icons/mob/robots.dmi' pixel_x = initial(pixel_x) @@ -496,6 +498,9 @@ set category = "IC" set src = usr + return ..() + +/mob/living/silicon/robot/execute_mode() if(incapacitated()) return var/obj/item/W = get_active_held_item() @@ -505,7 +510,7 @@ /mob/living/silicon/robot/proc/SetLockdown(state = TRUE) // They stay locked down if their wire is cut. - if(wires.is_cut(WIRE_LOCKDOWN)) + if(wires?.is_cut(WIRE_LOCKDOWN)) state = TRUE if(state) throw_alert("locked", /atom/movable/screen/alert/locked) @@ -685,7 +690,7 @@ /mob/living/silicon/robot/modules/syndicate/Initialize() . = ..() laws = new /datum/ai_laws/syndicate_override() - addtimer(CALLBACK(src, .proc/show_playstyle), 5) + addtimer(CALLBACK(src, PROC_REF(show_playstyle)), 5) /mob/living/silicon/robot/modules/syndicate/create_modularInterface() if(!modularInterface) @@ -718,7 +723,7 @@ /mob/living/silicon/robot/modules/syndicateproto/Initialize() . = ..() laws = new /datum/ai_laws/syndproto_override() - addtimer(CALLBACK(src, .proc/show_playstyle), 5) + addtimer(CALLBACK(src, PROC_REF(show_playstyle)), 5) /mob/living/silicon/robot/modules/syndicateproto/create_modularInterface() if(!modularInterface) @@ -921,7 +926,7 @@ hat_offset = module.hat_offset magpulse = module.magpulsing - INVOKE_ASYNC(src, .proc/updatename) + INVOKE_ASYNC(src, PROC_REF(updatename)) /mob/living/silicon/robot/proc/place_on_head(obj/item/new_hat) @@ -1089,12 +1094,11 @@ riding_datum.restore_position(user) . = ..(user) -/mob/living/silicon/robot/resist() +/mob/living/silicon/robot/execute_resist() . = ..() if(!has_buckled_mobs()) return - for(var/i in buckled_mobs) - var/mob/unbuckle_me_now = i + for(var/mob/unbuckle_me_now as anything in buckled_mobs) unbuckle_mob(unbuckle_me_now, FALSE) @@ -1146,7 +1150,7 @@ /mob/living/silicon/robot/proc/logevent(string = "") if(!string) return - if(stat == DEAD) //Dead borgs log no longer + if(stat == DEAD || QDELETED(src)) //Dead borgs log no longer //Gone return if(!modularInterface) stack_trace("Cyborg [src] ([type]) was somehow missing their integrated tablet. Please make a bug report.") diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 433c735a2784..39a0ede9334f 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -308,7 +308,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real return spark_system.start() step_away(src, user, 15) - addtimer(CALLBACK(GLOBAL_PROC, .proc/_step_away, src, get_turf(user), 15), 3) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(_step_away), src, get_turf(user), 15), 3) /mob/living/silicon/robot/fire_act() if(!on_fire) //Silicons don't gain stacks from hotspots, but hotspots can ignite them diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index dee91ab20f81..27819d97cf15 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -182,7 +182,7 @@ R.module = RM R.update_module_innate() RM.rebuild_modules() - INVOKE_ASYNC(RM, .proc/do_transform_animation) + INVOKE_ASYNC(RM, PROC_REF(do_transform_animation)) qdel(src) return RM @@ -281,7 +281,7 @@ "R34 - STR4a 'Durin'" = image(icon = 'icons/mob/robots.dmi', icon_state = "durin"), ) default_icons = sortList(default_icons) - var/default_borg_icon = show_radial_menu(R, R , default_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE) + var/default_borg_icon = show_radial_menu(R, R , default_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE) switch(default_borg_icon) if("Default") cyborg_base_icon = "robot" @@ -371,7 +371,7 @@ "Qualified Doctor" = image(icon = 'icons/mob/robots.dmi', icon_state = "qualified_doctor") ) med_icons = sortList(med_icons) - var/med_borg_icon = show_radial_menu(R, R , med_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE) + var/med_borg_icon = show_radial_menu(R, R , med_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE) switch(med_borg_icon) if("Antique") cyborg_base_icon = "medbot" @@ -475,7 +475,7 @@ "R34 - ENG7a 'Conagher'" = image(icon = 'icons/mob/robots.dmi', icon_state = "conagher"), ) engi_icons = sortList(engi_icons) - var/engi_borg_icon = show_radial_menu(R, R , engi_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE) + var/engi_borg_icon = show_radial_menu(R, R , engi_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE) switch(engi_borg_icon) if("Antique") cyborg_base_icon = "engibot" @@ -557,7 +557,7 @@ "R34 - SEC10a 'Woody'" = image(icon = 'icons/mob/robots.dmi', icon_state = "woody"), ) sec_icons = sortList(sec_icons) - var/sec_borg_icon = show_radial_menu(R, R , sec_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE) + var/sec_borg_icon = show_radial_menu(R, R , sec_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE) switch(sec_borg_icon) if("Antique") cyborg_base_icon = "secbot" @@ -681,7 +681,7 @@ "R34 - CUS3a 'Flynn'" = image(icon = 'icons/mob/robots.dmi', icon_state = "flynn"), ) jan_icons = sortList(jan_icons) - var/jan_borg_icon = show_radial_menu(R, R , jan_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE) + var/jan_borg_icon = show_radial_menu(R, R , jan_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE) switch(jan_borg_icon) if("Antique") cyborg_base_icon = "janbot" @@ -830,7 +830,7 @@ "R34 - SRV9a 'Llyod'" = image(icon = 'icons/mob/robots.dmi', icon_state = "lloyd"), ) service_icons = sortList(service_icons) - var/service_robot_icon = show_radial_menu(R, R , service_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE) + var/service_robot_icon = show_radial_menu(R, R , service_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE) switch(service_robot_icon) if("Default - 'Waitress'") cyborg_base_icon = "service_f" @@ -918,7 +918,7 @@ "R34 - MIN2a 'Ishimura'" = image(icon = 'icons/mob/robots.dmi', icon_state = "ishimura") ) mining_icons = sortList(mining_icons) - var/mining_borg_icon = show_radial_menu(R, R , mining_icons, custom_check = CALLBACK(src, .proc/check_menu, R), radius = 42, require_near = TRUE) + var/mining_borg_icon = show_radial_menu(R, R , mining_icons, custom_check = CALLBACK(src, PROC_REF(check_menu), R), radius = 42, require_near = TRUE) switch(mining_borg_icon) if("Antique") cyborg_base_icon = "minerbot" diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 6ef4c9a67f27..347ec71e84e4 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -71,6 +71,7 @@ QDEL_NULL(aicamera) QDEL_NULL(builtInCamera) QDEL_NULL(aiPDA) + QDEL_NULL(laws) GLOB.silicon_mobs -= src return ..() @@ -98,7 +99,7 @@ if(in_cooldown) return - addtimer(CALLBACK(src, .proc/show_alarms), 3 SECONDS) + addtimer(CALLBACK(src, PROC_REF(show_alarms)), 3 SECONDS) /mob/living/silicon/proc/show_alarms() if(alarms_to_show.len < 5) diff --git a/code/modules/mob/living/silicon/silicon_movement.dm b/code/modules/mob/living/silicon/silicon_movement.dm index 590326eda1b1..cc0a01aa375f 100644 --- a/code/modules/mob/living/silicon/silicon_movement.dm +++ b/code/modules/mob/living/silicon/silicon_movement.dm @@ -18,5 +18,5 @@ oldLoc = get_turf(oldLoc) if(!QDELETED(builtInCamera) && !updating && oldLoc != get_turf(src)) updating = TRUE - addtimer(CALLBACK(src, .proc/do_camera_update, oldLoc), SILICON_CAMERA_BUFFER) + addtimer(CALLBACK(src, PROC_REF(do_camera_update), oldLoc), SILICON_CAMERA_BUFFER) #undef SILICON_CAMERA_BUFFER diff --git a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm index b0c583b9c247..52346fd7cddd 100644 --- a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm +++ b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm @@ -29,11 +29,11 @@ if(ismob(AM) && AM == target) visible_message("[src] flails his swords and cuts [AM]!") playsound(src,'sound/effects/beepskyspinsabre.ogg',100,TRUE,-1) - INVOKE_ASYNC(src, .proc/stun_attack, AM) + INVOKE_ASYNC(src, PROC_REF(stun_attack), AM) /mob/living/simple_animal/bot/secbot/grievous/Initialize() . = ..() - INVOKE_ASYNC(weapon, /obj/item.proc/attack_self, src) + INVOKE_ASYNC(weapon, TYPE_PROC_REF(/obj/item, attack_self), src) /mob/living/simple_animal/bot/secbot/grievous/Destroy() QDEL_NULL(weapon) @@ -51,7 +51,7 @@ weapon.attack(C, src) playsound(src, 'sound/weapons/blade1.ogg', 50, TRUE, -1) if(C.stat == DEAD) - addtimer(CALLBACK(src, /atom/.proc/update_appearance), 2) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_appearance)), 2) back_to_idle() @@ -107,7 +107,7 @@ if((C.name == oldtarget_name) && (world.time < last_found + 100)) continue - threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons)) + threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, PROC_REF(check_for_weapons))) if(!threatlevel) continue @@ -122,7 +122,7 @@ icon_state = "grievous-c" visible_message("[src] points at [C.name]!") mode = BOT_HUNT - INVOKE_ASYNC(src, .proc/handle_automated_action) + INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) break else continue diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index be4807b33369..1c25a67c1dbe 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -384,7 +384,7 @@ ejectpai(0) if(on) turn_off() - addtimer(CALLBACK(src, .proc/emp_reset, was_on), severity*30 SECONDS) + addtimer(CALLBACK(src, PROC_REF(emp_reset), was_on), severity*30 SECONDS) /mob/living/simple_animal/bot/proc/emp_reset(was_on) stat &= ~EMPED @@ -529,7 +529,7 @@ Pass a positive integer as an argument to override a bot's default speed. if(step_count >= 1 && tries < BOT_STEP_MAX_RETRIES) for(var/step_number = 0, step_number < step_count,step_number++) - addtimer(CALLBACK(src, .proc/bot_step, dest), BOT_STEP_DELAY*step_number) + addtimer(CALLBACK(src, PROC_REF(bot_step), dest), BOT_STEP_DELAY*step_number) else return FALSE return TRUE @@ -574,7 +574,7 @@ Pass a positive integer as an argument to override a bot's default speed. turn_on() //Saves the AI the hassle of having to activate a bot manually. access_card = all_access //Give the bot all-access while under the AI's command. if(client) - reset_access_timer_id = addtimer(CALLBACK (src, .proc/bot_reset), 600, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time + reset_access_timer_id = addtimer(CALLBACK (src, PROC_REF(bot_reset)), 600, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time to_chat(src, "Priority waypoint set by [icon2html(calling_ai, src)] [caller]. 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, "[icon2html(src, calling_ai)] [name] called to [end_area]. [path.len-1] meters to destination.") @@ -621,7 +621,7 @@ Pass a positive integer as an argument to override a bot's default speed. /mob/living/simple_animal/bot/proc/bot_patrol() patrol_step() - addtimer(CALLBACK(src, .proc/do_patrol), 5) + addtimer(CALLBACK(src, PROC_REF(do_patrol)), 5) /mob/living/simple_animal/bot/proc/do_patrol() if(mode == BOT_PATROL) @@ -641,7 +641,7 @@ Pass a positive integer as an argument to override a bot's default speed. return if(patrol_target) // has patrol target - INVOKE_ASYNC(src, .proc/target_patrol) + INVOKE_ASYNC(src, PROC_REF(target_patrol)) else // no patrol target, so need a new one speak("Engaging patrol mode.") find_patrol_target() @@ -675,7 +675,7 @@ Pass a positive integer as an argument to override a bot's default speed. 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/patrol_step_not_moved), 2) + addtimer(CALLBACK(src, PROC_REF(patrol_step_not_moved)), 2) else // no path, so calculate new one mode = BOT_START_PATROL @@ -701,7 +701,7 @@ Pass a positive integer as an argument to override a bot's default speed. /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]"]) + for(var/obj/machinery/navbeacon/NB in GLOB.navbeacons["[virtual_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. @@ -709,7 +709,7 @@ Pass a positive integer as an argument to override a bot's default speed. return TRUE /mob/living/simple_animal/bot/proc/find_nearest_beacon() - for(var/obj/machinery/navbeacon/NB in GLOB.navbeacons["[z]"]) + for(var/obj/machinery/navbeacon/NB in GLOB.navbeacons["[virtual_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. @@ -786,7 +786,7 @@ Pass a positive integer as an argument to override a bot's default speed. /mob/living/simple_animal/bot/proc/calc_summon_path(turf/avoid) check_bot_access() - INVOKE_ASYNC(src, .proc/do_calc_summon_path, avoid) + INVOKE_ASYNC(src, PROC_REF(do_calc_summon_path), avoid) /mob/living/simple_animal/bot/proc/do_calc_summon_path(turf/avoid) set_path(get_path_to(src, summon_target, /turf/proc/Distance_cardinal, 0, 150, id=access_card, exclude=avoid)) @@ -810,7 +810,7 @@ Pass a positive integer as an argument to override a bot's default speed. var/moved = bot_move(summon_target, 3) // Move attempt if(!moved) - addtimer(CALLBACK(src, .proc/summon_step_not_moved), 2) + addtimer(CALLBACK(src, PROC_REF(summon_step_not_moved)), 2) else // no path, so calculate new one calc_summon_path() diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index ea8c5bd93540..5229967f0374 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -155,7 +155,7 @@ stolen_valor += C.job update_titles() - INVOKE_ASYNC(weapon, /obj/item/proc/attack, C, src) + INVOKE_ASYNC(weapon, TYPE_PROC_REF(/obj/item, attack), C, src) C.Knockdown(20) /mob/living/simple_animal/bot/cleanbot/attackby(obj/item/W, mob/user, params) diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm index c3c046b84727..bd3ad4bbcf17 100644 --- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm +++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm @@ -64,7 +64,7 @@ var/threatlevel = 0 if(C.incapacitated()) continue - threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons)) + threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, PROC_REF(check_for_weapons))) //speak(C.real_name + text(": threat: []", threatlevel)) if(threatlevel < 4) continue diff --git a/code/modules/mob/living/simple_animal/bot/firebot.dm b/code/modules/mob/living/simple_animal/bot/firebot.dm index 4bfa9dd98a6c..ba8eafba9010 100644 --- a/code/modules/mob/living/simple_animal/bot/firebot.dm +++ b/code/modules/mob/living/simple_animal/bot/firebot.dm @@ -23,8 +23,8 @@ window_name = "Mobile Fire Extinguisher v1.0" path_image_color = "#FFA500" - var/atom/target_fire - var/atom/old_target_fire + var/datum/weakref/target_fire_ref + var/datum/weakref/old_target_fire_ref var/obj/item/extinguisher/internal_ext @@ -106,15 +106,15 @@ /mob/living/simple_animal/bot/firebot/bot_reset() ..() - target_fire = null - old_target_fire = null + target_fire_ref = null + old_target_fire_ref = null ignore_list = list() anchored = FALSE update_appearance() /mob/living/simple_animal/bot/firebot/proc/soft_reset() path = list() - target_fire = null + target_fire_ref = null mode = BOT_IDLE last_found = world.time update_appearance() @@ -149,7 +149,7 @@ audible_message("[src] buzzes oddly!") playsound(src, "sparks", 75, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) if(user) - old_target_fire = user + old_target_fire_ref = WEAKREF(user) extinguish_fires = FALSE extinguish_people = TRUE @@ -184,7 +184,7 @@ else if(isturf(target)) var/turf/open/T = target - if(T.active_hotspot) + if(T.active_hotspot || T.turf_fire) return TRUE return FALSE @@ -194,12 +194,12 @@ return if(IsStun() || IsParalyzed()) - old_target_fire = target_fire - target_fire = null + old_target_fire_ref = target_fire_ref + target_fire_ref = null mode = BOT_IDLE return - if(prob(1) && target_fire == null) + if(prob(1) && !target_fire_ref) var/list/messagevoice = list("No fires detected." = 'sound/voice/firebot/nofires.ogg', "Only you can prevent station fires." = 'sound/voice/firebot/onlyyou.ogg', "Temperature nominal." = 'sound/voice/firebot/tempnominal.ogg', @@ -210,24 +210,39 @@ // Couldn't reach the target, reset and try again ignoring the old one if(frustration > 8) - old_target_fire = target_fire + old_target_fire_ref = target_fire_ref soft_reset() + var/atom/target_fire = target_fire_ref?.resolve() + // We extinguished our target or it was deleted if(QDELETED(target_fire) || !is_burning(target_fire) || isdead(target_fire)) target_fire = null + target_fire_ref = null var/scan_range = (stationary_mode ? 1 : DEFAULT_SCAN_RANGE) + var/old_target_fire = old_target_fire_ref?.resolve() if(extinguish_people) target_fire = scan(/mob/living, old_target_fire, scan_range) // Scan for burning humans first + target_fire_ref = WEAKREF(target_fire) - if(target_fire == null && extinguish_fires) + if(!target_fire && extinguish_fires) target_fire = scan(/turf/open, old_target_fire, scan_range) // Scan for burning turfs second + target_fire_ref = WEAKREF(target_fire) - old_target_fire = target_fire + old_target_fire_ref = target_fire_ref + + if(!target_fire) + if(auto_patrol) + if(mode == BOT_IDLE || mode == BOT_START_PATROL) + start_patrol() + + if(mode == BOT_PATROL) + bot_patrol() + return // Target reached ENGAGE WATER CANNON - if(target_fire && (get_dist(src, target_fire) <= (emagged == 2 ? 1 : 2))) // Make the bot spray water from afar when not emagged + if(get_dist(src, target_fire) <= (emagged == 2 ? 1 : 2)) // Make the bot spray water from afar when not emagged if((speech_cooldown + SPEECH_INTERVAL) < world.time) if(ishuman(target_fire)) speak("Stop, drop and roll!") @@ -243,39 +258,32 @@ soft_reset() // Target ran away - else if(target_fire && path.len && (get_dist(target_fire,path[path.len]) > 2)) + else if(length(path) && (get_dist(target_fire, path[length(path)]) > 2)) path = list() mode = BOT_IDLE last_found = world.time - else if(target_fire && stationary_mode) + else if(stationary_mode) soft_reset() return - if(target_fire && (get_dist(src, target_fire) > 2)) + if(get_dist(src, target_fire) > 2) path = get_path_to(src, get_turf(target_fire), /turf/proc/Distance_cardinal, 0, 30, 1, id=access_card) mode = BOT_MOVING - if(!path.len) + if(!length(path)) soft_reset() - if(path.len > 0 && target_fire) + if(length(path)) if(!bot_move(path[path.len])) - old_target_fire = target_fire + old_target_fire_ref = target_fire_ref soft_reset() return // We got a target but it's too far away from us - if(path.len > 8 && target_fire) + if(length(path) > 8) frustration++ - if(auto_patrol && !target_fire) - if(mode == BOT_IDLE || mode == BOT_START_PATROL) - start_patrol() - - if(mode == BOT_PATROL) - bot_patrol() - //Look for burning people or turfs around the bot /mob/living/simple_animal/bot/firebot/process_scan(atom/scan_target) diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index fa6faaa6a889..d15c20f1aa1d 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -249,7 +249,7 @@ mode = BOT_REPAIRING F.ReplaceWithLattice() audible_message("[src] makes an excited booping sound.") - addtimer(CALLBACK(src, .proc/go_idle), 0.5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(go_idle)), 0.5 SECONDS) path = list() return if(path.len == 0) diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 7697ac90f37f..34ce788c53c5 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -49,14 +49,14 @@ /mob/living/simple_animal/bot/honkbot/proc/sensor_blink() icon_state = "honkbot-c" - addtimer(CALLBACK(src, /atom/.proc/update_icon), 5, TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 5, TIMER_OVERRIDE|TIMER_UNIQUE) //honkbots react with sounds. /mob/living/simple_animal/bot/honkbot/proc/react_ping() playsound(src, 'sound/machines/ping.ogg', 50, TRUE, -1) //the first sound upon creation! spam_flag = TRUE sensor_blink() - addtimer(CALLBACK(src, .proc/spam_flag_false), 18) // calibrates before starting the honk + addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), 18) // calibrates before starting the honk /mob/living/simple_animal/bot/honkbot/proc/react_buzz() playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE, -1) @@ -114,14 +114,14 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, /mob/living/simple_animal/bot/honkbot/attack_hand(mob/living/carbon/human/H) if(H.a_intent == "harm") retaliate(H) - addtimer(CALLBACK(src, .proc/react_buzz), 5) + addtimer(CALLBACK(src, PROC_REF(react_buzz)), 5) return ..() /mob/living/simple_animal/bot/honkbot/attackby(obj/item/W, mob/user, params) if(W.tool_behaviour != TOOL_SCREWDRIVER && (W.force) && (!target) && (W.damtype != STAMINA)) retaliate(user) - addtimer(CALLBACK(src, .proc/react_buzz), 5) + addtimer(CALLBACK(src, PROC_REF(react_buzz)), 5) ..() /mob/living/simple_animal/bot/honkbot/emag_act(mob/user) @@ -158,8 +158,9 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, if(istype(AM, /obj/item)) playsound(src, honksound, 50, TRUE, -1) var/obj/item/I = AM - if(I.throwforce < health && I.thrownby && (istype(I.thrownby, /mob/living/carbon/human))) - var/mob/living/carbon/human/H = I.thrownby + var/mob/thrown_by = I.thrownby?.resolve() + if(I.throwforce < health && thrown_by && (istype(thrown_by, /mob/living/carbon/human))) + var/mob/living/carbon/human/H = thrown_by retaliate(H) ..() @@ -169,21 +170,21 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, playsound(src, honksound, 50, TRUE, -1) spam_flag = TRUE //prevent spam sensor_blink() - addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntimehorn) + addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), cooldowntimehorn) else if (emagged == 2) //emagged honkbots will spam short and memorable sounds. if (!spam_flag) playsound(src, "honkbot_e", 50, FALSE) spam_flag = TRUE // prevent spam icon_state = "honkbot-e" - addtimer(CALLBACK(src, /atom/.proc/update_icon), 30, TIMER_OVERRIDE|TIMER_UNIQUE) - addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntimehorn) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 30, TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), cooldowntimehorn) /mob/living/simple_animal/bot/honkbot/proc/honk_attack(mob/living/carbon/C) // horn attack if(!spam_flag) playsound(loc, honksound, 50, TRUE, -1) spam_flag = TRUE // prevent spam sensor_blink() - addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntimehorn) + addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), cooldowntimehorn) /mob/living/simple_animal/bot/honkbot/proc/stun_attack(mob/living/carbon/C) // airhorn stun if(!spam_flag) @@ -205,7 +206,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, target = oldtarget_name else // you really don't want to hit an emagged honkbot threatlevel = 6 // will never let you go - addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntime) + addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), cooldowntime) log_combat(src,C,"honked") @@ -214,7 +215,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, else C.stuttering = 20 C.Paralyze(80) - addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntime) + addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), cooldowntime) /mob/living/simple_animal/bot/honkbot/handle_automated_action() @@ -278,13 +279,13 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, target = null last_found = world.time frustration = 0 - INVOKE_ASYNC(src, .proc/handle_automated_action) //responds quickly + INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) //responds quickly /mob/living/simple_animal/bot/honkbot/proc/back_to_hunt() anchored = FALSE frustration = 0 mode = BOT_HUNT - INVOKE_ASYNC(src, .proc/handle_automated_action) // responds quickly + INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) // responds quickly /mob/living/simple_animal/bot/honkbot/proc/look_for_perp() anchored = FALSE @@ -314,7 +315,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, speak("Honk!") visible_message("[src] starts chasing [C.name]!") mode = BOT_HUNT - INVOKE_ASYNC(src, .proc/handle_automated_action) + INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) break else continue @@ -360,7 +361,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"}, C.Paralyze(10) playsound(loc, 'sound/misc/sadtrombone.ogg', 50, TRUE, -1) if(!client) - INVOKE_ASYNC(src, .proc/speak, "Honk!") + INVOKE_ASYNC(src, PROC_REF(speak), "Honk!") sensor_blink() return . = ..() diff --git a/code/modules/mob/living/simple_animal/bot/hygienebot.dm b/code/modules/mob/living/simple_animal/bot/hygienebot.dm index af1ce80b2a88..7240027f0853 100644 --- a/code/modules/mob/living/simple_animal/bot/hygienebot.dm +++ b/code/modules/mob/living/simple_animal/bot/hygienebot.dm @@ -175,13 +175,13 @@ frustration = 0 last_found = world.time stop_washing() - INVOKE_ASYNC(src, .proc/handle_automated_action) + INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) /mob/living/simple_animal/bot/hygienebot/proc/back_to_hunt() frustration = 0 mode = BOT_HUNT stop_washing() - INVOKE_ASYNC(src, .proc/handle_automated_action) + INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) /mob/living/simple_animal/bot/hygienebot/proc/look_for_lowhygiene() for (var/mob/living/carbon/human/H in view(7,src)) //Find the NEET @@ -194,7 +194,7 @@ playsound(loc, 'sound/effects/hygienebot_happy.ogg', 60, 1) visible_message("[src] points at [H.name]!") mode = BOT_HUNT - INVOKE_ASYNC(src, .proc/handle_automated_action) + INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) break else continue diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index e64b0b362e0a..5191ee1ba0c8 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -578,7 +578,7 @@ buzz(SIGH) mode = BOT_WAIT_FOR_NAV blockcount = 0 - addtimer(CALLBACK(src, .proc/process_blocked, next), 2 SECONDS) + addtimer(CALLBACK(src, PROC_REF(process_blocked), next), 2 SECONDS) return return else @@ -591,7 +591,7 @@ if(BOT_NAV) // calculate new path mode = BOT_WAIT_FOR_NAV - INVOKE_ASYNC(src, .proc/process_nav) + INVOKE_ASYNC(src, PROC_REF(process_nav)) /mob/living/simple_animal/bot/mulebot/proc/process_blocked(turf/next) calc_path(avoid=next) @@ -639,7 +639,7 @@ /mob/living/simple_animal/bot/mulebot/proc/start_home() if(!on) return - INVOKE_ASYNC(src, .proc/do_start_home) + INVOKE_ASYNC(src, PROC_REF(do_start_home)) /mob/living/simple_animal/bot/mulebot/proc/do_start_home() set_destination(home_destination) @@ -775,8 +775,8 @@ new /obj/effect/decal/cleanable/oil(loc) ..() -/mob/living/simple_animal/bot/mulebot/resist() - ..() +/mob/living/simple_animal/bot/mulebot/execute_resist() + . = ..() if(load) unload() @@ -818,7 +818,7 @@ if(isobserver(AM)) visible_message("A ghostly figure appears on [src]!") - RegisterSignal(AM, COMSIG_MOVABLE_MOVED, .proc/ghostmoved) + RegisterSignal(AM, COMSIG_MOVABLE_MOVED, PROC_REF(ghostmoved)) AM.forceMove(src) else if(!wires.is_cut(WIRE_LOADCHECK)) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index f55d71a8590f..af33ef493167 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -174,7 +174,7 @@ Auto Patrol: []"}, /mob/living/simple_animal/bot/secbot/proc/retaliate(mob/living/carbon/human/H) var/judgement_criteria = judgement_criteria() - threatlevel = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons)) + threatlevel = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, PROC_REF(check_for_weapons))) threatlevel += 6 if(threatlevel >= 4) target = H @@ -249,8 +249,9 @@ Auto Patrol: []"}, /mob/living/simple_animal/bot/secbot/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum) if(istype(AM, /obj/item)) var/obj/item/I = AM - if(I.throwforce < src.health && I.thrownby && ishuman(I.thrownby)) - var/mob/living/carbon/human/H = I.thrownby + var/mob/thrown_by = I.thrownby?.resolve() + if(I.throwforce < src.health && thrown_by && ishuman(thrown_by)) + var/mob/living/carbon/human/H = thrown_by retaliate(H) ..() @@ -259,7 +260,7 @@ Auto Patrol: []"}, playsound(src, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2) C.visible_message("[src] is trying to put zipties on [C]!",\ "[src] is trying to put zipties on you!") - addtimer(CALLBACK(src, .proc/attempt_handcuff, C), 60) + addtimer(CALLBACK(src, PROC_REF(attempt_handcuff), C), 60) /mob/living/simple_animal/bot/secbot/proc/attempt_handcuff(mob/living/carbon/C) if(!on || !Adjacent(C) || !isturf(C.loc)) //if he's in a closet or not adjacent, we cancel cuffing. @@ -274,7 +275,7 @@ Auto Patrol: []"}, var/judgement_criteria = judgement_criteria() playsound(src, 'sound/weapons/egloves.ogg', 50, TRUE, -1) icon_state = "[initial(icon_state)]-c" - addtimer(CALLBACK(src, /atom/.proc/update_icon), 2) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 2) var/threat = 5 if(harm) @@ -283,11 +284,11 @@ Auto Patrol: []"}, C.stuttering = 5 C.Paralyze(100) var/mob/living/carbon/human/H = C - threat = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons)) + threat = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, PROC_REF(check_for_weapons))) else C.Paralyze(100) C.stuttering = 5 - threat = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons)) + threat = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, PROC_REF(check_for_weapons))) log_combat(src,C,"stunned") if(declare_arrests) @@ -396,13 +397,13 @@ Auto Patrol: []"}, target = null last_found = world.time frustration = 0 - INVOKE_ASYNC(src, .proc/handle_automated_action) + INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) /mob/living/simple_animal/bot/secbot/proc/back_to_hunt() anchored = FALSE frustration = 0 mode = BOT_HUNT - INVOKE_ASYNC(src, .proc/handle_automated_action) + INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) // look for a criminal in view of the bot /mob/living/simple_animal/bot/secbot/proc/look_for_perp() @@ -415,7 +416,7 @@ Auto Patrol: []"}, if((C.name == oldtarget_name) && (world.time < last_found + 100)) continue - threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons)) + threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, PROC_REF(check_for_weapons))) if(!threatlevel) continue @@ -430,7 +431,7 @@ Auto Patrol: []"}, playsound(src, pick('sound/voice/beepsky/criminal.ogg', 'sound/voice/beepsky/justice.ogg', 'sound/voice/beepsky/freeze.ogg'), 50, FALSE) visible_message("[src] points at [C.name]!") mode = BOT_HUNT - INVOKE_ASYNC(src, .proc/handle_automated_action) + INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) break else continue diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 778cd3ff4910..df3cfe349808 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -42,6 +42,7 @@ var/can_repair_constructs = FALSE var/can_repair_self = FALSE var/runetype + var/datum/action/innate/cult/create_rune/our_rune var/holy = FALSE /mob/living/simple_animal/hostile/construct/Initialize() @@ -60,13 +61,17 @@ S.action.button.moved = "6:[pos],4:-2" spellnum++ if(runetype) - var/datum/action/innate/cult/create_rune/CR = new runetype(src) - CR.Grant(src) + our_rune = new runetype(src) + our_rune.Grant(src) var/pos = 2+spellnum*31 - CR.button.screen_loc = "6:[pos],4:-2" - CR.button.moved = "6:[pos],4:-2" + our_rune.button.screen_loc = "6:[pos],4:-2" + our_rune.button.moved = "6:[pos],4:-2" add_overlay("glow_[icon_state][holy]") +/mob/living/simple_animal/hostile/construct/Destroy() + QDEL_NULL(our_rune) + return ..() + /mob/living/simple_animal/hostile/construct/Login() . = ..() if(!. || !client) @@ -450,15 +455,11 @@ background_icon_state = "bg_demon" buttontooltipstyle = "cult" button_icon_state = "cult_mark" - var/mob/living/simple_animal/hostile/construct/harvester/the_construct - -/datum/action/innate/seek_prey/Grant(mob/living/C) - the_construct = C - ..() /datum/action/innate/seek_prey/Activate() if(GLOB.cult_narsie == null) return + var/mob/living/simple_animal/hostile/construct/harvester/the_construct = owner if(the_construct.seeking) desc = "None can hide from Nar'Sie, activate to track a survivor attempting to flee the red harvest!" button_icon_state = "cult_mark" diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm index de46d55e4f34..04ff8f5f54de 100644 --- a/code/modules/mob/living/simple_animal/corpse.dm +++ b/code/modules/mob/living/simple_animal/corpse.dm @@ -100,11 +100,11 @@ /obj/effect/mob_spawn/human/corpse/frontier name = "Frontiersman" - outfit = /datum/outfit/russiancorpse + outfit = /datum/outfit/frontier hairstyle = "Bald" facial_hairstyle = "Shaved" -/datum/outfit/russiancorpse +/datum/outfit/frontier name = "Frontiersman Corpse" uniform = /obj/item/clothing/under/rank/security/officer/frontier shoes = /obj/item/clothing/shoes/jackboots @@ -112,12 +112,12 @@ gloves = /obj/item/clothing/gloves/color/black /obj/effect/mob_spawn/human/corpse/frontier/ranged - outfit = /datum/outfit/russiancorpse + outfit = /datum/outfit/frontier /obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper - outfit = /datum/outfit/russiancorpse/trooper + outfit = /datum/outfit/frontier/trooper -/datum/outfit/russiancorpse/trooper +/datum/outfit/frontier/trooper name = "Frontiersman Armored Corpse" suit = /obj/item/clothing/suit/armor/vest/bulletproof/frontier shoes = /obj/item/clothing/shoes/combat @@ -128,10 +128,10 @@ /obj/effect/mob_spawn/human/corpse/frontier/ranged/officer name = "Frontiersman Officer" - outfit = /datum/outfit/russiancorpse/officer + outfit = /datum/outfit/frontier/officer -/datum/outfit/russiancorpse/officer - name = "Frontiersman officer Corpse" +/datum/outfit/frontier/officer + name = "Frontiersman Officer Corpse" uniform = /obj/item/clothing/under/rank/security/officer/frontier/officer suit = /obj/item/clothing/suit/armor/frontier shoes = /obj/item/clothing/shoes/combat @@ -139,14 +139,19 @@ head = /obj/item/clothing/head/caphat/frontier /obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper/heavy - outfit = /datum/outfit/russiancorpse/trooper/heavy + outfit = /datum/outfit/frontier/trooper/heavy -/datum/outfit/russiancorpse/trooper/heavy +/datum/outfit/frontier/trooper/heavy name = "Frontiersman Heavy Corpse" suit = /obj/item/clothing/suit/space/hardsuit/security/independent/frontier head = /obj/item/clothing/head/beret/sec/frontier/officer back = /obj/item/minigunpack +/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper/heavy/gunless + outfit = /datum/outfit/russiancorpse/trooper/heavy/gunless + +/datum/outfit/russiancorpse/trooper/heavy/gunless + back = null /obj/effect/mob_spawn/human/corpse/wizard name = "Space Wizard Corpse" diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 193c3fdb51fc..1916a7c52adb 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -88,7 +88,7 @@ gold_core_spawnable = NO_SPAWN unique_pet = TRUE var/list/family = list()//var restored from savefile, has count of each child type - var/list/children = list()//Actual mob instances of children + var/list/children = list()//Actual mob weak references of children var/cats_deployed = 0 var/memory_saved = FALSE held_state = "cat" @@ -112,7 +112,7 @@ /mob/living/simple_animal/pet/cat/Runtime/make_babies() var/mob/baby = ..() if(baby) - children += baby + children += WEAKREF(baby) return baby /mob/living/simple_animal/pet/cat/Runtime/death() @@ -139,13 +139,14 @@ var/list/file_data = list() family = list() if(!dead) - for(var/mob/living/simple_animal/pet/cat/kitten/C in children) - if(istype(C,type) || C.stat || !C.z || (C.flags_1 & HOLOGRAM_1)) + for(var/datum/weakref/childRef in children) + var/mob/living/simple_animal/pet/cat/kitten/child = childRef.resolve() + if(istype(child, type) || child.stat || !child.z || (child.flags_1 & HOLOGRAM_1)) continue - if(C.type in family) - family[C.type] += 1 + if(child.type in family) + family[child.type] += 1 else - family[C.type] = 1 + family[child.type] = 1 file_data["family"] = family fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index b62bb484c7bf..af5875853ce1 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -73,7 +73,7 @@ if(prob(1)) manual_emote(pick("dances around.","chases its tail!")) - INVOKE_ASYNC(GLOBAL_PROC, .proc/dance_rotate, src) + INVOKE_ASYNC(GLOBAL_PROC, PROC_REF(dance_rotate), src) //Corgis and pugs are now under one dog subtype @@ -318,7 +318,7 @@ /mob/living/simple_animal/pet/dog/corgi/proc/place_on_head(obj/item/item_to_add, mob/user) if(istype(item_to_add, /obj/item/grenade/c4)) // last thing he ever wears, I guess - INVOKE_ASYNC(item_to_add, /obj/item.proc/afterattack, src, user, 1) + INVOKE_ASYNC(item_to_add, TYPE_PROC_REF(/obj/item, afterattack), src, user, 1) return if(inventory_head) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index e29948aa8b80..8714a3e49191 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -98,38 +98,4 @@ icon_living = icon_state icon_dead = "[visualAppearance]_dead" -/obj/effect/mob_spawn/drone/derelict - name = "derelict drone shell" - desc = "A long-forgotten drone shell. It seems kind of... Space Russian." - icon = 'icons/mob/drone.dmi' - icon_state = "drone_maint_hat" - mob_name = "derelict drone" - mob_type = /mob/living/simple_animal/drone/derelict - anchored = TRUE - short_desc = "You are a drone on Kosmicheskaya Stantsiya 13." - flavour_text = "Something has brought you out of hibernation, and the station is in gross disrepair." - important_info = "Build, repair, maintain and improve the station that housed you on activation." - -/mob/living/simple_animal/drone/derelict - name = "derelict drone" - default_hatmask = /obj/item/clothing/head/trapper - laws = \ - "1. You may not involve yourself in the matters of another sentient being outside the station that housed your activation, even if such matters conflict with Law Two or Law Three, unless the other being is another Drone.\n"+\ - "2. You may not harm any sentient being, regardless of intent or circumstance.\n"+\ - "3. Your goals are to actively build, maintain, repair, improve, and provide power to the best of your abilities within the facility that housed your activation." - flavortext = \ - "\nDO NOT WILLINGLY LEAVE KOSMICHESKAYA STANTSIYA 13 (THE DERELICT)\n"+\ - "Derelict drones are a ghost role that is allowed to roam freely on KS13, with the main goal of repairing and improving it.\n"+\ - "Do not interfere with the round going on outside KS13.\n"+\ - "Actions that constitute interference include, but are not limited to:\n"+\ - " - Going to the main station in search of materials.\n"+\ - " - Interacting with non-drone players outside KS13, dead or alive.\n"+\ - "These rules are at admin discretion and will be heavily enforced.\n"+\ - "If you do not have the regular drone laws, follow your laws to the best of your ability." - -/mob/living/simple_animal/drone/derelict/Initialize() - . = ..() - AddComponent(/datum/component/stationstuck, TRUE, "Your emergency station return device activates, sending you back to KS13!", "01000110 01010101 01000011 01001011 00100000 01011001 01001111 01010101
WARNING: Dereliction of KS13 detected. Self destruct activated.") - - diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm index a70a9ff5cc64..56d7fefb06c4 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm @@ -106,7 +106,7 @@ "Repair Drone" = image(icon = 'icons/mob/drone.dmi', icon_state = REPAIRDRONE), "Scout Drone" = image(icon = 'icons/mob/drone.dmi', icon_state = SCOUTDRONE) ) - var/picked_icon = show_radial_menu(src, src, drone_icons, custom_check = CALLBACK(src, .proc/check_menu), radius = 38, require_near = TRUE) + var/picked_icon = show_radial_menu(src, src, drone_icons, custom_check = CALLBACK(src, PROC_REF(check_menu)), radius = 38, require_near = TRUE) switch(picked_icon) if("Maintenance Drone") visualAppearance = MAINTDRONE @@ -118,7 +118,7 @@ "pink" = image(icon = 'icons/mob/drone.dmi', icon_state = "[visualAppearance]_pink"), "red" = image(icon = 'icons/mob/drone.dmi', icon_state = "[visualAppearance]_red") ) - var/picked_color = show_radial_menu(src, src, drone_colors, custom_check = CALLBACK(src, .proc/check_menu), radius = 38, require_near = TRUE) + var/picked_color = show_radial_menu(src, src, drone_colors, custom_check = CALLBACK(src, PROC_REF(check_menu)), radius = 38, require_near = TRUE) if(picked_color) icon_state = "[visualAppearance]_[picked_color]" icon_living = "[visualAppearance]_[picked_color]" diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index e29029ff694d..a1884b76298e 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -152,7 +152,7 @@ to_chat(src, "You are tipped over by [M]!") Paralyze(60, ignore_canstun = TRUE) icon_state = icon_dead - addtimer(CALLBACK(src, .proc/cow_tipped, M), rand(20,50)) + addtimer(CALLBACK(src, PROC_REF(cow_tipped), M), rand(20,50)) else ..() diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 4f9aea033461..cf1b0de8ae70 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -198,7 +198,7 @@ GLOBAL_VAR_INIT(mouse_killed, 0) maxHealth = 30 health = maxHealth to_chat(src, "You ate cheese! You are now stronger, bigger and faster!") - addtimer(CALLBACK(src, .proc/cheese_down), 3 MINUTES) + addtimer(CALLBACK(src, PROC_REF(cheese_down)), 3 MINUTES) /mob/living/simple_animal/mouse/proc/cheese_down() cheesed = FALSE @@ -274,7 +274,7 @@ GLOBAL_VAR_INIT(mouse_killed, 0) bitesize = 3 eatverb = "devour" list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) - foodtype = GROSS | MEAT | RAW + foodtype = GORE | MEAT | RAW grind_results = list(/datum/reagent/blood = 20, /datum/reagent/liquidgibs = 5) /obj/item/reagent_containers/food/snacks/deadmouse/examine(mob/user) diff --git a/code/modules/mob/living/simple_animal/friendly/snake.dm b/code/modules/mob/living/simple_animal/friendly/snake.dm index c9695c6e1a61..d33fac8f5c00 100644 --- a/code/modules/mob/living/simple_animal/friendly/snake.dm +++ b/code/modules/mob/living/simple_animal/friendly/snake.dm @@ -41,6 +41,10 @@ var/glasses_overlay_file = 'icons/mob/pets.dmi' var/obj/item/clothing/glasses/glasses = null //snek glasses +/mob/living/simple_animal/hostile/retaliate/poison/snake/Destroy() + if(glasses) + QDEL_NULL(glasses) + return ..() /mob/living/simple_animal/hostile/retaliate/poison/snake/ListTargets(atom/the_target) . = oview(vision_range, targets_from) //get list of things in vision range @@ -156,7 +160,7 @@ glasses = new /obj/item/clothing/glasses/regular(src) grant_all_languages() update_overlays() - INVOKE_ASYNC(src, .proc/update_phrases) + INVOKE_ASYNC(src, PROC_REF(update_phrases)) . = ..() /mob/living/simple_animal/hostile/retaliate/poison/snake/bookworm/proc/update_phrases() diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm index 384bbf7e005b..7ebd3c8b3cca 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm @@ -34,7 +34,7 @@ /mob/living/simple_animal/hostile/guardian/charger/Shoot(atom/targeted_atom) charging = 1 - throw_at(targeted_atom, range, 1, src, FALSE, TRUE, callback = CALLBACK(src, .proc/charging_end)) + throw_at(targeted_atom, range, 1, src, FALSE, TRUE, callback = CALLBACK(src, PROC_REF(charging_end))) /mob/living/simple_animal/hostile/guardian/charger/proc/charging_end() charging = 0 diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm index 863389b9840a..f93f70d8ffb3 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm @@ -49,9 +49,9 @@ if(bomb_cooldown <= world.time && !stat) to_chat(src, "Success! Bomb armed!") bomb_cooldown = world.time + 200 - RegisterSignal(A, COMSIG_PARENT_EXAMINE, .proc/display_examine) - RegisterSignal(A, boom_signals, .proc/kaboom) - addtimer(CALLBACK(src, .proc/disable, A), 600, TIMER_UNIQUE|TIMER_OVERRIDE) + RegisterSignal(A, COMSIG_PARENT_EXAMINE, PROC_REF(display_examine)) + RegisterSignal(A, boom_signals, PROC_REF(kaboom)) + addtimer(CALLBACK(src, PROC_REF(disable), A), 600, TIMER_UNIQUE|TIMER_OVERRIDE) else to_chat(src, "Your powers are on cooldown! You must wait 20 seconds between bombs.") diff --git a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm index b8a8bbb54366..a86e38db7772 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm @@ -53,7 +53,7 @@ return A.AddElement(/datum/element/forced_gravity, new_gravity) gravito_targets[A] = new_gravity - RegisterSignal(A, COMSIG_MOVABLE_MOVED, .proc/__distance_check) + RegisterSignal(A, COMSIG_MOVABLE_MOVED, PROC_REF(__distance_check)) playsound(src, 'sound/effects/gravhit.ogg', 100, TRUE) /mob/living/simple_animal/hostile/guardian/gravitokinetic/proc/remove_gravity(atom/target) diff --git a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm index d4666873848e..105ae8b35ec8 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/ranged.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/ranged.dm @@ -119,7 +119,7 @@ /obj/effect/snare/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/modules/mob/living/simple_animal/guardian/types/support.dm b/code/modules/mob/living/simple_animal/guardian/types/support.dm index 9d39d055b7c4..00344f48da59 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/support.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/support.dm @@ -101,7 +101,7 @@ /obj/structure/receiving_pad/New(loc, mob/living/simple_animal/hostile/guardian/healer/G) . = ..() - if(G.guardiancolor) + if(G?.guardiancolor) add_atom_colour(G.guardiancolor, FIXED_COLOUR_PRIORITY) /obj/structure/receiving_pad/proc/disappear() diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 9afea9921ef6..caf465140231 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -84,7 +84,7 @@ environment_smash = ENVIRONMENT_SMASH_MINERALS weather_immunities = list("snow") -/mob/living/simple_animal/hostile/bear/russian +/mob/living/simple_animal/hostile/bear/frontier name = "combat bear" desc = "A ferocious brown bear decked out in armor plating, a red star with yellow outlining details the shoulder plating." icon_state = "combatbear" @@ -114,7 +114,7 @@ /obj/item/bear_armor name = "pile of bear armor" desc = "A scattered pile of various shaped armor pieces fitted for a bear, some duct tape, and a nail filer. Crude instructions \ - are written on the back of one of the plates in russian. This seems like an awful idea." + are written on the back of one of the plates. This seems like an awful idea." icon = 'icons/obj/items_and_weapons.dmi' icon_state = "bear_armor_upgrade" @@ -141,7 +141,7 @@ icon_living = "butterbear" icon_dead = "butterbear_dead" desc = "I can't believe its not a bear!" - faction = list("neutral", "russian") + faction = list("neutral", "frontiersmen") obj_damage = 11 melee_damage_lower = 1 melee_damage_upper = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 8fa2ce4b516f..676b58a98520 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -10,6 +10,10 @@ #define BEE_POLLINATE_PEST_CHANCE 33 #define BEE_POLLINATE_POTENCY_CHANCE 50 +/* For when we makes bees edible lmao (NEWFOOD) +#define BEE_FOODGROUPS RAW | MEAT | GORE /*| BUGS*/ +*/ + /mob/living/simple_animal/hostile/poison/bees name = "bee" desc = "Buzzy buzzy bee, stingy sti- Ouch!" @@ -92,7 +96,8 @@ return ..() else . = list() // The following code is only very slightly slower than just returning oview(vision_range, targets_from), but it saves us much more work down the line - var/list/searched_for = oview(vision_range, targets_from) + var/atom/target_from = GET_TARGETS_FROM(src) + var/list/searched_for = oview(vision_range, target_from) for(var/obj/A in searched_for) . += A for(var/mob/A in searched_for) @@ -320,4 +325,4 @@ /mob/living/simple_animal/hostile/poison/bees/short/Initialize(mapload, timetolive=50 SECONDS) . = ..() - addtimer(CALLBACK(src, .proc/death), timetolive) + addtimer(CALLBACK(src, PROC_REF(death)), timetolive) diff --git a/code/modules/mob/living/simple_animal/hostile/frontiersman.dm b/code/modules/mob/living/simple_animal/hostile/frontiersman.dm index af3e742a08d7..feeecdb5b43d 100644 --- a/code/modules/mob/living/simple_animal/hostile/frontiersman.dm +++ b/code/modules/mob/living/simple_animal/hostile/frontiersman.dm @@ -39,17 +39,22 @@ retreat_distance = 5 minimum_distance = 5 projectilesound = 'sound/weapons/gun/revolver/shot.ogg' - casingtype = /obj/item/ammo_casing/n762 + casingtype = /obj/item/ammo_casing/n762_38 +/mob/living/simple_animal/hostile/frontier/ranged/neutered + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged) /mob/living/simple_animal/hostile/frontier/ranged/mosin icon_state = "frontiersmanrangedrifle" icon_living = "frontiersmanrangedrifle" loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged, /obj/item/gun/ballistic/rifle/boltaction) - casingtype = /obj/item/ammo_casing/a762 + casingtype = /obj/item/ammo_casing/a762_54 projectilesound = 'sound/weapons/gun/rifle/mosin.ogg' +/mob/living/simple_animal/hostile/frontier/ranged/mosin/neutered + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged) + /mob/living/simple_animal/hostile/frontier/ranged/trooper icon_state = "frontiersmanrangedelite" icon_living = "frontiersmanrangedelite" @@ -60,6 +65,9 @@ loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper, /obj/item/gun/ballistic/shotgun/lethal) +/mob/living/simple_animal/hostile/frontier/ranged/trooper/neutered + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper) + /mob/living/simple_animal/hostile/frontier/ranged/trooper/ak47 icon_state = "frontiersmanrangedak47" icon_living = "frontiersmanrangedak47" @@ -68,7 +76,10 @@ rapid_fire_delay = 3 casingtype = /obj/item/ammo_casing/a762_39 loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper, - /obj/item/gun/ballistic/automatic/assualt/ak47) + /obj/item/gun/ballistic/automatic/assault/ak47) + +/mob/living/simple_animal/hostile/frontier/ranged/trooper/ak47/neutured + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper) /mob/living/simple_animal/hostile/frontier/ranged/trooper/rifle icon_state = "frontiersmanrangedmosin" @@ -76,9 +87,12 @@ loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper, /obj/item/gun/ballistic/rifle/boltaction) - casingtype = /obj/item/ammo_casing/a762 + casingtype = /obj/item/ammo_casing/a762_54 projectilesound = 'sound/weapons/gun/rifle/mosin.ogg' +/mob/living/simple_animal/hostile/frontier/ranged/trooper/rifle/neutered + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper) + /mob/living/simple_animal/hostile/frontier/ranged/trooper/heavy icon_state = "frontiersmanrangedminigun" icon_living = "frontiersmanrangedminigun" @@ -91,6 +105,9 @@ projectiletype = /obj/projectile/beam/weak/penetrator loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper/heavy) +/mob/living/simple_animal/hostile/frontier/ranged/trooper/heavy/neutered + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/trooper/heavy/gunless) + /mob/living/simple_animal/hostile/frontier/ranged/officer name = "Frontiersman Officer" icon_state = "frontiersmanofficer" @@ -102,6 +119,9 @@ loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/officer, /obj/item/gun/ballistic/automatic/pistol/APS) +/mob/living/simple_animal/hostile/frontier/ranged/officer/neutured + loot = list(/obj/effect/mob_spawn/human/corpse/frontier/ranged/officer) + /mob/living/simple_animal/hostile/frontier/ranged/officer/Aggro() ..() summon_backup(15) diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm index ec4516703253..5e3e8d0b34d5 100644 --- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm @@ -116,12 +116,12 @@ melee_damage_lower = 5 melee_damage_upper = 10 poison_per_bite = 3 - var/atom/movable/cocoon_target + var/datum/weakref/cocoon_target_ref var/fed = 0 var/obj/effect/proc_holder/wrap/wrap var/datum/action/innate/spider/lay_eggs/lay_eggs var/datum/action/innate/spider/set_directive/set_directive - var/static/list/consumed_mobs = list() //the tags of mobs that have been consumed by nurse spiders to lay eggs + var/static/list/consumed_mobs = list() //the refs of mobs that have been consumed by nurse spiders to lay eggs gold_core_spawnable = NO_SPAWN /mob/living/simple_animal/hostile/poison/giant_spider/nurse/Initialize() @@ -137,6 +137,7 @@ RemoveAbility(wrap) QDEL_NULL(lay_eggs) QDEL_NULL(set_directive) + QDEL_NULL(wrap) return ..() //broodmothers are the queen of the spiders, can send messages to all them and web faster. That rare round where you get a queen spider and turn your 'for honor' players into 'r6siege' players will be a fun one. @@ -251,17 +252,17 @@ if(!busy && prob(1)) stop_automated_movement = TRUE Goto(pick(urange(20, src, 1)), move_to_delay) - addtimer(CALLBACK(src, .proc/do_action), 5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(do_action)), 5 SECONDS) return 1 /mob/living/simple_animal/hostile/poison/giant_spider/proc/do_action() stop_automated_movement = FALSE walk(src,0) -/mob/living/simple_animal/hostile/poison/giant_spider/nurse/proc/GiveUp(C) +/mob/living/simple_animal/hostile/poison/giant_spider/nurse/proc/GiveUp(mob/living/target) if(busy == MOVING_TO_TARGET) - if(cocoon_target == C && get_dist(src,cocoon_target) > 1) - cocoon_target = null + if(cocoon_target_ref == WEAKREF(target) && get_dist(src, target) > 1) + cocoon_target_ref = null busy = FALSE stop_automated_movement = FALSE @@ -272,11 +273,11 @@ //first, check for potential food nearby to cocoon for(var/mob/living/C in can_see) if(C.stat && !istype(C, /mob/living/simple_animal/hostile/poison/giant_spider) && !C.anchored) - cocoon_target = C + cocoon_target_ref = WEAKREF(C) busy = MOVING_TO_TARGET Goto(C, move_to_delay) //give up if we can't reach them after 10 seconds - addtimer(CALLBACK(src, .proc/GiveUp, C), 10 SECONDS) + addtimer(CALLBACK(src, PROC_REF(GiveUp), C), 10 SECONDS) return //second, spin a sticky spiderweb on this tile @@ -295,14 +296,17 @@ continue if(isitem(O) || isstructure(O) || ismachinery(O)) - cocoon_target = O + cocoon_target_ref = WEAKREF(O) busy = MOVING_TO_TARGET stop_automated_movement = 1 Goto(O, move_to_delay) //give up if we can't reach them after 10 seconds - addtimer(CALLBACK(src, .proc/GiveUp, O), 10 SECONDS) + addtimer(CALLBACK(src, PROC_REF(GiveUp), O), 10 SECONDS) - else if(busy == MOVING_TO_TARGET && cocoon_target) + else if(busy == MOVING_TO_TARGET && cocoon_target_ref) + var/mob/living/cocoon_target = cocoon_target_ref.resolve() + if(!cocoon_target) + return if(get_dist(src, cocoon_target) <= 1) cocoon() @@ -311,6 +315,7 @@ stop_automated_movement = FALSE /mob/living/simple_animal/hostile/poison/giant_spider/nurse/proc/cocoon() + var/mob/living/cocoon_target = cocoon_target_ref?.resolve() if(stat != DEAD && cocoon_target && !cocoon_target.anchored) if(cocoon_target == src) to_chat(src, "You can't wrap yourself!") @@ -333,8 +338,8 @@ var/obj/structure/spider/cocoon/C = new(cocoon_target.loc) if(isliving(cocoon_target)) var/mob/living/L = cocoon_target - if(L.blood_volume && (L.stat != DEAD || !consumed_mobs[L.tag])) //if they're not dead, you can consume them anyway - consumed_mobs[L.tag] = TRUE + if(L.blood_volume && (L.stat != DEAD || !consumed_mobs[REF(L)])) //if they're not dead, you can consume them anyway + consumed_mobs[REF(L)] = TRUE fed++ lay_eggs.UpdateButtonIcon(TRUE) visible_message("[src] sticks a proboscis into [L] and sucks a viscous substance out.","You suck the nutriment out of [L], feeding you enough to lay a cluster of eggs.") @@ -395,6 +400,8 @@ action_icon = 'icons/mob/actions/actions_animal.dmi' action_icon_state = "wrap_0" action_background_icon_state = "bg_alien" + //Set this to false since we're our own action, for some reason + has_action = FALSE /obj/effect/proc_holder/wrap/Initialize() . = ..() @@ -435,8 +442,8 @@ var/atom/movable/target_atom = target if(target_atom.anchored) return - user.cocoon_target = target_atom - INVOKE_ASYNC(user, /mob/living/simple_animal/hostile/poison/giant_spider/nurse/.proc/cocoon) + user.cocoon_target_ref = WEAKREF(target_atom) + INVOKE_ASYNC(user, TYPE_PROC_REF(/mob/living/simple_animal/hostile/poison/giant_spider/nurse, cocoon)) remove_ranged_ability() return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/goose.dm b/code/modules/mob/living/simple_animal/hostile/goose.dm index 64c74b5700e7..0d48bdb082e6 100644 --- a/code/modules/mob/living/simple_animal/hostile/goose.dm +++ b/code/modules/mob/living/simple_animal/hostile/goose.dm @@ -37,28 +37,34 @@ var/message_cooldown = 0 var/list/nummies = list() var/choking = FALSE + var/moved /mob/living/simple_animal/hostile/retaliate/goose/Initialize() . = ..() - RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/goosement) + RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(goosement)) + +/mob/living/simple_animal/hostile/retaliate/goose/Destroy() + UnregisterSignal(src, COMSIG_MOVABLE_MOVED) + return ..() /mob/living/simple_animal/hostile/retaliate/goose/proc/goosement(atom/movable/AM, OldLoc, Dir, Forced) if(stat == DEAD) return - nummies.Cut() - nummies += loc.contents + moved = TRUE if(prob(5) && random_retaliate) Retaliate() /mob/living/simple_animal/hostile/retaliate/goose/handle_automated_action() - if(length(nummies)) + if(moved && length(loc?.contents)) + moved = FALSE var/obj/item/E = locate() in nummies if(E && E.loc == loc) feed(E) nummies -= E /mob/living/simple_animal/hostile/retaliate/goose/vomit/handle_automated_action() - if(length(nummies)) + if(moved && length(loc?.contents)) + var/list/nummies = loc.contents var/obj/item/E = pick(nummies) if(!(E.custom_materials && E.custom_materials[SSmaterials.GetMaterialRef(/datum/material/plastic)])) nummies -= E // remove non-plastic item from queue @@ -106,7 +112,6 @@ deadchat_plays_goose() /mob/living/simple_animal/hostile/retaliate/goose/vomit/Destroy() - UnregisterSignal(src, COMSIG_MOVABLE_MOVED) QDEL_NULL(goosevomit) return ..() @@ -144,7 +149,7 @@ /mob/living/simple_animal/hostile/retaliate/goose/proc/choke(obj/item/reagent_containers/food/plastic) if(stat == DEAD || choking) return - addtimer(CALLBACK(src, .proc/suffocate), 300) + addtimer(CALLBACK(src, PROC_REF(suffocate)), 300) /mob/living/simple_animal/hostile/retaliate/goose/vomit/choke(obj/item/reagent_containers/food/plastic) if(stat == DEAD || choking) @@ -152,9 +157,9 @@ if(prob(25)) visible_message("[src] is gagging on \the [plastic]!") manual_emote("gags!") - addtimer(CALLBACK(src, .proc/vomit), 300) + addtimer(CALLBACK(src, PROC_REF(vomit)), 300) else - addtimer(CALLBACK(src, .proc/suffocate), 300) + addtimer(CALLBACK(src, PROC_REF(suffocate)), 300) /mob/living/simple_animal/hostile/retaliate/goose/Life() . = ..() @@ -201,13 +206,13 @@ /mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/vomit_prestart(duration) flick("vomit_start",src) - addtimer(CALLBACK(src, .proc/vomit_start, duration), 13) //13 is the length of the vomit_start animation in gooseloose.dmi + addtimer(CALLBACK(src, PROC_REF(vomit_start), duration), 13) //13 is the length of the vomit_start animation in gooseloose.dmi /mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/vomit_start(duration) vomiting = TRUE icon_state = "vomit" vomit() - addtimer(CALLBACK(src, .proc/vomit_preend), duration) + addtimer(CALLBACK(src, PROC_REF(vomit_preend)), duration) /mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/vomit_preend() for (var/obj/item/consumed in contents) //Get rid of any food left in the poor thing @@ -236,11 +241,11 @@ /mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/deadchat_plays_goose() stop_automated_movement = TRUE AddComponent(/datum/component/deadchat_control, ANARCHY_MODE, list( - "up" = CALLBACK(GLOBAL_PROC, .proc/_step, src, NORTH), - "down" = CALLBACK(GLOBAL_PROC, .proc/_step, src, SOUTH), - "left" = CALLBACK(GLOBAL_PROC, .proc/_step, src, WEST), - "right" = CALLBACK(GLOBAL_PROC, .proc/_step, src, EAST), - "vomit" = CALLBACK(src, .proc/vomit_prestart, 25)), 12 SECONDS, 4 SECONDS) + "up" = CALLBACK(GLOBAL_PROC, PROC_REF(_step), src, NORTH), + "down" = CALLBACK(GLOBAL_PROC, PROC_REF(_step), src, SOUTH), + "left" = CALLBACK(GLOBAL_PROC, PROC_REF(_step), src, WEST), + "right" = CALLBACK(GLOBAL_PROC, PROC_REF(_step), src, EAST), + "vomit" = CALLBACK(src, PROC_REF(vomit_prestart), 25)), 12 SECONDS, 4 SECONDS) /datum/action/cooldown/vomit name = "Vomit" diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index 08bb29d32f38..850ff235375f 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -48,7 +48,7 @@ return Infect(target) to_chat(src, "With our egg laid, our death approaches rapidly...") - addtimer(CALLBACK(src, .proc/death), 100) + addtimer(CALLBACK(src, PROC_REF(death)), 100) /obj/item/organ/body_egg/changeling_egg name = "changeling egg" diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index e012268a5e42..6eaa0f8ebd5a 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -47,8 +47,9 @@ var/stat_attack = CONSCIOUS var/stat_exclusive = FALSE //Mobs with this set to TRUE will exclusively attack things defined by stat_attack, stat_attack DEAD means they will only attack corpses var/attack_same = 0 //Set us to 1 to allow us to attack our own faction - //Use set_targets_from to modify this var - var/atom/targets_from = null //all range/attack/etc. calculations should be done from this atom, defaults to the mob itself, useful for Vehicles and such + //Use GET_TARGETS_FROM(mob) to access this + //Attempting to call GET_TARGETS_FROM(mob) when this var is null will just return mob as a base + var/datum/weakref/targets_from //all range/attack/etc. calculations should be done from the atom this weakrefs, useful for Vehicles and such. var/attack_all_objects = FALSE //if true, equivalent to having a wanted_objects list containing ALL objects. var/lose_patience_timer_id //id for a timer to call LoseTarget(), used to stop mobs fixating on a target they can't reach @@ -69,16 +70,12 @@ /mob/living/simple_animal/hostile/Initialize() . = ..() - - if(!targets_from) - set_targets_from(src) wanted_objects = typecacheof(wanted_objects) - /mob/living/simple_animal/hostile/Destroy() - set_targets_from(null) //We can't use losetarget here because fucking cursed blobs override it to do nothing the motherfuckers GiveTarget(null) + walk(src, 0) return ..() /mob/living/simple_animal/hostile/Life() @@ -96,7 +93,8 @@ EscapeConfinement() if(AICanContinue(possible_targets)) - if(!QDELETED(target) && !targets_from.Adjacent(target)) + var/atom/target_from = GET_TARGETS_FROM(src) + if(!QDELETED(target) && !target_from.Adjacent(target)) DestroyPathToTarget() if(!MoveToTarget(possible_targets)) //if we lose our target if(AIShouldSleep(possible_targets)) // we try to acquire a new one @@ -106,7 +104,7 @@ /mob/living/simple_animal/hostile/handle_automated_movement() . = ..() if(dodging && target && in_melee && isturf(loc) && isturf(target.loc)) - var/datum/cb = CALLBACK(src,.proc/sidestep) + var/datum/cb = CALLBACK(src, PROC_REF(sidestep)) if(sidestep_per_cycle > 1) //For more than one just spread them equally - this could changed to some sensible distribution later var/sidestep_delay = SSnpcpool.wait / sidestep_per_cycle for(var/i in 1 to sidestep_per_cycle) @@ -146,15 +144,19 @@ //////////////HOSTILE MOB TARGETTING AND AGGRESSION//////////// /mob/living/simple_animal/hostile/proc/ListTargets() //Step 1, find out what we can see + var/atom/target_from = GET_TARGETS_FROM(src) if(!search_objects) - . = hearers(vision_range, targets_from) - src //Remove self, so we don't suicide + . = hearers(vision_range, target_from) - src //Remove self, so we don't suicide var/static/hostile_machines = typecacheof(list(/obj/machinery/porta_turret, /obj/mecha)) . += typecache_filter_list(view(vision_range, targets_from), hostile_machines) + for(var/HM in typecache_filter_list(range(vision_range, target_from), hostile_machines)) + if(can_see(target_from, HM, vision_range)) + . += HM else - . = oview(vision_range, targets_from) + . = oview(vision_range, target_from) /mob/living/simple_animal/hostile/proc/FindTarget(list/possible_targets, HasTargetsList = 0)//Step 2, filter down possible targets to things we actually care about . = list() @@ -188,10 +190,11 @@ /mob/living/simple_animal/hostile/proc/PickTarget(list/Targets)//Step 3, pick amongst the possible, attackable targets if(target != null)//If we already have a target, but are told to pick again, calculate the lowest distance between all possible, and pick from the lowest distance targets + var/atom/target_from = GET_TARGETS_FROM(src) for(var/pos_targ in Targets) var/atom/A = pos_targ - var/target_dist = get_dist(targets_from, target) - var/possible_target_distance = get_dist(targets_from, A) + var/target_dist = get_dist(target_from, target) + var/possible_target_distance = get_dist(target_from, A) if(target_dist < possible_target_distance) Targets -= A if(!Targets.len)//We didnt find nothin! @@ -260,7 +263,7 @@ //What we do after closing in /mob/living/simple_animal/hostile/proc/MeleeAction(patience = TRUE) if(rapid_melee > 1) - var/datum/callback/cb = CALLBACK(src, .proc/CheckAndAttack) + var/datum/callback/cb = CALLBACK(src, PROC_REF(CheckAndAttack)) var/delay = SSnpcpool.wait / rapid_melee for(var/i in 1 to rapid_melee) addtimer(cb, (i - 1)*delay) @@ -270,7 +273,8 @@ GainPatience() /mob/living/simple_animal/hostile/proc/CheckAndAttack() - if(target && targets_from && isturf(targets_from.loc) && target.Adjacent(targets_from) && !incapacitated()) + var/atom/target_from = GET_TARGETS_FROM(src) + if(target && isturf(target_from.loc) && target.Adjacent(target_from) && !incapacitated()) AttackingTarget() /mob/living/simple_animal/hostile/proc/MoveToTarget(list/possible_targets)//Step 5, handle movement between us and our target @@ -278,14 +282,15 @@ if(!target || !CanAttack(target)) LoseTarget() return 0 + var/atom/target_from = GET_TARGETS_FROM(src) if(target in possible_targets) var/turf/T = get_turf(src) if(target.virtual_z() != T.virtual_z()) LoseTarget() return 0 - var/target_distance = get_dist(targets_from,target) + var/target_distance = get_dist(target_from,target) if(ranged) //We ranged? Shoot at em - if(!target.Adjacent(targets_from) && ranged_cooldown <= world.time) //But make sure they're not in range for a melee attack and our range attack is off cooldown + if(!target.Adjacent(target_from) && ranged_cooldown <= world.time) //But make sure they're not in range for a melee attack and our range attack is off cooldown OpenFire(target) if(charger && (target_distance > minimum_distance) && (target_distance <= charge_distance))//Attempt to close the distance with a charge. enter_charge(target) @@ -301,7 +306,7 @@ else Goto(target,move_to_delay,minimum_distance) if(target) - if(targets_from && isturf(targets_from.loc) && target.Adjacent(targets_from)) //If they're next to us, attack + if(isturf(target_from.loc) && target.Adjacent(target_from)) //If they're next to us, attack MeleeAction() else if(rapid_melee > 1 && target_distance <= melee_queue_distance) @@ -310,7 +315,7 @@ return 1 return 0 if(environment_smash) - if(target.loc != null && get_dist(targets_from, target.loc) <= vision_range) //We can't see our target, but he's in our vision range still + if(target.loc != null && get_dist(target_from, target.loc) <= vision_range) //We can't see our target, but he's in our vision range still if(ranged_ignores_vision && ranged_cooldown <= world.time) //we can't see our target... but we can fire at them! OpenFire(target) if((environment_smash & ENVIRONMENT_SMASH_WALLS) || (environment_smash & ENVIRONMENT_SMASH_RWALLS)) //If we're capable of smashing through walls, forget about vision completely after finding our target @@ -345,6 +350,9 @@ /mob/living/simple_animal/hostile/proc/AttackingTarget() SEND_SIGNAL(src, COMSIG_HOSTILE_ATTACKINGTARGET, target) + //Target can be removed by the signal's effects + if(QDELETED(target)) + return in_melee = TRUE return target.attack_animal(src) @@ -376,7 +384,8 @@ /mob/living/simple_animal/hostile/proc/summon_backup(distance, exact_faction_match) do_alert_animation(src) playsound(loc, 'sound/machines/chime.ogg', 50, TRUE, -1) - for(var/mob/living/simple_animal/hostile/M in oview(distance, targets_from)) + var/atom/target_from = GET_TARGETS_FROM(src) + for(var/mob/living/simple_animal/hostile/M in oview(distance, target_from)) if(faction_check_mob(M, TRUE)) if(M.AIStatus == AI_OFF) return @@ -399,7 +408,7 @@ if(rapid > 1) - var/datum/callback/cb = CALLBACK(src, .proc/Shoot, A) + var/datum/callback/cb = CALLBACK(src, PROC_REF(Shoot), A) for(var/i in 1 to rapid) addtimer(cb, (i - 1)*rapid_fire_delay) else @@ -408,9 +417,10 @@ /mob/living/simple_animal/hostile/proc/Shoot(atom/targeted_atom) - if(QDELETED(targeted_atom) || targeted_atom == targets_from.loc || targeted_atom == targets_from) + var/atom/target_from = GET_TARGETS_FROM(src) + if(QDELETED(targeted_atom) || targeted_atom == target_from.loc || targeted_atom == target_from) return - var/turf/startloc = get_turf(targets_from) + var/turf/startloc = get_turf(target_from) if(casingtype) var/obj/item/ammo_casing/casing = new casingtype(startloc) playsound(src, projectilesound, 100, TRUE) @@ -424,7 +434,7 @@ P.yo = targeted_atom.y - startloc.y P.xo = targeted_atom.x - startloc.x if(AIStatus != AI_ON)//Don't want mindless mobs to have their movement screwed up firing in space - newtonian_move(get_dir(targeted_atom, targets_from)) + newtonian_move(get_dir(targeted_atom, target_from)) P.original = targeted_atom P.preparePixelProjectile(targeted_atom, src) P.fire() @@ -452,15 +462,16 @@ dodging = TRUE /mob/living/simple_animal/hostile/proc/DestroyObjectsInDirection(direction) - var/turf/T = get_step(targets_from, direction) + var/atom/target_from = GET_TARGETS_FROM(src) + var/turf/T = get_step(target_from, direction) if(QDELETED(T)) return - if(T.Adjacent(targets_from)) + if(T.Adjacent(target_from)) if(CanSmashTurfs(T)) T.attack_animal(src) return for(var/obj/O in T.contents) - if(!O.Adjacent(targets_from)) + if(!O.Adjacent(target_from)) continue if((ismachinery(O) || isstructure(O)) && O.density && environment_smash >= ENVIRONMENT_SMASH_STRUCTURES && !O.IsObscured()) O.attack_animal(src) @@ -469,7 +480,8 @@ /mob/living/simple_animal/hostile/proc/DestroyPathToTarget() if(environment_smash) EscapeConfinement() - var/dir_to_target = get_dir(targets_from, target) + var/atom/target_from = GET_TARGETS_FROM(src) + var/dir_to_target = get_dir(target_from, target) var/dir_list = list() if(ISDIAGONALDIR(dir_to_target)) //it's diagonal, so we need two directions to hit for(var/direction in GLOB.cardinals) @@ -489,18 +501,19 @@ /mob/living/simple_animal/hostile/proc/EscapeConfinement() + var/atom/target_from = GET_TARGETS_FROM(src) if(buckled) buckled.attack_animal(src) - if(!isturf(targets_from.loc) && targets_from.loc != null)//Did someone put us in something? - var/atom/A = targets_from.loc + if(!isturf(target_from.loc) && target_from.loc != null)//Did someone put us in something? + var/atom/A = target_from.loc A.attack_animal(src)//Bang on it till we get out - /mob/living/simple_animal/hostile/proc/FindHidden() if(istype(target.loc, /obj/structure/closet) || istype(target.loc, /obj/machinery/disposal) || istype(target.loc, /obj/machinery/sleeper)) var/atom/A = target.loc + var/atom/target_from = GET_TARGETS_FROM(src) Goto(A,move_to_delay,minimum_distance) - if(A.Adjacent(targets_from)) + if(A.Adjacent(target_from)) A.attack_animal(src) return 1 @@ -533,7 +546,7 @@ /mob/living/simple_animal/hostile/proc/GainPatience() if(lose_patience_timeout) LosePatience() - lose_patience_timer_id = addtimer(CALLBACK(src, .proc/LoseTarget), lose_patience_timeout, TIMER_STOPPABLE) + lose_patience_timer_id = addtimer(CALLBACK(src, PROC_REF(LoseTarget)), lose_patience_timeout, TIMER_STOPPABLE) /mob/living/simple_animal/hostile/proc/LosePatience() @@ -544,7 +557,7 @@ /mob/living/simple_animal/hostile/proc/LoseSearchObjects() search_objects = 0 deltimer(search_objects_timer_id) - search_objects_timer_id = addtimer(CALLBACK(src, .proc/RegainSearchObjects), search_objects_regain_time, TIMER_STOPPABLE) + search_objects_timer_id = addtimer(CALLBACK(src, PROC_REF(RegainSearchObjects)), search_objects_regain_time, TIMER_STOPPABLE) /mob/living/simple_animal/hostile/proc/RegainSearchObjects(value) @@ -597,7 +610,7 @@ var/obj/effect/temp_visual/decoy/new_decoy = new /obj/effect/temp_visual/decoy(loc,src) animate(new_decoy, alpha = 0, color = "#5a5858", transform = matrix()*2, time = 3) target.visible_message("[src] prepares to pounce!") - addtimer(CALLBACK(src, .proc/handle_charge_target, target), 1.5 SECONDS, TIMER_STOPPABLE) + addtimer(CALLBACK(src, PROC_REF(handle_charge_target), target), 1.5 SECONDS, TIMER_STOPPABLE) /** * Proc that checks if the mob can charge attack. @@ -614,7 +627,7 @@ if(!can_charge_target(target)) return FALSE charge_state = TRUE - throw_at(target, charge_distance, 1, src, FALSE, TRUE, callback = CALLBACK(src, .proc/charge_end)) + throw_at(target, charge_distance, 1, src, FALSE, TRUE, callback = CALLBACK(src, PROC_REF(charge_end))) COOLDOWN_START(src, charge_cooldown, charge_frequency) return TRUE @@ -646,24 +659,19 @@ Stun((knockdown_time * 2), ignore_canstun = TRUE) charge_end() else if(hit_atom.density && !hit_atom.CanPass(src, get_dir(hit_atom, src))) - visible_message(("[src] smashes into [hit_atom]!")) + visible_message(span_danger("[src] smashes into [hit_atom]!")) Stun((knockdown_time * 2), ignore_canstun = TRUE) if(charge_state) charge_state = FALSE update_icons() -/mob/living/simple_animal/hostile/proc/set_targets_from(atom/target_from) - if(targets_from) - UnregisterSignal(targets_from, COMSIG_PARENT_QDELETING) - targets_from = target_from - if(targets_from) - RegisterSignal(targets_from, COMSIG_PARENT_QDELETING, .proc/handle_targets_from_del) - -/mob/living/simple_animal/hostile/proc/handle_targets_from_del(datum/source) - SIGNAL_HANDLER - if(targets_from != src) - set_targets_from(src) +/mob/living/simple_animal/hostile/proc/get_targets_from() + var/atom/target_from = targets_from.resolve() + if(!target_from) + targets_from = null + return src + return target_from /mob/living/simple_animal/hostile/proc/handle_target_del(datum/source) SIGNAL_HANDLER @@ -675,7 +683,7 @@ UnregisterSignal(target, COMSIG_PARENT_QDELETING) target = new_target if(target) - RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/handle_target_del, TRUE) + RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(handle_target_del), TRUE) /mob/living/simple_animal/hostile/proc/set_camp_faction(tag) src.faction = list() diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm index c476a5f5cf2b..7fd15ed0b6a1 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm @@ -82,10 +82,10 @@ /obj/structure/leaper_bubble/Initialize() . = ..() - INVOKE_ASYNC(src, /atom/movable.proc/float, TRUE) + INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, float), TRUE) QDEL_IN(src, 100) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -212,7 +212,7 @@ if(AIStatus == AI_ON && ranged_cooldown <= world.time) projectile_ready = TRUE update_icons() - throw_at(new_turf, max(3,get_dist(src,new_turf)), 1, src, FALSE, callback = CALLBACK(src, .proc/FinishHop)) + throw_at(new_turf, max(3,get_dist(src,new_turf)), 1, src, FALSE, callback = CALLBACK(src, PROC_REF(FinishHop))) /mob/living/simple_animal/hostile/jungle/leaper/proc/FinishHop() density = TRUE @@ -222,18 +222,18 @@ playsound(src.loc, 'sound/effects/meteorimpact.ogg', 100, TRUE) if(target && AIStatus == AI_ON && projectile_ready && !ckey) face_atom(target) - addtimer(CALLBACK(src, .proc/OpenFire, target), 5) + addtimer(CALLBACK(src, PROC_REF(OpenFire), target), 5) /mob/living/simple_animal/hostile/jungle/leaper/proc/BellyFlop() var/turf/new_turf = get_turf(target) hopping = TRUE notransform = TRUE new /obj/effect/temp_visual/leaper_crush(new_turf) - addtimer(CALLBACK(src, .proc/BellyFlopHop, new_turf), 30) + addtimer(CALLBACK(src, PROC_REF(BellyFlopHop), new_turf), 30) /mob/living/simple_animal/hostile/jungle/leaper/proc/BellyFlopHop(turf/T) density = FALSE - throw_at(T, get_dist(src,T),1,src, FALSE, callback = CALLBACK(src, .proc/Crush)) + throw_at(T, get_dist(src,T),1,src, FALSE, callback = CALLBACK(src, PROC_REF(Crush))) /mob/living/simple_animal/hostile/jungle/leaper/proc/Crush() hopping = FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm b/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm index 0df00f99c1c7..b85da6c2c726 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm @@ -34,11 +34,11 @@ footstep_type = FOOTSTEP_MOB_BAREFOOT -/mob/living/simple_animal/hostile/jungle/mook/CanAllowThrough(atom/movable/O) +/mob/living/simple_animal/hostile/jungle/mook/CanAllowThrough(atom/movable/mover, border_dir) . = ..() - if(istype(O, /mob/living/simple_animal/hostile/jungle/mook)) - var/mob/living/simple_animal/hostile/jungle/mook/M = O - if(M.attack_state == MOOK_ATTACK_ACTIVE && M.throwing) + if(istype(mover, /mob/living/simple_animal/hostile/jungle/mook)) + var/mob/living/simple_animal/hostile/jungle/mook/mook_moover = mover + if(mook_moover.attack_state == MOOK_ATTACK_ACTIVE && mook_moover.throwing) return TRUE /mob/living/simple_animal/hostile/jungle/mook/death() @@ -72,9 +72,9 @@ walk(src,0) update_icons() if(prob(50) && get_dist(src,target) <= 3 || forced_slash_combo) - addtimer(CALLBACK(src, .proc/SlashCombo), ATTACK_INTERMISSION_TIME) + addtimer(CALLBACK(src, PROC_REF(SlashCombo)), ATTACK_INTERMISSION_TIME) return - addtimer(CALLBACK(src, .proc/LeapAttack), ATTACK_INTERMISSION_TIME + rand(0,3)) + addtimer(CALLBACK(src, PROC_REF(LeapAttack)), ATTACK_INTERMISSION_TIME + rand(0,3)) return attack_state = MOOK_ATTACK_RECOVERY ResetNeutral() @@ -84,18 +84,19 @@ attack_state = MOOK_ATTACK_ACTIVE update_icons() SlashAttack() - addtimer(CALLBACK(src, .proc/SlashAttack), 3) - addtimer(CALLBACK(src, .proc/SlashAttack), 6) - addtimer(CALLBACK(src, .proc/AttackRecovery), 9) + addtimer(CALLBACK(src, PROC_REF(SlashAttack)), 3) + addtimer(CALLBACK(src, PROC_REF(SlashAttack)), 6) + addtimer(CALLBACK(src, PROC_REF(AttackRecovery)), 9) /mob/living/simple_animal/hostile/jungle/mook/proc/SlashAttack() if(target && !stat && attack_state == MOOK_ATTACK_ACTIVE) melee_damage_lower = 15 melee_damage_upper = 15 var/mob_direction = get_dir(src,target) + var/atom/target_from = GET_TARGETS_FROM(src) if(get_dist(src,target) > 1) step(src,mob_direction) - if(targets_from && isturf(targets_from.loc) && target.Adjacent(targets_from) && isliving(target)) + if(isturf(target_from.loc) && target.Adjacent(target_from) && isliving(target)) var/mob/living/L = target L.attack_animal(src) return @@ -114,7 +115,7 @@ playsound(src, 'sound/weapons/thudswoosh.ogg', 25, TRUE) playsound(src, 'sound/voice/mook_leap_yell.ogg', 100, TRUE) var/target_turf = get_turf(target) - throw_at(target_turf, 7, 1, src, FALSE, callback = CALLBACK(src, .proc/AttackRecovery)) + throw_at(target_turf, 7, 1, src, FALSE, callback = CALLBACK(src, PROC_REF(AttackRecovery))) return attack_state = MOOK_ATTACK_RECOVERY ResetNeutral() @@ -133,11 +134,11 @@ if(isliving(target)) var/mob/living/L = target if(L.incapacitated() && L.stat != DEAD) - addtimer(CALLBACK(src, .proc/WarmupAttack, TRUE), ATTACK_INTERMISSION_TIME) + addtimer(CALLBACK(src, PROC_REF(WarmupAttack), TRUE), ATTACK_INTERMISSION_TIME) return - addtimer(CALLBACK(src, .proc/WarmupAttack), ATTACK_INTERMISSION_TIME) + addtimer(CALLBACK(src, PROC_REF(WarmupAttack)), ATTACK_INTERMISSION_TIME) return - addtimer(CALLBACK(src, .proc/ResetNeutral), ATTACK_INTERMISSION_TIME) + addtimer(CALLBACK(src, PROC_REF(ResetNeutral)), ATTACK_INTERMISSION_TIME) /mob/living/simple_animal/hostile/jungle/mook/proc/ResetNeutral() if(attack_state == MOOK_ATTACK_RECOVERY) diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm b/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm index 91da0614fb50..be9ef71562f3 100644 --- a/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm +++ b/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm @@ -47,7 +47,7 @@ flag = "energy" light_color = LIGHT_COLOR_YELLOW hitsound = 'sound/weapons/sear.ogg' - hitsound_wall = 'sound/weapons/effects/searwall.ogg' + hitsound_non_living = 'sound/weapons/effects/searwall.ogg' nondirectional_sprite = TRUE /obj/projectile/seedling/Bump(atom/A)//Stops seedlings from destroying other jungle mobs through FF @@ -134,7 +134,7 @@ if(get_dist(src,target) >= 4 && prob(40)) SolarBeamStartup(target) return - addtimer(CALLBACK(src, .proc/Volley), 5) + addtimer(CALLBACK(src, PROC_REF(Volley)), 5) /mob/living/simple_animal/hostile/jungle/seedling/proc/SolarBeamStartup(mob/living/living_target)//It's more like requiem than final spark if(combatant_state == SEEDLING_STATE_WARMUP && target) @@ -145,7 +145,7 @@ if(get_dist(src,living_target) > 7) playsound(living_target,'sound/effects/seedling_chargeup.ogg', 100, FALSE) solar_beam_identifier = world.time - addtimer(CALLBACK(src, .proc/Beamu, living_target, solar_beam_identifier), 35) + addtimer(CALLBACK(src, PROC_REF(Beamu), living_target, solar_beam_identifier), 35) /mob/living/simple_animal/hostile/jungle/seedling/proc/Beamu(mob/living/living_target, beam_id = 0) if(combatant_state == SEEDLING_STATE_ACTIVE && living_target && beam_id == solar_beam_identifier) @@ -165,7 +165,7 @@ living_target.adjust_fire_stacks(0.2)//Just here for the showmanship living_target.IgniteMob() playsound(living_target,'sound/weapons/sear.ogg', 50, TRUE) - addtimer(CALLBACK(src, .proc/AttackRecovery), 5) + addtimer(CALLBACK(src, PROC_REF(AttackRecovery)), 5) return AttackRecovery() @@ -173,10 +173,10 @@ if(combatant_state == SEEDLING_STATE_WARMUP && target) combatant_state = SEEDLING_STATE_ACTIVE update_icons() - var/datum/callback/cb = CALLBACK(src, .proc/InaccurateShot) + var/datum/callback/cb = CALLBACK(src, PROC_REF(InaccurateShot)) for(var/i in 1 to 13) addtimer(cb, i) - addtimer(CALLBACK(src, .proc/AttackRecovery), 14) + addtimer(CALLBACK(src, PROC_REF(AttackRecovery)), 14) /mob/living/simple_animal/hostile/jungle/seedling/proc/InaccurateShot() if(!QDELETED(target) && combatant_state == SEEDLING_STATE_ACTIVE && !stat) @@ -196,7 +196,7 @@ ranged_cooldown = world.time + ranged_cooldown_time if(target) face_atom(target) - addtimer(CALLBACK(src, .proc/ResetNeutral), 10) + addtimer(CALLBACK(src, PROC_REF(ResetNeutral)), 10) /mob/living/simple_animal/hostile/jungle/seedling/proc/ResetNeutral() combatant_state = SEEDLING_STATE_NEUTRAL diff --git a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm index aa86ccfd4d06..cf8a32af157c 100644 --- a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm +++ b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm @@ -65,7 +65,7 @@ Featuring: if(spawn_mecha_type) var/obj/mecha/M = new spawn_mecha_type (get_turf(src)) if(istype(M)) - INVOKE_ASYNC(src, .proc/enter_mecha, M) + INVOKE_ASYNC(src, PROC_REF(enter_mecha), M) /mob/living/simple_animal/hostile/syndicate/mecha_pilot/proc/enter_mecha(obj/mecha/M) @@ -73,7 +73,7 @@ Featuring: return 0 LoseTarget() //Target was our mecha, so null it out M.aimob_enter_mech(src) - set_targets_from(M) + targets_from = WEAKREF(M) allow_movement_on_non_turfs = TRUE //duh var/do_ranged = 0 for(var/equip in mecha.equipment) @@ -99,7 +99,7 @@ Featuring: mecha.aimob_exit_mech(src) allow_movement_on_non_turfs = FALSE - set_targets_from(src) + targets_from = null //Find a new mecha wanted_objects = typecacheof(/obj/mecha/combat, TRUE) @@ -232,13 +232,13 @@ Featuring: if(mecha.defense_action && mecha.defense_action.owner && !mecha.defense_mode) mecha.leg_overload_mode = 0 mecha.defense_action.Activate(TRUE) - addtimer(CALLBACK(mecha.defense_action, /datum/action/innate/mecha/mech_defense_mode.proc/Activate, FALSE), 100) //10 seconds of defense, then toggle off + addtimer(CALLBACK(mecha.defense_action, TYPE_PROC_REF(/datum/action/innate/mecha/mech_defense_mode, Activate), FALSE), 100) //10 seconds of defense, then toggle off else if(prob(retreat_chance)) //Speed boost if possible if(mecha.overload_action && mecha.overload_action.owner && !mecha.leg_overload_mode) mecha.overload_action.Activate(TRUE) - addtimer(CALLBACK(mecha.overload_action, /datum/action/innate/mecha/mech_defense_mode.proc/Activate, FALSE), 100) //10 seconds of speeeeed, then toggle off + addtimer(CALLBACK(mecha.overload_action, TYPE_PROC_REF(/datum/action/innate/mecha/mech_defense_mode, Activate), FALSE), 100) //10 seconds of speeeeed, then toggle off retreat_distance = 50 addtimer(VARSET_CALLBACK(src, retreat_distance, 0), 10 SECONDS) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index 92e76eaa6d6d..5bdc5c882214 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -182,7 +182,7 @@ Difficulty: Medium wander = TRUE /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/dash_attack() - INVOKE_ASYNC(src, .proc/dash, target) + INVOKE_ASYNC(src, PROC_REF(dash), target) shoot_ka() /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/shoot_ka() @@ -264,7 +264,7 @@ Difficulty: Medium /obj/effect/temp_visual/dir_setting/miner_death/Initialize(mapload, set_dir) . = ..() - INVOKE_ASYNC(src, .proc/fade_out) + INVOKE_ASYNC(src, PROC_REF(fade_out)) /obj/effect/temp_visual/dir_setting/miner_death/proc/fade_out() var/matrix/M = new @@ -285,7 +285,7 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/hunter/AttackingTarget() . = ..() if(. && prob(12)) - INVOKE_ASYNC(src, .proc/dash) + INVOKE_ASYNC(src, PROC_REF(dash)) /mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/doom name = "hostile-environment miner" diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 27bdf0b3dd3e..d62d695e1be7 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -155,7 +155,7 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/surround_with_hallucinations() for(var/i = 1 to 5) - INVOKE_ASYNC(src, .proc/hallucination_charge_around, 2, 8, 2, 0, 4) + INVOKE_ASYNC(src, PROC_REF(hallucination_charge_around), 2, 8, 2, 0, 4) if(ismob(target)) charge(delay = 6) else @@ -200,7 +200,7 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/try_bloodattack() var/list/targets = get_mobs_on_blood() if(targets.len) - INVOKE_ASYNC(src, .proc/bloodattack, targets, prob(50)) + INVOKE_ASYNC(src, PROC_REF(bloodattack), targets, prob(50)) return TRUE return FALSE @@ -266,7 +266,7 @@ Difficulty: Hard var/turf/targetturf = get_step(src, dir) L.forceMove(targetturf) playsound(targetturf, 'sound/magic/exit_blood.ogg', 100, TRUE, -1) - addtimer(CALLBACK(src, .proc/devour, L), 2) + addtimer(CALLBACK(src, PROC_REF(devour), L), 2) SLEEP_CHECK_DEATH(1) /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_warp() @@ -331,7 +331,7 @@ Difficulty: Hard update_approach() change_move_delay(3.75) add_atom_colour(COLOR_BUBBLEGUM_RED, TEMPORARY_COLOUR_PRIORITY) - var/datum/callback/cb = CALLBACK(src, .proc/blood_enrage_end) + var/datum/callback/cb = CALLBACK(src, PROC_REF(blood_enrage_end)) addtimer(cb, enrage_time) /mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_enrage_end() @@ -378,7 +378,7 @@ Difficulty: Hard continue var/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/B = new /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination(src.loc) B.forceMove(place) - INVOKE_ASYNC(B, .proc/charge, chargeat, delay, chargepast) + INVOKE_ASYNC(B, PROC_REF(charge), chargeat, delay, chargepast) if(useoriginal) charge(chargeat, delay, chargepast) @@ -423,7 +423,7 @@ Difficulty: Hard severity = EXPLODE_LIGHT // puny mortals return ..() -/mob/living/simple_animal/hostile/megafauna/bubblegum/CanAllowThrough(atom/movable/mover, turf/target) +/mob/living/simple_animal/hostile/megafauna/bubblegum/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(istype(mover, /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination)) return TRUE @@ -525,7 +525,7 @@ Difficulty: Hard new /obj/effect/decal/cleanable/blood(get_turf(src)) . = ..() -/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/CanAllowThrough(atom/movable/mover, turf/target) +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(istype(mover, /mob/living/simple_animal/hostile/megafauna/bubblegum)) // hallucinations should not be stopping bubblegum or eachother return TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm index 3a2036845298..cca8a649353f 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm @@ -70,7 +70,7 @@ ///LOOT /obj/effect/spawner/clawloot/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/spawn_loot), 5 SECONDS) //this is because it dies violently exploding, so we dont want to destroy the goodies, you know? + addtimer(CALLBACK(src, PROC_REF(spawn_loot)), 5 SECONDS) //this is because it dies violently exploding, so we dont want to destroy the goodies, you know? /obj/effect/spawner/clawloot/proc/spawn_loot() new /obj/item/gun/energy/pulse/pistol(get_turf(src)) @@ -127,7 +127,7 @@ /mob/living/simple_animal/hostile/megafauna/claw/phase2/Initialize() . = ..() flick("claw-phase2_transform",src) //plays the transforming animation - addtimer(CALLBACK(src, .proc/unlock_phase2), 4.4 SECONDS) + addtimer(CALLBACK(src, PROC_REF(unlock_phase2)), 4.4 SECONDS) /mob/living/simple_animal/hostile/megafauna/claw/Move() if(shouldnt_move) @@ -200,7 +200,7 @@ for(var/i in 1 to distance) new /obj/effect/temp_visual/cult/sparks(next_turf) next_turf = get_step(next_turf, dir_to_target) - addtimer(CALLBACK(src, .proc/swift_dash2, dir_to_target, 0, distance), wait_time) + addtimer(CALLBACK(src, PROC_REF(swift_dash2), dir_to_target, 0, distance), wait_time) playsound(src, 'sound/creatures/claw_prepare.ogg', 100, 1) /mob/living/simple_animal/hostile/megafauna/claw/proc/swift_dash2(move_dir, times_ran, distance_run) @@ -214,7 +214,7 @@ for(var/mob/living/hit_mob in next_turf.contents - src) hit_mob.Knockdown(15) hit_mob.attack_animal(src) - addtimer(CALLBACK(src, .proc/swift_dash2, move_dir, (times_ran + 1), distance_run), 0.7) + addtimer(CALLBACK(src, PROC_REF(swift_dash2), move_dir, (times_ran + 1), distance_run), 0.7) /////DASH ATTACK END /////DISSONANT SHREK @@ -222,7 +222,7 @@ shake_animation(0.5) visible_message("[src] stops and shudders for a moment... ") shouldnt_move = TRUE - addtimer(CALLBACK(src, .proc/emp_pulse2), 1 SECONDS) + addtimer(CALLBACK(src, PROC_REF(emp_pulse2)), 1 SECONDS) /mob/living/simple_animal/hostile/megafauna/claw/proc/emp_pulse2() shake_animation(2) @@ -247,7 +247,7 @@ flick("claw-phase2_sting_attack_transform", src) projectiletype = /obj/projectile/claw_projectille projectilesound = 'sound/effects/splat.ogg' - addtimer(CALLBACK(src, .proc/sting_attack2, target), 2 SECONDS) + addtimer(CALLBACK(src, PROC_REF(sting_attack2), target), 2 SECONDS) /mob/living/simple_animal/hostile/megafauna/claw/proc/sting_attack2(target) visible_message("[src] shoots all the spikes!") @@ -274,7 +274,7 @@ shake_animation(20) visible_message("[src] shudders violently and starts to split a flesh spider from it's body!") shouldnt_move = TRUE - addtimer(CALLBACK(src, .proc/summon_creatures2), 2 SECONDS) + addtimer(CALLBACK(src, PROC_REF(summon_creatures2)), 2 SECONDS) /mob/living/simple_animal/hostile/megafauna/claw/proc/summon_creatures2() shake_animation(5) @@ -291,13 +291,13 @@ /mob/living/simple_animal/hostile/megafauna/claw/proc/on_death() flick("claw-phase1_transform",src) //woho you won... or did you? - addtimer(CALLBACK(src, .proc/create_phase2), 30 SECONDS) + addtimer(CALLBACK(src, PROC_REF(create_phase2)), 30 SECONDS) /mob/living/simple_animal/hostile/megafauna/claw/phase2/on_death() icon_state = "claw-phase2_dying" flick("claw-phase2_to_dying_anim",src) playsound(src, 'sound/voice/vox/vox_scream_1.ogg', 300, 1, 8, 8) - addtimer(CALLBACK(src, .proc/phase2_dramatic, src), 3 SECONDS) + addtimer(CALLBACK(src, PROC_REF(phase2_dramatic), src), 3 SECONDS) return /mob/living/simple_animal/hostile/megafauna/claw/proc/create_phase2() //this only exists so the timer can callback to this proc diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index e25165cbbdfe..d6b7c68bd958 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -156,8 +156,8 @@ Difficulty: Very Hard visible_message("\"Die.\"") SLEEP_CHECK_DEATH(10) - INVOKE_ASYNC(src, .proc/spiral_shoot, FALSE) - INVOKE_ASYNC(src, .proc/spiral_shoot, TRUE) + INVOKE_ASYNC(src, PROC_REF(spiral_shoot), FALSE) + INVOKE_ASYNC(src, PROC_REF(spiral_shoot), TRUE) /mob/living/simple_animal/hostile/megafauna/colossus/proc/spiral_shoot(negative = pick(TRUE, FALSE), counter_start = 8) var/turf/start_turf = get_step(src, pick(GLOB.alldirs)) @@ -240,7 +240,7 @@ Difficulty: Very Hard /obj/effect/temp_visual/at_shield/Initialize(mapload, new_target) . = ..() target = new_target - INVOKE_ASYNC(src, /atom/movable/proc/orbit, target, 0, FALSE, 0, 0, FALSE, TRUE) + INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, orbit), target, 0, FALSE, 0, 0, FALSE, TRUE) /mob/living/simple_animal/hostile/megafauna/colossus/bullet_act(obj/projectile/P) if(!stat) @@ -270,10 +270,9 @@ Difficulty: Very Hard else SSexplosions.medturf += target - - +//There can only ever be one blackbox, and we want to know if there already is one when we spawn +GLOBAL_DATUM(blackbox, /obj/machinery/smartfridge/black_box) //Black Box - /obj/machinery/smartfridge/black_box name = "black box" desc = "A completely indestructible chunk of crystal, rumoured to predate the start of this universe. It looks like you could store things inside it." @@ -302,11 +301,9 @@ Difficulty: Very Hard /obj/machinery/smartfridge/black_box/Initialize() . = ..() - var/static/obj/machinery/smartfridge/black_box/current - if(current && current != src) - qdel(src, force=TRUE) - return - current = src + if(GLOB.blackbox != src) + return INITIALIZE_HINT_QDEL_FORCE + GLOB.blackbox = src ReadMemory() /obj/machinery/smartfridge/black_box/process() @@ -351,6 +348,8 @@ Difficulty: Very Hard /obj/machinery/smartfridge/black_box/Destroy(force = FALSE) if(force) + if(GLOB.blackbox == src) + GLOB.blackbox = null for(var/thing in src) qdel(thing) return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm index 4e0b461516bf..96fbc8b5c4ec 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm @@ -252,7 +252,7 @@ for(var/i in 1 to dash_num) new /obj/effect/temp_visual/dragon_swoop/legionnaire(T) T = get_step(T, dir_to_target) - addtimer(CALLBACK(src, .proc/blood_dash_2, dir_to_target, 0), (5 * dash_mod)) + addtimer(CALLBACK(src, PROC_REF(blood_dash_2), dir_to_target, 0), (5 * dash_mod)) playsound(src,'sound/effects/meteorimpact.ogg', 200, 1) /mob/living/simple_animal/hostile/megafauna/cult_templar/proc/blood_dash_2(move_dir, times_ran) @@ -283,7 +283,7 @@ shake_camera(L, 4, 3) L.adjustBruteLoss(30) playsound(L,"sound/misc/desceration-[pick(1,2,3)].ogg", 200, 1) - addtimer(CALLBACK(src, .proc/blood_dash_2, move_dir, (times_ran + 1)), (1.5 * dash_mod)) + addtimer(CALLBACK(src, PROC_REF(blood_dash_2), move_dir, (times_ran + 1)), (1.5 * dash_mod)) /mob/living/simple_animal/hostile/megafauna/cult_templar/proc/teleport_b(target) if(charging || teleport_cooldown > world.time) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm index b2265782698d..14849bb58014 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm @@ -103,7 +103,7 @@ Difficulty: Extremely Hard if(easy_attack) snowball_machine_gun() else - INVOKE_ASYNC(src, .proc/ice_shotgun, 5, list(list(-180, -140, -100, -60, -20, 20, 60, 100, 140), list(-160, -120, -80, -40, 0, 40, 80, 120, 160))) + INVOKE_ASYNC(src, PROC_REF(ice_shotgun), 5, list(list(-180, -140, -100, -60, -20, 20, 60, 100, 140), list(-160, -120, -80, -40, 0, 40, 80, 120, 160))) snowball_machine_gun(5 * 8, 5) if(3) if(easy_attack) @@ -179,7 +179,7 @@ Difficulty: Extremely Hard P.original = target P.set_homing_target(target) P.fire(rand(0, 360)) - addtimer(CALLBACK(P, /obj/projectile/frost_orb/proc/orb_explosion, projectile_speed_multiplier), 20) // make the orbs home in after a second + addtimer(CALLBACK(P, TYPE_PROC_REF(/obj/projectile/frost_orb, orb_explosion), projectile_speed_multiplier), 20) // make the orbs home in after a second SLEEP_CHECK_DEATH(added_delay) SetRecoveryTime(40, 60) @@ -306,7 +306,7 @@ Difficulty: Extremely Hard return var/reset_turf = T.type T.ChangeTurf(change_turf, flags = CHANGETURF_INHERIT_AIR) - addtimer(CALLBACK(T, /turf.proc/ChangeTurf, reset_turf, null, CHANGETURF_INHERIT_AIR), duration, TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(T, TYPE_PROC_REF(/turf, ChangeTurf), reset_turf, null, CHANGETURF_INHERIT_AIR), duration, TIMER_OVERRIDE|TIMER_UNIQUE) /obj/item/pickaxe/drill/jackhammer/demonic name = "demonic jackhammer" @@ -349,7 +349,7 @@ Difficulty: Extremely Hard icon_state = "frozen" /datum/status_effect/ice_block_talisman/on_apply() - RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, .proc/owner_moved) + RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(owner_moved)) if(!owner.stat) to_chat(owner, "You become frozen in a cube!") cube = icon('icons/effects/freeze.dmi', "ice_cube") diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index 6e12ba91e903..d1a8c3c825aa 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -160,7 +160,7 @@ Difficulty: Medium /mob/living/simple_animal/hostile/megafauna/dragon/proc/lava_swoop(amount = 30) if(health < maxHealth * 0.5) return swoop_attack(lava_arena = TRUE, swoop_cooldown = 60) - INVOKE_ASYNC(src, .proc/lava_pools, amount) + INVOKE_ASYNC(src, PROC_REF(lava_pools), amount) swoop_attack(FALSE, target, 1000) // longer cooldown until it gets reset below SLEEP_CHECK_DEATH(0) fire_cone() @@ -179,7 +179,7 @@ Difficulty: Medium var/increment = 360 / spiral_count for(var/j = 1 to spiral_count) var/list/turfs = line_target(j * increment + i * increment / 2, range, src) - INVOKE_ASYNC(src, .proc/fire_line, turfs) + INVOKE_ASYNC(src, PROC_REF(fire_line), turfs) SLEEP_CHECK_DEATH(25) SetRecoveryTime(30) @@ -246,15 +246,15 @@ Difficulty: Medium playsound(get_turf(src),'sound/magic/fireball.ogg', 200, TRUE) SLEEP_CHECK_DEATH(0) if(prob(50) && meteors) - INVOKE_ASYNC(src, .proc/fire_rain) + INVOKE_ASYNC(src, PROC_REF(fire_rain)) var/range = 15 var/list/turfs = list() turfs = line_target(-40, range, at) - INVOKE_ASYNC(src, .proc/fire_line, turfs) + INVOKE_ASYNC(src, PROC_REF(fire_line), turfs) turfs = line_target(0, range, at) - INVOKE_ASYNC(src, .proc/fire_line, turfs) + INVOKE_ASYNC(src, PROC_REF(fire_line), turfs) turfs = line_target(40, range, at) - INVOKE_ASYNC(src, .proc/fire_line, turfs) + INVOKE_ASYNC(src, PROC_REF(fire_line), turfs) /mob/living/simple_animal/hostile/megafauna/dragon/proc/line_target(offset, range, atom/at = target) if(!at) @@ -452,7 +452,7 @@ Difficulty: Medium /obj/effect/temp_visual/lava_warning/Initialize(mapload, reset_time = 10) . = ..() - INVOKE_ASYNC(src, .proc/fall, reset_time) + INVOKE_ASYNC(src, PROC_REF(fall), reset_time) src.alpha = 63.75 animate(src, alpha = 255, time = duration) @@ -477,7 +477,7 @@ Difficulty: Medium var/lava_turf = /turf/open/lava/smooth var/reset_turf = T.type T.ChangeTurf(lava_turf, flags = CHANGETURF_INHERIT_AIR) - addtimer(CALLBACK(T, /turf.proc/ChangeTurf, reset_turf, null, CHANGETURF_INHERIT_AIR), reset_time, TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(T, TYPE_PROC_REF(/turf, ChangeTurf), reset_turf, null, CHANGETURF_INHERIT_AIR), reset_time, TIMER_OVERRIDE|TIMER_UNIQUE) /obj/effect/temp_visual/drakewall desc = "An ash drakes true flame." @@ -519,7 +519,7 @@ Difficulty: Medium /obj/effect/temp_visual/dragon_flight/Initialize(mapload, negative) . = ..() - INVOKE_ASYNC(src, .proc/flight, negative) + INVOKE_ASYNC(src, PROC_REF(flight), negative) /obj/effect/temp_visual/dragon_flight/proc/flight(negative) if(negative) @@ -571,7 +571,7 @@ Difficulty: Medium /obj/effect/temp_visual/target/Initialize(mapload, list/flame_hit) . = ..() - INVOKE_ASYNC(src, .proc/fall, flame_hit) + INVOKE_ASYNC(src, PROC_REF(fall), flame_hit) /obj/effect/temp_visual/target/proc/fall(list/flame_hit) var/turf/T = get_turf(src) 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 c22d5dcd9dc9..4df97bac4a6f 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -85,7 +85,6 @@ Difficulty: Hard var/did_reset = TRUE //if we timed out, returned to our beacon, and healed some var/list/kill_phrases = list("Wsyvgi sj irivkc xettih. Vitemvmrk...", "Irivkc wsyvgi jsyrh. Vitemvmrk...", "Jyip jsyrh. Egxmzexmrk vitemv gcgpiw...", "Kix fiex. Liepmrk...") var/list/target_phrases = list("Xevkix psgexih.", "Iriqc jsyrh.", "Eguymvih xevkix.") - var/list/stored_nearby = list() // stores people nearby the hierophant when it enters the death animation /mob/living/simple_animal/hostile/megafauna/hierophant/Initialize() . = ..() @@ -195,13 +194,13 @@ Difficulty: Hard else if(prob(70 - anger_modifier)) //a cross blast of some type if(prob(anger_modifier * (2 / target_slowness)) && health < maxHealth * 0.5) //we're super angry do it at all dirs - INVOKE_ASYNC(src, .proc/blasts, target, GLOB.alldirs) + INVOKE_ASYNC(src, PROC_REF(blasts), target, GLOB.alldirs) else if(prob(60)) - INVOKE_ASYNC(src, .proc/blasts, target, GLOB.cardinals) + INVOKE_ASYNC(src, PROC_REF(blasts), target, GLOB.cardinals) else - INVOKE_ASYNC(src, .proc/blasts, target, GLOB.diagonals) + INVOKE_ASYNC(src, PROC_REF(blasts), target, GLOB.diagonals) else //just release a burst of power - INVOKE_ASYNC(src, .proc/burst, get_turf(src)) + INVOKE_ASYNC(src, PROC_REF(burst), get_turf(src)) /mob/living/simple_animal/hostile/megafauna/hierophant/proc/blink_spam(blink_counter, target_slowness, cross_counter) ranged_cooldown = world.time + max(5, major_attack_cooldown - anger_modifier * 0.75) @@ -219,7 +218,7 @@ Difficulty: Hard blinking = TRUE SLEEP_CHECK_DEATH(4 + target_slowness) animate(src, color = oldcolor, time = 8) - addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 8) SLEEP_CHECK_DEATH(8) blinking = FALSE else @@ -235,12 +234,12 @@ Difficulty: Hard while(!QDELETED(target) && cross_counter) cross_counter-- if(prob(60)) - INVOKE_ASYNC(src, .proc/blasts, target, GLOB.cardinals) + INVOKE_ASYNC(src, PROC_REF(blasts), target, GLOB.cardinals) else - INVOKE_ASYNC(src, .proc/blasts, target, GLOB.diagonals) + INVOKE_ASYNC(src, PROC_REF(blasts), target, GLOB.diagonals) SLEEP_CHECK_DEATH(6 + target_slowness) animate(src, color = oldcolor, time = 8) - addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 8) SLEEP_CHECK_DEATH(8) blinking = FALSE @@ -268,7 +267,7 @@ Difficulty: Hard SLEEP_CHECK_DEATH(8 + target_slowness) chaser_cooldown = world.time + initial(chaser_cooldown) animate(src, color = oldcolor, time = 8) - addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 8) SLEEP_CHECK_DEATH(8) blinking = FALSE @@ -286,7 +285,7 @@ Difficulty: Hard SLEEP_CHECK_DEATH(2) new /obj/effect/temp_visual/hierophant/blast(T, src, FALSE) for(var/d in directions) - INVOKE_ASYNC(src, .proc/blast_wall, T, d) + INVOKE_ASYNC(src, PROC_REF(blast_wall), T, d) /mob/living/simple_animal/hostile/megafauna/hierophant/proc/blast_wall(turf/T, set_dir) //make a wall of blasts beam_range tiles long var/range = beam_range @@ -305,13 +304,13 @@ Difficulty: Hard return arena_cooldown = world.time + initial(arena_cooldown) for(var/d in GLOB.cardinals) - INVOKE_ASYNC(src, .proc/arena_squares, T, d) + INVOKE_ASYNC(src, PROC_REF(arena_squares), T, d) for(var/t in RANGE_TURFS(11, T)) if(t && get_dist(t, T) == 11) new /obj/effect/temp_visual/hierophant/wall(t, src) new /obj/effect/temp_visual/hierophant/blast(t, src, FALSE) if(get_dist(src, T) >= 11) //hey you're out of range I need to get closer to you! - INVOKE_ASYNC(src, .proc/blink, T) + INVOKE_ASYNC(src, PROC_REF(blink), T) /mob/living/simple_animal/hostile/megafauna/hierophant/proc/arena_squares(turf/T, set_dir) //make a fancy effect extending from the arena target var/turf/previousturf = T @@ -411,6 +410,7 @@ Difficulty: Hard blinking = TRUE //we do a fancy animation, release a huge burst(), and leave our staff. visible_message("\"Mrmxmexmrk wipj-hiwxvygx wiuyirgi...\"") visible_message("[src] shrinks, releasing a massive burst of energy!") + var/list/stored_nearby = list() for(var/mob/living/L in view(7,src)) stored_nearby += L // store the people to grant the achievements to once we die hierophant_burst(null, get_turf(src), 10) @@ -453,10 +453,10 @@ Difficulty: Hard if(ranged_cooldown <= world.time) calculate_rage() ranged_cooldown = world.time + max(5, ranged_cooldown_time - anger_modifier * 0.75) - INVOKE_ASYNC(src, .proc/burst, get_turf(src)) + INVOKE_ASYNC(src, PROC_REF(burst), get_turf(src)) else burst_range = 3 - INVOKE_ASYNC(src, .proc/burst, get_turf(src), 0.25) //melee attacks on living mobs cause it to release a fast burst if on cooldown + INVOKE_ASYNC(src, PROC_REF(burst), get_turf(src), 0.25) //melee attacks on living mobs cause it to release a fast burst if on cooldown else devour(L) else @@ -535,7 +535,7 @@ Difficulty: Hard QUEUE_SMOOTH_NEIGHBORS(src) return ..() -/obj/effect/temp_visual/hierophant/wall/CanAllowThrough(atom/movable/mover, turf/target) +/obj/effect/temp_visual/hierophant/wall/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(QDELETED(caster)) return FALSE @@ -570,7 +570,7 @@ Difficulty: Hard friendly_fire_check = is_friendly_fire if(new_speed) speed = new_speed - addtimer(CALLBACK(src, .proc/seek_target), 1) + addtimer(CALLBACK(src, PROC_REF(seek_target)), 1) /obj/effect/temp_visual/hierophant/chaser/proc/get_target_dir() . = get_cardinal_dir(src, targetturf) @@ -653,9 +653,9 @@ Difficulty: Hard if(ismineralturf(loc)) //drill mineral turfs var/turf/closed/mineral/M = loc M.gets_drilled(caster) - INVOKE_ASYNC(src, .proc/blast) + INVOKE_ASYNC(src, PROC_REF(blast)) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -730,7 +730,7 @@ Difficulty: Hard if(H.beacon == src) to_chat(user, "You start removing your hierophant beacon...") H.timer = world.time + 51 - INVOKE_ASYNC(H, /obj/item/hierophant_club.proc/prepare_icon_update) + INVOKE_ASYNC(H, TYPE_PROC_REF(/obj/item/hierophant_club, prepare_icon_update)) if(do_after(user, 50, target = src)) playsound(src,'sound/magic/blind.ogg', 200, TRUE, -4) new /obj/effect/temp_visual/hierophant/telegraph/teleport(get_turf(src), user) @@ -740,7 +740,7 @@ Difficulty: Hard qdel(src) else H.timer = world.time - INVOKE_ASYNC(H, /obj/item/hierophant_club.proc/prepare_icon_update) + INVOKE_ASYNC(H, TYPE_PROC_REF(/obj/item/hierophant_club, prepare_icon_update)) else to_chat(user, "You touch the beacon with the club, but nothing happens.") else diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm index 5159efd266f1..b8f730d87920 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -124,15 +124,15 @@ minimum_distance = 0 set_varspeed(0) charging = TRUE - addtimer(CALLBACK(src, .proc/reset_charge), 60) + addtimer(CALLBACK(src, PROC_REF(reset_charge)), 60) var/mob/living/L = target if(!istype(L) || L.stat != DEAD) //I know, weird syntax, but it just works. - addtimer(CALLBACK(src, .proc/throw_thyself), 20) + addtimer(CALLBACK(src, PROC_REF(throw_thyself)), 20) ///This is the proc that actually does the throwing. Charge only adds a timer for this. /mob/living/simple_animal/hostile/megafauna/legion/proc/throw_thyself() playsound(src, 'sound/weapons/sonic_jackhammer.ogg', 50, TRUE) - throw_at(target, 7, 1.1, src, FALSE, FALSE, CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/effects/meteorimpact.ogg', 50 * size, TRUE, 2), INFINITY) + throw_at(target, 7, 1.1, src, FALSE, FALSE, CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, 'sound/effects/meteorimpact.ogg', 50 * size, TRUE, 2), INFINITY) ///Deals some extra damage on throw impact. /mob/living/simple_animal/hostile/megafauna/legion/throw_impact(mob/living/hit_atom, datum/thrownthing/throwingdatum) @@ -341,7 +341,7 @@ /obj/structure/legionturret/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/set_up_shot), initial_firing_time) + addtimer(CALLBACK(src, PROC_REF(set_up_shot)), initial_firing_time) ///Handles an extremely basic AI /obj/structure/legionturret/proc/set_up_shot() @@ -365,7 +365,7 @@ var/datum/point/vector/V = new(T1.x, T1.y, T1.z, 0, 0, angle) generate_tracer_between_points(V, V.return_vector_after_increments(6), /obj/effect/projectile/tracer/legion/tracer, 0, shot_delay, 0, 0, 0, null) playsound(src, 'sound/machines/airlockopen.ogg', 100, TRUE) - addtimer(CALLBACK(src, .proc/fire_beam, angle), shot_delay) + addtimer(CALLBACK(src, PROC_REF(fire_beam), angle), shot_delay) ///Called shot_delay after the turret shot the tracer. Shoots a projectile into the same direction. /obj/structure/legionturret/proc/fire_beam(angle) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm index 38834a4e5cef..a2cceb5a3aaa 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm @@ -147,7 +147,7 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa /mob/living/simple_animal/hostile/swarmer/ai/proc/StartAction(deci = 0) stop_automated_movement = TRUE AIStatus = AI_OFF - addtimer(CALLBACK(src, .proc/EndAction), deci) + addtimer(CALLBACK(src, PROC_REF(EndAction)), deci) /mob/living/simple_animal/hostile/swarmer/ai/proc/EndAction() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm index b487f38d002d..59a58bd48d16 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm @@ -133,11 +133,13 @@ Difficulty: Hard . = ..() stored_move_dirs &= ~direct if(!stored_move_dirs) - INVOKE_ASYNC(src, .proc/ground_slam, stomp_range, 1) + INVOKE_ASYNC(src, PROC_REF(ground_slam), stomp_range, 1) /// Slams the ground around the wendigo throwing back enemies caught nearby /mob/living/simple_animal/hostile/megafauna/wendigo/proc/ground_slam(range, delay) var/turf/orgin = get_turf(src) + if(!orgin) + return var/list/all_turfs = RANGE_TURFS(range, orgin) for(var/i = 0 to range) for(var/turf/T in all_turfs) diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index c9391c4cab28..ca595d4d682f 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -315,7 +315,7 @@ GLOBAL_LIST_INIT(protected_objects, list(/obj/structure/table, /obj/structure/ca AM.forceMove(C) return ..() -/mob/living/simple_animal/hostile/mimic/xenobio/CanAllowThrough(atom/movable/mover, turf/target) +/mob/living/simple_animal/hostile/mimic/xenobio/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(istype(mover, /obj/structure/closet)) return FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm index ce83232c3430..eb8302536e50 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm @@ -69,7 +69,8 @@ /mob/living/simple_animal/hostile/asteroid/basilisk/GiveTarget(new_target) if(..()) //we have a target - if(isliving(target) && !target.Adjacent(targets_from) && ranged_cooldown <= world.time)//No more being shot at point blank or spammed with RNG beams + var/atom/target_from = GET_TARGETS_FROM(src) + if(isliving(target) && !target.Adjacent(target_from) && ranged_cooldown <= world.time)//No more being shot at point blank or spammed with RNG beams OpenFire(target) /mob/living/simple_animal/hostile/asteroid/basilisk/ex_act(severity, target) @@ -92,7 +93,7 @@ set_varspeed(0) warmed_up = TRUE projectiletype = /obj/projectile/temp/basilisk/heated - addtimer(CALLBACK(src, .proc/cool_down), 3000) + addtimer(CALLBACK(src, PROC_REF(cool_down)), 3000) /mob/living/simple_animal/hostile/asteroid/basilisk/proc/cool_down() visible_message("[src] appears to be cooling down...") diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/brimdemon.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/brimdemon.dm index 45d4114da6e1..1d9f6e174660 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/brimdemon.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/brimdemon.dm @@ -98,7 +98,7 @@ visible_message(span_danger("[src] starts charging!")) balloon_alert(src, "charging...") to_chat(src, "You begin to charge up...") - addtimer(CALLBACK(src, .proc/fire_laser), 1 SECONDS) + addtimer(CALLBACK(src, PROC_REF(fire_laser)), 1 SECONDS) COOLDOWN_START(src, ranged_cooldown, ranged_cooldown_time) /mob/living/simple_animal/hostile/asteroid/brimdemon/Moved(atom/old_loc, movement_dir, forced, list/old_locs, momentum_change = TRUE) @@ -143,7 +143,7 @@ last_brimbeam.icon_state = "brimbeam_end" var/atom/first_brimbeam = beamparts[1] first_brimbeam.icon_state = "brimbeam_start" - addtimer(CALLBACK(src, .proc/end_laser), 2 SECONDS) + addtimer(CALLBACK(src, PROC_REF(end_laser)), 2 SECONDS) /// Deletes all the brimbeam parts and sets variables back to their initial ones. /mob/living/simple_animal/hostile/asteroid/brimdemon/proc/end_laser() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm index b24f055d3bb9..11cdc80c97cc 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/curse_blob.dm @@ -56,7 +56,8 @@ /mob/living/simple_animal/hostile/asteroid/curseblob/proc/check_for_target() if(QDELETED(set_target) || set_target.stat != CONSCIOUS || z != set_target.z) - qdel(src) + if(!QDELETED(src)) + qdel(src) return TRUE /mob/living/simple_animal/hostile/asteroid/curseblob/GiveTarget(new_target) @@ -71,7 +72,7 @@ return //if it's not our target, we ignore it -/mob/living/simple_animal/hostile/asteroid/curseblob/CanAllowThrough(atom/movable/mover, turf/target) +/mob/living/simple_animal/hostile/asteroid/curseblob/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(mover == set_target) return FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index 5bbe307790f2..fb06bfdf11ca 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -68,19 +68,18 @@ While using this makes the system rely on OnFire, it still gives options for tim icon_icon = 'icons/mob/actions/actions_elites.dmi' button_icon_state = "" background_icon_state = "bg_default" - var/mob/living/simple_animal/hostile/asteroid/elite/M var/chosen_message var/chosen_attack_num = 0 /datum/action/innate/elite_attack/Grant(mob/living/L) - if(istype(L, /mob/living/simple_animal/hostile/asteroid/elite)) - M = L - return ..() - return FALSE + if(!istype(L, /mob/living/simple_animal/hostile/asteroid/elite)) + return FALSE + return ..() /datum/action/innate/elite_attack/Activate() - M.chosen_attack = chosen_attack_num - to_chat(M, chosen_message) + var/mob/living/simple_animal/hostile/asteroid/elite/elite_owner = owner + elite_owner.chosen_attack = chosen_attack_num + to_chat(elite_owner, chosen_message) //The Pulsing Tumor, the actual "spawn-point" of elites, handles the spawning, arena, and procs for dealing with basic scenarios. @@ -118,15 +117,15 @@ While using this makes the system rely on OnFire, it still gives options for tim if(boosted) mychild.playsound_local(get_turf(mychild), 'sound/effects/magic.ogg', 40, 0) to_chat(mychild, "Someone has activated your tumor. You will be returned to fight shortly, get ready!") - addtimer(CALLBACK(src, .proc/return_elite), 30) - INVOKE_ASYNC(src, .proc/arena_checks) + addtimer(CALLBACK(src, PROC_REF(return_elite)), 30) + INVOKE_ASYNC(src, PROC_REF(arena_checks)) if(TUMOR_INACTIVE) activity = TUMOR_ACTIVE var/mob/dead/observer/elitemind = null visible_message("[src] begins to convulse. Your instincts tell you to step back.") activator = user if(!boosted) - addtimer(CALLBACK(src, .proc/spawn_elite), 30) + addtimer(CALLBACK(src, PROC_REF(spawn_elite)), 30) return visible_message("Something within [src] stirs...") var/list/candidates = pollCandidatesForMob("Do you want to play as a lavaland elite?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, src, POLL_IGNORE_SENTIENCE_POTION) @@ -135,7 +134,7 @@ While using this makes the system rely on OnFire, it still gives options for tim elitemind = pick(candidates) elitemind.playsound_local(get_turf(elitemind), 'sound/effects/magic.ogg', 40, 0) to_chat(elitemind, "You have been chosen to play as a Lavaland Elite.\nIn a few seconds, you will be summoned on Lavaland as a monster to fight your activator, in a fight to the death.\nYour attacks can be switched using the buttons on the top left of the HUD, and used by clicking on targets or tiles similar to a gun.\nWhile the opponent might have an upper hand with powerful mining equipment and tools, you have great power normally limited by AI mobs.\nIf you want to win, you'll have to use your powers in creative ways to ensure the kill. It's suggested you try using them all as soon as possible.\nShould you win, you'll receive extra information regarding what to do after. Good luck!") - addtimer(CALLBACK(src, .proc/spawn_elite, elitemind), 100) + addtimer(CALLBACK(src, PROC_REF(spawn_elite), elitemind), 100) else visible_message("The stirring stops, and nothing emerges. Perhaps try again later.") activity = TUMOR_INACTIVE @@ -151,7 +150,7 @@ While using this makes the system rely on OnFire, it still gives options for tim mychild.sentience_act() notify_ghosts("\A [mychild] has been awakened in \the [get_area(src)]!", source = mychild, action = NOTIFY_ORBIT, flashwindow = FALSE, header = "Lavaland Elite awakened") icon_state = "tumor_popped" - INVOKE_ASYNC(src, .proc/arena_checks) + INVOKE_ASYNC(src, PROC_REF(arena_checks)) /obj/structure/elite_tumor/proc/return_elite() mychild.forceMove(loc) @@ -199,11 +198,11 @@ While using this makes the system rely on OnFire, it still gives options for tim /obj/structure/elite_tumor/proc/arena_checks() if(activity != TUMOR_ACTIVE || QDELETED(src)) return - INVOKE_ASYNC(src, .proc/fighters_check) //Checks to see if our fighters died. - INVOKE_ASYNC(src, .proc/arena_trap) //Gets another arena trap queued up for when this one runs out. - INVOKE_ASYNC(src, .proc/border_check) //Checks to see if our fighters got out of the arena somehow. + INVOKE_ASYNC(src, PROC_REF(fighters_check)) //Checks to see if our fighters died. + INVOKE_ASYNC(src, PROC_REF(arena_trap)) //Gets another arena trap queued up for when this one runs out. + INVOKE_ASYNC(src, PROC_REF(border_check)) //Checks to see if our fighters got out of the arena somehow. if(!QDELETED(src)) - addtimer(CALLBACK(src, .proc/arena_checks), 50) + addtimer(CALLBACK(src, PROC_REF(arena_checks)), 50) /obj/structure/elite_tumor/proc/fighters_check() if(activator != null && activator.stat == DEAD || activity == TUMOR_ACTIVE && QDELETED(activator)) @@ -327,7 +326,7 @@ While using this makes the system rely on OnFire, it still gives options for tim ourelite = null return ..() -/obj/effect/temp_visual/elite_tumor_wall/CanAllowThrough(atom/movable/mover, turf/target) +/obj/effect/temp_visual/elite_tumor_wall/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(mover == ourelite || mover == activator) return FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm index 28e8bc82ef71..7e2b1c3d990c 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm @@ -53,6 +53,10 @@ var/rand_tent = 0 var/list/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/children_list = list() +/mob/living/simple_animal/hostile/asteroid/elite/broodmother/Destroy() + children_list.Cut() + return ..() + /datum/action/innate/elite_attack/tentacle_patch name = "Tentacle Patch" button_icon_state = "tentacle_patch" @@ -128,11 +132,10 @@ for(var/i in 1 to 2) if(children_list.len >= 8) return - var/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/newchild = new /mob/living/simple_animal/hostile/asteroid/elite/broodmother_child(loc) + var/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/newchild = new /mob/living/simple_animal/hostile/asteroid/elite/broodmother_child(loc, src) newchild.GiveTarget(target) newchild.faction = faction.Copy() visible_message("[newchild] appears below [src]!") - newchild.mother = src children_list += newchild /mob/living/simple_animal/hostile/asteroid/elite/broodmother/proc/rage() @@ -142,7 +145,7 @@ color = "#FF0000" set_varspeed(0) move_to_delay = 3 - addtimer(CALLBACK(src, .proc/reset_rage), 65) + addtimer(CALLBACK(src, PROC_REF(reset_rage)), 65) /mob/living/simple_animal/hostile/asteroid/elite/broodmother/proc/reset_rage() color = "#FFFFFF" @@ -186,7 +189,17 @@ guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide = 1) deathmessage = "falls to the ground." status_flags = CANPUSH - var/mob/living/simple_animal/hostile/asteroid/elite/broodmother/mother = null + var/datum/weakref/mother_ref + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/Initialize(mapload, mob/living/simple_animal/hostile/asteroid/elite/broodmother/mother) + . = ..() + mother_ref = WEAKREF(mother) + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/Destroy() + var/mob/living/simple_animal/hostile/asteroid/elite/broodmother/mother = mother_ref?.resolve() + if(mother) + mother.children_list -= src + return ..() /mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/OpenFire(target) ranged_cooldown = world.time + 40 @@ -199,8 +212,6 @@ /mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/death() . = ..() - if(mother != null) - mother.children_list -= src visible_message("[src] explodes!") explosion(get_turf(loc),0,0,0,flame_range = 3, adminlog = FALSE) gib() @@ -219,11 +230,11 @@ retract() else deltimer(timerid) - timerid = addtimer(CALLBACK(src, .proc/retract), 10, TIMER_STOPPABLE) + timerid = addtimer(CALLBACK(src, PROC_REF(retract)), 10, TIMER_STOPPABLE) /obj/effect/temp_visual/goliath_tentacle/broodmother/patch/Initialize(mapload, new_spawner) . = ..() - INVOKE_ASYNC(src, .proc/createpatch) + INVOKE_ASYNC(src, PROC_REF(createpatch)) /obj/effect/temp_visual/goliath_tentacle/broodmother/patch/proc/createpatch() var/tentacle_locs = spiral_range_turfs(1, get_turf(src)) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm index 0ead18b36ad9..ba8ae69093a4 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm @@ -56,7 +56,7 @@ /mob/living/simple_animal/hostile/asteroid/elite/herald/death() . = ..() if(!is_mirror) - addtimer(CALLBACK(src, .proc/become_ghost), 8) + addtimer(CALLBACK(src, PROC_REF(become_ghost)), 8) if(my_mirror != null) qdel(my_mirror) @@ -145,13 +145,13 @@ var/target_turf = get_turf(target) var/angle_to_target = Get_Angle(src, target_turf) shoot_projectile(target_turf, angle_to_target, FALSE) - addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 2) - addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 4) + addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 2) + addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 4) if(health < maxHealth * 0.5) playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) - addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 10) - addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 12) - addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 14) + addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 10) + addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 12) + addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 14) /mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_circleshot() var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315) @@ -168,11 +168,11 @@ if(!is_mirror) icon_state = "herald_enraged" playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) - addtimer(CALLBACK(src, .proc/herald_circleshot), 5) + addtimer(CALLBACK(src, PROC_REF(herald_circleshot)), 5) if(health < maxHealth * 0.5) playsound(get_turf(src), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) - addtimer(CALLBACK(src, .proc/herald_circleshot), 15) - addtimer(CALLBACK(src, .proc/unenrage), 20) + addtimer(CALLBACK(src, PROC_REF(herald_circleshot)), 15) + addtimer(CALLBACK(src, PROC_REF(unenrage)), 20) /mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_teleshot(target) ranged_cooldown = world.time + 30 @@ -278,4 +278,4 @@ owner.visible_message("[owner]'s [src] emits a loud noise as [owner] is struck!") var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315) playsound(get_turf(owner), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) - addtimer(CALLBACK(src, .proc/reactionshot, owner), 10) + addtimer(CALLBACK(src, PROC_REF(reactionshot), owner), 10) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm index 8f991a400f18..f0b6dc3e8d54 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm @@ -104,7 +104,7 @@ T = get_step(T, dir_to_target) playsound(src,'sound/magic/demon_attack1.ogg', 200, 1) visible_message("[src] prepares to charge!") - addtimer(CALLBACK(src, .proc/legionnaire_charge_2, dir_to_target, 0), 5) + addtimer(CALLBACK(src, PROC_REF(legionnaire_charge_2), dir_to_target, 0), 5) /mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/legionnaire_charge_2(move_dir, times_ran) if(times_ran >= 4) @@ -132,7 +132,7 @@ L.safe_throw_at(throwtarget, 10, 1, src) L.Paralyze(20) L.adjustBruteLoss(50) - addtimer(CALLBACK(src, .proc/legionnaire_charge_2, move_dir, (times_ran + 1)), 2) + addtimer(CALLBACK(src, PROC_REF(legionnaire_charge_2), move_dir, (times_ran + 1)), 2) /mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/head_detach(target) ranged_cooldown = world.time + 10 @@ -160,7 +160,7 @@ /mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/onHeadDeath() myhead = null - addtimer(CALLBACK(src, .proc/regain_head), 50) + addtimer(CALLBACK(src, PROC_REF(regain_head)), 50) /mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/regain_head() has_head = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm index 33165a4b6dbe..4077f8b58949 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm @@ -122,7 +122,7 @@ new /obj/effect/temp_visual/hierophant/blast/pandora(T, src) T = get_step(T, angleused) procsleft = procsleft - 1 - addtimer(CALLBACK(src, .proc/singular_shot_line, procsleft, angleused, T), 2) + addtimer(CALLBACK(src, PROC_REF(singular_shot_line), procsleft, angleused, T), 2) /mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/magic_box(target) ranged_cooldown = world.time + cooldown_time @@ -138,7 +138,7 @@ new /obj/effect/temp_visual/hierophant/telegraph(T, src) new /obj/effect/temp_visual/hierophant/telegraph(source, src) playsound(source,'sound/machines/airlockopen.ogg', 200, 1) - addtimer(CALLBACK(src, .proc/pandora_teleport_2, T, source), 2) + addtimer(CALLBACK(src, PROC_REF(pandora_teleport_2), T, source), 2) /mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport_2(turf/T, turf/source) new /obj/effect/temp_visual/hierophant/telegraph/teleport(T, src) @@ -150,7 +150,7 @@ animate(src, alpha = 0, time = 2, easing = EASE_OUT) //fade out visible_message("[src] fades out!") density = FALSE - addtimer(CALLBACK(src, .proc/pandora_teleport_3, T), 2) + addtimer(CALLBACK(src, PROC_REF(pandora_teleport_3), T), 2) /mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport_3(turf/T) forceMove(T) @@ -163,7 +163,7 @@ var/turf/T = get_turf(target) new /obj/effect/temp_visual/hierophant/blast/pandora(T, src) var/max_size = 2 - addtimer(CALLBACK(src, .proc/aoe_squares_2, T, 0, max_size), 2) + addtimer(CALLBACK(src, PROC_REF(aoe_squares_2), T, 0, max_size), 2) /mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/aoe_squares_2(turf/T, ring, max_size) if(ring > max_size) @@ -171,7 +171,7 @@ for(var/t in spiral_range_turfs(ring, T)) if(get_dist(t, T) == ring) new /obj/effect/temp_visual/hierophant/blast/pandora(t, src) - addtimer(CALLBACK(src, .proc/aoe_squares_2, T, (ring + 1), max_size), 2) + addtimer(CALLBACK(src, PROC_REF(aoe_squares_2), T, (ring + 1), max_size), 2) /mob/living/simple_animal/hostile/asteroid/elite/pandora/death() //open all pandora gates diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm index 91f728b9b4b0..e4eb7122d391 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm @@ -130,7 +130,7 @@ retreat_distance = 10 minimum_distance = 10 if(will_burrow) - addtimer(CALLBACK(src, .proc/Burrow), chase_time) + addtimer(CALLBACK(src, PROC_REF(Burrow)), chase_time) /mob/living/simple_animal/hostile/asteroid/goldgrub/AttackingTarget() if(istype(target, /obj/item/stack/ore)) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index f17070695381..1fa691b85de7 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -306,7 +306,7 @@ var/turf/closed/mineral/M = loc M.gets_drilled() deltimer(timerid) - timerid = addtimer(CALLBACK(src, .proc/tripanim), 7, TIMER_STOPPABLE) + timerid = addtimer(CALLBACK(src, PROC_REF(tripanim)), 7, TIMER_STOPPABLE) if(!recursive) return var/list/directions = get_directions() @@ -321,7 +321,7 @@ /obj/effect/temp_visual/goliath_tentacle/proc/tripanim() deltimer(timerid) - timerid = addtimer(CALLBACK(src, .proc/trip), 3, TIMER_STOPPABLE) + timerid = addtimer(CALLBACK(src, PROC_REF(trip)), 3, TIMER_STOPPABLE) /obj/effect/temp_visual/goliath_tentacle/proc/trip() var/latched = FALSE @@ -335,7 +335,7 @@ retract() else deltimer(timerid) - timerid = addtimer(CALLBACK(src, .proc/retract), 10, TIMER_STOPPABLE) + timerid = addtimer(CALLBACK(src, PROC_REF(retract)), 10, TIMER_STOPPABLE) /obj/effect/temp_visual/goliath_tentacle/proc/on_hit(mob/living/L) L.Stun(100) @@ -392,13 +392,13 @@ shake_animation(20) visible_message("[src] convulses violently!! Get back!!") playsound(loc, 'sound/effects/magic.ogg', 100, TRUE) - addtimer(CALLBACK(src, .proc/open_fire_2), 1 SECONDS) + addtimer(CALLBACK(src, PROC_REF(open_fire_2)), 1 SECONDS) /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient/crystal/proc/open_fire_2() if(prob(20) && !(spiral_attack_inprogress)) visible_message("[src] sprays crystalline shards in a circle!") playsound(loc, 'sound/magic/charge.ogg', 100, TRUE) - INVOKE_ASYNC(src,.proc/spray_of_crystals) + INVOKE_ASYNC(src, PROC_REF(spray_of_crystals)) else visible_message("[src] expels it's matter, releasing a spray of crystalline shards!") playsound(loc, 'sound/effects/bamf.ogg', 100, TRUE) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm index 99807cff8210..ee48ed624ee4 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/gutlunch.dm @@ -48,7 +48,7 @@ /mob/living/simple_animal/hostile/asteroid/gutlunch/Initialize() . = ..() if(wanted_objects.len) - AddComponent(/datum/component/udder, /obj/item/udder/gutlunch, CALLBACK(src, .proc/regenerate_icons), CALLBACK(src, .proc/regenerate_icons)) + AddComponent(/datum/component/udder, /obj/item/udder/gutlunch, CALLBACK(src, PROC_REF(regenerate_icons)), CALLBACK(src, PROC_REF(regenerate_icons))) /mob/living/simple_animal/hostile/asteroid/gutlunch/CanAttack(atom/the_target) // Gutlunch-specific version of CanAttack to handle stupid stat_exclusive = true crap so we don't have to do it for literally every single simple_animal/hostile except the two that spawn in lavaland if(isturf(the_target) || !the_target || the_target.type == /atom/movable/lighting_object) // bail out on invalids diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index aa2446ca108a..7be0cf76bbd7 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -94,7 +94,7 @@ /mob/living/simple_animal/hostile/asteroid/hivelordbrood/Initialize(_source) . = ..() source = source - addtimer(CALLBACK(src, .proc/death), 100) + addtimer(CALLBACK(src, PROC_REF(death)), 100) AddComponent(/datum/component/swarming) //Legion @@ -222,7 +222,7 @@ /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/staff/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/death), 50) + addtimer(CALLBACK(src, PROC_REF(death)), 50) AddComponent(/datum/component/swarming) /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/Life() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice demon.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice demon.dm index 9f458f617c87..2315f6e61a4f 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice demon.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice demon.dm @@ -194,7 +194,7 @@ icon_state = "frozen" /datum/status_effect/ice_crystal/on_apply() - RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, .proc/owner_moved) + RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(owner_moved)) if(!owner.stat) to_chat(owner, "You become frozen in a cube!") cube = icon('icons/effects/freeze.dmi', "ice_cube") diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index 4c7ddedbbb1d..26a587f7f854 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -88,7 +88,7 @@ /mob/living/simple_animal/hostile/mushroom/adjustHealth(amount, updating_health = TRUE, forced = FALSE) //Possibility to flee from a fight just to make it more visually interesting if(!retreat_distance && prob(33)) retreat_distance = 5 - addtimer(CALLBACK(src, .proc/stop_retreat), 30) + addtimer(CALLBACK(src, PROC_REF(stop_retreat)), 30) . = ..() /mob/living/simple_animal/hostile/mushroom/proc/stop_retreat() @@ -137,7 +137,7 @@ revive(full_heal = TRUE, admin_revive = FALSE) UpdateMushroomCap() recovery_cooldown = 1 - addtimer(CALLBACK(src, .proc/recovery_recharge), 300) + addtimer(CALLBACK(src, PROC_REF(recovery_recharge)), 300) /mob/living/simple_animal/hostile/mushroom/proc/recovery_recharge() recovery_cooldown = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/regalrat.dm b/code/modules/mob/living/simple_animal/hostile/regalrat.dm index 3d85af5dc84c..cad59e7369b8 100644 --- a/code/modules/mob/living/simple_animal/hostile/regalrat.dm +++ b/code/modules/mob/living/simple_animal/hostile/regalrat.dm @@ -37,7 +37,14 @@ riot = new /datum/action/cooldown/riot coffer.Grant(src) riot.Grant(src) - INVOKE_ASYNC(src, .proc/get_player) + INVOKE_ASYNC(src, PROC_REF(get_player)) + +/mob/living/simple_animal/hostile/regalrat/Destroy() + coffer.Remove(src) + riot.Remove(src) + QDEL_NULL(coffer) + QDEL_NULL(riot) + return ..() /mob/living/simple_animal/hostile/regalrat/proc/get_player() var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you want to play as the Royal Rat, cheesey be his crown?", ROLE_SENTIENCE, null, FALSE, 100, POLL_IGNORE_SENTIENCE_POTION) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm index 63a796a80954..7853b478033f 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm @@ -7,7 +7,7 @@ if(!L.stat) return L else - enemies -= L + remove_enemy(L) else if(ismecha(A)) var/obj/mecha/M = A if(M.occupant) @@ -29,19 +29,37 @@ if(isliving(A)) var/mob/living/M = A if(faction_check_mob(M) && attack_same || !faction_check_mob(M)) - enemies |= M + add_enemy(M) else if(ismecha(A)) var/obj/mecha/M = A if(M.occupant) - enemies |= M - enemies |= M.occupant + add_enemy(M) + add_enemy(M.occupant) for(var/mob/living/simple_animal/hostile/retaliate/H in around) if(faction_check_mob(H) && !attack_same && !H.attack_same) - H.enemies |= enemies - return 0 + H.add_enemies(enemies) /mob/living/simple_animal/hostile/retaliate/adjustHealth(amount, updating_health = TRUE, forced = FALSE) . = ..() if(. > 0 && stat == CONSCIOUS) Retaliate() + +/mob/living/simple_animal/hostile/retaliate/proc/add_enemy(new_enemy) + RegisterSignal(new_enemy, COMSIG_PARENT_QDELETING, PROC_REF(remove_enemy), override = TRUE) + enemies |= new_enemy + +/mob/living/simple_animal/hostile/retaliate/proc/add_enemies(new_enemies) + for(var/new_enemy in new_enemies) + RegisterSignal(new_enemy, COMSIG_PARENT_QDELETING, PROC_REF(remove_enemy), override = TRUE) + enemies |= new_enemy + +/mob/living/simple_animal/hostile/retaliate/proc/clear_enemies() + for(var/enemy in enemies) + UnregisterSignal(enemy, COMSIG_PARENT_QDELETING) + enemies.Cut() + +/mob/living/simple_animal/hostile/retaliate/proc/remove_enemy(datum/enemy_to_remove) + SIGNAL_HANDLER + UnregisterSignal(enemy_to_remove, COMSIG_PARENT_QDELETING) + enemies -= enemy_to_remove diff --git a/code/modules/mob/living/simple_animal/hostile/space_dragon.dm b/code/modules/mob/living/simple_animal/hostile/space_dragon.dm index c43c37a6bd21..3375cd0a7269 100644 --- a/code/modules/mob/living/simple_animal/hostile/space_dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/space_dragon.dm @@ -198,7 +198,7 @@ if(D.density) return delayFire += 1.5 - addtimer(CALLBACK(src, .proc/dragon_fire_line, T), delayFire) + addtimer(CALLBACK(src, PROC_REF(dragon_fire_line), T), delayFire) /** * What occurs on each tile to actually create the fire. @@ -279,7 +279,7 @@ fully_heal() color = "#FF0000" set_varspeed(-0.5) - addtimer(CALLBACK(src, .proc/rift_empower, FALSE), 300) + addtimer(CALLBACK(src, PROC_REF(rift_empower), FALSE), 300) else color = "#FFFFFF" set_varspeed(0) @@ -312,7 +312,7 @@ /mob/living/simple_animal/hostile/space_dragon/proc/useGust(timer) if(timer != 10) pixel_y = pixel_y + 2; - addtimer(CALLBACK(src, .proc/useGust, timer + 1), 1.5) + addtimer(CALLBACK(src, PROC_REF(useGust), timer + 1), 1.5) return pixel_y = 0 icon_state = "spacedragon_gust_2" @@ -330,7 +330,7 @@ var/throwtarget = get_edge_target_turf(target, dir_to_target) L.safe_throw_at(throwtarget, 10, 1, src) L.Paralyze(50) - addtimer(CALLBACK(src, .proc/reset_status), 4 + ((tiredness * tiredness_mult) / 10)) + addtimer(CALLBACK(src, PROC_REF(reset_status)), 4 + ((tiredness * tiredness_mult) / 10)) tiredness = tiredness + (30 * tiredness_mult) /** diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm index 020b160bbed9..52ddcc72963a 100644 --- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm +++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm @@ -19,6 +19,8 @@ smoothing_flags = NONE /// The amount of time it takes to create a venus human trap. var/growth_time = 120 SECONDS + /// The current vines + var/list/vines = list() /obj/structure/alien/resin/flower_bud_enemy/Initialize() . = ..() @@ -29,8 +31,12 @@ anchors += locate(x+2,y-2,z) for(var/turf/T in anchors) - Beam(T, "vine", maxdistance=5, beam_type=/obj/effect/ebeam/vine) - addtimer(CALLBACK(src, .proc/bear_fruit), growth_time) + vines += Beam(T, "vine", maxdistance=5, beam_type=/obj/effect/ebeam/vine) + addtimer(CALLBACK(src, PROC_REF(bear_fruit)), growth_time) + +/obj/structure/alien/resin/flower_bud_enemy/Destroy() + QDEL_LIST(vines) + return ..() /** * Spawns a venus human trap, then qdels itself. @@ -47,10 +53,10 @@ mouse_opacity = MOUSE_OPACITY_ICON desc = "A thick vine, painful to the touch." -/obj/effect/ebeam/vine/Initialize() +/obj/effect/ebeam/vine/Initialize(mapload) . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) @@ -60,7 +66,7 @@ var/mob/living/L = AM if(!isvineimmune(L)) L.adjustBruteLoss(5) - to_chat(L, "You cut yourself on the thorny vines.") + to_chat(L, span_alert("You cut yourself on the thorny vines.")) /** * Venus Human Trap @@ -125,7 +131,7 @@ return var/datum/beam/newVine = Beam(the_target, icon_state = "vine", maxdistance = vine_grab_distance, beam_type=/obj/effect/ebeam/vine, emissive = FALSE) - RegisterSignal(newVine, COMSIG_PARENT_QDELETING, .proc/remove_vine, newVine) + RegisterSignal(newVine, COMSIG_PARENT_QDELETING, PROC_REF(remove_vine), newVine) vines += newVine if(isliving(the_target)) var/mob/living/L = the_target @@ -145,6 +151,7 @@ /mob/living/simple_animal/hostile/venus_human_trap/Destroy() for(var/datum/beam/vine as anything in vines) qdel(vine) // reference is automatically deleted by remove_vine + vines.Cut() return ..() /** @@ -191,5 +198,8 @@ * Arguments: * * datum/beam/vine - The vine to be removed from the list. */ -/mob/living/simple_animal/hostile/venus_human_trap/proc/remove_vine(datum/beam/vine, force) +/mob/living/simple_animal/hostile/venus_human_trap/proc/remove_vine(datum/beam/vine) + SIGNAL_HANDLER + + UnregisterSignal(vine, COMSIG_PARENT_QDELETING) vines -= vine diff --git a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm index 5eb2965fdc0e..b77436c09c89 100644 --- a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm +++ b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm @@ -100,7 +100,7 @@ F.environment_smash = ENVIRONMENT_SMASH_WALLS F.mob_size = MOB_SIZE_LARGE F.speed = 1 - addtimer(CALLBACK(F, /mob/living/simple_animal/hostile/asteroid/fugu/proc/Deflate), 100) + addtimer(CALLBACK(F, TYPE_PROC_REF(/mob/living/simple_animal/hostile/asteroid/fugu, Deflate)), 100) /mob/living/simple_animal/hostile/asteroid/fugu/proc/Deflate() if(wumbo) diff --git a/code/modules/mob/living/simple_animal/hostile/zombie.dm b/code/modules/mob/living/simple_animal/hostile/zombie.dm index bbd925035043..37be0db7f16c 100644 --- a/code/modules/mob/living/simple_animal/hostile/zombie.dm +++ b/code/modules/mob/living/simple_animal/hostile/zombie.dm @@ -26,14 +26,14 @@ /mob/living/simple_animal/hostile/zombie/Initialize(mapload) . = ..() - INVOKE_ASYNC(src, .proc/setup_visuals) + INVOKE_ASYNC(src, PROC_REF(setup_visuals)) /mob/living/simple_animal/hostile/zombie/proc/setup_visuals() var/datum/preferences/dummy_prefs = new dummy_prefs.pref_species = new /datum/species/zombie dummy_prefs.randomise[RANDOM_BODY] = TRUE if(zombiejob) - var/datum/job/J = SSjob.GetJob(zombiejob) + var/datum/job/J = GLOB.name_occupations[zombiejob] var/datum/outfit/O if(J.outfit) O = new J.outfit diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index d506eee8ad4b..d63c300e8ba6 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -70,7 +70,6 @@ var/parrot_state = PARROT_WANDER //Hunt for a perch when created var/parrot_sleep_max = 25 //The time the parrot sits while perched before looking around. Mosly a way to avoid the parrot's AI in life() being run every single tick. var/parrot_sleep_dur = 25 //Same as above, this is the var that physically counts down - var/parrot_dam_zone = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_ARM, BODY_ZONE_R_LEG) //For humans, select a bodypart to attack var/parrot_speed = 5 //"Delay in world ticks between movement." according to byond. Yeah, that's BS but it does directly affect movement. Higher number = slower. var/parrot_lastmove = null //Updates/Stores position of the parrot while it's moving @@ -81,7 +80,7 @@ var/speech_shuffle_rate = 20 var/list/available_channels = list() - //Headset for Poly to yell at engineers :) + //Headset for Polly to yell at engineers :) var/obj/item/radio/headset/ears = null //The thing the parrot is currently interested in. This gets used for items the parrot wants to pick up, mobs it wants to steal from, @@ -123,6 +122,18 @@ /mob/living/simple_animal/parrot/proc/perch_mob_player)) +/mob/living/simple_animal/parrot/Destroy() + walk(src, 0) + if(ears) + QDEL_NULL(ears) + if(held_item) + QDEL_NULL(held_item) + + set_perch(null) + set_interest(null) + + return ..() + /mob/living/simple_animal/parrot/examine(mob/user) . = ..() if(stat) @@ -276,18 +287,18 @@ * Attack responces */ //Humans, monkeys, aliens -/mob/living/simple_animal/parrot/attack_hand(mob/living/carbon/M) +/mob/living/simple_animal/parrot/attack_hand(mob/living/carbon/attacker) ..() if(client) return - if(!stat && M.a_intent == INTENT_HARM) + if(!stat && attacker.a_intent == INTENT_HARM) icon_state = icon_living //It is going to be flying regardless of whether it flees or attacks if(parrot_state == PARROT_PERCH) parrot_sleep_dur = parrot_sleep_max //Reset it's sleep timer if it was perched - parrot_interest = M + set_interest(attacker) parrot_state = PARROT_SWOOP //The parrot just got hit, it WILL move, now to pick a direction.. if(health > 30) //Let's get in there and squawk it up! @@ -295,18 +306,18 @@ else parrot_state |= PARROT_FLEE //Otherwise, fly like a bat out of hell! drop_held_item(0) - if(stat != DEAD && M.a_intent == INTENT_HELP) + if(stat != DEAD && attacker.a_intent == INTENT_HELP) handle_automated_speech(1) //assured speak/emote return -/mob/living/simple_animal/parrot/attack_paw(mob/living/carbon/monkey/M) - return attack_hand(M) +/mob/living/simple_animal/parrot/attack_paw(mob/living/carbon/monkey/attacker) + return attack_hand(attacker) -/mob/living/simple_animal/parrot/attack_alien(mob/living/carbon/alien/M) - return attack_hand(M) +/mob/living/simple_animal/parrot/attack_alien(mob/living/carbon/alien/attacker) + return attack_hand(attacker) //Simple animals -/mob/living/simple_animal/parrot/attack_animal(mob/living/simple_animal/M) +/mob/living/simple_animal/parrot/attack_animal(mob/living/simple_animal/attacker) . = ..() //goodbye immortal parrots if(client) @@ -315,8 +326,8 @@ if(parrot_state == PARROT_PERCH) parrot_sleep_dur = parrot_sleep_max //Reset it's sleep timer if it was perched - if(M.melee_damage_upper > 0 && !stat) - parrot_interest = M + if(attacker.melee_damage_upper > 0 && !stat) + set_interest(attacker) parrot_state = PARROT_SWOOP | PARROT_ATTACK //Attack other animals regardless icon_state = icon_living @@ -335,7 +346,7 @@ parrot_state |= PARROT_FLEE icon_state = icon_living drop_held_item(0) - else if(istype(O, /obj/item/reagent_containers/food/snacks/cracker)) //Poly wants a cracker. + else if(istype(O, /obj/item/reagent_containers/food/snacks/cracker)) //Polly wants a cracker. qdel(O) if(health < maxHealth) adjustBruteLoss(-10) @@ -352,7 +363,7 @@ if(parrot_state == PARROT_PERCH) parrot_sleep_dur = parrot_sleep_max //Reset it's sleep timer if it was perched - parrot_interest = null + set_interest(null) parrot_state = PARROT_WANDER | PARROT_FLEE //Been shot and survived! RUN LIKE HELL! //parrot_been_shot += 5 icon_state = icon_living @@ -444,7 +455,7 @@ speak = newspeak //Search for item to steal - parrot_interest = search_for_item() + set_interest(search_for_item()) if(parrot_interest) manual_emote("looks in [parrot_interest]'s direction and takes flight.") parrot_state = PARROT_SWOOP | PARROT_STEAL @@ -455,7 +466,7 @@ else if(parrot_state == PARROT_WANDER) //Stop movement, we'll set it later walk(src, 0) - parrot_interest = null + set_interest(null) //Wander around aimlessly. This will help keep the loops from searches down //and possibly move the mob into a new are in view of something they can use @@ -464,15 +475,15 @@ return if(!held_item && !parrot_perch) //If we've got nothing to do.. look for something to do. - var/atom/movable/AM = search_for_perch_and_item() //This handles checking through lists so we know it's either a perch or stealable item - if(AM) - if(istype(AM, /obj/item) || isliving(AM)) //If stealable item - parrot_interest = AM + var/atom/movable/potential_perch = search_for_perch_and_item() //This handles checking through lists so we know it's either a perch or stealable item + if(potential_perch) + if(istype(potential_perch, /obj/item) || isliving(potential_perch)) //If stealable item + set_interest(potential_perch) manual_emote("turns and flies towards [parrot_interest].") parrot_state = PARROT_SWOOP | PARROT_STEAL return else //Else it's a perch - parrot_perch = AM + set_perch(potential_perch) parrot_state = PARROT_SWOOP | PARROT_RETURN return return @@ -512,7 +523,7 @@ parrot_interest.forceMove(src) visible_message("[src] grabs [held_item]!", "You grab [held_item]!", "You hear the sounds of wings flapping furiously.") - parrot_interest = null + set_interest(null) parrot_state = PARROT_SWOOP | PARROT_RETURN return @@ -526,7 +537,7 @@ else if(parrot_state == (PARROT_SWOOP | PARROT_RETURN)) walk(src, 0) if(!parrot_perch || !isturf(parrot_perch.loc)) //Make sure the perch exists and somehow isnt inside of something else. - parrot_perch = null + set_perch(null) parrot_state = PARROT_WANDER return @@ -560,7 +571,7 @@ //If we're attacking a nothing, an object, a turf or a ghost for some stupid reason, switch to wander if(!parrot_interest || !isliving(parrot_interest)) - parrot_interest = null + set_interest(null) parrot_state = PARROT_WANDER return @@ -574,7 +585,7 @@ //If the mob we've been chasing/attacking dies or falls into crit, check for loot! if(L.stat) - parrot_interest = null + set_interest(null) if(!held_item) held_item = steal_from_ground() if(!held_item) @@ -598,8 +609,8 @@ //-----STATE MISHAP else //This should not happen. If it does lets reset everything and try again walk(src,0) - parrot_interest = null - parrot_perch = null + set_interest(null) + set_perch(null) drop_held_item() parrot_state = PARROT_WANDER return @@ -872,13 +883,29 @@ to_chat(src, "You will now [a_intent] others.") return +/mob/living/simple_animal/parrot/proc/set_interest(atom/movable/new_interest) + if(parrot_interest) + UnregisterSignal(parrot_interest, COMSIG_PARENT_QDELETING) + parrot_interest = null + if(new_interest) + parrot_interest = new_interest + RegisterSignal(parrot_interest, COMSIG_PARENT_QDELETING, PROC_REF(set_interest)) + +/mob/living/simple_animal/parrot/proc/set_perch(obj/new_perch) + if(parrot_perch) + UnregisterSignal(parrot_perch, COMSIG_PARENT_QDELETING) + parrot_perch = null + if(new_perch) + parrot_perch = new_perch + RegisterSignal(parrot_perch, COMSIG_PARENT_QDELETING, PROC_REF(set_perch)) + /* * Sub-types */ -/mob/living/simple_animal/parrot/Poly - name = "Poly" - desc = "Poly the Parrot. An expert on quantum cracker theory." - speak = list("Poly wanna cracker!", ":e Check the crystal, you chucklefucks!",":e Wire the solars, you lazy bums!",":e WHO TOOK THE DAMN HARDSUITS?",":e OH GOD ITS ABOUT TO DELAMINATE CALL THE SHUTTLE") +/mob/living/simple_animal/parrot/Polly + name = "Polly" + desc = "Polly the Parrot. An expert on quantum cracker theory." + speak = list("Polly wanna cracker!", ":e Check the crystal, you chucklefucks!",":e Wire the solars, you lazy bums!",":e WHO TOOK THE DAMN HARDSUITS?",":e OH GOD ITS ABOUT TO DELAMINATE CALL THE SHUTTLE") gold_core_spawnable = NO_SPAWN speak_chance = 3 var/memory_saved = FALSE @@ -886,7 +913,7 @@ var/longest_survival = 0 var/longest_deathstreak = 0 -/mob/living/simple_animal/parrot/Poly/Initialize() +/mob/living/simple_animal/parrot/Polly/Initialize() ears = new /obj/item/radio/headset/headset_eng(src) available_channels = list(":e") Read_Memory() @@ -907,33 +934,33 @@ . = ..() -/mob/living/simple_animal/parrot/Poly/Life() +/mob/living/simple_animal/parrot/Polly/Life() if(!stat && SSticker.current_state == GAME_STATE_FINISHED && !memory_saved) Write_Memory(FALSE) memory_saved = TRUE ..() -/mob/living/simple_animal/parrot/Poly/death(gibbed) +/mob/living/simple_animal/parrot/Polly/death(gibbed) if(!memory_saved) Write_Memory(TRUE) if(rounds_survived == longest_survival || rounds_survived == longest_deathstreak || prob(0.666)) - var/mob/living/simple_animal/parrot/Poly/ghost/G = new(loc) + var/mob/living/simple_animal/parrot/Polly/ghost/G = new(loc) if(mind) mind.transfer_to(G) else G.key = key ..(gibbed) -/mob/living/simple_animal/parrot/Poly/proc/Read_Memory() - if(fexists("data/npc_saves/Poly.sav")) //legacy compatability to convert old format to new - var/savefile/S = new /savefile("data/npc_saves/Poly.sav") +/mob/living/simple_animal/parrot/Polly/proc/Read_Memory() + if(fexists("data/npc_saves/Polly.sav")) //legacy compatability to convert old format to new + var/savefile/S = new /savefile("data/npc_saves/Polly.sav") S["phrases"] >> speech_buffer S["roundssurvived"] >> rounds_survived S["longestsurvival"] >> longest_survival S["longestdeathstreak"] >> longest_deathstreak - fdel("data/npc_saves/Poly.sav") + fdel("data/npc_saves/Polly.sav") else - var/json_file = file("data/npc_saves/Poly.json") + var/json_file = file("data/npc_saves/Polly.json") if(!fexists(json_file)) return var/list/json = json_decode(file2text(json_file)) @@ -944,8 +971,8 @@ if(!islist(speech_buffer)) speech_buffer = list() -/mob/living/simple_animal/parrot/Poly/proc/Write_Memory(dead) - var/json_file = file("data/npc_saves/Poly.json") +/mob/living/simple_animal/parrot/Polly/proc/Write_Memory(dead) + var/json_file = file("data/npc_saves/Polly.json") var/list/file_data = list() if(islist(speech_buffer)) file_data["phrases"] = speech_buffer @@ -966,8 +993,8 @@ fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) -/mob/living/simple_animal/parrot/Poly/ghost - name = "The Ghost of Poly" +/mob/living/simple_animal/parrot/Polly/ghost + name = "The Ghost of Polly" desc = "Doomed to squawk the Earth." color = "#FFFFFF77" speak_chance = 20 @@ -975,16 +1002,16 @@ incorporeal_move = INCORPOREAL_MOVE_BASIC butcher_results = list(/obj/item/ectoplasm = 1) -/mob/living/simple_animal/parrot/Poly/ghost/Initialize() +/mob/living/simple_animal/parrot/Polly/ghost/Initialize() memory_saved = TRUE //At this point nothing is saved . = ..() -/mob/living/simple_animal/parrot/Poly/ghost/handle_automated_speech() +/mob/living/simple_animal/parrot/Polly/ghost/handle_automated_speech() if(ismob(loc)) return ..() -/mob/living/simple_animal/parrot/Poly/ghost/handle_automated_movement() +/mob/living/simple_animal/parrot/Polly/ghost/handle_automated_movement() if(isliving(parrot_interest)) if(!ishuman(parrot_interest)) parrot_interest = null @@ -993,7 +1020,7 @@ Possess(parrot_interest) ..() -/mob/living/simple_animal/parrot/Poly/ghost/proc/Possess(mob/living/carbon/human/H) +/mob/living/simple_animal/parrot/Polly/ghost/proc/Possess(mob/living/carbon/human/H) if(!ishuman(H)) return var/datum/disease/parrot_possession/P = new diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 00e64d63c6ed..c21a2a6f365d 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -168,6 +168,9 @@ nest.spawned_mobs -= src nest = null + if(access_card) + QDEL_NULL(access_card) + return ..() /mob/living/simple_animal/attackby(obj/item/O, mob/user, params) @@ -623,7 +626,14 @@ if(AIStatus == togglestatus) return + GLOB.simple_animals[AIStatus] -= src + GLOB.simple_animals[togglestatus] += list(src) + AIStatus = togglestatus + var/virt_z = "[virtual_z()]" + if(!virt_z) + return + switch(togglestatus) if(AI_Z_OFF) LAZYADDASSOC(SSidlenpcpool.idle_mobs_by_virtual_level, virt_z, src) @@ -631,16 +641,14 @@ else LAZYREMOVEASSOC(SSidlenpcpool.idle_mobs_by_virtual_level, virt_z, src) - GLOB.simple_animals[AIStatus] -= src - GLOB.simple_animals[togglestatus] += list(src) - AIStatus = togglestatus - /mob/living/simple_animal/proc/check_should_sleep() if (pulledby || shouldwakeup) toggle_ai(AI_ON) return var/virt_z = "[virtual_z()]" + if(!virt_z) + return var/players_on_virtual_z = LAZYACCESS(SSmobs.players_by_virtual_z, virt_z) if(!length(players_on_virtual_z)) toggle_ai(AI_Z_OFF) @@ -655,5 +663,8 @@ /mob/living/simple_animal/on_virtual_z_change(new_virtual_z, previous_virtual_z) . = ..() + if(previous_virtual_z) + LAZYREMOVEASSOC(SSidlenpcpool.idle_mobs_by_virtual_level, "[previous_virtual_z]", src) toggle_ai(initial(AIStatus)) - check_should_sleep() + if(new_virtual_z) + check_should_sleep() diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index 777144a068cf..b880704c9bf9 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -54,13 +54,13 @@ break if(Target.health <= -70 || Target.stat == DEAD) - Target = null + set_target(null) AIproc = 0 break if(Target) if(locate(/mob/living/simple_animal/slime) in Target.buckled_mobs) - Target = null + set_target(null) AIproc = 0 break if(!AIproc) @@ -98,7 +98,7 @@ // Bug of the month candidate: slimes were attempting to move to target only if it was directly next to them, which caused them to target things, but not approach them step_to(src, Target) else - Target = null + set_target(null) AIproc = 0 break @@ -174,12 +174,10 @@ if(M.stat == DEAD) // our victim died if(!client) if(!rabid && !attacked) - if(M.LAssailant && M.LAssailant != M) + var/mob/last_to_hurt = M.LAssailant?.resolve() + if(last_to_hurt && last_to_hurt != M) if(prob(50)) - if(!(M.LAssailant in Friends)) - Friends[M.LAssailant] = 1 - else - ++Friends[M.LAssailant] + add_friendship(last_to_hurt, 1) else to_chat(src, "This subject does not have a strong enough life energy anymore...") @@ -290,7 +288,7 @@ --target_patience if (target_patience <= 0 || SStun > world.time || Discipline || attacked || docile) // Tired of chasing or something draws out attention target_patience = 0 - Target = null + set_target(null) if(AIproc && SStun > world.time) return @@ -305,7 +303,7 @@ if(hungry == 2 && !client) // if a slime is starving, it starts losing its friends if(Friends.len > 0 && prob(1)) var/mob/nofriend = pick(Friends) - --Friends[nofriend] + add_friendship(nofriend, -1) if(!Target) if(will_hunt() && hungry || attacked || rabid) // Only add to the list if we need to @@ -339,16 +337,16 @@ if(targets.len > 0) if(attacked || rabid || hungry == 2) - Target = targets[1] // I am attacked and am fighting back or so hungry I don't even care + set_target(targets[1]) // I am attacked and am fighting back or so hungry I don't even care else for(var/mob/living/carbon/C in targets) if(!Discipline && prob(5)) if(ishuman(C) || isalienadult(C)) - Target = C + set_target(C) break if(islarva(C) || ismonkey(C)) - Target = C + set_target(C) break if (Target) @@ -377,7 +375,7 @@ else if(!HAS_TRAIT(src, TRAIT_IMMOBILIZED) && isturf(loc) && prob(33)) step(src, pick(GLOB.cardinals)) else if(!AIproc) - INVOKE_ASYNC(src, .proc/AIprocess) + INVOKE_ASYNC(src, PROC_REF(AIprocess)) /mob/living/simple_animal/slime/handle_automated_movement() return //slime random movement is currently handled in handle_targets() @@ -422,13 +420,13 @@ if (Leader == who) // Already following him to_say = pick("Yes...", "Lead...", "Follow...") else if (Friends[who] > Friends[Leader]) // VIVA - Leader = who + set_leader(who) to_say = "Yes... I follow [who]..." else to_say = "No... I follow [Leader]..." else if (Friends[who] >= SLIME_FRIENDSHIP_FOLLOW) - Leader = who + set_leader(who) to_say = "I follow..." else // Not friendly enough to_say = pick("No...", "I no follow...") @@ -436,27 +434,27 @@ if (buckled) // We are asked to stop feeding if (Friends[who] >= SLIME_FRIENDSHIP_STOPEAT) Feedstop() - Target = null + set_target(null) if (Friends[who] < SLIME_FRIENDSHIP_STOPEAT_NOANGRY) - --Friends[who] + add_friendship(who, -1) to_say = "Grrr..." // I'm angry but I do it else to_say = "Fine..." else if (Target) // We are asked to stop chasing if (Friends[who] >= SLIME_FRIENDSHIP_STOPCHASE) - Target = null + set_target(null) if (Friends[who] < SLIME_FRIENDSHIP_STOPCHASE_NOANGRY) - --Friends[who] + add_friendship(who, -1) to_say = "Grrr..." // I'm angry but I do it else to_say = "Fine..." else if (Leader) // We are asked to stop following if (Leader == who) to_say = "Yes... I stay..." - Leader = null + set_leader(null) else if (Friends[who] > Friends[Leader]) - Leader = null + set_leader(null) to_say = "Yes... I stop..." else to_say = "No... keep follow..." @@ -478,7 +476,7 @@ to_say = "No... won't stay..." else if (findtext(phrase, "attack")) if (rabid && prob(20)) - Target = who + set_target(who) AIprocess() //Wake up the slime's Target AI, needed otherwise this doesn't work to_say = "ATTACK!?!?" else if (Friends[who] >= SLIME_FRIENDSHIP_ATTACK) @@ -486,14 +484,14 @@ if (findtext(phrase, lowertext(L.name))) if (isslime(L)) to_say = "NO... [L] slime friend" - --Friends[who] //Don't ask a slime to attack its friend + add_friendship(who, -1) //Don't ask a slime to attack its friend else if(!Friends[L] || Friends[L] < 1) - Target = L + set_target(L) AIprocess()//Wake up the slime's Target AI, needed otherwise this doesn't work to_say = "Ok... I attack [Target]" else to_say = "No... like [L] ..." - --Friends[who] //Don't ask a slime to attack its friend + add_friendship(who, -1) //Don't ask a slime to attack its friend break else to_say = "No... no listen" diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm index 1503455c4a23..c7174470dc5c 100644 --- a/code/modules/mob/living/simple_animal/slime/powers.dm +++ b/code/modules/mob/living/simple_animal/slime/powers.dm @@ -197,7 +197,7 @@ M.powerlevel = new_powerlevel if(i != 1) step_away(M,src) - M.Friends = Friends.Copy() + M.set_friends(Friends) babies += M M.mutation_chance = clamp(mutation_chance+(rand(5,-5)),0,100) SSblackbox.record_feedback("tally", "slime_babies_born", 1, M.colour) diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index 654b7d9bd7e6..cb4b76983563 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -1,3 +1,4 @@ +#define SLIME_CARES_ABOUT(to_check) (to_check && (to_check == Target || to_check == Leader || (to_check in Friends))) /mob/living/simple_animal/slime name = "grey baby slime (123)" icon = 'icons/mob/slimes.dmi' @@ -109,10 +110,9 @@ for (var/A in actions) var/datum/action/AC = A AC.Remove(src) - Target = null - Leader = null - Friends.Cut() - speech_buffer.Cut() + set_target(null) + set_leader(null) + clear_friends() return ..() /mob/living/simple_animal/slime/proc/set_colour(new_colour) @@ -334,10 +334,7 @@ /mob/living/simple_animal/slime/attackby(obj/item/W, mob/living/user, params) if(istype(W, /obj/item/stack/sheet/mineral/plasma) && !stat) //Let's you feed slimes plasma. - if (user in Friends) - ++Friends[user] - else - Friends[user] = 1 + add_friendship(user, 1) to_chat(user, "You feed the slime the plasma. It chirps happily.") var/obj/item/stack/sheet/mineral/plasma/S = W S.use(1) @@ -405,7 +402,7 @@ adjustBruteLoss(rand(15,20)) if(!client) if(Target) // Like cats - Target = null + set_target(null) ++Discipline return @@ -450,8 +447,7 @@ if(Discipline == 1) attacked = 0 - if(Target) - Target = null + set_target(null) if(buckled) Feedstop(silent = TRUE) //we unbuckle the slime from the mob it latched onto. @@ -461,7 +457,7 @@ if(user) step_away(src,user,15) - addtimer(CALLBACK(src, .proc/slime_move, user), 0.3 SECONDS) + addtimer(CALLBACK(src, PROC_REF(slime_move), user), 0.3 SECONDS) /mob/living/simple_animal/slime/proc/slime_move(mob/user) @@ -487,3 +483,55 @@ /mob/living/simple_animal/slime/random/Initialize(mapload, new_colour, new_is_adult) . = ..(mapload, pick(slime_colours), prob(50)) + +/mob/living/simple_animal/slime/proc/set_target(new_target) + var/old_target = Target + Target = new_target + if(old_target && !SLIME_CARES_ABOUT(old_target)) + UnregisterSignal(old_target, COMSIG_PARENT_QDELETING) + if(Target) + RegisterSignal(Target, COMSIG_PARENT_QDELETING, PROC_REF(clear_memories_of), override = TRUE) + +/mob/living/simple_animal/slime/proc/set_leader(new_leader) + var/old_leader = Leader + Leader = new_leader + if(old_leader && !SLIME_CARES_ABOUT(old_leader)) + UnregisterSignal(old_leader, COMSIG_PARENT_QDELETING) + if(Leader) + RegisterSignal(Leader, COMSIG_PARENT_QDELETING, PROC_REF(clear_memories_of), override = TRUE) + +/mob/living/simple_animal/slime/proc/add_friendship(new_friend, amount = 1) + if(!Friends[new_friend]) + Friends[new_friend] = 0 + Friends[new_friend] += amount + if(new_friend) + RegisterSignal(new_friend, COMSIG_PARENT_QDELETING, PROC_REF(clear_memories_of), override = TRUE) + +/mob/living/simple_animal/slime/proc/set_friendship(new_friend, amount = 1) + Friends[new_friend] = amount + if(new_friend) + RegisterSignal(new_friend, COMSIG_PARENT_QDELETING, PROC_REF(clear_memories_of), override = TRUE) + +/mob/living/simple_animal/slime/proc/remove_friend(friend) + Friends -= friend + if(friend && !SLIME_CARES_ABOUT(friend)) + UnregisterSignal(friend, COMSIG_PARENT_QDELETING) + +/mob/living/simple_animal/slime/proc/set_friends(new_buds) + clear_friends() + for(var/mob/friend as anything in new_buds) + set_friendship(friend, new_buds[friend]) + +/mob/living/simple_animal/slime/proc/clear_friends() + for(var/mob/friend as anything in Friends) + remove_friend(friend) + +/mob/living/simple_animal/slime/proc/clear_memories_of(datum/source) + SIGNAL_HANDLER + if(source == Target) + set_target(null) + if(source == Leader) + set_leader(null) + remove_friend(source) + +#undef SLIME_CARES_ABOUT diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index cbc6599a3980..b3719d9cca52 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -106,5 +106,3 @@ return client.holder.auto_deadmin() if(mind.has_antag_datum(/datum/antagonist) && (CONFIG_GET(flag/auto_deadmin_antagonists) || client.prefs?.toggles & DEADMIN_ANTAGONIST)) return client.holder.auto_deadmin() - if(job) - return SSjob.handle_auto_deadmin_roles(client, job) diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm index 00cac3ed2b84..ae0871880818 100644 --- a/code/modules/mob/logout.dm +++ b/code/modules/mob/logout.dm @@ -4,9 +4,7 @@ SStgui.on_logout(src) unset_machine() remove_from_player_list() - if(client?.movingmob) //In the case the client was transferred to another mob and not deleted. - LAZYREMOVE(client.movingmob.client_mobs_in_contents, src) - client.movingmob = null + clear_client_in_contents() ..() if(loc) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index d5e26b6aef3f..6e60af7ed244 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -16,13 +16,11 @@ * * qdels any client colours in place on this mob * - * Unsets the currently active machine - * - * Clears roundstart quirks list + * Clears any refs to the mob inside its current location * * Ghostizes the client attached to this mob * - * Removes references to the mob from its former mind, and vice versa + * If our mind still exists, clear its current var to prevent harddels * * Parent call */ @@ -47,12 +45,10 @@ QDEL_LIST(client_colours) active_storage = null unset_machine() - ghostize() - if(mind) - mind.handle_mob_deletion(src) - if(istype(loc, /atom/movable)) - var/atom/movable/movable_loc = loc - LAZYREMOVE(movable_loc.client_mobs_in_contents, src) + clear_client_in_contents() //Gotta do this here as well as Logout, since client will be null by the time it gets there, cause of that ghostize + ghostize() //False, since we're deleting it currently + if(mind?.current == src) //Let's just be safe yeah? This will occasionally be cleared, but not always. Can't do it with ghostize without changing behavior + mind.set_current(null) return ..() @@ -453,32 +449,36 @@ * [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/A as mob|obj|turf in view()) //It used to be oview(12), but I can't really say why +/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" set category = "IC" - if(isturf(A) && !(sight & SEE_TURFS) && !(A in view(client ? client.view : world.view, src))) + DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(run_examinate), examinify)) + +/mob/proc/run_examinate(atom/examinify) + + if(isturf(examinify) && !(sight & SEE_TURFS) && !(examinify in view(client ? client.view : world.view, src))) // shift-click catcher may issue examinate() calls for out-of-sight turfs return - if(is_blind() && !blind_examine_check(A)) //blind people see things differently (through touch) + if(is_blind() && !blind_examine_check(examinify)) //blind people see things differently (through touch) return - face_atom(A) + face_atom(examinify) var/list/result if(client) LAZYINITLIST(client.recent_examines) - if(isnull(client.recent_examines[A]) || client.recent_examines[A] < world.time) - result = A.examine(src) - client.recent_examines[A] = world.time + EXAMINE_MORE_TIME // set the value to when the examine cooldown ends - RegisterSignal(A, COMSIG_PARENT_QDELETING, .proc/clear_from_recent_examines, override=TRUE) // to flush the value if deleted early - addtimer(CALLBACK(src, .proc/clear_from_recent_examines, A), EXAMINE_MORE_TIME) - handle_eye_contact(A) + if(isnull(client.recent_examines[examinify]) || client.recent_examines[examinify] < world.time) + result = examinify.examine(src) + client.recent_examines[examinify] = world.time + EXAMINE_MORE_TIME // set the value to when the examine cooldown ends + RegisterSignal(examinify, COMSIG_PARENT_QDELETING, PROC_REF(clear_from_recent_examines), override=TRUE) // to flush the value if deleted early + addtimer(CALLBACK(src, PROC_REF(clear_from_recent_examines), examinify), EXAMINE_MORE_TIME) + handle_eye_contact(examinify) else - result = A.examine_more(src) + result = examinify.examine_more(src) else - result = A.examine(src) // if a tree is examined but no client is there to see it, did the tree ever really exist? + result = examinify.examine(src) // if a tree is examined but no client is there to see it, did the tree ever really exist? if(result.len) for(var/i in 1 to (length(result) - 1)) @@ -486,7 +486,7 @@ to_chat(src, examine_block("[result.Join()]")) - SEND_SIGNAL(src, COMSIG_MOB_EXAMINATE, A) + SEND_SIGNAL(src, COMSIG_MOB_EXAMINATE, examinify) /mob/proc/blind_examine_check(atom/examined_thing) @@ -559,11 +559,11 @@ // check to see if their face is blocked or, if not, a signal blocks it if(examined_mob.is_face_visible() && SEND_SIGNAL(src, COMSIG_MOB_EYECONTACT, examined_mob, TRUE) != COMSIG_BLOCK_EYECONTACT) var/msg = "You make eye contact with [examined_mob]." - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, src, msg), 3) // so the examine signal has time to fire and this will print after + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(to_chat), src, msg), 3) // so the examine signal has time to fire and this will print after if(is_face_visible() && SEND_SIGNAL(examined_mob, COMSIG_MOB_EYECONTACT, src, FALSE) != COMSIG_BLOCK_EYECONTACT) var/msg = "[src] makes eye contact with you." - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, examined_mob, msg), 3) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(to_chat), examined_mob, msg), 3) ///Can this mob resist (default FALSE) @@ -608,6 +608,10 @@ set category = "Object" set src = usr + DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(execute_mode))) + +///proc version to finish /mob/verb/mode() execution. used in case the proc needs to be queued for the tick after its first called +/mob/proc/execute_mode() if(ismecha(loc)) return @@ -619,6 +623,22 @@ I.attack_self(src) update_inv_hands() +/mob/verb/do_unique_action() + set name = "Do Unique Action" + set category = "Object" + set src = usr + + if(ismecha(loc)) + return + + if(incapacitated()) + return + + var/obj/item/I = get_active_held_item() + if(I) + I.unique_action(src) + update_inv_hands() + /** * Get the notes of this mob * @@ -1075,6 +1095,14 @@ return LAZYLEN(match_list) return FALSE +/mob/proc/update_joined_player_list(newname, oldname) + if(newname == oldname) + return + if(oldname) + GLOB.joined_player_list -= oldname + if(newname) + GLOB.joined_player_list[newname] = TRUE + /** * Fully update the name of a mob @@ -1090,6 +1118,9 @@ log_played_names(ckey,newname) + if(GLOB.joined_player_list[oldname]) + update_joined_player_list(newname, oldname) + real_name = newname name = newname if(mind) @@ -1164,7 +1195,8 @@ /mob/proc/update_mouse_pointer() if(!client) return - client.mouse_pointer_icon = initial(client.mouse_pointer_icon) + if(client.mouse_pointer_icon != initial(client.mouse_pointer_icon))//only send changes to the client if theyre needed + client.mouse_pointer_icon = initial(client.mouse_pointer_icon) if(examine_cursor_icon && client.keys_held["Shift"]) //mouse shit is hardcoded, make this non hard-coded once we make mouse modifiers bindable client.mouse_pointer_icon = examine_cursor_icon if(istype(loc, /obj/vehicle/sealed)) @@ -1174,6 +1206,11 @@ if(client.mouse_override_icon) client.mouse_pointer_icon = client.mouse_override_icon +/mob/proc/update_names_joined_list(new_name, old_name) + if(old_name) + GLOB.real_names_joined -= old_name + if(new_name) + GLOB.real_names_joined[new_name] = TRUE ///This mob is abile to read books /mob/proc/is_literate() @@ -1349,3 +1386,64 @@ /// Used for typing indicator, relevant on /living level /mob/proc/set_typing_indicator(state) return + +/mob/vv_edit_var(var_name, var_value) + switch(var_name) + if(NAMEOF(src, control_object)) + var/obj/O = var_value + if(!istype(O) || (O.obj_flags & DANGEROUS_POSSESSION)) + return FALSE + if(NAMEOF(src, machine)) + set_machine(var_value) + . = TRUE + if(NAMEOF(src, focus)) + set_focus(var_value) + . = TRUE + if(NAMEOF(src, nutrition)) + set_nutrition(var_value) + . = TRUE + if(NAMEOF(src, stat)) + set_stat(var_value) + . = TRUE + if(NAMEOF(src, dizziness)) + set_dizziness(var_value) + . = TRUE + if(NAMEOF(src, eye_blind)) + set_blindness(var_value) + . = TRUE + if(NAMEOF(src, eye_blurry)) + set_blurriness(var_value) + . = TRUE + + if(!isnull(.)) + datum_flags |= DF_VAR_EDITED + return + + var/slowdown_edit = (var_name == NAMEOF(src, cached_multiplicative_slowdown)) + var/diff + if(slowdown_edit && isnum(cached_multiplicative_slowdown) && isnum(var_value)) + remove_movespeed_modifier(/datum/movespeed_modifier/admin_varedit) + diff = var_value - cached_multiplicative_slowdown + + . = ..() + + if(. && slowdown_edit && isnum(diff)) + add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/admin_varedit, multiplicative_slowdown = diff) + +/mob/proc/set_active_storage(new_active_storage) + if(active_storage) + UnregisterSignal(active_storage, COMSIG_PARENT_QDELETING) + active_storage = new_active_storage + if(active_storage) + RegisterSignal(active_storage, COMSIG_PARENT_QDELETING, PROC_REF(active_storage_deleted)) + +/mob/proc/active_storage_deleted(datum/source) + SIGNAL_HANDLER + set_active_storage(null) + +///Clears the client in contents list of our current "eye". Prevents hard deletes +/mob/proc/clear_client_in_contents() + if(client?.movingmob) //In the case the client was transferred to another mob and not deleted. + client.movingmob.client_mobs_in_contents -= src + UNSETEMPTY(client.movingmob.client_mobs_in_contents) + client.movingmob = null diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 4e8a0a057c6e..6873ee602dac 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -151,8 +151,8 @@ /// Can this mob enter shuttles var/move_on_shuttle = 1 - ///The last mob/living/carbon to push/drag/grab this mob (exclusively used by slimes friend recognition) - var/mob/living/carbon/LAssailant = null + ///A weakref to the last mob/living/carbon to push/drag/grab this mob (exclusively used by slimes friend recognition) + var/datum/weakref/LAssailant = null /** * construct spells and mime spells. diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 58334a8833dc..de1cb857ed4e 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -221,23 +221,37 @@ return sanitize(.) ///Shake the camera of the person viewing the mob SO REAL! -/proc/shake_camera(mob/M, duration, strength=1) - if(!M || !M.client || duration < 1) +/proc/shake_camera(mob/recoilster, duration, strength=1) + if(!recoilster || !recoilster.client || duration < 1) return - var/client/C = M.client - var/oldx = C.pixel_x - var/oldy = C.pixel_y + var/client/client_to_shake = recoilster.client + var/oldx = client_to_shake.pixel_x + var/oldy = client_to_shake.pixel_y var/max = strength*world.icon_size var/min = -(strength*world.icon_size) for(var/i in 0 to duration-1) if (i == 0) - animate(C, pixel_x=rand(min,max), pixel_y=rand(min,max), time=1) + animate(client_to_shake, pixel_x=rand(min,max), pixel_y=rand(min,max), time=1) else animate(pixel_x=rand(min,max), pixel_y=rand(min,max), time=1) animate(pixel_x=oldx, pixel_y=oldy, time=1) +/proc/recoil_camera(mob/recoilster, duration, backtime_duration, strength, angle) + if(!recoilster || !recoilster.client) + return + strength *= world.icon_size + var/client/client_to_shake = recoilster.client + var/oldx = client_to_shake.pixel_x + var/oldy = client_to_shake.pixel_y + + //get pixels to move the camera in an angle + var/mpx = sin(angle) * strength + var/mpy = cos(angle) * strength + animate(client_to_shake, pixel_x = oldx+mpx, pixel_y = oldy+mpy, time = duration, flags = ANIMATION_RELATIVE) + animate(pixel_x = oldx, pixel_y = oldy, time = backtime_duration, easing = BACK_EASING) + ///Find if the message has the real name of any user mob in the mob_list /proc/findname(msg) if(!istext(msg)) @@ -330,9 +344,6 @@ return FALSE if(M.mind && M.mind.special_role)//If they have a mind and special role, they are some type of traitor or antagonist. switch(SSticker.mode.config_tag) - if("revolution") - if(is_revolutionary(M)) - return 2 if("cult") if(M.mind in SSticker.mode.cult) return 2 @@ -348,11 +359,7 @@ if("apprentice") if(M.mind in SSticker.mode.apprentices) return 2 - if("monkey") - if(isliving(M)) - var/mob/living/L = M - if(L.diseases && (locate(/datum/disease/transformation/jungle_fever) in L.diseases)) - return 2 + return TRUE if(M.mind && LAZYLEN(M.mind.antag_datums)) //they have an antag datum! return TRUE @@ -403,7 +410,7 @@ A.name = header A.desc = message A.action = action - A.target = source + A.target_ref = WEAKREF(source) if(!alert_overlay) alert_overlay = new(source) alert_overlay.layer = FLOAT_LAYER diff --git a/code/modules/mob/mob_lists.dm b/code/modules/mob/mob_lists.dm index bd47d511e1d4..5484c41680d2 100644 --- a/code/modules/mob/mob_lists.dm +++ b/code/modules/mob/mob_lists.dm @@ -22,7 +22,6 @@ if(client) remove_from_current_living_players() - ///Adds the mob reference to the list of all the dead mobs. If mob is cliented, it adds it to the list of all dead player-mobs. /mob/proc/add_to_dead_mob_list() if(QDELETED(src)) @@ -42,6 +41,10 @@ /mob/proc/add_to_player_list() SHOULD_CALL_PARENT(TRUE) GLOB.player_list |= src + if(client.holder) + GLOB.keyloop_list |= src + else if(stat != DEAD || !SSlag_switch?.measures[DISABLE_DEAD_KEYLOOP]) + GLOB.keyloop_list |= src if(!SSticker?.mode) return if(stat == DEAD) @@ -53,6 +56,7 @@ /mob/proc/remove_from_player_list() SHOULD_CALL_PARENT(TRUE) GLOB.player_list -= src + GLOB.keyloop_list -= src if(!SSticker?.mode) return if(stat == DEAD) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 498538185578..0b68a919b17c 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -305,7 +305,7 @@ var/mob/M = AM if(M.buckled) continue - if(!AM.CanPass(src) || AM.density) + if(AM.density || !AM.CanPass(src, get_dir(AM, src))) if(AM.anchored) return AM if(pulling == AM) diff --git a/code/modules/mob/mob_say.dm b/code/modules/mob/mob_say.dm index 178ff23d991e..495f77dc0384 100644 --- a/code/modules/mob/mob_say.dm +++ b/code/modules/mob/mob_say.dm @@ -13,7 +13,7 @@ //queue this message because verbs are scheduled to process after SendMaps in the tick and speech is pretty expensive when it happens. //by queuing this for next tick the mc can compensate for its cost instead of having speech delay the start of the next tick if(message) - SSspeech_controller.queue_say_for_mob(src, message, SPEECH_CONTROLLER_QUEUE_SAY_VERB) + QUEUE_OR_CALL_VERB_FOR(VERB_CALLBACK(src, /atom/movable/proc/say, message), SSspeech_controller) ///Whisper verb /mob/verb/whisper_verb(message as text) @@ -24,7 +24,7 @@ to_chat(usr, "Speech is currently admin-disabled.") return if(message) - SSspeech_controller.queue_say_for_mob(src, message, SPEECH_CONTROLLER_QUEUE_WHISPER_VERB) + QUEUE_OR_CALL_VERB_FOR(VERB_CALLBACK(src, /mob/proc/whisper, message), SSspeech_controller) ///whisper a message /mob/proc/whisper(message, datum/language/language=null) @@ -43,7 +43,7 @@ message = trim(copytext_char(sanitize(message), 1, MAX_MESSAGE_LEN)) - SSspeech_controller.queue_say_for_mob(src, message, SPEECH_CONTROLLER_QUEUE_EMOTE_VERB) + QUEUE_OR_CALL_VERB_FOR(VERB_CALLBACK(src, /mob/proc/emote, "me", 1, message, TRUE), SSspeech_controller) ///Speak as a dead person (ghost etc) /mob/proc/say_dead(message) @@ -69,6 +69,12 @@ to_chat(src, "You cannot talk in deadchat (muted).") return + if(SSlag_switch.measures[SLOWMODE_SAY] && !HAS_TRAIT(src, TRAIT_BYPASS_MEASURES) && src == usr) + if(!COOLDOWN_FINISHED(client, say_slowmode)) + to_chat(src, span_warning("Message not sent due to slowmode. Please wait [SSlag_switch.slowmode_cooldown/10] seconds between messages.\n\"[message]\"")) + return + COOLDOWN_START(client, say_slowmode, SSlag_switch.slowmode_cooldown) + if(src.client.handle_spam_prevention(message,MUTE_DEADCHAT)) return diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 83bb19a33882..d2e6a4f0dda2 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -10,28 +10,22 @@ set src in usr if(usr != src) - usr << "No." + to_chat(usr, span_warning("You can't set someone else's flavour text!")) var/msg = sanitize(input(usr,"Set the flavor text in your 'examine' verb. Can also be used for OOC notes about your character.","Flavor Text",html_decode(flavor_text)) as message|null) - if(msg) //WS edit - "Cancel" does not clear flavor text + if(msg) msg = copytext(msg, 1, MAX_MESSAGE_LEN) msg = html_encode(msg) flavor_text = msg -/mob/proc/warn_flavor_changed() - if(flavor_text && flavor_text != "") // don't spam people that don't use it! - src << "

OOC Warning:

" - src << "Your flavor text is likely out of date! Change" - /mob/proc/print_flavor_text() if(flavor_text && flavor_text != "") var/msg = replacetext(flavor_text, "\n", " ") if(length(msg) <= 100) return "[msg]" else - return "[copytext(msg, 1, 97)]... More..." - + return "[copytext(msg, 1, 97)]... More..." /mob/proc/get_top_level_mob() if(istype(src.loc,/mob)&&src.loc!=src) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index ab15d70a29ba..59b64f63d139 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -19,7 +19,7 @@ new /obj/effect/temp_visual/monkeyify(loc) - transformation_timer = addtimer(CALLBACK(src, .proc/finish_monkeyize, tr_flags), TRANSFORMATION_DURATION, TIMER_UNIQUE) + transformation_timer = addtimer(CALLBACK(src, PROC_REF(finish_monkeyize), tr_flags), TRANSFORMATION_DURATION, TIMER_UNIQUE) /mob/living/carbon/proc/finish_monkeyize(tr_flags) transformation_timer = null @@ -92,7 +92,7 @@ if(tr_flags & TR_KEEPORGANS) for(var/X in O.internal_organs) var/obj/item/organ/I = X - I.Remove(O, 1) + I.Remove(O, TRUE) if(mind) mind.transfer_to(O) @@ -105,11 +105,11 @@ for(var/X in internal_organs) var/obj/item/organ/I = X int_organs += I - I.Remove(src, 1) + I.Remove(src, TRUE) for(var/X in int_organs) var/obj/item/organ/I = X - I.Insert(O, 1) + I.Insert(O, TRUE) var/obj/item/bodypart/chest/torso = O.get_bodypart(BODY_ZONE_CHEST) if(cavity_object) @@ -189,7 +189,7 @@ invisibility = INVISIBILITY_MAXIMUM new /obj/effect/temp_visual/monkeyify/humanify(loc) - transformation_timer = addtimer(CALLBACK(src, .proc/finish_humanize, tr_flags), TRANSFORMATION_DURATION, TIMER_UNIQUE) + transformation_timer = addtimer(CALLBACK(src, PROC_REF(finish_humanize), tr_flags), TRANSFORMATION_DURATION, TIMER_UNIQUE) /mob/living/carbon/proc/finish_humanize(tr_flags) transformation_timer = null diff --git a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm index 27eb3a6ae970..92369d9917ff 100644 --- a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm +++ b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm @@ -22,6 +22,8 @@ /datum/ntnet_conversation/Destroy() if(SSnetworks.station_network) SSnetworks.station_network.chat_channels.Remove(src) + for(var/datum/computer_file/program/chatclient/chatterbox in clients) + purge_client(chatterbox) return ..() /datum/ntnet_conversation/proc/add_message(message, username) @@ -38,23 +40,30 @@ return messages = messages.Copy(messages.len-50 ,0) -/datum/ntnet_conversation/proc/add_client(datum/computer_file/program/chatclient/C) - if(!istype(C)) +/datum/ntnet_conversation/proc/add_client(datum/computer_file/program/chatclient/new_user) + if(!istype(new_user)) return - clients.Add(C) - add_status_message("[C.username] has joined the channel.") + new_user.conversations |= src + clients.Add(new_user) + add_status_message("[new_user.username] has joined the channel.") // No operator, so we assume the channel was empty. Assign this user as operator. if(!operator) - changeop(C) + changeop(new_user) -/datum/ntnet_conversation/proc/remove_client(datum/computer_file/program/chatclient/C) - if(!istype(C) || !(C in clients)) +//Clear all of our references to a client, used for client deletion +/datum/ntnet_conversation/proc/purge_client(datum/computer_file/program/chatclient/forget) + remove_client(forget) + forget.conversations -= src + +/datum/ntnet_conversation/proc/remove_client(datum/computer_file/program/chatclient/leaving) + if(!istype(leaving)) return - clients.Remove(C) - add_status_message("[C.username] has left the channel.") + if(leaving in clients) + clients.Remove(leaving) + add_status_message("[leaving.username] has left the channel.") // Channel operator left, pick new operator - if(C == operator) + if(leaving == operator) operator = null if(clients.len) var/datum/computer_file/program/chatclient/newop = pick(clients) diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm index 3c741e987ea5..92afe88776b0 100644 --- a/code/modules/modular_computers/computers/machinery/console_presets.dm +++ b/code/modules/modular_computers/computers/machinery/console_presets.dm @@ -25,8 +25,6 @@ /obj/machinery/modular_computer/console/preset/proc/install_programs() return - - // ===== ENGINEERING CONSOLE ===== /obj/machinery/modular_computer/console/preset/engineering console_department = "Engineering" @@ -80,7 +78,6 @@ var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD] hard_drive.store_file(new/datum/computer_file/program/chatclient()) hard_drive.store_file(new/datum/computer_file/program/card_mod()) - hard_drive.store_file(new/datum/computer_file/program/job_management()) // ===== CIVILIAN CONSOLE ===== /obj/machinery/modular_computer/console/preset/civilian diff --git a/code/modules/modular_computers/file_system/programs/alarm.dm b/code/modules/modular_computers/file_system/programs/alarm.dm index 34fd2d25a034..bc65f94ad440 100644 --- a/code/modules/modular_computers/file_system/programs/alarm.dm +++ b/code/modules/modular_computers/file_system/programs/alarm.dm @@ -43,7 +43,7 @@ var/list/alarm = our_sort[areaname] var/list/sources = alarm[3] if (!(source in sources)) - sources += source + sources += WEAKREF(source) return TRUE var/obj/machinery/camera/cam = null @@ -54,7 +54,7 @@ cam = our_cams[1] else if(cameras && istype(cameras, /obj/machinery/camera)) cam = cameras - our_sort[home.name] = list(home, (cam ? cam : cameras), list(source)) + our_sort[home.name] = list(home, (cam ? cam : cameras), list(WEAKREF(source))) update_alarm_display() return TRUE @@ -76,7 +76,7 @@ /datum/computer_file/program/alarm_monitor/proc/cancelAlarm(class, area/A, obj/origin) var/list/L = alarms[class] - var/cleared = 0 + var/cleared = FALSE var/arealevelalarm = FALSE // set to TRUE for alarms that set/clear whole areas if (class=="Fire") arealevelalarm = TRUE @@ -85,14 +85,18 @@ if (!arealevelalarm) // the traditional behaviour var/list/alarm = L[I] var/list/srcs = alarm[3] - if (origin in srcs) - srcs -= origin - if (srcs.len == 0) - cleared = 1 + if (WEAKREF(origin) in srcs) + srcs -= WEAKREF(origin) + for(var/datum/weakref/ref as anything in srcs) + if(ref.resolve()) + continue + srcs -= ref + if (!length(srcs)) + cleared = TRUE L -= I else L -= I // wipe the instances entirely - cleared = 1 + cleared = TRUE update_alarm_display() diff --git a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm index 939cafb13f0c..8fdad6474636 100644 --- a/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm +++ b/code/modules/modular_computers/file_system/programs/antagonist/revelation.dm @@ -21,7 +21,7 @@ if(istype(computer, /obj/item/modular_computer/tablet/integrated)) //If this is a borg's integrated tablet var/obj/item/modular_computer/tablet/integrated/modularInterface = computer to_chat(modularInterface.borgo,"SYSTEM PURGE DETECTED/") - addtimer(CALLBACK(modularInterface.borgo, /mob/living/silicon/robot/.proc/death), 2 SECONDS, TIMER_UNIQUE) + addtimer(CALLBACK(modularInterface.borgo, TYPE_PROC_REF(/mob/living/silicon/robot, death)), 2 SECONDS, TIMER_UNIQUE) return computer.visible_message("\The [computer]'s screen brightly flashes and loud electrical buzzing is heard.") diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm index b34c7e7dfb30..ff776b417a17 100644 --- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm @@ -14,12 +14,20 @@ var/username var/active_channel var/list/channel_history = list() - var/operator_mode = FALSE // Channel operator mode - var/netadmin_mode = FALSE // Administrator mode (invisible to other users + bypasses passwords) + var/operator_mode = FALSE // Channel operator mode + var/netadmin_mode = FALSE // Administrator mode (invisible to other users + bypasses passwords) + //A list of all the converstations we're a part of + var/list/datum/ntnet_conversation/conversations = list() /datum/computer_file/program/chatclient/New() username = "DefaultUser[rand(100, 999)]" +/datum/computer_file/program/chatclient/Destroy() + for(var/datum/ntnet_conversation/discussion as anything in conversations) + discussion.purge_client(src) + conversations.Cut() + return ..() + /datum/computer_file/program/chatclient/ui_act(action, params) . = ..() if(.) diff --git a/code/modules/modular_computers/file_system/programs/sm_monitor.dm b/code/modules/modular_computers/file_system/programs/sm_monitor.dm index 7e2954611bfc..1506d7512fe0 100644 --- a/code/modules/modular_computers/file_system/programs/sm_monitor.dm +++ b/code/modules/modular_computers/file_system/programs/sm_monitor.dm @@ -36,11 +36,15 @@ refresh() /datum/computer_file/program/supermatter_monitor/kill_program(forced = FALSE) + for(var/supermatter in supermatters) + clear_supermatter(supermatter) supermatters = null ..() // Refreshes list of active supermatter crystals /datum/computer_file/program/supermatter_monitor/proc/refresh() + for(var/supermatter in supermatters) + clear_supermatter(supermatter) supermatters = list() var/turf/T = get_turf(ui_host()) if(!T) @@ -50,9 +54,7 @@ if (!isturf(S.loc) || !S.virtual_z() == T.virtual_z()) continue supermatters.Add(S) - - if(!(active in supermatters)) - active = null + RegisterSignal(S, COMSIG_PARENT_QDELETING, PROC_REF(react_to_del)) /datum/computer_file/program/supermatter_monitor/proc/get_status() . = SUPERMATTER_INACTIVE @@ -68,8 +70,8 @@ */ /datum/computer_file/program/supermatter_monitor/proc/set_signals() if(active) - RegisterSignal(active, COMSIG_SUPERMATTER_DELAM_ALARM, .proc/send_alert, override = TRUE) - RegisterSignal(active, COMSIG_SUPERMATTER_DELAM_START_ALARM, .proc/send_start_alert, override = TRUE) + RegisterSignal(active, COMSIG_SUPERMATTER_DELAM_ALARM, PROC_REF(send_alert), override = TRUE) + RegisterSignal(active, COMSIG_SUPERMATTER_DELAM_START_ALARM, PROC_REF(send_start_alert), override = TRUE) /** * Removes the signal listener for Supermatter delaminations from the selected supermatter. @@ -185,3 +187,13 @@ active = S set_signals() return TRUE + +/datum/computer_file/program/supermatter_monitor/proc/react_to_del(datum/source) + SIGNAL_HANDLER + clear_supermatter(source) + +/datum/computer_file/program/supermatter_monitor/proc/clear_supermatter(matter) + supermatters -= matter + if(matter == active) + active = null + UnregisterSignal(matter, COMSIG_PARENT_QDELETING) diff --git a/code/modules/modular_computers/hardware/hard_drive.dm b/code/modules/modular_computers/hardware/hard_drive.dm index 2e735158b6fe..bad68010557c 100644 --- a/code/modules/modular_computers/hardware/hard_drive.dm +++ b/code/modules/modular_computers/hardware/hard_drive.dm @@ -117,7 +117,7 @@ return null /obj/item/computer_hardware/hard_drive/Destroy() - stored_files = null + QDEL_LIST(stored_files) return ..() /obj/item/computer_hardware/hard_drive/Initialize() diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm index f9ac4410f65d..7d518c0b2f6d 100644 --- a/code/modules/modular_computers/laptop_vendor.dm +++ b/code/modules/modular_computers/laptop_vendor.dm @@ -304,6 +304,6 @@ credits -= total_price say("Enjoy your new product!") state = 3 - addtimer(CALLBACK(src, .proc/reset_order), 100) + addtimer(CALLBACK(src, PROC_REF(reset_order)), 100) return TRUE return FALSE diff --git a/code/modules/movespeed/modifiers/items.dm b/code/modules/movespeed/modifiers/items.dm index 32f5756e0843..b10e25c84e7a 100644 --- a/code/modules/movespeed/modifiers/items.dm +++ b/code/modules/movespeed/modifiers/items.dm @@ -11,5 +11,9 @@ /datum/movespeed_modifier/die_of_fate multiplicative_slowdown = 1 +/datum/movespeed_modifier/gun + multiplicative_slowdown = 1 + variable = TRUE + /datum/movespeed_modifier/berserk multiplicative_slowdown = -0.2 diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm index f6a8b7333f9c..c00d32d25809 100644 --- a/code/modules/ninja/energy_katana.dm +++ b/code/modules/ninja/energy_katana.dm @@ -49,7 +49,7 @@ /obj/item/energy_katana/dropped(mob/user) . = ..() - jaunt.Remove(user) + jaunt?.Remove(user) user.update_icons() //If we hit the Ninja who owns this Katana, they catch it. @@ -96,6 +96,7 @@ /obj/item/energy_katana/Destroy() QDEL_NULL(spark_system) + QDEL_NULL(jaunt) return ..() /datum/action/innate/dash/ninja diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm index 673283bb5d2a..db4267f6849f 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm @@ -16,7 +16,7 @@ a_boost-- to_chat(H, "There are [a_boost] adrenaline boosts remaining.") s_coold = 3 - addtimer(CALLBACK(src, .proc/ninjaboost_after), 70) + addtimer(CALLBACK(src, PROC_REF(ninjaboost_after)), 70) /obj/item/clothing/suit/space/space_ninja/proc/ninjaboost_after() var/mob/living/carbon/human/H = affecting diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index c4ba5eede53a..cb355014d4e7 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -72,6 +72,11 @@ Contents: cell.name = "black power cell" cell.icon_state = "bscell" +/obj/item/clothing/suit/space/space_ninja/Destroy() + QDEL_NULL(spark_system) + QDEL_NULL(cell) + return ..() + // Space Suit temperature regulation and power usage /obj/item/clothing/suit/space/space_ninja/process() var/mob/living/carbon/human/user = src.loc diff --git a/code/modules/ninja/suit/suit_initialisation.dm b/code/modules/ninja/suit/suit_initialisation.dm index bb9f88646a40..cc30ddb9a882 100644 --- a/code/modules/ninja/suit/suit_initialisation.dm +++ b/code/modules/ninja/suit/suit_initialisation.dm @@ -81,7 +81,7 @@ GLOBAL_LIST_INIT(ninja_deinitialize_messages, list( playsound(U, 'sound/effects/sparks1.ogg', 10, TRUE) if (phase < NINJA_COMPLETE_PHASE) - addtimer(CALLBACK(src, .proc/ninitialize, delay, U, phase + 1), delay) + addtimer(CALLBACK(src, PROC_REF(ninitialize), delay, U, phase + 1), delay) /** * Deinitializes the ninja suit @@ -110,7 +110,7 @@ GLOBAL_LIST_INIT(ninja_deinitialize_messages, list( playsound(U, 'sound/items/deconstruct.ogg', 10, TRUE) if (phase < NINJA_COMPLETE_PHASE) - addtimer(CALLBACK(src, .proc/deinitialize, delay, U, phase + 1), delay) + addtimer(CALLBACK(src, PROC_REF(deinitialize), delay, U, phase + 1), delay) else unlock_suit() U.regenerate_icons() diff --git a/code/modules/overmap/_overmap_datum.dm b/code/modules/overmap/_overmap_datum.dm index 60756a2ce9e1..0f4dfdb34078 100644 --- a/code/modules/overmap/_overmap_datum.dm +++ b/code/modules/overmap/_overmap_datum.dm @@ -65,10 +65,13 @@ /datum/overmap/Destroy(force, ...) SSovermap.overmap_objects -= src if(docked_to) - Undock(TRUE) - SSovermap.overmap_container[x][y] -= src + docked_to.post_undocked() + docked_to.contents -= src + if(isnum(x) && isnum(y)) + SSovermap.overmap_container[x][y] -= src token.parent = null QDEL_NULL(token) + QDEL_LIST(contents) return ..() /** @@ -231,7 +234,7 @@ start_dock(dock_target, ticket) if(dock_time && !force) - dock_timer_id = addtimer(CALLBACK(src, .proc/complete_dock, dock_target, ticket), dock_time) + dock_timer_id = addtimer(CALLBACK(src, PROC_REF(complete_dock), dock_target, ticket), dock_time) else complete_dock(dock_target, ticket) @@ -309,7 +312,7 @@ docking = TRUE if(dock_time && !force) - dock_timer_id = addtimer(CALLBACK(src, .proc/complete_undock), dock_time) + dock_timer_id = addtimer(CALLBACK(src, PROC_REF(complete_undock)), dock_time) else complete_undock() @@ -328,8 +331,8 @@ docked_to.contents -= src var/datum/overmap/old_docked_to = docked_to docked_to = null - token.Move(OVERMAP_TOKEN_TURF(x, y)) - INVOKE_ASYNC(old_docked_to, .proc/post_undocked, src) + token.forceMove(OVERMAP_TOKEN_TURF(x, y)) + INVOKE_ASYNC(old_docked_to, PROC_REF(post_undocked), src) docking = FALSE SEND_SIGNAL(src, COMSIG_OVERMAP_UNDOCK, old_docked_to) diff --git a/code/modules/overmap/helm.dm b/code/modules/overmap/helm.dm index 5c672f12a189..59fdee827907 100644 --- a/code/modules/overmap/helm.dm +++ b/code/modules/overmap/helm.dm @@ -66,7 +66,7 @@ if(jump_state != JUMP_STATE_OFF && !inline) return // This exists to prefent Href exploits to call process_jump more than once by a client message_admins("[ADMIN_LOOKUPFLW(usr)] has initiated a bluespace jump in [ADMIN_VERBOSEJMP(src)]") - jump_timer = addtimer(CALLBACK(src, .proc/jump_sequence, TRUE), JUMP_CHARGEUP_TIME, TIMER_STOPPABLE) + jump_timer = addtimer(CALLBACK(src, PROC_REF(jump_sequence), TRUE), JUMP_CHARGEUP_TIME, TIMER_STOPPABLE) priority_announce("Bluespace jump calibration initialized. Calibration completion in [JUMP_CHARGEUP_TIME/600] minutes.", sender_override="[current_ship.name] Bluespace Pylon", zlevel=virtual_z()) calibrating = TRUE return TRUE @@ -81,7 +81,7 @@ current_ship = null /obj/machinery/computer/helm/proc/cancel_jump() - priority_announce("Bluespace Pylon spooling down. Jump calibration aborted.", sender_override="[current_ship.name] Bluespace Pylon", zlevel=virtual_z()) + priority_announce("Bluespace Pylon spooling down. Jump calibration aborted.", sender_override = "[current_ship.name] Bluespace Pylon", zlevel = virtual_z()) calibrating = FALSE deltimer(jump_timer) @@ -92,20 +92,20 @@ SStgui.close_uis(src) if(JUMP_STATE_CHARGING) jump_state = JUMP_STATE_IONIZING - priority_announce("Bluespace Jump Calibration completed. Ionizing Bluespace Pylon.", sender_override="[current_ship.name] Bluespace Pylon", zlevel=virtual_z()) + priority_announce("Bluespace Jump Calibration completed. Ionizing Bluespace Pylon.", sender_override = "[current_ship.name] Bluespace Pylon", zlevel = virtual_z()) if(JUMP_STATE_IONIZING) jump_state = JUMP_STATE_FIRING - priority_announce("Bluespace Ionization finalized; preparing to fire Bluespace Pylon.", sender_override="[current_ship.name] Bluespace Pylon", zlevel=virtual_z()) + priority_announce("Bluespace Ionization finalized; preparing to fire Bluespace Pylon.", sender_override = "[current_ship.name] Bluespace Pylon", zlevel = virtual_z()) if(JUMP_STATE_FIRING) jump_state = JUMP_STATE_FINALIZED - priority_announce("Bluespace Pylon launched.", sender_override="[current_ship.name] Bluespace Pylon", sound='sound/magic/lightning_chargeup.ogg', zlevel=virtual_z()) - addtimer(CALLBACK(src, .proc/do_jump), 10 SECONDS) + priority_announce("Bluespace Pylon launched.", sender_override = "[current_ship.name] Bluespace Pylon", sound = 'sound/magic/lightning_chargeup.ogg', zlevel = virtual_z()) + addtimer(CALLBACK(src, PROC_REF(do_jump)), 10 SECONDS) return - addtimer(CALLBACK(src, .proc/jump_sequence, TRUE), JUMP_CHARGE_DELAY) + jump_timer = addtimer(CALLBACK(src, PROC_REF(jump_sequence), TRUE), JUMP_CHARGE_DELAY, TIMER_STOPPABLE) /obj/machinery/computer/helm/proc/do_jump() - priority_announce("Bluespace Jump Initiated.", sender_override="[current_ship.name] Bluespace Pylon", sound='sound/magic/lightningbolt.ogg', zlevel=virtual_z()) - current_ship.shuttle_port.intoTheSunset() + priority_announce("Bluespace Jump Initiated.", sender_override = "[current_ship.name] Bluespace Pylon", sound = 'sound/magic/lightningbolt.ogg', zlevel = virtual_z()) + qdel(current_ship) /obj/machinery/computer/helm/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock) if(current_ship && current_ship != port.current_ship) @@ -183,7 +183,7 @@ //Detect any ships in this location we can dock to if(istype(object)) - for(var/obj/docking_port/stationary/docking_port in object.shuttle_port.docking_points) + for(var/obj/docking_port/stationary/docking_port as anything in object.shuttle_port.docking_points) if(current_ship.shuttle_port.check_dock(docking_port, silent = TRUE)) available_dock = TRUE break @@ -211,23 +211,27 @@ .["aiControls"] = allow_ai_control .["burnDirection"] = current_ship.burn_direction .["burnPercentage"] = current_ship.burn_percentage - for(var/obj/machinery/power/shuttle/engine/E as anything in current_ship.shuttle_port.engine_list) + for(var/datum/weakref/engine in current_ship.shuttle_port.engine_list) + var/obj/machinery/power/shuttle/engine/real_engine = engine.resolve() + if(!real_engine) + current_ship.shuttle_port.engine_list -= engine + continue var/list/engine_data - if(!E.thruster_active) + if(!real_engine.thruster_active) engine_data = list( - name = E.name, + name = real_engine.name, fuel = 0, maxFuel = 100, - enabled = E.enabled, - ref = REF(E) + enabled = real_engine.enabled, + ref = REF(engine) ) else engine_data = list( - name = E.name, - fuel = E.return_fuel(), - maxFuel = E.return_fuel_cap(), - enabled = E.enabled, - ref = REF(E) + name = real_engine.name, + fuel = real_engine.return_fuel(), + maxFuel = real_engine.return_fuel_cap(), + enabled = real_engine.enabled, + ref = REF(engine) ) .["engineInfo"] += list(engine_data) @@ -300,9 +304,13 @@ say(current_ship.Dock(to_act)) return if("toggle_engine") - var/obj/machinery/power/shuttle/engine/E = locate(params["engine"]) in current_ship.shuttle_port.engine_list - E.enabled = !E.enabled - E.update_icon_state() + var/datum/weakref/engine = locate(params["engine"]) in current_ship.shuttle_port.engine_list + var/obj/machinery/power/shuttle/engine/real_engine = engine.resolve() + if(!real_engine) + current_ship.shuttle_port.engine_list -= engine + return + real_engine.enabled = !real_engine.enabled + real_engine.update_icon_state() current_ship.refresh_engines() return if("change_burn_percentage") diff --git a/code/modules/overmap/missions.dm b/code/modules/overmap/missions.dm index 98146f3ac4ad..135f6b53ce45 100644 --- a/code/modules/overmap/missions.dm +++ b/code/modules/overmap/missions.dm @@ -35,7 +35,7 @@ value = round(rand(value-val_mod, value+val_mod) * (dur_value_scaling ? old_dur / duration : 1), 50) source_outpost = _outpost - RegisterSignal(source_outpost, COMSIG_PARENT_QDELETING, .proc/on_vital_delete) + RegisterSignal(source_outpost, COMSIG_PARENT_QDELETING, PROC_REF(on_vital_delete)) return ..() /datum/mission/proc/accept(datum/overmap/ship/controlled/acceptor, turf/accept_loc) @@ -43,16 +43,18 @@ servant = acceptor LAZYREMOVE(source_outpost.missions, src) LAZYADD(servant.missions, src) - RegisterSignal(servant, COMSIG_PARENT_QDELETING, .proc/on_vital_delete) + RegisterSignal(servant, COMSIG_PARENT_QDELETING, PROC_REF(on_vital_delete)) dur_timer = addtimer(VARSET_CALLBACK(src, failed, TRUE), duration, TIMER_STOPPABLE) /datum/mission/proc/on_vital_delete() qdel(src) /datum/mission/Destroy() + UnregisterSignal(source_outpost, COMSIG_PARENT_QDELETING) LAZYREMOVE(source_outpost.missions, src) source_outpost = null if(servant) + UnregisterSignal(servant, COMSIG_PARENT_QDELETING) LAZYREMOVE(servant.missions, src) servant = null for(var/bound in bound_atoms) @@ -115,7 +117,7 @@ if(sparks) do_sparks(3, FALSE, get_turf(bound)) LAZYSET(bound_atoms, bound, list(fail_on_delete, destroy_cb)) - RegisterSignal(bound, COMSIG_PARENT_QDELETING, .proc/bound_deleted) + RegisterSignal(bound, COMSIG_PARENT_QDELETING, PROC_REF(bound_deleted)) return bound /** diff --git a/code/modules/overmap/missions/research_mission.dm b/code/modules/overmap/missions/research_mission.dm index c1de1318b5b5..502824fae886 100644 --- a/code/modules/overmap/missions/research_mission.dm +++ b/code/modules/overmap/missions/research_mission.dm @@ -20,7 +20,7 @@ /datum/mission/research/accept(datum/overmap/ship/controlled/acceptor, turf/accept_loc) . = ..() scanner = spawn_bound(/obj/machinery/mission_scanner, accept_loc, VARSET_CALLBACK(src, scanner, null)) - RegisterSignal(servant, COMSIG_OVERMAP_MOVED, .proc/ship_moved) + RegisterSignal(servant, COMSIG_OVERMAP_MOVED, PROC_REF(ship_moved)) /datum/mission/research/Destroy() scanner = null @@ -56,7 +56,7 @@ if(!over_obj || !scanner.is_operational || scanner_port?.current_ship != servant) return num_current++ - +/* commented out until ion storms aren't literal torture /datum/mission/research/ion name = "Ion storm research mission" desc = "We require data on the behavior of ion storms in the system for an ongoing study. \ @@ -64,7 +64,7 @@ It must be powered to collect the data." value = 3500 objective_type = /datum/overmap/event/emp - +*/ /datum/mission/research/meteor name = "Asteroid field research mission" desc = "We require data on the behavior of asteroid fields in the system for an ongoing study. \ diff --git a/code/modules/overmap/objects/dynamic_datum.dm b/code/modules/overmap/objects/dynamic_datum.dm index 38f44e2d2fe0..c6f0ed4a193e 100644 --- a/code/modules/overmap/objects/dynamic_datum.dm +++ b/code/modules/overmap/objects/dynamic_datum.dm @@ -55,12 +55,13 @@ /datum/overmap/dynamic/Destroy() for(var/obj/docking_port/stationary/dock as anything in reserve_docks) reserve_docks -= dock - qdel(dock, TRUE) + qdel(dock) + ruin_turfs = null + . = ..() + //This NEEDS to be last so any docked ships get deleted properly if(mapzone) mapzone.clear_reservation() QDEL_NULL(mapzone) - ruin_turfs = null - return ..() /datum/overmap/dynamic/get_jump_to_turf() if(reserve_docks) @@ -93,8 +94,8 @@ if(preserve_level) return - if(length(mapzone?.get_mind_mobs())) - return //Dont fuck over stranded people? tbh this shouldn't be called on this condition, instead of bandaiding it inside + if(length(mapzone?.get_mind_mobs()) || SSlag_switch.measures[DISABLE_PLANETDEL]) + return //Dont fuck over stranded people log_shuttle("[src] [REF(src)] UNLOAD") var/list/results = SSovermap.get_unused_overmap_square() @@ -102,7 +103,7 @@ for(var/obj/docking_port/stationary/dock as anything in reserve_docks) reserve_docks -= dock - qdel(dock, TRUE) + qdel(dock) reserve_docks = null if(mapzone) mapzone.clear_reservation() @@ -172,6 +173,8 @@ * * visiting shuttle - The docking port of the shuttle visiting the level. */ /datum/overmap/dynamic/proc/load_level() + if(SSlag_switch.measures[DISABLE_PLANETGEN] && !(HAS_TRAIT(usr, TRAIT_BYPASS_MEASURES))) + return FALSE if(mapzone) return TRUE log_shuttle("[src] [REF(src)] LEVEL_INIT") diff --git a/code/modules/overmap/objects/event_datum.dm b/code/modules/overmap/objects/event_datum.dm index f63c2ceae82a..bfed840a1acd 100644 --- a/code/modules/overmap/objects/event_datum.dm +++ b/code/modules/overmap/objects/event_datum.dm @@ -90,7 +90,7 @@ /obj/effect/meteor/irradiated=10, /obj/effect/meteor/tunguska = 1 ) - +/* commented out until ion storms aren't literal torture ///ION STORM - explodes your IPCs /datum/overmap/event/emp name = "ion storm (moderate)" @@ -128,7 +128,7 @@ chance_to_affect = 25 chain_rate = 4 strength = 6 - +*/ ///ELECTRICAL STORM - explodes your computer and IPCs /datum/overmap/event/electric name = "electrical storm (moderate)" @@ -338,9 +338,11 @@ GLOBAL_LIST_INIT(overmap_event_pick_list, list( /datum/overmap/event/electric/minor = 45, /datum/overmap/event/electric = 40, /datum/overmap/event/electric/major = 35, + /* commented out until ion storms aren't literal torture /datum/overmap/event/emp/minor = 45, /datum/overmap/event/emp = 40, /datum/overmap/event/emp/major = 45, + */ /datum/overmap/event/meteor/minor = 45, /datum/overmap/event/meteor = 40, /datum/overmap/event/meteor/major = 35, diff --git a/code/modules/overmap/objects/outpost/elevator/elevator_machines.dm b/code/modules/overmap/objects/outpost/elevator/elevator_machines.dm index e4e32492e1de..bcd6f98a4d8e 100644 --- a/code/modules/overmap/objects/outpost/elevator/elevator_machines.dm +++ b/code/modules/overmap/objects/outpost/elevator/elevator_machines.dm @@ -50,7 +50,7 @@ var/down_arrow = my_floor.calls & DOWN ? "green_arrow" : "red_arrow" opts["Down"] = image(icon = 'icons/misc/arrows.dmi', icon_state = down_arrow, dir = SOUTH) - var/result = show_radial_menu(user, src, opts, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = !(issilicon(user) || isAdminGhostAI(user)), tooltips = TRUE) + var/result = show_radial_menu(user, src, opts, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = !(issilicon(user) || isAdminGhostAI(user)), tooltips = TRUE) if(!result || !my_floor || !my_floor.master) return switch(result) diff --git a/code/modules/overmap/objects/outpost/elevator/elevator_master.dm b/code/modules/overmap/objects/outpost/elevator/elevator_master.dm index 9bbc5e29d25d..2c934bb94aab 100644 --- a/code/modules/overmap/objects/outpost/elevator/elevator_master.dm +++ b/code/modules/overmap/objects/outpost/elevator/elevator_master.dm @@ -174,7 +174,7 @@ if(next_move != NONE) // sets in motion a chain of procs that will, after a bit, call check_move() again. - addtimer(CALLBACK(src, .proc/move_elevator, next_move), floor_move_time) + addtimer(CALLBACK(src, PROC_REF(move_elevator), next_move), floor_move_time) return // This is the only way the elevator may become idle: if it does not find anywhere to go on check_move(). @@ -255,10 +255,10 @@ cur_floor.calls &= ~seeking_dir cur_floor.button?.update_icon() - addtimer(CALLBACK(src, .proc/open_doors, cur_floor), door_open_time) - addtimer(CALLBACK(src, .proc/close_doors, cur_floor), door_open_time+floor_idle_time) + addtimer(CALLBACK(src, PROC_REF(open_doors), cur_floor), door_open_time) + addtimer(CALLBACK(src, PROC_REF(close_doors), cur_floor), door_open_time+floor_idle_time) // Continue the check_move() chain. - addtimer(CALLBACK(src, .proc/check_move), door_open_time+floor_idle_time+(1 SECONDS)) + addtimer(CALLBACK(src, PROC_REF(check_move)), door_open_time+floor_idle_time+(1 SECONDS)) /datum/elevator_master/proc/open_doors(datum/floor/d_floor) for(var/obj/machinery/door/fl_door as anything in d_floor.doors) @@ -267,13 +267,13 @@ if(!fl_door.wires.is_cut(WIRE_BOLTS)) fl_door.unlock() fl_door.autoclose = FALSE - INVOKE_ASYNC(fl_door, /obj/machinery/door.proc/open) + INVOKE_ASYNC(fl_door, TYPE_PROC_REF(/obj/machinery/door, open)) /datum/elevator_master/proc/close_doors(datum/floor/d_floor) for(var/obj/machinery/door/fl_door as anything in d_floor.doors) // respect the cut wire fl_door.autoclose = fl_door.wires.is_cut(WIRE_TIMING) - INVOKE_ASYNC(fl_door, /obj/machinery/door.proc/close) + INVOKE_ASYNC(fl_door, TYPE_PROC_REF(/obj/machinery/door, close)) // bolts can be lowered without power, or a cut wire (since if wire is cut they're automatically down) fl_door.lock() @@ -350,7 +350,7 @@ // you can always lower the bolts; doors are locked on floor creation to ensure no entry into shaft fl_door.lock() // don't want door refs hanging around - RegisterSignal(fl_door, COMSIG_PARENT_QDELETING, .proc/door_qdelete) + RegisterSignal(fl_door, COMSIG_PARENT_QDELETING, PROC_REF(door_qdelete)) // Deletion via means other than /datum/elevator_master/remove_floor() are likely to cause nasty elevator desyncs. /datum/floor/Destroy() diff --git a/code/modules/overmap/objects/outpost/elevator/elevator_platform.dm b/code/modules/overmap/objects/outpost/elevator/elevator_platform.dm index b530ee7e0435..03c8c66e4838 100644 --- a/code/modules/overmap/objects/outpost/elevator/elevator_platform.dm +++ b/code/modules/overmap/objects/outpost/elevator/elevator_platform.dm @@ -30,9 +30,9 @@ . = ..() var/static/list/connections = list( - COMSIG_ATOM_ENTERED = .proc/AddItemOnPlat, - COMSIG_ATOM_CREATED = .proc/AddItemOnPlat, - COMSIG_ATOM_EXITED = .proc/RemoveItemFromPlat + COMSIG_ATOM_ENTERED = PROC_REF(AddItemOnPlat), + COMSIG_ATOM_CREATED = PROC_REF(AddItemOnPlat), + COMSIG_ATOM_EXITED = PROC_REF(RemoveItemFromPlat) ) AddElement(/datum/element/connect_loc, connections) @@ -62,7 +62,7 @@ if(AM in lift_load) return LAZYADD(lift_load, AM) - RegisterSignal(AM, COMSIG_PARENT_QDELETING, .proc/RemoveItemFromPlat) + RegisterSignal(AM, COMSIG_PARENT_QDELETING, PROC_REF(RemoveItemFromPlat)) /obj/structure/elevator_platform/proc/RemoveItemFromPlat(datum/source, atom/movable/AM) SIGNAL_HANDLER diff --git a/code/modules/overmap/objects/outpost/outpost.dm b/code/modules/overmap/objects/outpost/outpost.dm index 25da722e6509..589787a15c72 100644 --- a/code/modules/overmap/objects/outpost/outpost.dm +++ b/code/modules/overmap/objects/outpost/outpost.dm @@ -15,11 +15,11 @@ /// and tall hangars (with a greater height than width) in the list is discouraged; it is possible that a large hangar will "hide" a /// smaller one by appearing earlier in the sorted list. var/list/datum/map_template/outpost/hangar/hangar_templates = list( - /datum/map_template/outpost/hangar/test_20x20, - /datum/map_template/outpost/hangar/test_40x20, - /datum/map_template/outpost/hangar/test_40x40, - /datum/map_template/outpost/hangar/test_56x20, - /datum/map_template/outpost/hangar/test_56x40 + /datum/map_template/outpost/hangar/indie_space_20x20, + /datum/map_template/outpost/hangar/indie_space_40x20, + /datum/map_template/outpost/hangar/indie_space_40x40, + /datum/map_template/outpost/hangar/indie_space_56x20, + /datum/map_template/outpost/hangar/indie_space_56x40 ) // NOTE: "planetary" outposts should use baseturf specification and possibly different ztrait sun type, for both hangars and main level. var/list/main_level_ztraits = list( @@ -65,7 +65,7 @@ Rename(gen_outpost_name()) fill_missions() - addtimer(CALLBACK(src, .proc/fill_missions), 10 MINUTES, TIMER_STOPPABLE|TIMER_LOOP|TIMER_DELETE_ME) + addtimer(CALLBACK(src, PROC_REF(fill_missions)), 10 MINUTES, TIMER_STOPPABLE|TIMER_LOOP|TIMER_DELETE_ME) /datum/overmap/outpost/Destroy(...) // cleanup our data structures. behavior here is currently relatively restrained; may be made more expansive in the future diff --git a/code/modules/overmap/objects/outpost/outpost_types.dm b/code/modules/overmap/objects/outpost/outpost_types.dm index 6a37077d0289..fd30ff4e8ab8 100644 --- a/code/modules/overmap/objects/outpost/outpost_types.dm +++ b/code/modules/overmap/objects/outpost/outpost_types.dm @@ -9,90 +9,92 @@ var/dock_width var/dock_height - -/datum/map_template/outpost/outpost_test_1 - name = "outpost_test_1" - -/datum/map_template/outpost/outpost_test_2 - name = "outpost_test_2" - /datum/map_template/outpost/elevator_test name = "elevator_test" +/* + Independent Space Outpost //creative name! +*/ +/datum/map_template/outpost/indie_space + name = "indie_space" -/datum/map_template/outpost/hangar/test_20x20 - name = "hangar/test_20x20" +/datum/map_template/outpost/hangar/indie_space_20x20 + name = "hangar/indie_space_20x20" dock_width = 20 dock_height = 20 -/datum/map_template/outpost/hangar/test_40x20 - name = "hangar/test_40x20" +/datum/map_template/outpost/hangar/indie_space_40x20 + name = "hangar/indie_space_40x20" dock_width = 40 dock_height = 20 -/datum/map_template/outpost/hangar/test_40x40 - name = "hangar/test_40x40" +/datum/map_template/outpost/hangar/indie_space_40x40 + name = "hangar/indie_space_40x40" dock_width = 40 dock_height = 40 -/datum/map_template/outpost/hangar/test_56x20 - name = "hangar/test_56x20" +/datum/map_template/outpost/hangar/indie_space_56x20 + name = "hangar/indie_space_56x20" dock_width = 56 dock_height = 20 -/datum/map_template/outpost/hangar/test_56x40 - name = "hangar/test_56x40" +/datum/map_template/outpost/hangar/indie_space_56x40 + name = "hangar/indie_space_56x40" dock_width = 56 dock_height = 40 +/* + Nanotrasen Ice Asteroid +*/ +/datum/map_template/outpost/nt_asteroid + name = "nanotrasen_asteroid" -/datum/map_template/outpost/hangar/test_2_20x20 - name = "hangar/test_2_20x20" +/datum/map_template/outpost/hangar/nt_asteroid_20x20 + name = "hangar/nt_asteroid_20x20" dock_width = 20 dock_height = 20 -/datum/map_template/outpost/hangar/test_2_40x20 - name = "hangar/test_2_40x20" +/datum/map_template/outpost/hangar/nt_asteroid_40x20 + name = "hangar/nt_asteroid_40x20" dock_width = 40 dock_height = 20 -/datum/map_template/outpost/hangar/test_2_40x40 - name = "hangar/test_2_40x40" +/datum/map_template/outpost/hangar/nt_asteroid_40x40 + name = "hangar/nt_asteroid_40x40" dock_width = 40 dock_height = 40 -/datum/map_template/outpost/hangar/test_2_56x20 - name = "hangar/test_2_56x20" +/datum/map_template/outpost/hangar/nt_asteroid_56x20 + name = "hangar/nt_asteroid_56x20" dock_width = 56 dock_height = 20 -// does not currently exist -// /datum/map_template/outpost/hangar/test_2_56x40 -// name = "hangar/test_2_56x40" -// dock_width = 56 -// dock_height = 40 +/datum/map_template/outpost/hangar/nt_asteroid_56x40 + name = "hangar/nt_asteroid_56x40" + dock_width = 56 + dock_height = 40 /* /datum/overmap/outpost subtypes */ -/datum/overmap/outpost/test_1 +/datum/overmap/outpost/indie_space token_icon_state = "station_1" - main_template = /datum/map_template/outpost/outpost_test_1 + main_template = /datum/map_template/outpost/indie_space elevator_template = /datum/map_template/outpost/elevator_test // Uses "test" hangars. -/datum/overmap/outpost/test_2 +/datum/overmap/outpost/nanotrasen_asteroid token_icon_state = "station_asteroid_0" - main_template = /datum/map_template/outpost/outpost_test_2 + main_template = /datum/map_template/outpost/nt_asteroid elevator_template = /datum/map_template/outpost/elevator_test - // Using an (incomplete) second list of hangar templates. Note that the 56x40 hangar is the first skin. + // Using a second list of hangar templates. hangar_templates = list( - /datum/map_template/outpost/hangar/test_2_20x20, - /datum/map_template/outpost/hangar/test_2_40x20, - /datum/map_template/outpost/hangar/test_2_40x40, - /datum/map_template/outpost/hangar/test_2_56x20, - /datum/map_template/outpost/hangar/test_56x40 + /datum/map_template/outpost/hangar/nt_asteroid_20x20, + /datum/map_template/outpost/hangar/nt_asteroid_40x20, + /datum/map_template/outpost/hangar/nt_asteroid_40x40, + /datum/map_template/outpost/hangar/nt_asteroid_56x20, + /datum/map_template/outpost/hangar/nt_asteroid_56x40 ) /datum/overmap/outpost/no_main_level // For example and adminspawn. diff --git a/code/modules/overmap/overmap_token.dm b/code/modules/overmap/overmap_token.dm index b69b63142cf0..4d4ca6d23bda 100644 --- a/code/modules/overmap/overmap_token.dm +++ b/code/modules/overmap/overmap_token.dm @@ -37,7 +37,7 @@ update_appearance() /obj/overmap/Destroy(force) - if(parent) + if(!QDELETED(parent)) stack_trace("attempted to qdel a token that still has a parent") return QDEL_HINT_LETMELIVE if(render_map) diff --git a/code/modules/overmap/ships/controlled_ship_datum.dm b/code/modules/overmap/ships/controlled_ship_datum.dm index 0577d3eb668c..cfdf87d44bdd 100644 --- a/code/modules/overmap/ships/controlled_ship_datum.dm +++ b/code/modules/overmap/ships/controlled_ship_datum.dm @@ -59,7 +59,7 @@ /// Short memo of the ship shown to new joins var/memo = null ///Assoc list of remaining open job slots (job = remaining slots) - var/list/job_slots = list(new /datum/job/captain() = 1, new /datum/job/assistant() = 5) + var/list/job_slots ///Time that next job slot change can occur COOLDOWN_DECLARE(job_slot_adjustment_cooldown) @@ -110,17 +110,29 @@ SSovermap.controlled_ships += src /datum/overmap/ship/controlled/Destroy() + //SHOULD be called first + . = ..() SSovermap.controlled_ships -= src + helms.Cut() + LAZYCLEARLIST(owner_candidates) if(!QDELETED(shuttle_port)) - shuttle_port.intoTheSunset() + shuttle_port.current_ship = null + qdel(shuttle_port, TRUE) + shuttle_port = null if(!QDELETED(ship_account)) QDEL_NULL(ship_account) + if(!QDELETED(shipkey)) + QDEL_NULL(shipkey) + QDEL_LIST(manifest) + job_slots.Cut() for(var/a_key in applications) + if(isnull(applications[a_key])) + continue // it handles removal itself qdel(applications[a_key]) + LAZYCLEARLIST(applications) // set ourselves to ownerless to unregister signals set_owner_mob(null) - return ..() /datum/overmap/ship/controlled/get_jump_to_turf() return get_turf(shuttle_port) @@ -187,10 +199,10 @@ var/thrust_used = 0 //The amount of thrust that the engines will provide with one burn refresh_engines() calculate_avg_fuel() - for(var/obj/machinery/power/shuttle/engine/E as anything in shuttle_port.engine_list) - if(!E.enabled) + for(var/obj/machinery/power/shuttle/engine/real_engine as anything in shuttle_port.get_engines()) + if(!real_engine.enabled) continue - thrust_used += E.burn_engine(percentage, deltatime) + thrust_used += real_engine.burn_engine(percentage, deltatime) thrust_used = thrust_used / (shuttle_port.turf_count * 100) est_thrust = thrust_used / percentage * 100 //cheeky way of rechecking the thrust, check it every time it's used @@ -202,10 +214,10 @@ */ /datum/overmap/ship/controlled/proc/refresh_engines() var/calculated_thrust - for(var/obj/machinery/power/shuttle/engine/E as anything in shuttle_port.engine_list) - E.update_engine() - if(E.enabled) - calculated_thrust += E.thrust + for(var/obj/machinery/power/shuttle/engine/real_engine as anything in shuttle_port.get_engines()) + real_engine.update_engine() + if(real_engine.enabled) + calculated_thrust += real_engine.thrust est_thrust = calculated_thrust / (shuttle_port.turf_count * 100) /** @@ -214,10 +226,10 @@ /datum/overmap/ship/controlled/proc/calculate_avg_fuel() var/fuel_avg = 0 var/engine_amnt = 0 - for(var/obj/machinery/power/shuttle/engine/E as anything in shuttle_port.engine_list) - if(!E.enabled) + for(var/obj/machinery/power/shuttle/engine/real_engine as anything in shuttle_port.get_engines()) + if(!real_engine.enabled) continue - fuel_avg += E.return_fuel() / E.return_fuel_cap() + fuel_avg += real_engine.return_fuel() / real_engine.return_fuel_cap() engine_amnt++ if(!engine_amnt || !fuel_avg) avg_fuel_amnt = 0 @@ -272,7 +284,8 @@ eligible = TRUE ) LAZYSET(owner_candidates, H.mind, mind_info) - RegisterSignal(H.mind, COMSIG_PARENT_QDELETING, .proc/crew_mind_deleting) + H.mind.original_ship = WEAKREF(src) + RegisterSignal(H.mind, COMSIG_PARENT_QDELETING, PROC_REF(crew_mind_deleting)) if(!owner_mob) set_owner_mob(H) @@ -299,7 +312,7 @@ // turns out that timers don't get added to active_timers if the datum is getting qdeleted. // so this timer was sitting around after deletion and clogging up runtime logs. thus, the QDELING() check. oops! if(!owner_check_timer_id && !QDELING(src)) - owner_check_timer_id = addtimer(CALLBACK(src, .proc/check_owner), 5 MINUTES, TIMER_STOPPABLE|TIMER_LOOP|TIMER_DELETE_ME) + owner_check_timer_id = addtimer(CALLBACK(src, PROC_REF(check_owner)), 5 MINUTES, TIMER_STOPPABLE|TIMER_LOOP|TIMER_DELETE_ME) return owner_mob = new_owner @@ -313,8 +326,8 @@ if(!(owner_mind in owner_candidates)) stack_trace("[src] tried to set ship owner to [new_owner] despite its mind [new_owner.mind] not being in owner_candidates!") - RegisterSignal(owner_mob, COMSIG_MOB_LOGOUT, .proc/owner_mob_logout) - RegisterSignal(owner_mob, COMSIG_MOB_GO_INACTIVE, .proc/owner_mob_afk) + RegisterSignal(owner_mob, COMSIG_MOB_LOGOUT, PROC_REF(owner_mob_logout)) + RegisterSignal(owner_mob, COMSIG_MOB_GO_INACTIVE, PROC_REF(owner_mob_afk)) if(!owner_act) owner_act = new(src) owner_act.Grant(owner_mob) diff --git a/code/modules/overmap/ships/ship_application.dm b/code/modules/overmap/ships/ship_application.dm index cd8a1f48f5e9..7389759ea7ed 100644 --- a/code/modules/overmap/ships/ship_application.dm +++ b/code/modules/overmap/ships/ship_application.dm @@ -26,8 +26,8 @@ // these are registered so we can cancel the application fill-out if the ship // gets deleted before the application is finalized, or the character spawns in. // your currently-open tgui windows don't get removed if you spawn into a body - RegisterSignal(app_mob, COMSIG_PARENT_QDELETING, .proc/applicant_deleting) - RegisterSignal(parent_ship, COMSIG_PARENT_QDELETING, .proc/important_deleting_during_apply) + RegisterSignal(app_mob, COMSIG_PARENT_QDELETING, PROC_REF(applicant_deleting)) + RegisterSignal(parent_ship, COMSIG_PARENT_QDELETING, PROC_REF(important_deleting_during_apply)) /datum/ship_application/Destroy() SStgui.close_uis(src) diff --git a/code/modules/overmap/ships/ship_datum.dm b/code/modules/overmap/ships/ship_datum.dm index c3b00b0b6f26..ed8f40a28f64 100644 --- a/code/modules/overmap/ships/ship_datum.dm +++ b/code/modules/overmap/ships/ship_datum.dm @@ -30,17 +30,17 @@ /datum/overmap/ship/Initialize(position, ...) . = ..() if(docked_to) - RegisterSignal(docked_to, COMSIG_OVERMAP_MOVED, .proc/on_docked_to_moved) + RegisterSignal(docked_to, COMSIG_OVERMAP_MOVED, PROC_REF(on_docked_to_moved)) /datum/overmap/ship/Destroy() - . = ..() if(movement_callback_id) deltimer(movement_callback_id, SSovermap_movement) + return ..() /datum/overmap/ship/complete_dock(datum/overmap/dock_target, datum/docking_ticket/ticket) . = ..() // override prevents runtime on controlled ship init due to docking after initializing at a position - RegisterSignal(dock_target, COMSIG_OVERMAP_MOVED, .proc/on_docked_to_moved, override = TRUE) + RegisterSignal(dock_target, COMSIG_OVERMAP_MOVED, PROC_REF(on_docked_to_moved), override = TRUE) /datum/overmap/ship/complete_undock() UnregisterSignal(docked_to, COMSIG_OVERMAP_MOVED) @@ -83,7 +83,7 @@ return var/timer = 1 / MAGNITUDE(speed_x, speed_y) * offset - movement_callback_id = addtimer(CALLBACK(src, .proc/tick_move), timer, TIMER_STOPPABLE, SSovermap_movement) + movement_callback_id = addtimer(CALLBACK(src, PROC_REF(tick_move)), timer, TIMER_STOPPABLE, SSovermap_movement) /** * Called by [/datum/overmap/ship/proc/adjust_speed], this continually moves the ship according to its speed @@ -106,7 +106,7 @@ return var/timer = 1 / current_speed - movement_callback_id = addtimer(CALLBACK(src, .proc/tick_move), timer, TIMER_STOPPABLE, SSovermap_movement) + movement_callback_id = addtimer(CALLBACK(src, PROC_REF(tick_move)), timer, TIMER_STOPPABLE, SSovermap_movement) token.update_screen() /** diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index b919078a97f7..0dd736ce9936 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -244,7 +244,7 @@ user.visible_message("With a sudden blaze, [H] stands back up.") H.fakefire() fulfillContract(H, TRUE)//Revival contracts are always signed in blood - addtimer(CALLBACK(H, /mob/living/carbon/human.proc/fakefireextinguish), 5, TIMER_UNIQUE) + addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human, fakefireextinguish)), 5, TIMER_UNIQUE) addtimer(CALLBACK(src, "resetcooldown"), 300, TIMER_UNIQUE) else ..() diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index bd232fd566e3..f85bd0bc77f9 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -133,23 +133,23 @@ return FALSE // Basic paper if(istype(paper_copy, /obj/item/paper)) - do_copy_loop(CALLBACK(src, .proc/make_paper_copy), usr) + do_copy_loop(CALLBACK(src, PROC_REF(make_paper_copy)), usr) return TRUE // Devil contract paper. if(istype(paper_copy, /obj/item/paper/contract/employment)) - do_copy_loop(CALLBACK(src, .proc/make_devil_paper_copy), usr) + do_copy_loop(CALLBACK(src, PROC_REF(make_devil_paper_copy)), usr) return TRUE // Copying photo. if(photo_copy) - do_copy_loop(CALLBACK(src, .proc/make_photo_copy), usr) + do_copy_loop(CALLBACK(src, PROC_REF(make_photo_copy)), usr) return TRUE // Copying Documents. if(document_copy) - do_copy_loop(CALLBACK(src, .proc/make_document_copy), usr) + do_copy_loop(CALLBACK(src, PROC_REF(make_document_copy)), usr) return TRUE // ASS COPY. By Miauw if(ass) - do_copy_loop(CALLBACK(src, .proc/make_ass_copy), usr) + do_copy_loop(CALLBACK(src, PROC_REF(make_ass_copy)), usr) return TRUE // Remove the paper/photo/document from the photocopier. @@ -211,7 +211,7 @@ if (toner_cartridge.charges - PAPER_TONER_USE < 0) to_chat(usr, span_warning("There is not enough toner in [src] to print the form, please replace the cartridge.")) return FALSE - do_copy_loop(CALLBACK(src, .proc/make_blank_print), usr) + do_copy_loop(CALLBACK(src, PROC_REF(make_blank_print)), usr) var/obj/item/paper/printblank = new /obj/item/paper (loc) var/printname = params["name"] var/list/printinfo @@ -248,7 +248,7 @@ var/i for(i in 1 to copies) addtimer(copy_cb, i SECONDS) - addtimer(CALLBACK(src, .proc/reset_busy), i SECONDS) + addtimer(CALLBACK(src, PROC_REF(reset_busy)), i SECONDS) /** * Sets busy to `FALSE`. Created as a proc so it can be used in callbacks. diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm index 24a256282fad..c645b3108b47 100644 --- a/code/modules/paperwork/ticketmachine.dm +++ b/code/modules/paperwork/ticketmachine.dm @@ -187,7 +187,7 @@ tickets += theirticket if(obj_flags & EMAGGED) //Emag the machine to destroy the HOP's life. ready = FALSE - addtimer(CALLBACK(src, .proc/reset_cooldown), cooldown)//Small cooldown to prevent piles of flaming tickets + addtimer(CALLBACK(src, PROC_REF(reset_cooldown)), cooldown)//Small cooldown to prevent piles of flaming tickets theirticket.fire_act() user.dropItemToGround(theirticket) user.adjust_fire_stacks(1) diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index 7ef48e8e8240..93b8319dbed7 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -144,11 +144,11 @@ var/mob/living/carbon/human/H = user if (HAS_TRAIT(H, TRAIT_PHOTOGRAPHER)) realcooldown *= 0.5 - addtimer(CALLBACK(src, .proc/cooldown), realcooldown) + addtimer(CALLBACK(src, PROC_REF(cooldown)), realcooldown) icon_state = state_off - INVOKE_ASYNC(src, .proc/captureimage, target, user, flag, picture_size_x - 1, picture_size_y - 1) + INVOKE_ASYNC(src, PROC_REF(captureimage), target, user, flag, picture_size_x - 1, picture_size_y - 1) /obj/item/camera/proc/cooldown() @@ -166,7 +166,7 @@ /obj/item/camera/proc/captureimage(atom/target, mob/user, flag, size_x = 1, size_y = 1) if(flash_enabled) set_light_on(TRUE) - addtimer(CALLBACK(src, .proc/flash_end), FLASH_LIGHT_DURATION, TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(flash_end)), FLASH_LIGHT_DURATION, TIMER_OVERRIDE|TIMER_UNIQUE) blending = TRUE var/turf/target_turf = get_turf(target) if(!isturf(target_turf)) diff --git a/code/modules/pixelshifting/pixelshift.dm b/code/modules/pixelshifting/pixelshift.dm index 2dbba6fa993b..491dcfd5c3c3 100644 --- a/code/modules/pixelshifting/pixelshift.dm +++ b/code/modules/pixelshifting/pixelshift.dm @@ -63,7 +63,7 @@ /mob/living/CanAllowThrough(atom/movable/mover, border_dir) // Make sure to not allow projectiles of any kind past where they normally wouldn't. - if(!istype(mover, /obj/projectile) && !mover.throwing && passthroughable & get_dir(src, border_dir)) + if(!istype(mover, /obj/projectile) && !mover.throwing && (passthroughable & border_dir)) return TRUE return ..() diff --git a/code/modules/plumbing/plumbers/_plumb_machinery.dm b/code/modules/plumbing/plumbers/_plumb_machinery.dm index 19bc21239ac4..5a9d9192dbbf 100644 --- a/code/modules/plumbing/plumbers/_plumb_machinery.dm +++ b/code/modules/plumbing/plumbers/_plumb_machinery.dm @@ -26,7 +26,7 @@ . = ..() anchored = bolt create_reagents(buffer, reagent_flags) - AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated)) + AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, PROC_REF(can_be_rotated))) /obj/machinery/plumbing/proc/can_be_rotated(mob/user,rotation_type) return !anchored diff --git a/code/modules/plumbing/plumbers/grinder_chemical.dm b/code/modules/plumbing/plumbers/grinder_chemical.dm index e47f24c01044..e192c54673c7 100644 --- a/code/modules/plumbing/plumbers/grinder_chemical.dm +++ b/code/modules/plumbing/plumbers/grinder_chemical.dm @@ -13,7 +13,7 @@ . = ..() AddComponent(/datum/component/plumbing/simple_supply, bolt) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered + COMSIG_ATOM_ENTERED = PROC_REF(on_entered) ) AddElement(/datum/element/connect_loc, loc_connections) @@ -27,12 +27,11 @@ . = ..() eat_dir = newdir -/obj/machinery/plumbing/grinder_chemical/CanAllowThrough(atom/movable/AM) +/obj/machinery/plumbing/grinder_chemical/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(!anchored) return - var/move_dir = get_dir(loc, AM.loc) - if(move_dir == eat_dir) + if(border_dir == eat_dir) return TRUE /obj/machinery/plumbing/grinder_chemical/proc/on_entered(datum/source, atom/movable/AM) diff --git a/code/modules/point/point.dm b/code/modules/point/point.dm index 8e311c339fde..e959304efe4f 100644 --- a/code/modules/point/point.dm +++ b/code/modules/point/point.dm @@ -98,10 +98,19 @@ /mob/verb/pointed(atom/A as mob|obj|turf in view()) set name = "Point To" set category = "Object" - if(client && !(A in view(client.view, src))) - return FALSE + if(istype(A, /obj/effect/temp_visual/point)) return FALSE - point_at(A) - SEND_SIGNAL(src, COMSIG_MOB_POINTED, A) + + DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(_pointed), A)) + +/// possibly delayed verb that finishes the pointing process starting in [/mob/verb/pointed()]. +/// either called immediately or in the tick after pointed() was called, as per the [DEFAULT_QUEUE_OR_CALL_VERB()] macro +/mob/proc/_pointed(atom/pointing_at) + if(client && !(pointing_at in view(client.view, src))) + return FALSE + + point_at(pointing_at) + + SEND_SIGNAL(src, COMSIG_MOB_POINTED, pointing_at) return TRUE diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index f57a82b00d8f..ec83de125baa 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -243,24 +243,25 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) name = "\improper [get_area_name(area, TRUE)] APC" set_machine_stat(machine_stat | MAINT) update_appearance() - addtimer(CALLBACK(src, .proc/update), 5) + addtimer(CALLBACK(src, PROC_REF(update)), 5) /obj/machinery/power/apc/Destroy() GLOB.apcs_list -= src if(malfai && operating) malfai.malf_picker.processing_time = clamp(malfai.malf_picker.processing_time - 10,0,1000) - area.power_light = FALSE - area.power_equip = FALSE - area.power_environ = FALSE - area.power_change() - area.poweralert(FALSE, src) + if(area) + area.power_light = FALSE + area.power_equip = FALSE + area.power_environ = FALSE + area.power_change() + area.poweralert(FALSE, src) if(occupier) malfvacate(1) - qdel(wires) - wires = null + if(wires) + QDEL_NULL(wires) if(cell) - qdel(cell) + QDEL_NULL(cell) if(terminal) disconnect_terminal() . = ..() @@ -306,7 +307,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) make_terminal() - addtimer(CALLBACK(src, .proc/update), 5) + addtimer(CALLBACK(src, PROC_REF(update)), 5) /obj/machinery/power/apc/examine(mob/user) . = ..() @@ -1082,7 +1083,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) for(var/obj/machinery/light/L in area) if(!initial(L.no_emergency)) //If there was an override set on creation, keep that override L.no_emergency = emergency_lights - INVOKE_ASYNC(L, /obj/machinery/light/.proc/update, FALSE) + INVOKE_ASYNC(L, TYPE_PROC_REF(/obj/machinery/light, update), FALSE) CHECK_TICK return 1 @@ -1105,7 +1106,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) return to_chat(malf, "Beginning override of APC systems. This takes some time, and you cannot perform other actions during the process.") malf.malfhack = src - malf.malfhacking = addtimer(CALLBACK(malf, /mob/living/silicon/ai/.proc/malfhacked, src), 600, TIMER_STOPPABLE) + malf.malfhacking = addtimer(CALLBACK(malf, TYPE_PROC_REF(/mob/living/silicon/ai, malfhacked), src), 600, TIMER_STOPPABLE) var/atom/movable/screen/alert/hackingapc/A A = malf.throw_alert("hackingapc", /atom/movable/screen/alert/hackingapc) @@ -1128,7 +1129,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) to_chat(malf, "Temporarily masking AI subroutines in APC. Expected duration: [duration] seconds") malf.malfhack = src - malf.malfhacking = addtimer(CALLBACK(src, /obj/machinery/power/apc/proc/malfunhidehack, malf), duration, TIMER_STOPPABLE) + malf.malfhacking = addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/power/apc, malfunhidehack), malf), duration, TIMER_STOPPABLE) var/atom/movable/screen/alert/hackingapc/A A = malf.throw_alert("hackingapc", /atom/movable/screen/alert/hackingapc) @@ -1145,7 +1146,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) malf.clear_alert("hackingapc") malfhackhide = -1 - malfhackhidecooldown = addtimer(CALLBACK(src, /obj/machinery/power/apc/proc/malfhiderestore, malf), 600, TIMER_STOPPABLE) + malfhackhidecooldown = addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/power/apc, malfhiderestore), malf), 600, TIMER_STOPPABLE) /obj/machinery/power/apc/proc/malfhiderestore(mob/living/silicon/ai/malf) if(src.machine_stat & BROKEN) @@ -1493,7 +1494,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) environ = APC_CHANNEL_OFF update_appearance() update() - addtimer(CALLBACK(src, .proc/reset, APC_RESET_EMP), 600) + addtimer(CALLBACK(src, PROC_REF(reset), APC_RESET_EMP), 600) /obj/machinery/power/apc/blob_act(obj/structure/blob/B) set_broken() @@ -1519,7 +1520,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) return if(cell && cell.charge>=20) cell.use(20) - INVOKE_ASYNC(src, .proc/break_lights) + INVOKE_ASYNC(src, PROC_REF(break_lights)) /obj/machinery/power/apc/proc/break_lights() for(var/obj/machinery/light/L in area) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index cec3440d1319..3f85acdddfe6 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -457,7 +457,7 @@ GLOBAL_LIST_INIT(cable_colors, list( moveToNullspace() powernet.remove_cable(src) //remove the cut cable from its powernet - addtimer(CALLBACK(O, .proc/auto_propogate_cut_cable, O), 0) //so we don't rebuild the network X times when singulo/explosion destroys a line of X cables + addtimer(CALLBACK(O, PROC_REF(auto_propogate_cut_cable), O), 0) //so we don't rebuild the network X times when singulo/explosion destroys a line of X cables // Disconnect machines connected to nodes if(d1 == 0) // if we cut a node (O-X) cable diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm index d83ce869e93e..8d711ad804fa 100644 --- a/code/modules/power/generator.dm +++ b/code/modules/power/generator.dm @@ -18,7 +18,7 @@ . = ..() find_circs() connect_to_network() - SSair.start_processing_machine(src) + SSair.start_processing_machine(src, mapload) update_appearance() component_parts = list(new /obj/item/circuitboard/machine/generator) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 7f2f3c3efbe9..24b106f0241f 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -357,7 +357,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/small/built, 28) brightness = 4 if(prob(5)) break_light_tube(1) - addtimer(CALLBACK(src, .proc/update, 0), 1) + addtimer(CALLBACK(src, PROC_REF(update), 0), 1) /obj/machinery/light/Destroy() var/area/A = get_area(src) @@ -451,7 +451,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/small/built, 28) if(!start_only) do_sparks(3, TRUE, src) var/delay = rand(BROKEN_SPARKS_MIN, BROKEN_SPARKS_MAX) - addtimer(CALLBACK(src, .proc/broken_sparks), delay, TIMER_UNIQUE | TIMER_NO_HASH_WAIT) + addtimer(CALLBACK(src, PROC_REF(broken_sparks)), delay, TIMER_UNIQUE | TIMER_NO_HASH_WAIT) /obj/machinery/light/process() if (!cell) @@ -877,7 +877,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/light/small/built, 28) . = ..() update() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered + COMSIG_ATOM_ENTERED = PROC_REF(on_entered) ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/modules/power/multiz.dm b/code/modules/power/multiz.dm index 2ce27c356cfd..b98f107055cb 100644 --- a/code/modules/power/multiz.dm +++ b/code/modules/power/multiz.dm @@ -110,7 +110,7 @@ /obj/machinery/power/deck_relay/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/find_relays), 30) + addtimer(CALLBACK(src, PROC_REF(find_relays)), 30) ///Handles re-acquiring + merging powernets found by find_relays() /obj/machinery/power/deck_relay/proc/refresh() @@ -152,5 +152,5 @@ above.below = src if(below) below.above = src - addtimer(CALLBACK(src, .proc/refresh), 20) //Wait a bit so we can find the one below, then get powering + addtimer(CALLBACK(src, PROC_REF(refresh)), 20) //Wait a bit so we can find the one below, then get powering return TRUE diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm index b5c2a2a35b89..1645afe9832b 100644 --- a/code/modules/power/rtg.dm +++ b/code/modules/power/rtg.dm @@ -76,7 +76,7 @@ "You hear a loud electrical crack!") playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5) tesla_zap(src, 5, power_gen * 0.05) - addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, get_turf(src), 2, 3, 4, 8), 100) // Not a normal explosion. + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), get_turf(src), 2, 3, 4, 8), 100) // Not a normal explosion. /obj/machinery/power/rtg/abductor/bullet_act(obj/projectile/Proj) . = ..() diff --git a/code/modules/power/singularity/boh_tear.dm b/code/modules/power/singularity/boh_tear.dm index a0a90a4a1045..7d870f8523c8 100644 --- a/code/modules/power/singularity/boh_tear.dm +++ b/code/modules/power/singularity/boh_tear.dm @@ -45,4 +45,4 @@ to_chat(user, "You don't feel like you are real anymore.") user.dust_animation() user.spawn_dust() - addtimer(CALLBACK(src, .proc/consume, user), 5) + addtimer(CALLBACK(src, PROC_REF(consume), user), 5) diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index d03c7d5c3af4..77c400ae2b07 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -14,21 +14,25 @@ CanAtmosPass = ATMOS_PASS_NO light_range = 4 layer = ABOVE_OBJ_LAYER - var/obj/machinery/field/generator/FG1 = null - var/obj/machinery/field/generator/FG2 = null + var/obj/machinery/field/generator/field_gen_1 = null + var/obj/machinery/field/generator/field_gen_2 = null /obj/machinery/field/containment/Initialize() . = ..() air_update_turf(TRUE) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered + COMSIG_ATOM_ENTERED = PROC_REF(on_entered) ) AddElement(/datum/element/connect_loc, loc_connections) /obj/machinery/field/containment/Destroy() - FG1.fields -= src - FG2.fields -= src + if(field_gen_1) + field_gen_1.fields -= src + field_gen_1 = null + if(field_gen_2) + field_gen_2.fields -= src + field_gen_2 = null CanAtmosPass = ATMOS_PASS_YES air_update_turf(TRUE) return ..() @@ -59,12 +63,12 @@ return FALSE /obj/machinery/field/containment/attack_animal(mob/living/simple_animal/M) - if(!FG1 || !FG2) + if(!field_gen_1 || !field_gen_2) qdel(src) return if(ismegafauna(M)) M.visible_message("[M] glows fiercely as the containment field flickers out!") - FG1.calc_power(INFINITY) //rip that 'containment' field + field_gen_1.calc_power(INFINITY) //rip that 'containment' field M.adjustHealth(-M.obj_damage) else return ..() @@ -80,12 +84,12 @@ /obj/machinery/field/containment/proc/set_master(master1,master2) if(!master1 || !master2) return FALSE - FG1 = master1 - FG2 = master2 + field_gen_1 = master1 + field_gen_2 = master2 return TRUE /obj/machinery/field/containment/shock(mob/living/user) - if(!FG1 || !FG2) + if(!field_gen_1 || !field_gen_2) qdel(src) return FALSE ..() @@ -112,7 +116,7 @@ return -/obj/machinery/field/CanAllowThrough(atom/movable/mover, turf/target) +/obj/machinery/field/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(hasShocked || isliving(mover) || ismachinery(mover) || isstructure(mover) || ismecha(mover)) return FALSE @@ -145,4 +149,4 @@ do_sparks(5, TRUE, AM.loc) var/atom/target = get_edge_target_turf(AM, get_dir(src, get_step_away(AM, src))) AM.throw_at(target, 200, 4) - addtimer(CALLBACK(src, .proc/clear_shock), 5) + addtimer(CALLBACK(src, PROC_REF(clear_shock)), 5) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 05bd1e648032..0a38f45c49ad 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -113,7 +113,7 @@ /obj/machinery/power/emitter/ComponentInitialize() . = ..() - AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated)) + AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, PROC_REF(can_be_rotated))) /obj/machinery/power/emitter/proc/can_be_rotated(mob/user,rotation_type) if (anchored) diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index d11479a5ac74..d3e7a31d4cb9 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -193,8 +193,8 @@ field_generator power level display active = FG_OFFLINE CanAtmosPass = ATMOS_PASS_YES air_update_turf(TRUE) - INVOKE_ASYNC(src, .proc/cleanup) - addtimer(CALLBACK(src, .proc/cool_down), 50) + INVOKE_ASYNC(src, PROC_REF(cleanup)) + addtimer(CALLBACK(src, PROC_REF(cool_down)), 50) /obj/machinery/field/generator/proc/cool_down() if(active || warming_up <= 0) @@ -202,11 +202,11 @@ field_generator power level display warming_up-- update_appearance() if(warming_up > 0) - addtimer(CALLBACK(src, .proc/cool_down), 50) + addtimer(CALLBACK(src, PROC_REF(cool_down)), 50) /obj/machinery/field/generator/proc/turn_on() active = FG_CHARGING - addtimer(CALLBACK(src, .proc/warm_up), 50) + addtimer(CALLBACK(src, PROC_REF(warm_up)), 50) /obj/machinery/field/generator/proc/warm_up() if(!active) @@ -216,7 +216,7 @@ field_generator power level display if(warming_up >= 3) start_fields() else - addtimer(CALLBACK(src, .proc/warm_up), 50) + addtimer(CALLBACK(src, PROC_REF(warm_up)), 50) /obj/machinery/field/generator/proc/calc_power(set_power_draw) var/power_draw = 2 + fields.len @@ -271,10 +271,10 @@ field_generator power level display move_resist = INFINITY CanAtmosPass = ATMOS_PASS_NO air_update_turf(TRUE) - addtimer(CALLBACK(src, .proc/setup_field, 1), 1) - addtimer(CALLBACK(src, .proc/setup_field, 2), 2) - addtimer(CALLBACK(src, .proc/setup_field, 4), 3) - addtimer(CALLBACK(src, .proc/setup_field, 8), 4) + addtimer(CALLBACK(src, PROC_REF(setup_field), 1), 1) + addtimer(CALLBACK(src, PROC_REF(setup_field), 2), 2) + addtimer(CALLBACK(src, PROC_REF(setup_field), 4), 3) + addtimer(CALLBACK(src, PROC_REF(setup_field), 8), 4) addtimer(VARSET_CALLBACK(src, active, FG_ONLINE), 5) /obj/machinery/field/generator/proc/setup_field(NSEW) @@ -348,7 +348,7 @@ field_generator power level display //This is here to help fight the "hurr durr, release singulo cos nobody will notice before the //singulo eats the evidence". It's not fool-proof but better than nothing. //I want to avoid using global variables. - INVOKE_ASYNC(src, .proc/notify_admins) + INVOKE_ASYNC(src, PROC_REF(notify_admins)) move_resist = initial(move_resist) diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 995beb23eb07..81f12838c0d3 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -16,6 +16,7 @@ light_range = 15 light_color = COLOR_RED gender = FEMALE + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF /obj/singularity/narsie/large name = "Nar'Sie" @@ -67,7 +68,7 @@ if(player.stat != DEAD && player.loc && !iscultist(player) && !isanimal(player)) souls_needed[player] = TRUE soul_goal = round(1 + LAZYLEN(souls_needed) * 0.75) - INVOKE_ASYNC(GLOBAL_PROC, .proc/begin_the_end) + INVOKE_ASYNC(GLOBAL_PROC, PROC_REF(begin_the_end)) /proc/begin_the_end() SSredbot.send_discord_message("admin","Nar'sie has been summoned.","round ending event") @@ -76,7 +77,7 @@ priority_announce("Status report? We detected a anomaly, but it disappeared almost immediately.","Central Command Higher Dimensional Affairs", 'sound/misc/notice1.ogg') GLOB.cult_narsie = null sleep(20) - INVOKE_ASYNC(GLOBAL_PROC, .proc/cult_ending_helper, 2) + INVOKE_ASYNC(GLOBAL_PROC, PROC_REF(cult_ending_helper), 2) return priority_announce("An acausal dimensional event has been detected in your sector. Event has been flagged EXTINCTION-CLASS. Directing all available assets toward simulating solutions. SOLUTION ETA: 60 SECONDS.","Central Command Higher Dimensional Affairs", 'sound/misc/airraid.ogg') sleep(500) @@ -84,7 +85,7 @@ priority_announce("Simulations aborted, sensors report that the acasual event is normalizing. Good work, crew.","Central Command Higher Dimensional Affairs", 'sound/misc/notice1.ogg') GLOB.cult_narsie = null sleep(20) - INVOKE_ASYNC(GLOBAL_PROC, .proc/cult_ending_helper, 2) + INVOKE_ASYNC(GLOBAL_PROC, PROC_REF(cult_ending_helper), 2) return priority_announce("Simulations on acausal dimensional event complete. Deploying solution package now. Deployment ETA: ONE MINUTE. ","Central Command Higher Dimensional Affairs") sleep(50) @@ -97,12 +98,12 @@ sleep(20) set_security_level("red") SSshuttle.lockdown = FALSE - INVOKE_ASYNC(GLOBAL_PROC, .proc/cult_ending_helper, 2) + INVOKE_ASYNC(GLOBAL_PROC, PROC_REF(cult_ending_helper), 2) return if(GLOB.cult_narsie.resolved == FALSE) GLOB.cult_narsie.resolved = TRUE sound_to_playing_players('sound/machines/alarm.ogg') - addtimer(CALLBACK(GLOBAL_PROC, .proc/cult_ending_helper), 120) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(cult_ending_helper)), 120) /obj/singularity/narsie/large/cult/Destroy() send_to_playing_players("\"[pick("Nooooo...", "Not die. How-", "Die. Mort-", "Sas tyen re-")]\"") @@ -124,11 +125,11 @@ /proc/cult_ending_helper(ending_type = 0) if(ending_type == 2) //narsie fukkin died - Cinematic(CINEMATIC_CULT_FAIL,world,CALLBACK(GLOBAL_PROC,/proc/ending_helper)) + Cinematic(CINEMATIC_CULT_FAIL,world,CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ending_helper))) else if(ending_type) //no explosion - Cinematic(CINEMATIC_CULT,world,CALLBACK(GLOBAL_PROC,/proc/ending_helper)) + Cinematic(CINEMATIC_CULT,world,CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ending_helper))) else // explosion - Cinematic(CINEMATIC_CULT_NUKE,world,CALLBACK(GLOBAL_PROC,/proc/ending_helper)) + Cinematic(CINEMATIC_CULT_NUKE,world,CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ending_helper))) //ATTACK GHOST IGNORING PARENT RETURN VALUE /obj/singularity/narsie/large/attack_ghost(mob/dead/observer/user as mob) @@ -229,7 +230,7 @@ setDir(SOUTH) move_self = FALSE flick("narsie_spawn_anim",src) - addtimer(CALLBACK(src, .proc/narsie_spawn_animation_end), 3.5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(narsie_spawn_animation_end)), 3.5 SECONDS) /obj/singularity/narsie/proc/narsie_spawn_animation_end() move_self = TRUE diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index 01e4d0324857..b593d3f546bb 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -23,10 +23,10 @@ /obj/effect/accelerated_particle/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/move), 1) + addtimer(CALLBACK(src, PROC_REF(move)), 1) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered + COMSIG_ATOM_ENTERED = PROC_REF(on_entered) ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index e10a79eaf74a..93ed8a5d606d 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -28,7 +28,7 @@ var/last_warning var/consumedSupermatter = 0 //If the singularity has eaten a supermatter shard and can go to stage six var/drifting_dir = 0 // Chosen direction to drift in - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF | LANDING_PROOF | HYPERSPACE_PROOF obj_flags = CAN_BE_HIT | DANGEROUS_POSSESSION /obj/singularity/Initialize(mapload, starting_energy = 50) @@ -45,9 +45,9 @@ target = singubeacon break AddElement(/datum/element/bsa_blocker) - RegisterSignal(src, COMSIG_ATOM_BSA_BEAM, .proc/bluespace_reaction) + RegisterSignal(src, COMSIG_ATOM_BSA_BEAM, PROC_REF(bluespace_reaction)) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered + COMSIG_ATOM_ENTERED = PROC_REF(on_entered) ) AddElement(/datum/element/connect_loc, loc_connections) @@ -480,7 +480,7 @@ /obj/singularity/deadchat_controlled/Initialize(mapload, starting_energy) . = ..() AddComponent(/datum/component/deadchat_control, DEMOCRACY_MODE, list( - "up" = CALLBACK(GLOBAL_PROC, .proc/_step, src, NORTH), - "down" = CALLBACK(GLOBAL_PROC, .proc/_step, src, SOUTH), - "left" = CALLBACK(GLOBAL_PROC, .proc/_step, src, WEST), - "right" = CALLBACK(GLOBAL_PROC, .proc/_step, src, EAST))) + "up" = CALLBACK(GLOBAL_PROC, PROC_REF(_step), src, NORTH), + "down" = CALLBACK(GLOBAL_PROC, PROC_REF(_step), src, SOUTH), + "left" = CALLBACK(GLOBAL_PROC, PROC_REF(_step), src, WEST), + "right" = CALLBACK(GLOBAL_PROC, PROC_REF(_step), src, EAST))) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index d923dc2df185..6068b8725f10 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -189,8 +189,6 @@ /obj/machinery/power/smes/Destroy() if(SSticker.IsRoundInProgress()) var/turf/T = get_turf(src) - message_admins("SMES deleted at [ADMIN_VERBOSEJMP(T)]") - log_game("SMES deleted at [AREACOORD(T)]") investigate_log("deleted at [AREACOORD(T)]", INVESTIGATE_SINGULO) if(terminal) disconnect_terminal() @@ -442,7 +440,7 @@ . = ..() if(. & EMP_PROTECT_SELF) return - emp_timer = addtimer(CALLBACK(src, .proc/emp_end, output_attempt), SMESEMPTIME, TIMER_UNIQUE | TIMER_OVERRIDE) + emp_timer = addtimer(CALLBACK(src, PROC_REF(emp_end), output_attempt), SMESEMPTIME, TIMER_UNIQUE | TIMER_OVERRIDE) is_emped = TRUE input_attempt = rand(0,1) inputting = input_attempt diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index bb50b3b2c2e8..8ca409051d6c 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -33,9 +33,10 @@ panel.layer = FLY_LAYER Make(S) connect_to_network() - RegisterSignal(SSsun, COMSIG_SUN_MOVED, .proc/queue_update_solar_exposure) + RegisterSignal(SSsun, COMSIG_SUN_MOVED, PROC_REF(queue_update_solar_exposure)) /obj/machinery/power/solar/Destroy() + UnregisterSignal(SSsun, COMSIG_SUN_MOVED) unset_control() //remove from control computer return ..() @@ -109,6 +110,9 @@ /obj/machinery/power/solar/update_overlays() . = ..() + //This can get called while it's not initialized + if(!panel) + return var/matrix/turner = matrix() turner.Turn(azimuth_current) panel.transform = turner @@ -339,7 +343,7 @@ /obj/machinery/power/solar_control/Initialize() . = ..() azimuth_rate = SSsun.base_rotation - RegisterSignal(SSsun, COMSIG_SUN_MOVED, .proc/timed_track) + RegisterSignal(SSsun, COMSIG_SUN_MOVED, PROC_REF(timed_track)) connect_to_network() if(powernet) set_panels(azimuth_target) @@ -349,6 +353,7 @@ M.unset_control() if(connected_tracker) connected_tracker.unset_control() + UnregisterSignal(SSsun, COMSIG_SUN_MOVED) return ..() //search for unconnected panels and trackers in the computer powernet and connect them diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 05b9be90cd62..5593744219d0 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -269,10 +269,10 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) -/obj/machinery/power/supermatter_crystal/Initialize() +/obj/machinery/power/supermatter_crystal/Initialize(mapload) . = ..() uid = gl_uid++ - SSair.start_processing_machine(src) + SSair.start_processing_machine(src, mapload) countdown = new(src) countdown.start() GLOB.poi_list |= src @@ -285,7 +285,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) GLOB.main_supermatter_engine = src AddElement(/datum/element/bsa_blocker) - RegisterSignal(src, COMSIG_ATOM_BSA_BEAM, .proc/call_explode) + RegisterSignal(src, COMSIG_ATOM_BSA_BEAM, PROC_REF(call_explode)) soundloop = new(list(src), TRUE) @@ -1111,7 +1111,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) else if(isliving(target))//If we got a fleshbag on our hands var/mob/living/creature = target creature.set_shocked() - addtimer(CALLBACK(creature, /mob/living/proc/reset_shocked), 10) + addtimer(CALLBACK(creature, TYPE_PROC_REF(/mob/living, reset_shocked)), 10) //3 shots a human with no resistance. 2 to crit, one to death. This is at at least 10000 power. //There's no increase after that because the input power is effectivly capped at 10k //Does 1.5 damage at the least diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index f7ae1b53bb98..82372d221baf 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -101,7 +101,7 @@ D.adjust_money(min(power_produced, 1)) if(istype(linked_techweb) && (zap_flags & ZAP_GIVES_RESEARCH) && can_generate_research) linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min(power_produced, 3)) // x4 coils = 12 points a shock for RND, if they even bothered to link the server. - addtimer(CALLBACK(src, .proc/reset_shocked), 10) + addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10) zap_buckle_check(power) playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5) return power_produced @@ -140,7 +140,7 @@ D.adjust_money(min(power_produced, 12)) if(istype(linked_techweb) && (zap_flags & ZAP_GIVES_RESEARCH)) linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min(power_produced, 25)) // x4 coils = 100 points per shock, which is a good reward for building a research tesla or electrical storm harvest ship - addtimer(CALLBACK(src, .proc/reset_shocked), 10) + addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10) zap_buckle_check(power) playsound(src.loc, 'sound/magic/lightningshock.ogg', 100, TRUE, extrarange = 5) return power_produced diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 88762101c32f..fbece73764a4 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -107,7 +107,7 @@ energy_to_raise = energy_to_raise * 1.25 playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, TRUE, extrarange = 30) - addtimer(CALLBACK(src, .proc/new_mini_ball), 100) + addtimer(CALLBACK(src, PROC_REF(new_mini_ball)), 100) else if(energy < energy_to_lower && orbiting_balls.len) energy_to_raise = energy_to_raise / 1.25 @@ -313,7 +313,7 @@ if(closest_type == LIVING) var/mob/living/closest_mob = closest_atom closest_mob.set_shocked() - addtimer(CALLBACK(closest_mob, /mob/living/proc/reset_shocked), 10) + addtimer(CALLBACK(closest_mob, TYPE_PROC_REF(/mob/living, reset_shocked)), 10) var/shock_damage = (zap_flags & ZAP_MOB_DAMAGE) ? (min(round(power/600), 90) + rand(-5, 5)) : 0 closest_mob.electrocute_act(shock_damage, source, 1, SHOCK_TESLA | ((zap_flags & ZAP_MOB_STUN) ? NONE : SHOCK_NOSTUN)) if(issilicon(closest_mob)) diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm index 4b3f9b760fd6..bfd0464f5e13 100644 --- a/code/modules/power/tracker.dm +++ b/code/modules/power/tracker.dm @@ -20,7 +20,7 @@ . = ..() Make(S) connect_to_network() - RegisterSignal(SSsun, COMSIG_SUN_MOVED, .proc/sun_update) + RegisterSignal(SSsun, COMSIG_SUN_MOVED, PROC_REF(sun_update)) /obj/machinery/power/tracker/Destroy() unset_control() //remove from control computer diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm index 9cb80fe57c41..e0b5c0608b9d 100644 --- a/code/modules/projectiles/ammunition/_ammunition.dm +++ b/code/modules/projectiles/ammunition/_ammunition.dm @@ -23,7 +23,7 @@ /// The sound played when this ammo is fired by an energy gun. var/fire_sound = null /// The visual effect that appears when the ammo is fired. - var/firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect + var/firing_effect_type /// Enables casing spinning and sizzling after being ejected from a gun. var/heavy_metal = TRUE /// If true, the casing's sprite will automatically be transformed in Initialize(). @@ -36,6 +36,8 @@ var/delay = 0 //Delay for energy weapons var/click_cooldown_override = 0 //Override this to make your gun have a faster fire rate, in tenths of a second. 4 is the default gun cooldown. + var/list/bounce_sfx_override // if true, overrides the bouncing sfx from the turf to this one + /obj/item/ammo_casing/spent name = "spent bullet casing" @@ -54,7 +56,9 @@ /obj/item/ammo_casing/Destroy() . = ..() - if(!BB) + if(BB) + QDEL_NULL(BB) + else SSblackbox.record_feedback("tally", "station_mess_destroyed", 1, name) /obj/item/ammo_casing/update_icon_state() @@ -102,7 +106,10 @@ update_appearance() SpinAnimation(10, 1) var/turf/T = get_turf(src) + if(bounce_sfx_override) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(playsound), src, pick(bounce_sfx_override), 20, 1), bounce_delay) //Soft / non-solid turfs that shouldn't make a sound when a shell casing is ejected over them. + return if(still_warm && T && T.bullet_sizzle) - addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/items/welder.ogg', 20, 1), bounce_delay) //If the turf is made of water and the shell casing is still hot, make a sizzling sound when it's ejected. + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, 'sound/items/welder.ogg', 20, 1), bounce_delay) //If the turf is made of water and the shell casing is still hot, make a sizzling sound when it's ejected. else if(T && T.bullet_bounce_sound) - addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, T.bullet_bounce_sound, 20, 1), bounce_delay) //Soft / non-solid turfs that shouldn't make a sound when a shell casing is ejected over them. + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, pick(T.bullet_bounce_sound), 20, 1), bounce_delay) //Soft / non-solid turfs that shouldn't make a sound when a shell casing is ejected over them. diff --git a/code/modules/projectiles/ammunition/ballistic/lmg.dm b/code/modules/projectiles/ammunition/ballistic/lmg.dm index 5c722e9e1455..90030e7b0944 100644 --- a/code/modules/projectiles/ammunition/ballistic/lmg.dm +++ b/code/modules/projectiles/ammunition/ballistic/lmg.dm @@ -1,4 +1,4 @@ -// 7.12x82mm (SAW) +// 7.12x82mm (L6 SAW) /obj/item/ammo_casing/mm712x82 name = "7.12x82mm bullet casing" @@ -9,24 +9,24 @@ /obj/item/ammo_casing/mm712x82/ap name = "7.12x82mm armor-piercing bullet casing" - desc = "A 7.12x82mm bullet casing with a tungsten core to enhance armor penetration." - projectile_type = /obj/projectile/bullet/mm712x82_ap + desc = "A 7.12x82mm armor-piercing bullet casing." + projectile_type = /obj/projectile/bullet/mm712x82/ap bullet_skin = "ap" -/obj/item/ammo_casing/mm712x82/hollow - name = "7.12x82mm hollow-point bullet casing" - desc = "A 7.12x82mm bullet casing designed to fragment on impact, improving damage against soft targets." - projectile_type = /obj/projectile/bullet/mm712x82_hp +/obj/item/ammo_casing/mm712x82/hp + name = "7.12x82mm hollow point bullet casing" + desc = "A 7.12x82mm hollow point bullet casing." + projectile_type = /obj/projectile/bullet/mm712x82/hp bullet_skin = "hollow" -/obj/item/ammo_casing/mm712x82/incen +/obj/item/ammo_casing/mm712x82/inc name = "7.12x82mm incendiary bullet casing" - desc = "A 7.12x82mm bullet casing with an incendiary payload." + desc = "A 7.12x82mm incendiary bullet casing." projectile_type = /obj/projectile/bullet/incendiary/mm712x82 bullet_skin = "incen" /obj/item/ammo_casing/mm712x82/match name = "7.12x82mm match bullet casing" - desc = "A 7.12x82mm bullet casing of exceptionally high grade. A skilled marksman could pull off deadly richochet shots with this." - projectile_type = /obj/projectile/bullet/mm712x82_match + desc = "A 7.12x82mm match bullet casing." + projectile_type = /obj/projectile/bullet/mm712x82/match bullet_skin = "rubber" diff --git a/code/modules/projectiles/ammunition/ballistic/pistol.dm b/code/modules/projectiles/ammunition/ballistic/pistol.dm index 99340d2ebdc1..b9237ea91b4d 100644 --- a/code/modules/projectiles/ammunition/ballistic/pistol.dm +++ b/code/modules/projectiles/ammunition/ballistic/pistol.dm @@ -11,31 +11,31 @@ name = "10mm surplus bullet casing" desc = "A 10mm surplus bullet casing." bullet_skin = "surplus" - projectile_type = /obj/projectile/bullet/c10mm_surplus + projectile_type = /obj/projectile/bullet/c10mm/surplus /obj/item/ammo_casing/c10mm/ap name = "10mm armor-piercing bullet casing" desc = "A 10mm armor-piercing bullet casing." bullet_skin = "ap" - projectile_type = /obj/projectile/bullet/c10mm_ap + projectile_type = /obj/projectile/bullet/c10mm/ap /obj/item/ammo_casing/c10mm/hp name = "10mm hollow point bullet casing" desc = "A 10mm hollow point bullet casing." - projectile_type = /obj/projectile/bullet/c10mm_hp + projectile_type = /obj/projectile/bullet/c10mm/hp bullet_skin = "hollow" -/obj/item/ammo_casing/c10mm/fire +/obj/item/ammo_casing/c10mm/inc name = "10mm incendiary bullet casing" desc = "A 10mm incendiary bullet casing." bullet_skin = "incen" projectile_type = /obj/projectile/bullet/incendiary/c10mm -/obj/item/ammo_casing/c10mm/rubbershot +/obj/item/ammo_casing/c10mm/rubber name = "10mm rubber bullet casing" desc = "A 10mm rubber bullet casing." bullet_skin = "rubber" - projectile_type = /obj/projectile/bullet/c10mm/rubbershot + projectile_type = /obj/projectile/bullet/c10mm/rubber // 9mm (Commander + SABR) @@ -50,19 +50,19 @@ name = "9mm surplus bullet casing" desc = "A 9mm surplus bullet casing." bullet_skin = "surplus" - projectile_type = /obj/projectile/bullet/c9mm_surplus + projectile_type = /obj/projectile/bullet/c9mm/surplus /obj/item/ammo_casing/c9mm/ap name = "9mm armor-piercing bullet casing" desc = "A 9mm armor-piercing bullet casing." bullet_skin = "ap" - projectile_type =/obj/projectile/bullet/c9mm_ap + projectile_type =/obj/projectile/bullet/c9mm/ap /obj/item/ammo_casing/c9mm/hp name = "9mm hollow point bullet casing" desc = "A 9mm hollow point bullet casing." bullet_skin = "hollow" - projectile_type = /obj/projectile/bullet/c9mm_hp + projectile_type = /obj/projectile/bullet/c9mm/hp /obj/item/ammo_casing/c9mm/inc name = "9mm incendiary bullet casing" @@ -70,11 +70,11 @@ bullet_skin = "incen" projectile_type = /obj/projectile/bullet/incendiary/c9mm -/obj/item/ammo_casing/c9mm/rubbershot - name = "9mm rubbershot bullet casing" - desc = "A 9mm rubbershot bullet casing." +/obj/item/ammo_casing/c9mm/rubber + name = "9mm rubber bullet casing" + desc = "A 9mm rubber bullet casing." bullet_skin = "rubber" - projectile_type = /obj/projectile/bullet/c9mm/rubbershot + projectile_type = /obj/projectile/bullet/c9mm/rubber // .45 (M1911 + C20r) @@ -89,33 +89,33 @@ name = ".45 surplus bullet casing" desc = "A .45 surplus bullet casing." bullet_skin = "surplus" - projectile_type = /obj/projectile/bullet/c45_surplus + projectile_type = /obj/projectile/bullet/c45/surplus /obj/item/ammo_casing/c45/ap name = ".45 armor-piercing bullet casing" desc = "A .45 armor-piercing bullet casing." bullet_skin = "ap" - projectile_type =/obj/projectile/bullet/c45_ap + projectile_type =/obj/projectile/bullet/c45/ap /obj/item/ammo_casing/c45/hp name = ".45 hollow point bullet casing" desc = "A .45 hollow point bullet casing." bullet_skin = "hollow" - projectile_type = /obj/projectile/bullet/c45_hp + projectile_type = /obj/projectile/bullet/c45/hp -/obj/item/ammo_casing/c45/fire +/obj/item/ammo_casing/c45/inc name = ".45 incendiary bullet casing" desc = "A .45 incendiary bullet casing." bullet_skin = "incen" projectile_type = /obj/projectile/bullet/incendiary/c45 -/obj/item/ammo_casing/c45/rubbershot - name = ".45 rubbershot bullet casing" - desc = "A .45 rubbershot bullet casing." +/obj/item/ammo_casing/c45/rubber + name = ".45 rubber bullet casing" + desc = "A .45 rubber bullet casing." bullet_skin = "rubber" - projectile_type = /obj/projectile/bullet/c45/rubbershot + projectile_type = /obj/projectile/bullet/c45/rubber -// .50AE (Desert Eagle) +// .50 AE (Desert Eagle) /obj/item/ammo_casing/a50AE name = ".50 AE bullet casing" @@ -127,3 +127,11 @@ name = ".50 AE hollow point bullet casing" desc = "A .50 AE hollow point bullet casing." projectile_type = /obj/projectile/bullet/a50AE/hp + +// .22 LR (Himehabu) +/obj/item/ammo_casing/c22lr + name = ".22 LR bullet casing" + desc = "A .22 LR bullet casing." + projectile_type = /obj/projectile/bullet/c22lr + caliber = "22lr" + diff --git a/code/modules/projectiles/ammunition/ballistic/revolver.dm b/code/modules/projectiles/ammunition/ballistic/revolver.dm index bec8e1e3a502..47ad1b7aba84 100644 --- a/code/modules/projectiles/ammunition/ballistic/revolver.dm +++ b/code/modules/projectiles/ammunition/ballistic/revolver.dm @@ -1,4 +1,4 @@ -// .357 (Syndie Revolver) +// .357 (Syndicate Revolver) /obj/item/ammo_casing/a357 name = ".357 bullet casing" @@ -8,7 +8,7 @@ /obj/item/ammo_casing/a357/match name = ".357 match bullet casing" - desc = "A .357 bullet casing, manufactured to exceedingly high standards." + desc = "A .357 match bullet casing." caliber = ".357" projectile_type = /obj/projectile/bullet/a357/match @@ -27,7 +27,7 @@ /obj/item/ammo_casing/a4570/match name = ".45-70 match bullet casing" - desc = "A .45-70 bullet casing, manufactured to exceedingly high standards." + desc = "A .45-70 match bullet casing." bullet_skin = "rubber" projectile_type = /obj/projectile/bullet/a4570/match @@ -39,23 +39,23 @@ /obj/item/ammo_casing/a4570/explosive name = ".45-70 explosive bullet casing" - desc = "A .45-70 bullet casing, loaded with a tiny explosive charge." + desc = "A .45-70 explosive bullet casing." projectile_type = /obj/projectile/bullet/a4570/explosive // 7.62x38mmR (Nagant Revolver) -/obj/item/ammo_casing/n762 +/obj/item/ammo_casing/n762_38 name = "7.62x38mmR bullet casing" desc = "A 7.62x38mmR bullet casing." caliber = "7.62x38mmR" projectile_type = /obj/projectile/bullet/n762 -// .38 (Detective's Gun) +// .38 Special (Colt Detective Special & Winchester) /obj/item/ammo_casing/c38 - name = ".38 bullet casing" - desc = "A .38 bullet casing." + name = ".38 special bullet casing" + desc = "A .38 special bullet casing." caliber = ".38" projectile_type = /obj/projectile/bullet/c38 @@ -67,13 +67,13 @@ /obj/item/ammo_casing/c38/match name = ".38 match bullet casing" - desc = "A .38 bullet casing, manufactured to exceedingly high standards." + desc = "A .38 match bullet casing." bullet_skin = "rubber" projectile_type = /obj/projectile/bullet/c38/match /obj/item/ammo_casing/c38/match/bouncy name = ".38 rubber bullet casing" - desc = "A .38 rubber bullet casing, manufactured to exceedingly high standards." + desc = "A .38 rubber bullet casing." bullet_skin = "rubber" projectile_type = /obj/projectile/bullet/c38/match/bouncy diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm index b91c901dd47b..ff6c42284055 100644 --- a/code/modules/projectiles/ammunition/ballistic/rifle.dm +++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm @@ -1,17 +1,17 @@ -// 7.62 (Nagant Rifle) +// 7.62x54mmR (Illestren Hunting Rifle) -/obj/item/ammo_casing/a762 +/obj/item/ammo_casing/a762_54 name = "7.62x54mmR bullet casing" desc = "A 7.62x54mmR bullet casing." icon_state = "rifle-brass" caliber = "7.62x54mmR" - projectile_type = /obj/projectile/bullet/a762 + projectile_type = /obj/projectile/bullet/a762_54 // 8x58mm Caseless (SSG-669C) /obj/item/ammo_casing/caseless/a858 name = "8x58mm caseless round" - desc = "a 8x58mm caseless round." + desc = "A 8x58mm caseless round." icon_state = "caseless" caliber = "a858" projectile_type = /obj/projectile/bullet/a858 @@ -25,14 +25,16 @@ caliber = "a300" projectile_type = /obj/projectile/bullet/a300 -// 5.56mm (M-90gl Carbine & P-16) +// 5.56x39mm (M-90gl Carbine & P-16) -/obj/item/ammo_casing/a556 - name = "5.56mm bullet casing" - desc = "A 5.56mm bullet casing." +/obj/item/ammo_casing/a556_39 + name = "5.56x39mm bullet casing" + desc = "A 5.56x39mm bullet casing." icon_state = "rifle-brass" caliber = "5.56x45mm" - projectile_type = /obj/projectile/bullet/a556 + projectile_type = /obj/projectile/bullet/a556_45 + +// 5.45x39mm (AKS-74U) /obj/item/ammo_casing/a545_39 name = "5.45x39mm bullet casing" @@ -45,12 +47,14 @@ /obj/item/ammo_casing/a545_39/recycled name = "recycled 5.45x39mm bullet casing" - desc = "A recycled 5.45x39mm bullet casing. Likely has been spent and reloaded dozens of times." + desc = "A recycled 5.45x39mm bullet casing." bullet_skin = "surplus" caliber = "5.45x39mm" variance = 3.5 projectile_type = /obj/projectile/bullet/a545_39 +// 7.62x39mm (SVG-67 & SkM-24) + /obj/item/ammo_casing/a762_39 name = "7.62x39mm bullet casing" desc = "A 7.62x39mm bullet casing." @@ -59,6 +63,8 @@ variance = 2 projectile_type = /obj/projectile/bullet/a762_39 +// .300 Blackout (Polymer Survivor Rifle) + /obj/item/ammo_casing/aac_300blk name = ".300 BLK bullet casing" desc = "A .300 Blackout bullet casing." @@ -68,10 +74,12 @@ /obj/item/ammo_casing/aac_300blk/recycled name = "recycled .300 BLK bullet casing" - desc = "A .300 Blackout bullet casing. It looks like it has been re-necked and reloaded several times." + desc = "A recycled .300 Blackout bullet casing." caliber = ".300 BLK" projectile_type = /obj/projectile/bullet/aac_300blk +//.308 Winchester (M514 EBR & CM-GAL-S) + /obj/item/ammo_casing/win308 name = ".308 Winchester bullet casing" desc = "A .308 Winchester bullet casing." diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index bae27ebeace2..b297ee30e776 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -2,12 +2,14 @@ /obj/item/ammo_casing/shotgun name = "shotgun slug" - desc = "A 12 gauge lead slug." + desc = "A 12-gauge lead slug." icon = 'icons/obj/ammo_shotshells.dmi' icon_state = "slug" caliber = "12ga" custom_materials = list(/datum/material/iron=4000) - projectile_type = /obj/projectile/bullet/shotgun_slug + projectile_type = /obj/projectile/bullet/slug + + bounce_sfx_override = 'sound/weapons/gun/general/bulletcasing_shotgun_bounce.ogg' /obj/item/ammo_casing/shotgun/update_icon_state() icon_state = "[initial(icon_state)][BB ? "" : "-spent"]" @@ -15,9 +17,9 @@ /obj/item/ammo_casing/shotgun/buckshot name = "buckshot shell" - desc = "A 12 gauge buckshot shell." + desc = "A 12-gauge buckshot shell." icon_state = "buckshot" - projectile_type = /obj/projectile/bullet/pellet/shotgun_buckshot + projectile_type = /obj/projectile/bullet/pellet/buckshot pellets = 8 variance = 25 @@ -26,13 +28,13 @@ desc = "A weak beanbag slug for riot control." icon_state = "beanbag" custom_materials = list(/datum/material/iron=250) - projectile_type = /obj/projectile/bullet/shotgun_beanbag + projectile_type = /obj/projectile/bullet/slug/beanbag /obj/item/ammo_casing/shotgun/rubbershot name = "rubber shot" desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance." icon_state = "rubber" - projectile_type = /obj/projectile/bullet/pellet/shotgun_rubbershot + projectile_type = /obj/projectile/bullet/pellet/rubbershot pellets = 8 variance = 25 custom_materials = list(/datum/material/iron=4000) @@ -47,16 +49,16 @@ name = "improvised shell" desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards." icon_state = "improvised" - projectile_type = /obj/projectile/bullet/pellet/shotgun_improvised + projectile_type = /obj/projectile/bullet/pellet/improvised custom_materials = list(/datum/material/iron=250) pellets = 10 variance = 25 /obj/item/ammo_casing/shotgun/incapacitate name = "custom incapacitating shot" - desc = "A shotgun casing filled with... something. used to incapacitate targets." + desc = "A shotgun casing filled with... something. Used to incapacitate targets." icon_state = "bounty" - projectile_type = /obj/projectile/bullet/pellet/shotgun_incapacitate + projectile_type = /obj/projectile/bullet/pellet/rubbershot/incapacitate pellets = 12//double the pellets, but half the stun power of each, which makes this best for just dumping right in someone's face. variance = 25 custom_materials = list(/datum/material/iron=4000) @@ -65,12 +67,12 @@ name = "taser slug" desc = "A stunning taser slug." icon_state = "taser" - projectile_type = /obj/projectile/bullet/shotgun_stunslug + projectile_type = /obj/projectile/bullet/slug/stun custom_materials = list(/datum/material/iron=250) /obj/item/ammo_casing/shotgun/dart name = "shotgun dart" - desc = "A dart for use in shotguns. Can be injected with up to 30 units of any chemical." + desc = "A dart for use in shotguns. Can be injected with up to thirty units of any chemical." icon_state = "dart" projectile_type = /obj/projectile/bullet/dart var/reagent_amount = 30 @@ -115,13 +117,13 @@ name = "meteorslug shell" desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired." icon_state = "meteor" - projectile_type = /obj/projectile/bullet/shotgun_meteorslug + projectile_type = /obj/projectile/bullet/slug/meteor /obj/item/ammo_casing/shotgun/frag12 name = "FRAG-12 slug" desc = "A high explosive breaching round for a 12 gauge shotgun." icon_state = "frag12" - projectile_type = /obj/projectile/bullet/shotgun_frag12 + projectile_type = /obj/projectile/bullet/slug/frag12 /obj/item/ammo_casing/shotgun/ion name = "ion shell" @@ -152,7 +154,7 @@ name = "two-bore shell" desc = "A massive fucking two-bore shell." caliber = "twobore" - projectile_type = /obj/projectile/bullet/pellet/shotgun_buckshot/twobore + projectile_type = /obj/projectile/bullet/pellet/buckshot/twobore pellets = 6 variance = 20 transform = matrix(2, 0, 0, 0, 2, 0) diff --git a/code/modules/projectiles/ammunition/ballistic/smg.dm b/code/modules/projectiles/ammunition/ballistic/smg.dm index d58a1464f529..37218201902e 100644 --- a/code/modules/projectiles/ammunition/ballistic/smg.dm +++ b/code/modules/projectiles/ammunition/ballistic/smg.dm @@ -1,4 +1,4 @@ -// 4.6x30mm (Autorifles) +// 4.6x30mm (WT-550 Automatic Rifle & NT-SVG) /obj/item/ammo_casing/c46x30mm name = "4.6x30mm bullet casing" @@ -11,7 +11,7 @@ name = "4.6x30mm armor-piercing bullet casing" desc = "A 4.6x30mm armor-piercing bullet casing." bullet_skin = "ap" - projectile_type = /obj/projectile/bullet/c46x30mm_ap + projectile_type = /obj/projectile/bullet/c46x30mm/ap /obj/item/ammo_casing/c46x30mm/inc name = "4.6x30mm incendiary bullet casing" @@ -19,6 +19,8 @@ bullet_skin = "incen" projectile_type = /obj/projectile/bullet/incendiary/c46x30mm +// 4.73x33mm caseless (Solar) + /obj/item/ammo_casing/caseless/c47x33mm name = "4.73x33mm caseless round" desc = "A 4.73x33mm caseless round." @@ -26,9 +28,11 @@ caliber = "4.73x33mm caseless" projectile_type = /obj/projectile/bullet/c47x33mm +// 5.56mm HITP caseless (Pistole C) + /obj/item/ammo_casing/caseless/c556mm - name = "5.56mm caseless round" - desc = "A 5.56mm caseless round." + name = "5.56mm HITP caseless round" + desc = "A 5.56mm HITP caseless round." icon_state = "caseless" caliber = "5.56mm caseless" projectile_type = /obj/projectile/bullet/c556mm @@ -36,19 +40,19 @@ /obj/item/ammo_casing/caseless/c556mm/surplus name = "5.56mm HITP caseless surplus round" desc = "A 5.56mm HITP caseless surplus round." - projectile_type = /obj/projectile/bullet/c556mm_surplus + projectile_type = /obj/projectile/bullet/c556mm/surplus /obj/item/ammo_casing/caseless/c556mm/ap - name = "5.56mm HITP caseless armor piercing round" - desc = "A 5.56mm HITP caseless armor piercing round." - projectile_type = /obj/projectile/bullet/c556mm_ap + name = "5.56mm HITP caseless armor-piercing round" + desc = "A 5.56mm HITP caseless armor-piercing round." + projectile_type = /obj/projectile/bullet/c556mm/ap /obj/item/ammo_casing/caseless/c556mm/hp - name = "5.56mm HITP caseless hollow-point round" - desc = "A 5.56mm HITP caseless hollow-point round." - projectile_type = /obj/projectile/bullet/c556mm_hp + name = "5.56mm HITP caseless hollow point round" + desc = "A 5.56mm HITP caseless hollow point round." + projectile_type = /obj/projectile/bullet/c556mm/hp /obj/item/ammo_casing/caseless/c556mm/rubbershot - name = "5.56mm HITP rubber round" + name = "5.56mm HITP caseless rubber round" desc = "A 5.56mm HITP caseless rubber round." - projectile_type = /obj/projectile/bullet/c556mm/rubbershot + projectile_type = /obj/projectile/bullet/c556mm/rubber diff --git a/code/modules/projectiles/ammunition/ballistic/sniper.dm b/code/modules/projectiles/ammunition/ballistic/sniper.dm index 4762e05a5cac..af7369204e6d 100644 --- a/code/modules/projectiles/ammunition/ballistic/sniper.dm +++ b/code/modules/projectiles/ammunition/ballistic/sniper.dm @@ -1,21 +1,21 @@ -// .50 (Sniper) +// .50 BMG (Sniper) /obj/item/ammo_casing/p50 - name = ".50 bullet casing" - desc = "A .50 bullet casing." + name = ".50 BMG bullet casing" + desc = "A .50 BMG bullet casing." icon_state = "big-steel" caliber = ".50 BMG" projectile_type = /obj/projectile/bullet/p50 /obj/item/ammo_casing/p50/soporific - name = ".50 soporific bullet casing" - desc = "A .50 bullet casing, specialised in sending the target to sleep, instead of hell." + name = ".50 BMG soporific bullet casing" + desc = "A .50 BMG soporific bullet casing." bullet_skin = "rubber" projectile_type = /obj/projectile/bullet/p50/soporific harmful = FALSE /obj/item/ammo_casing/p50/penetrator - name = ".50 penetrator round bullet casing" - desc = "A .50 caliber penetrator round casing." + name = ".50 BMG penetrator bullet casing" + desc = "A .50 BMG penetrator bullet casing." bullet_skin = "ap" projectile_type = /obj/projectile/bullet/p50/penetrator diff --git a/code/modules/projectiles/ammunition/energy/laser.dm b/code/modules/projectiles/ammunition/energy/laser.dm index 05653dab0bd8..1e2d92996077 100644 --- a/code/modules/projectiles/ammunition/energy/laser.dm +++ b/code/modules/projectiles/ammunition/energy/laser.dm @@ -151,4 +151,5 @@ select_name = "kill" projectile_type = /obj/projectile/beam/weak/penetrator variance = 0.8 + delay = 0.5 fire_sound = 'sound/weapons/laser4.ogg' diff --git a/code/modules/projectiles/ammunition/energy/portal.dm b/code/modules/projectiles/ammunition/energy/portal.dm index 6f2b02644640..492878613658 100644 --- a/code/modules/projectiles/ammunition/energy/portal.dm +++ b/code/modules/projectiles/ammunition/energy/portal.dm @@ -4,7 +4,8 @@ harmful = FALSE fire_sound = 'sound/weapons/pulse3.ogg' select_name = "blue" - var/obj/item/gun/energy/wormhole_projector/gun + //Weakref to the gun that shot us + var/datum/weakref/gun /obj/item/ammo_casing/energy/wormhole/orange projectile_type = /obj/projectile/beam/wormhole/orange @@ -12,7 +13,7 @@ /obj/item/ammo_casing/energy/wormhole/Initialize(mapload, obj/item/gun/energy/wormhole_projector/wh) . = ..() - gun = wh + gun = WEAKREF(wh) /obj/item/ammo_casing/energy/wormhole/throw_proj() . = ..() diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index 932c438ff169..c3989e7a4952 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -127,7 +127,8 @@ return A.forceMove(drop_location()) - if(!user.is_holding(src) || !user.put_in_hands(A)) //incase they're using TK + var/mob/living/carbon/human/H = user + if(!(user.is_holding(src) || H.l_store == src || H.r_store == src) || !user.put_in_hands(A)) //incase they're using TK A.bounce_away(FALSE, NONE) playsound(src, 'sound/weapons/gun/general/mag_bullet_insert.ogg', 60, TRUE) to_chat(user, "You remove a round from [src]!") @@ -159,6 +160,19 @@ temp_materials[material] = (bullet_cost[material] * stored_ammo.len) + base_cost[material] set_custom_materials(temp_materials) +/obj/item/ammo_box/AltClick(mob/user) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if((user.is_holding(src) ||H.l_store == src || H.r_store == src) && !(caliber || istype(src, /obj/item/ammo_box/magazine) || instant_load)) //caliber because boxes have none, instant load because speedloaders use the base ammo box type with instant load on, and magazine for the obvious. + attack_self(user) + return + ..() + +/obj/item/ammo_box/examine(mob/user) + . = ..() + if(!(caliber || istype(src, /obj/item/ammo_box/magazine) || instant_load)) + . += "Alt-click on [src] while it in a pocket or your off-hand to take out a round while it is there." + /obj/item/ammo_box/magazine w_class = WEIGHT_CLASS_SMALL //Default magazine weight, only differs for tiny mags and drums diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index 253e9262e595..e8c47f60f85b 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -1,6 +1,8 @@ +// .357 Speed Loaders (Syndicate Revolver) + /obj/item/ammo_box/a357 name = "speed loader (.357)" - desc = "Designed to quickly reload revolvers." + desc = "A 7-round speed loader for quickly reloading .357 revolvers. These rounds do good damage with average performance against armor." icon_state = "357" ammo_type = /obj/item/ammo_casing/a357 max_ammo = 7 @@ -11,17 +13,19 @@ /obj/item/ammo_box/a357/match name = "speed loader (.357 match)" - desc = "Designed to quickly reload revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with." + desc = "A 7-round speed loader for quickly reloading .357 revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." ammo_type = /obj/item/ammo_casing/a357/match /obj/item/ammo_box/a357/hp name = "speed loader (.357 hollow point)" - desc = "Designed to quickly reload revolvers. Loaded with expanding rounds that cause massive tissue damage at the cost of armor penetration." + desc = "A 7-round speed loader for quickly reloading .357 revolvers. These hollow point rounds do incredible damage against soft targets, but are nearly ineffective against armored ones." ammo_type = /obj/item/ammo_casing/a357/hp +// .45-70 Ammo Holders (Hunting Revolver) + /obj/item/ammo_box/a4570 name = "ammo holder (.45-70)" - desc = "Designed to help reload large revolvers." + desc = "A 6-round ammo holder for .45-70 revolvers. These rounds do significant damage with average performance against armor." icon_state = "4570" ammo_type = /obj/item/ammo_casing/a4570 max_ammo = 6 @@ -32,33 +36,37 @@ /obj/item/ammo_box/a4570/match name = "ammo holder (.45-70 match)" - desc = "Designed to help reload large revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with." + desc = "A 6-round ammo holder for .45-70 revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." ammo_type = /obj/item/ammo_casing/a4570/match /obj/item/ammo_box/a4570/hp name = "ammo holder (.45-70 hollow point)" - desc = "Designed to help reload large revolvers. Loaded with expanding rounds that cause massive tissue damage at the cost of armor penetration." + desc = "A 6-round ammo holder for .45-70 revolvers. These hollow point rounds do legendary damage against soft targets, but are nearly ineffective against armored ones." ammo_type = /obj/item/ammo_casing/a357/hp /obj/item/ammo_box/a4570/explosive name = "ammo holder (.45-70 explosive)" - desc = "Designed to help reload large revolvers. These rounds contain a small explosive charge that detonates on impact, creating large wounds and potentially removing limbs." + desc = "A 6-round ammo holder for .45-70 revolvers. These explosive rounds contain a small explosive charge that detonates on impact, creating large wounds and potentially removing limbs." ammo_type = /obj/item/ammo_casing/a4570/explosive +// 7.62x38mmR Ammo Holders (Nagant Revolver) + /obj/item/ammo_box/n762_clip name = "ammo holder (7.62x38mmR)" - desc = "Designed to help reload Nagant revolvers." + desc = "A 7-round ammo holder for the Nagant revolver. These rounds do good damage, but struggle against armor." icon_state = "n762" - ammo_type = /obj/item/ammo_casing/n762 + ammo_type = /obj/item/ammo_casing/n762_38 max_ammo = 7 multiple_sprites = AMMO_BOX_PER_BULLET item_flags = NO_MAT_REDEMPTION w_class = WEIGHT_CLASS_TINY instant_load = TRUE +// .38 special Speed Loaders (Colt Detective Special) + /obj/item/ammo_box/c38 - name = "speed loader (.38)" - desc = "Designed to quickly reload revolvers." + name = "speed loader (.38 special)" + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These rounds do moderate damage, but plink against armor." icon_state = "38" ammo_type = /obj/item/ammo_casing/c38 max_ammo = 6 @@ -69,63 +77,112 @@ /obj/item/ammo_box/c38/trac name = "speed loader (.38 TRAC)" - desc = "Designed to quickly reload revolvers. TRAC bullets embed a tracking implant within the target's body." + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These TRAC rounds do pitiful damage, but embed a tracking device in targets hit." ammo_type = /obj/item/ammo_casing/c38/trac /obj/item/ammo_box/c38/match name = "speed loader (.38 match)" - desc = "Designed to quickly reload revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with." + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." ammo_type = /obj/item/ammo_casing/c38/match /obj/item/ammo_box/c38/match/bouncy name = "speed loader (.38 rubber)" - desc = "Designed to quickly reload revolvers. These rounds are incredibly bouncy and MOSTLY nonlethal, making them great to show off trickshots with." + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. 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 /obj/item/ammo_box/c38/dumdum name = "speed loader (.38 dum-dum)" - desc = "Designed to quickly reload revolvers. Dum-dum bullets shatter on impact and shred the target's innards, likely getting caught inside." + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These dum-dum bullets shatter on impact and embed in the target's innards. However, they're nearly ineffective against armor and do okay damage." ammo_type = /obj/item/ammo_casing/c38/dumdum /obj/item/ammo_box/c38/hotshot name = "speed loader (.38 hot shot)" - desc = "Designed to quickly reload revolvers. Hot shot bullets contain an incendiary payload." + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These hot shot bullets contain an incendiary payload that set targets alight." ammo_type = /obj/item/ammo_casing/c38/hotshot /obj/item/ammo_box/c38/iceblox name = "speed loader (.38 iceblox)" - desc = "Designed to quickly reload revolvers. Iceblox bullets contain a cryogenic payload." + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These iceblox bullets contain a cryogenic payload that chills targets." ammo_type = /obj/item/ammo_casing/c38/iceblox +// 7.62x54mmR Stripper Clip (Illestren Hunting Rifle) + +/obj/item/ammo_box/a762 + name = "stripper clip (7.62x54mmR)" + desc = "A 5-round stripper clip for the Illestren Hunting Rifle. These rounds do good damage with significant armor penetration." + icon_state = "762" + ammo_type = /obj/item/ammo_casing/a762_54 + max_ammo = 5 + multiple_sprites = AMMO_BOX_PER_BULLET + w_class = WEIGHT_CLASS_TINY + instant_load = TRUE + +// 8x58mm Stripper Clip (SSG-669C) + +/obj/item/ammo_box/a858 + name = "stripper clip (8x58mm)" + desc = "A 5-round stripper clip for the SSG-669C rifle. These rounds do good damage with significant armor penetration." + icon_state = "762" + ammo_type = /obj/item/ammo_casing/caseless/a858 + max_ammo = 5 + multiple_sprites = AMMO_BOX_PER_BULLET + +// .300 Blackout Stripper Clip (Polymer Survivor Rifle) + +/obj/item/ammo_box/aac_300blk_stripper + name = "stripper clip (.300 BLK)" + desc = "A 5-round stripper clip for makeshift bolt-action rifles. These rounds do good damage with good armor penetration." + icon_state = "762" + ammo_type = /obj/item/ammo_casing/aac_300blk + caliber = ".300 BLK" + max_ammo = 5 + multiple_sprites = AMMO_BOX_PER_BULLET + w_class = WEIGHT_CLASS_TINY + instant_load = TRUE + +// Ferromagnetic Pellet Speed Loader (Claris) + +/obj/item/ammo_box/amagpellet_claris + name = "\improper Claris speed loader (ferromagnetic pellet)" + desc = "A 22-round speed loader for quickly reloading the Claris rifle. Ferromagnetic pellets do okay damage with significant armor penetration." + icon_state = "claris-sl" + ammo_type = /obj/item/ammo_casing/caseless/gauss + max_ammo = 22 + multiple_sprites = AMMO_BOX_FULL_EMPTY + item_flags = NO_MAT_REDEMPTION + instant_load = TRUE + +// Ammo Boxes + /obj/item/ammo_box/c38_box name = "ammo box (.38)" - desc = "A box of standard .38 ammo." + desc = "A box of standard .38 special ammo." icon_state = "38box" ammo_type = /obj/item/ammo_casing/c38 max_ammo = 50 /obj/item/ammo_box/a12g - name = "ammo box (12ga buckshot)" - desc = "A box of 12 gauge buckshot shells, devastating at close range." + name = "ammo box (12g buckshot)" + desc = "A box of 12-gauge buckshot shells, devastating at close range." icon_state = "12gbox-buckshot" ammo_type = /obj/item/ammo_casing/shotgun/buckshot max_ammo = 25 /obj/item/ammo_box/a12g/slug - name = "ammo box (12ga slug)" - desc = "A box of 12 gauge slugs, for improved accuracy and penetration." + name = "ammo box (12g slug)" + desc = "A box of 12-gauge slugs, for improved accuracy and penetration." icon_state = "12gbox-slug" ammo_type = /obj/item/ammo_casing/shotgun /obj/item/ammo_box/a12g/beanbag - name = "ammo box (12ga beanbag)" - desc = "A box of 12 gauge beanbag shells, for incapacitating targets." + name = "ammo box (12g beanbag)" + desc = "A box of 12-gauge beanbag shells, for incapacitating targets." icon_state = "12gbox-beanbag" ammo_type = /obj/item/ammo_casing/shotgun/beanbag /obj/item/ammo_box/a12g/rubbershot - name = "ammo box (12ga rubbershot)" - desc = "A box of 12 gauge rubbershot shells, designed for riot control." + name = "ammo box (12g rubbershot)" + desc = "A box of 12-gauge rubbershot shells, designed for riot control." icon_state = "12gbox-rubbershot" ammo_type = /obj/item/ammo_casing/shotgun/rubbershot @@ -146,7 +203,7 @@ name = "ammo box (9mm rubbershot)" desc = "A box of 9mm rubbershot ammo, designed to disable targets without causing serious damage." icon_state = "9mmbox-rubbershot" - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot + ammo_type = /obj/item/ammo_casing/c9mm/rubber /obj/item/ammo_box/c9mm/ap name = "ammo box (9mm armor-piercing)" @@ -183,7 +240,7 @@ name = "ammo box (10mm rubbershot)" desc = "A box of 10mm rubbershot ammo, designed to disable targets without causing serious damage." icon_state = "10mmbox-rubbershot" - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot + ammo_type = /obj/item/ammo_casing/c9mm/rubber /obj/item/ammo_box/c10mm/ap name = "ammo box (10mm armor-piercing)" @@ -201,7 +258,7 @@ name = "ammo box (10mm incendiary)" desc = "A box of 10mm incendiary ammo, designed to ignite targets at the cost of initial damage." icon_state = "10mmbox-incendiary" - ammo_type = /obj/item/ammo_casing/c10mm/fire + ammo_type = /obj/item/ammo_casing/c10mm/inc /obj/item/ammo_box/c45 name = "ammo box (.45)" @@ -220,7 +277,7 @@ name = "ammo box (.45 rubbershot)" desc = "A box of .45 rubbershot ammo, designed to disable targets without causing serious damage." icon_state = "45box-rubbershot" - ammo_type = /obj/item/ammo_casing/c45/rubbershot + ammo_type = /obj/item/ammo_casing/c45/rubber /obj/item/ammo_box/c45/ap name = "ammo box (.45 armor-piercing)" @@ -238,7 +295,7 @@ name = "ammo box (.45 incendiary)" desc = "A box of .45 incendiary ammo, designed to ignite targets at the cost of initial damage." icon_state = "45box-incendiary" - ammo_type = /obj/item/ammo_casing/c45/fire + ammo_type = /obj/item/ammo_casing/c45/inc /obj/item/ammo_box/c556mmHITP name = "ammo box (5.56mm HITP caseless)" @@ -279,29 +336,11 @@ multiple_sprites = AMMO_BOX_PER_BULLET w_class = WEIGHT_CLASS_NORMAL -/obj/item/ammo_box/a762 - name = "stripper clip (7.62x54mmR)" - desc = "A stripper clip of rimmed rifle cartridges." - icon_state = "762" - ammo_type = /obj/item/ammo_casing/a762 - max_ammo = 5 - multiple_sprites = AMMO_BOX_PER_BULLET - w_class = WEIGHT_CLASS_TINY - instant_load = TRUE - -/obj/item/ammo_box/a858 - name = "stripper clip (8x58mm)" - desc = "A rifle-cartrige stripper clip for the SSG-669C." - icon_state = "762" - ammo_type = /obj/item/ammo_casing/caseless/a858 - max_ammo = 5 - multiple_sprites = AMMO_BOX_PER_BULLET - /obj/item/ammo_box/n762 name = "ammo box (7.62x38mmR)" icon_state = "n762box" desc = "A box of unusual revolver ammunition with the bullet seated below the mouth of the cartridge." - ammo_type = /obj/item/ammo_casing/n762 + ammo_type = /obj/item/ammo_casing/n762_38 max_ammo = 28 /obj/item/ammo_box/a762_39 @@ -329,20 +368,20 @@ ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot custom_materials = list(/datum/material/iron = 50000) -/obj/item/ammo_box/magazine/zip_ammo_9mm - name = "budget pistol magazine(9mm)" - desc = "A cheaply-made, poorly-designed pistol magazine that can only hold 4 rounds." - icon_state = "ZipAmmo9mm" - ammo_type = /obj/item/ammo_casing/c9mm/surplus - caliber = "9mm" - max_ammo = 4 - custom_materials = list(/datum/material/iron = 20000) +/obj/item/ammo_box/c22lr_box + name = "ammo box (.22 LR)" + desc = "A box of standard .22 LR ammo." + icon_state = "22lrbox" + ammo_type = /obj/item/ammo_casing/c22lr + max_ammo = 75 -/obj/item/ammo_box/amagpellet_claris - name = "claris speed loader (ferromagnetic pellet)" - desc = "Designed to quickly reload the claris." - icon_state = "claris-sl" - ammo_type = /obj/item/ammo_casing/caseless/gauss - max_ammo = 22 - multiple_sprites = AMMO_BOX_FULL_EMPTY - item_flags = NO_MAT_REDEMPTION +/obj/item/ammo_box/c45_speedloader + name = "speed loader (.45)" + desc = "Designed to quickly reload revolvers." + icon_state = "38" + ammo_type = /obj/item/ammo_casing/c45 + max_ammo = 6 + multiple_sprites = AMMO_BOX_PER_BULLET + custom_materials = list(/datum/material/iron = 15000) + w_class = WEIGHT_CLASS_TINY + instant_load = TRUE diff --git a/code/modules/projectiles/boxes_magazines/external/gauss.dm b/code/modules/projectiles/boxes_magazines/external/gauss.dm index 1d5800e75bbd..fa3797707ce6 100644 --- a/code/modules/projectiles/boxes_magazines/external/gauss.dm +++ b/code/modules/projectiles/boxes_magazines/external/gauss.dm @@ -1,5 +1,6 @@ /obj/item/ammo_box/magazine/gauss name = "gauss magazine (ferromagnetic pellets)" + desc = "A 24-round magazine for the prototype gauss rifle. Ferromagnetic pellets do okay damage with significant armor penetration." icon_state = "mediummagmag" ammo_type = /obj/item/ammo_casing/caseless/gauss caliber = "pellet" @@ -7,7 +8,8 @@ multiple_sprites = AMMO_BOX_FULL_EMPTY /obj/item/ammo_box/magazine/modelh - name = "model-h magazine (ferromagnetic slugs)" + name = "Model H magazine (ferromagnetic slugs)" + desc = "A 10-round magazine for the Model H pistol. Ferromagnetic slugs are slow and incredibly powerful bullets, but are easily stopped by even a sliver of armor." icon_state = "smallmagmag" ammo_type = /obj/item/ammo_casing/caseless/gauss/slug caliber = "slug" @@ -15,7 +17,8 @@ multiple_sprites = AMMO_BOX_FULL_EMPTY /obj/item/ammo_box/magazine/gar - name = "gar tube magazine (ferromagnetic lances)" + name = "GAR tube magazine (ferromagnetic lances)" + desc = "A 32-round magazined for the GAR assault rifle. Ferromagnetic lances do good damage with significant armor penetration." icon_state = "gar-mag" ammo_type = /obj/item/ammo_casing/caseless/gauss/lance caliber = "lance" diff --git a/code/modules/projectiles/boxes_magazines/external/grenade.dm b/code/modules/projectiles/boxes_magazines/external/grenade.dm index 315ed8a259a5..8c3ee5743b58 100644 --- a/code/modules/projectiles/boxes_magazines/external/grenade.dm +++ b/code/modules/projectiles/boxes_magazines/external/grenade.dm @@ -1,5 +1,6 @@ /obj/item/ammo_box/magazine/m75 name = "specialized magazine (.75)" + desc = "An 8-round specialized magazine for the gyrojet pistol. .75 rounds explode on impact." icon_state = "75" ammo_type = /obj/item/ammo_casing/caseless/a75 caliber = "75" diff --git a/code/modules/projectiles/boxes_magazines/external/lmg.dm b/code/modules/projectiles/boxes_magazines/external/lmg.dm index f49c58aeb8e9..402db1502853 100644 --- a/code/modules/projectiles/boxes_magazines/external/lmg.dm +++ b/code/modules/projectiles/boxes_magazines/external/lmg.dm @@ -1,28 +1,33 @@ /obj/item/ammo_box/magazine/mm712x82 name = "box magazine (7.12x82mm)" + desc = "A 50-round box magazine for the L6 SAW machine gun. These rounds do moderate damage with significant armor penetration." icon_state = "a762-50" base_icon_state = "a762" ammo_type = /obj/item/ammo_casing/mm712x82 caliber = "7.12x82mm" - max_ammo = 50 + max_ammo = 100 w_class = WEIGHT_CLASS_NORMAL /obj/item/ammo_box/magazine/mm712x82/hollow name = "box magazine (7.12x82mm HP)" - ammo_type = /obj/item/ammo_casing/mm712x82/hollow + desc = "A 50-round box magazine for the L6 SAW machine gun. These hollow point rounds do incredible damage against soft targets, but struggle against armored ones." + ammo_type = /obj/item/ammo_casing/mm712x82/hp /obj/item/ammo_box/magazine/mm712x82/ap name = "box magazine (7.12x82mm AP)" + desc = "A 50-round box magazine for the L6 SAW machine gun. These armor-piercing rounds are nearly perfect at piercing protective equipment." ammo_type = /obj/item/ammo_casing/mm712x82/ap -/obj/item/ammo_box/magazine/mm712x82/incen - name = "box magazine (7.12x82mm Incendiary)" - ammo_type = /obj/item/ammo_casing/mm712x82/incen +/obj/item/ammo_box/magazine/mm712x82/inc + name = "box magazine (7.12x82mm incendiary)" + desc = "A 50-round box magazine for the L6 SAW machine gun. These incendiary rounds deal mediocre damage, but leave flaming trails which set targets ablaze." + ammo_type = /obj/item/ammo_casing/mm712x82/inc /obj/item/ammo_box/magazine/mm712x82/match - name = "box magazine (7.12x82mm Match)" + name = "box magazine (7.12x82mm match)" + desc = "A 50-round box magazine for the L6 SAW machine gun. These match rounds travel quicker with incredible armor penetration. Can also ricochet off targets." ammo_type = /obj/item/ammo_casing/mm712x82/match /obj/item/ammo_box/magazine/mm712x82/update_icon_state() . = ..() - icon_state = "[base_icon_state]-[round(ammo_count(), 10)]" + icon_state = "[base_icon_state]-[round(ammo_count(), 20)]" diff --git a/code/modules/projectiles/boxes_magazines/external/pistol.dm b/code/modules/projectiles/boxes_magazines/external/pistol.dm index 44dc2b3d24d7..cc92a758eba0 100644 --- a/code/modules/projectiles/boxes_magazines/external/pistol.dm +++ b/code/modules/projectiles/boxes_magazines/external/pistol.dm @@ -1,64 +1,64 @@ /obj/item/ammo_box/magazine/m10mm name = "pistol magazine (10mm)" - desc = "A single-stack handgun magazine designed to chamber 10mm." + desc = "An 8-round single-stack magazine for the stechkin pistol. These rounds do moderate damage, but struggle against armor." icon_state = "9x19p" ammo_type = /obj/item/ammo_casing/c10mm caliber = "10mm" max_ammo = 8 multiple_sprites = AMMO_BOX_FULL_EMPTY -/obj/item/ammo_box/magazine/m10mm/fire +/obj/item/ammo_box/magazine/m10mm/inc name = "pistol magazine (10mm incendiary)" + desc = "An 8-round single-stack magazine for the stechkin pistol. These incendiary rounds deal mediocre damage, but leave flaming trails which set targets ablaze." icon_state = "9x19pI" - desc = "A single-stack handgun magazine designed to chamber 10mm. Loaded with rounds which ignite the target." - ammo_type = /obj/item/ammo_casing/c10mm/fire + ammo_type = /obj/item/ammo_casing/c10mm/inc /obj/item/ammo_box/magazine/m10mm/hp name = "pistol magazine (10mm HP)" + desc = "An 8-round single-stack magazine for the stechkin pistol. These hollow point rounds do incredible damage against soft targets, but are nearly ineffective against armored ones." icon_state = "9x19pH" - desc= "A single-stack handgun magazine designed to chamber 10mm. Loaded with rounds which deal more damage, but are completely ineffective against armor." ammo_type = /obj/item/ammo_casing/c10mm/hp /obj/item/ammo_box/magazine/m10mm/ap name = "pistol magazine (10mm AP)" + desc = "An 8-round single-stack magazine for the stechkin pistol. These armor-piercing rounds are okay at piercing protective equipment, but lose some stopping power." icon_state = "9x19pA" - desc= "A single-stack handgun magazine designed to chamber 10mm. Loaded with rounds which penetrate armour, but are less effective against normal targets." ammo_type = /obj/item/ammo_casing/c10mm/ap -/obj/item/ammo_box/magazine/m10mm/rubbershot - name = "pistol magazine (10mm rubbershot)" +/obj/item/ammo_box/magazine/m10mm/rubber + name = "pistol magazine (10mm rubber)" + desc = "An 8-round handgun magazine for the stechkin pistol. These rubber rounds trade lethality for a heavy impact which can incapacitate targets. Performs even worse against armor." icon_state = "9x19pR" - desc = "A single-stack handgun magazine designed to chamber 10mm. Loaded with less-lethal rubber rounds which disable targets without causing serious damage." - ammo_type = /obj/item/ammo_casing/c10mm/rubbershot + ammo_type = /obj/item/ammo_casing/c10mm/rubber /obj/item/ammo_box/magazine/m45 name = "pistol magazine (.45)" - desc = "A single stack M1911 reproduction magazine, faithfully designed to chamber .45." + desc = "An 8-round single-stack magazine for the M1911 pistol. These rounds do moderate damage, but struggle against armor." icon_state = "45-8" base_icon_state = "45" ammo_type = /obj/item/ammo_casing/c45 caliber = ".45" max_ammo = 8 -/obj/item/ammo_box/magazine/m45/fire +/obj/item/ammo_box/magazine/m45/inc name = "pistol magazine (.45 incendiary)" - desc = "A single stack M1911 reproduction magazine, faithfully designed to chamber .45. Loaded with rounds which ignite the target." - ammo_type = /obj/item/ammo_casing/c45/fire + desc = "An 8-round single-stack magazine for the M1911 pistol. These incendiary rounds deal mediocre damage, but leave flaming trails which set targets ablaze." + ammo_type = /obj/item/ammo_casing/c45/inc /obj/item/ammo_box/magazine/m45/hp name = "pistol magazine (.45 HP)" - desc= "A single stack M1911 reproduction magazine, faithfully designed to chamber .45. Loaded with rounds which deal more damage, but are completely ineffective against armor." + desc= "An 8-round single-stack magazine for the M1911 pistol. These hollow point rounds do incredible damage against soft targets, but are nearly ineffective against armored ones." ammo_type = /obj/item/ammo_casing/c45/hp /obj/item/ammo_box/magazine/m45/ap name = "pistol magazine (.45 AP)" - desc= "A single stack M1911 reproduction magazine, faithfully designed to chamber .45. Loaded with rounds which penetrate armour, but are less effective against normal targets." + desc= "An 8-round single-stack magazine for the M1911 pistol. These armor-piercing rounds are okay at piercing protective equipment, but lose some stopping power." ammo_type = /obj/item/ammo_casing/c45/ap -/obj/item/ammo_box/magazine/m45/rubbershot - name = "pistol magazine (.45 rubbershot)" - desc = "A single stack M1911 reproduction magazine, faithfully designed to chamber .45. Loaded with less-lethal rubber rounds which disable targets without causing serious damage." - ammo_type = /obj/item/ammo_casing/c45/rubbershot +/obj/item/ammo_box/magazine/m45/rubber + name = "pistol magazine (.45 rubber)" + desc = "An 8-round single-stack magazine for the M1911 pistol. These rubber rounds trade lethality for a heavy impact which can incapacitate targets. Performs even worse against armor." + ammo_type = /obj/item/ammo_casing/c45/rubber /obj/item/ammo_box/magazine/m45/update_icon_state() . = ..() @@ -66,32 +66,32 @@ /obj/item/ammo_box/magazine/co9mm name = "pistol magazine (9mm)" - desc = "A double-stack pistol magazine designed to chamber 9mm." + desc = "A 10-round double-stack magazine for standard-issue 9mm pistols. These rounds do okay damage, but struggle against armor." icon_state = "co9mm-8" base_icon_state = "co9mm" ammo_type = /obj/item/ammo_casing/c9mm caliber = "9mm" max_ammo = 10 -/obj/item/ammo_box/magazine/co9mm/fire +/obj/item/ammo_box/magazine/co9mm/inc name = "pistol magazine (9mm incendiary)" - desc = "A double-stack pistol magazine designed to chamber 9mm. Loaded with rounds which ignite the target." + desc = "A 10-round double-stack magazine for standard-issue 9mm pistols. These incendiary rounds deal pitiful damage, but leave flaming trails which set targets ablaze." ammo_type = /obj/item/ammo_casing/c9mm/inc /obj/item/ammo_box/magazine/co9mm/hp name = "pistol magazine (9mm HP)" - desc= "A double-stack pistol magazine designed to chamber 9mm. Loaded with rounds which deal more damage, but are completely ineffective against armor." + desc= "A 10-round double-stack magazine for standard-issue 9mm pistols. These hollow point rounds do significant damage against soft targets, but are nearly ineffective against armored ones." ammo_type = /obj/item/ammo_casing/c9mm/hp /obj/item/ammo_box/magazine/co9mm/ap name = "pistol magazine (9mm AP)" - desc= "A double-stack pistol magazine designed to chamber 9mm. Loaded with rounds which penetrate armour, but are less effective against normal targets." + desc= "A 10-round double-stack magazine for standard-issue 9mm pistols. These armor-piercing rounds are okay at piercing protective equipment, but lose some stopping power." ammo_type = /obj/item/ammo_casing/c9mm/ap -/obj/item/ammo_box/magazine/co9mm/rubbershot - name = "pistol magazine (9mm rubbershot)" - desc = "A double-stack pistol magazine designed to chamber 9mm. Loaded with less-lethal rubber rounds which disable targets without causing serious damage." - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot +/obj/item/ammo_box/magazine/co9mm/rubber + name = "pistol magazine (9mm rubber)" + desc = "A 10-round double-stack magazine for standard-issue 9mm pistols. These rubber rounds trade lethality for a heavy impact which can incapacitate targets. Performs even worse against armor." + ammo_type = /obj/item/ammo_casing/c9mm/rubber /obj/item/ammo_box/magazine/co9mm/update_icon_state() . = ..() @@ -99,7 +99,7 @@ /obj/item/ammo_box/magazine/pistolm9mm name = "large pistol magazine (9mm)" - desc = "An extended double stack pistol magazine, designed to chamber 9mm." + desc = "A long, 15-round double-stack magazine designed for the stechkin APS pistol. These rounds do okay damage, but struggle against armor." icon_state = "9x19p-8" base_icon_state = "9x19p" ammo_type = /obj/item/ammo_casing/c9mm @@ -112,7 +112,7 @@ /obj/item/ammo_box/magazine/m50 name = "handgun magazine (.50 AE)" - desc = "An oversized handgun magazine designed to chamber .50 AE." + desc = "An oversized, 7-round handgun magazine for the Desert Eagle handgun. These rounds do significant damage with average performance against armor." icon_state = "50ae" ammo_type = /obj/item/ammo_casing/a50AE caliber = ".50 AE" @@ -127,3 +127,21 @@ caliber = ".38" max_ammo = 3 w_class = WEIGHT_CLASS_TINY + +/obj/item/ammo_box/magazine/zip_ammo_9mm + name = "budget pistol magazine (9mm)" + desc = "A cheaply-made, 4-round surplus magazine that fits standard-issue 9mm pistols. These rounds do okay damage, but struggle against armor." + icon_state = "ZipAmmo9mm" + ammo_type = /obj/item/ammo_casing/c9mm/surplus + caliber = "9mm" + max_ammo = 4 + custom_materials = list(/datum/material/iron = 20000) + +/obj/item/ammo_box/magazine/m22lr + name = "pistol magazine (.22 LR)" + desc = "A single-stack handgun magazine designed to chamber .22 LR. It's rather tiny, all things considered." + icon_state = "pistol_22lr" + ammo_type = /obj/item/ammo_casing/c22lr + caliber = "22lr" + max_ammo = 10 + w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/projectiles/boxes_magazines/external/rechargable.dm b/code/modules/projectiles/boxes_magazines/external/rechargable.dm index 5a4af7929cff..f5cb7e7ee9a2 100644 --- a/code/modules/projectiles/boxes_magazines/external/rechargable.dm +++ b/code/modules/projectiles/boxes_magazines/external/rechargable.dm @@ -1,6 +1,6 @@ /obj/item/ammo_box/magazine/recharge name = "power pack" - desc = "A rechargeable, detachable battery that serves as a magazine for laser rifles." + desc = "A detachable, rechargeable battery for the laser rifle. Grants 20 shots at full charge." icon_state = "oldrifle-20" base_icon_state = "oldrifle" ammo_type = /obj/item/ammo_casing/caseless/laser diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm index 1e184405effa..9ae63763593b 100644 --- a/code/modules/projectiles/boxes_magazines/external/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm @@ -1,6 +1,6 @@ /obj/item/ammo_box/magazine/m10mm/rifle name = "rifle magazine (10mm)" - desc = "A well-worn magazine fitted for surplus rifles, designed to chamber 10mm." + desc = "A well-worn, 10-round magazine for the surplus rifle. These rounds do moderate damage, but struggle against armor." icon_state = "75-8" base_icon_state = "75" ammo_type = /obj/item/ammo_casing/c10mm @@ -13,21 +13,21 @@ /obj/item/ammo_box/magazine/m556 name = "toploader magazine (5.56x45mm)" - desc = "An advanced top-loading assault rifle magazine, designed to chamber 5.56x45mm." + desc = "An advanced, 30-round toploading magazine for the M-90gl Carbine. These rounds do moderate damage with good armor penetration." icon_state = "5.56m" - ammo_type = /obj/item/ammo_casing/a556 + ammo_type = /obj/item/ammo_casing/a556_39 caliber = "5.56x45mm" max_ammo = 30 multiple_sprites = AMMO_BOX_FULL_EMPTY /obj/item/ammo_box/magazine/rifle47x33mm - name = "\improper SolGov AR magazine (4.73x33mm caseless)" - desc = "A rather large magazine designed to chamber 4.73x33mm caseless." + name = "\improper Solarian LMG magazine (4.73x33mm caseless)" + desc = "A large, 50-round magazine for the Solar machine gun. These rounds do moderate damage with good armor penetration." icon_state = "47x33mm-50" base_icon_state = "47x33mm" ammo_type = /obj/item/ammo_casing/caseless/c47x33mm caliber = "4.73x33mm caseless" - max_ammo = 50 //brrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr + max_ammo = 100 //brrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr w_class = WEIGHT_CLASS_NORMAL /obj/item/ammo_box/magazine/rifle47x33mm/update_icon_state() @@ -35,8 +35,8 @@ icon_state = "[base_icon_state]-[round(ammo_count(),5)]" /obj/item/ammo_box/magazine/aks74u - name = "\improper assault rifle Magazine (5.45x39mm)" - desc = "A slightly curved assault rifle magazine designed to chamber 5.45x39mm." + name = "assault rifle magazine (5.45x39mm)" + desc = "A slightly-curved, 30-round magazine for the AKS-74U. These rounds do moderate damage with good armor penetration." icon_state = "ak47_mag" ammo_type = /obj/item/ammo_casing/a545_39 caliber = "5.45x39mm" @@ -47,8 +47,8 @@ icon_state = "ak47_mag-[!!ammo_count()]" /obj/item/ammo_box/magazine/aknt - name = "\improper subcaliber assault rifle magazine (4.6x30mm))" - desc = "A cheap polymer assault rifle magazine designed to chamber 4.6x30mm." + name = "subcaliber assault rifle magazine (4.6x30mm)" + desc = "A cheap, 30-round polymer magazine for the NT-SVG. These rounds do okay damage with average performance against armor." icon_state = "ak47_mag" ammo_type = /obj/item/ammo_casing/c46x30mm caliber = "4.6x30mm" @@ -59,20 +59,20 @@ icon_state = "ak47_mag-[!!ammo_count()]" /obj/item/ammo_box/magazine/ak47 - name = "\improper assault rifle magazine (7.62x39mm)" - desc = "A sharply curved assault rifle magazine, designed to chamber 7.62x39mm." + name = "assault rifle magazine (7.62x39mm)" + desc = "A sharply-curved, 20-round magazine for 7.62x39mm assault rifles. These rounds do good damage with good armor penetration." icon_state = "ak47_mag" ammo_type = /obj/item/ammo_casing/a762_39 caliber = "7.62x39mm" - max_ammo = 20 + max_ammo = 30 /obj/item/ammo_box/magazine/ak47/update_icon_state() . = ..() icon_state = "ak47_mag-[!!ammo_count()]" /obj/item/ammo_box/magazine/ebr - name = "\improper battle rifle magazine (.308 Winchester)" - desc = "A small steel battle rifle magazine designed to chamber .308 Winchester." + name = "battle rifle magazine (.308 Winchester)" + desc = "A small, 10-round steel magazine for the M514 EBR. These rounds do good damage with significant armor penetration." icon_state = "ebr_mag" ammo_type = /obj/item/ammo_casing/win308 caliber = ".308 Winchester" @@ -83,7 +83,8 @@ icon_state = "ebr_mag-[!!ammo_count()]" /obj/item/ammo_box/magazine/gal - name = "\improper CM-GAL Magazine (.308)" + name = "\improper GAL Magazine (.308 Winchester)" + desc = "A standard 10-round magazine for GAL platform DMRs. These rounds do good damage with significant armor penetration." icon_state = "ebr_mag" ammo_type = /obj/item/ammo_casing/win308 caliber = ".308 Winchester" @@ -94,10 +95,10 @@ icon_state = "galmag-[!!ammo_count()]" /obj/item/ammo_box/magazine/p16 - name = "\improper assault rifle magazine (5.56x45mm)" - desc = "A simple assault rifle magazine designed to chamber 5.56x45mm." + name = "assault rifle magazine (5.56x45mm)" + desc = "A simple, 30-round magazine for 5.56x45mm assault rifles. These rounds do moderate damage with good armor penetration." icon_state = "p16_mag" - ammo_type = /obj/item/ammo_casing/a556 + ammo_type = /obj/item/ammo_casing/a556_39 caliber = "5.56x45mm" max_ammo = 30 @@ -106,23 +107,13 @@ icon_state = "p16_mag-[!!ammo_count()]" /obj/item/ammo_box/magazine/swiss - name = "\improper Swiss Cheese Magazine (5.56mm)" + name = "\improper Swiss Cheese Magazine (5.56x45mm)" + desc = "A deft, 30-round magazine for the Swiss Cheese assault rifle. These rounds do moderate damage with good armor penetration." icon_state = "swissmag" - ammo_type = /obj/item/ammo_casing/a556 - caliber = "a556" + ammo_type = /obj/item/ammo_casing/a556_39 + caliber = "5.56x45mm" max_ammo = 30 /obj/item/ammo_box/magazine/swiss/update_icon_state() . = ..() icon_state = "swissmag-[!!ammo_count()]" - -/obj/item/ammo_box/aac_300blk_stripper - name = "stripper clip (.300 BLK)" - desc = "A stripper clip fitted for .300 Blackout." - icon_state = "762" - ammo_type = /obj/item/ammo_casing/aac_300blk - caliber = ".300 BLK" - max_ammo = 5 - multiple_sprites = AMMO_BOX_PER_BULLET - w_class = WEIGHT_CLASS_TINY - instant_load = TRUE diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index 9bf2073fa443..587718e5caad 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -1,7 +1,7 @@ /obj/item/ammo_box/magazine/wt550m9 name = "wt550 magazine (4.6x30mm)" - desc = "A compact top-loading PDW magazine, designed to chamber 4.6x30mm." - icon_state = "46x30mmt-20" + desc = "A compact, 30-round top-loading magazine for the WT-550 Automatic Rifle. These rounds do okay damage with average performance against armor." + icon_state = "46x30mmt-30" base_icon_state = "46x30mmt" ammo_type = /obj/item/ammo_casing/c46x30mm caliber = "4.6x30mm" @@ -9,30 +9,25 @@ /obj/item/ammo_box/magazine/wt550m9/update_icon_state() . = ..() - icon_state = "[base_icon_state]-[round(ammo_count(), 4)]" + icon_state = "[base_icon_state]-[round(ammo_count(), 6)]" -/obj/item/ammo_box/magazine/wt550m9/wtap - name = "wt550 magazine (Armour Piercing 4.6x30mm)" - icon_state = "46x30mmtA-20" +/obj/item/ammo_box/magazine/wt550m9/ap + name = "wt550 magazine (4.6x30mm AP)" + desc = "A compact, 30-round top-loading magazine for the WT-550 Automatic Rifle. These armor-piercing rounds are great at piercing protective equipment, but lose some stopping power." + icon_state = "46x30mmtA-30" base_icon_state = "46x30mmtA" ammo_type = /obj/item/ammo_casing/c46x30mm/ap -/obj/item/ammo_box/magazine/wt550m9/wtap/update_icon_state() - . = ..() - icon_state = "[base_icon_state]-[round(ammo_count(), 4)]" - -/obj/item/ammo_box/magazine/wt550m9/wtic - name = "wt550 magazine (Incendiary 4.6x30mm)" - icon_state = "46x30mmtI-20" +/obj/item/ammo_box/magazine/wt550m9/inc + name = "wt550 magazine (4.6x30mm incendiary)" + desc = "A compact, 30-round top-loading magazine for the WT-550 Automatic Rifle. These incendiary rounds deal pitiful damage, but leave flaming trails which set targets ablaze." + icon_state = "46x30mmtI-30" + base_icon_state = "46x30mmtI" ammo_type = /obj/item/ammo_casing/c46x30mm/inc -/obj/item/ammo_box/magazine/wt550m9/wtic/update_icon_state() - . = ..() - icon_state = "[base_icon_state]-[round(ammo_count(),4)]" - /obj/item/ammo_box/magazine/uzim9mm name = "long SMG magazine (9mm)" - desc = "A long submachine gun magazine, designed to chamber 9mm." + desc = "A thin, 32-round magazine for the Uzi SMG. These rounds do okay damage, but struggle against armor." icon_state = "uzi9mm-32" base_icon_state = "uzi9mm" ammo_type = /obj/item/ammo_casing/c9mm @@ -45,7 +40,7 @@ /obj/item/ammo_box/magazine/smgm9mm name = "SMG magazine (9mm)" - desc = "A submachine gun magazine, designed to chamber 9mm." + desc = "A 30-round magazine for 9mm submachine guns. These rounds do okay damage, but struggle against armor." icon_state = "smg9mm-42" base_icon_state = "smg9mm" ammo_type = /obj/item/ammo_casing/c9mm @@ -57,19 +52,23 @@ icon_state = "[base_icon_state]-[ammo_count() ? 42 : 0]" /obj/item/ammo_box/magazine/smgm9mm/ap - name = "SMG magazine (Armour Piercing 9mm)" + name = "SMG magazine (9mm AP)" + desc = "A 30-round magazine for 9mm submachine guns. These armor-piercing rounds are okay at piercing protective equipment, but lose some stopping power." ammo_type = /obj/item/ammo_casing/c9mm/ap -/obj/item/ammo_box/magazine/smgm9mm/fire - name = "SMG Magazine (Incendiary 9mm)" +/obj/item/ammo_box/magazine/smgm9mm/inc + name = "SMG Magazine (9mm incendiary)" + desc = "A 30-round magazine for 9mm submachine guns. These incendiary rounds deal pitiful damage, but leave flaming trails which set targets ablaze." ammo_type = /obj/item/ammo_casing/c9mm/inc -/obj/item/ammo_box/magazine/smgm9mm/rubbershot - name = "SMG Magazine (Rubbershot 9mm)" - ammo_type = /obj/item/ammo_casing/c9mm/rubbershot +/obj/item/ammo_box/magazine/smgm9mm/rubber + name = "SMG Magazine (9mm rubber)" + desc = "A 30-round magazine for 9mm submachine guns. These rubber rounds trade lethality for a heavy impact which can incapacitate targets. Performs even worse against armor." + ammo_type = /obj/item/ammo_casing/c9mm/rubber /obj/item/ammo_box/magazine/smgm10mm name = "SMG magazine (10mm)" + desc = "A 24-round magazine for the SkM-44(k). These rounds do moderate damage, but struggle against armor." icon_state = "smg10mm-24" base_icon_state = "smg10mm" ammo_type = /obj/item/ammo_casing/c10mm @@ -80,13 +79,14 @@ . = ..() icon_state = "[base_icon_state]-[ammo_count() == 1 ? 1 : round(ammo_count(),3)]" -/obj/item/ammo_box/magazine/smgm10mm/rubbershot - name = "SMG magazine (Rubbershot 10mm)" - ammo_type = /obj/item/ammo_casing/c10mm/rubbershot +/obj/item/ammo_box/magazine/smgm10mm/rubber + name = "SMG magazine (10mm rubber)" + desc = "A 24-round magazine for the SkM-44(k). These rubber rounds trade lethality for a heavy impact which can incapacitate targets. Performs even worse against armor." + ammo_type = /obj/item/ammo_casing/c10mm/rubber /obj/item/ammo_box/magazine/smgm45 name = "SMG magazine (.45)" - desc = "A bullpup submachine gun magazine, designed to chamber .45." + desc = "A 24-round magazine for .45 submachine guns. These rounds do moderate damage, but struggle against armor." icon_state = "c20r45-24" base_icon_state = "c20r45" ammo_type = /obj/item/ammo_casing/c45 @@ -99,7 +99,7 @@ /obj/item/ammo_box/magazine/smgm45/drum name = "drum magazine (.45)" - desc = "A bulky drum magazine for submachine guns, designed to chamber .45." + desc = "A bulky, 50-round drum magazine for .45 submachine guns. These rounds do moderate damage, but struggle against armor." icon_state = "drum45" max_ammo = 50 w_class = WEIGHT_CLASS_NORMAL @@ -110,7 +110,7 @@ /obj/item/ammo_box/magazine/pistol556mm name = "handgun magazine (5.56mm HITP caseless)" - desc = "A double-stack handgun magazine designed to chamber 5.56mm HITP caseless." + desc = "A 12-round, double-stack magazine for the Pistole C pistol. These rounds do okay damage with average performance against armor." icon_state = "5.56mmHITP-12" //ok i did it base_icon_state = "5.56mmHITP" ammo_type = /obj/item/ammo_casing/caseless/c556mm @@ -122,8 +122,8 @@ icon_state = "[base_icon_state]-[round(ammo_count(),2)]" /obj/item/ammo_box/magazine/tec9 - name = "machine pistol magazine(9mm AP)" - desc = "A very high capacity machine pistol magazine, designed to chamber 9mm." + name = "machine pistol magazine (9mm AP)" + desc = "A sizable 20-round magazine for the TEC-9 machine pistol. These armor-piercing rounds are okay at piercing protective equipment, but lose some stopping power.." icon_state = "tec_mag" ammo_type = /obj/item/ammo_casing/c9mm/ap caliber = "9mm" diff --git a/code/modules/projectiles/boxes_magazines/external/sniper.dm b/code/modules/projectiles/boxes_magazines/external/sniper.dm index 348ff6436a1c..25894102905f 100644 --- a/code/modules/projectiles/boxes_magazines/external/sniper.dm +++ b/code/modules/projectiles/boxes_magazines/external/sniper.dm @@ -1,8 +1,8 @@ /obj/item/ammo_box/magazine/sniper_rounds - name = "anti-materiel rifle magazine (.50)" + name = "anti-material rifle magazine (.50 BMG)" + desc = "A large, heavy 6-round box magazine designed for the sniper rifle. These rounds deal absurd damage, able to delimb targets, knock them on their feet, and bypass most protective equipment." icon_state = ".50mag" base_icon_state = ".50mag" - desc = "A large, heavy box magazine designed to chamber massive .50 BMG rounds." ammo_type = /obj/item/ammo_casing/p50 max_ammo = 6 caliber = ".50 BMG" @@ -13,14 +13,15 @@ icon_state = "[base_icon_state][ammo_count() ? "-ammo" : ""]" /obj/item/ammo_box/magazine/sniper_rounds/soporific - name = "anti-materiel rifle magazine (Zzzzz)" - desc = "A lower-capacity anti-materiel rifle magazine designed for specialized, soporific .50 BMG rounds." + name = "anti-material rifle magazine (.50 BMG soporific)" + desc = "A large, heavy 3-round box magazine designed for the sniper rifle. These soporific rounds are completely non-lethal, but render targets asleep for a little under a minute." icon_state = "soporific" ammo_type = /obj/item/ammo_casing/p50/soporific max_ammo = 3 /obj/item/ammo_box/magazine/sniper_rounds/penetrator - name = "anti-materiel rifle magazine (penetrator)" - desc = "A box magazine loaded with armor-piercing .50 BMG rounds powerful enough to punch through multiple targets and structures." + name = "anti-material rifle magazine (.50 BMG penetrator)" + desc = "A large, heavy 5-round box magazine designed for the sniper rifle. These penetrator rounds deal incredible damage and will penetrate most structures, though they don't knock down or delimb targets." + icon_state = "haemorrhage" ammo_type = /obj/item/ammo_casing/p50/penetrator max_ammo = 5 diff --git a/code/modules/projectiles/boxes_magazines/internal/gauss.dm b/code/modules/projectiles/boxes_magazines/internal/gauss.dm index 06527ae49197..6e561f6d26d5 100644 --- a/code/modules/projectiles/boxes_magazines/internal/gauss.dm +++ b/code/modules/projectiles/boxes_magazines/internal/gauss.dm @@ -3,3 +3,4 @@ ammo_type = /obj/item/ammo_casing/caseless/gauss caliber = "pellet" max_ammo = 22 + instant_load = TRUE diff --git a/code/modules/projectiles/boxes_magazines/internal/revolver.dm b/code/modules/projectiles/boxes_magazines/internal/revolver.dm index 737a77cc2dc7..7715d31b1323 100644 --- a/code/modules/projectiles/boxes_magazines/internal/revolver.dm +++ b/code/modules/projectiles/boxes_magazines/internal/revolver.dm @@ -7,7 +7,7 @@ /obj/item/ammo_box/magazine/internal/cylinder/rev762 name = "\improper Nagant revolver cylinder" - ammo_type = /obj/item/ammo_casing/n762 + ammo_type = /obj/item/ammo_casing/n762_38 caliber = "7.62x38mmR" max_ammo = 7 instant_load = FALSE @@ -32,3 +32,10 @@ /obj/item/ammo_box/magazine/internal/cylinder/pepperbox name = "pepperbox revolver cylinder" max_ammo = 5 + +/obj/item/ammo_box/magazine/internal/cylinder/rev45 + name = "cattleman revolver cylinder" + ammo_type = /obj/item/ammo_casing/c45 + caliber = ".45" + max_ammo = 6 + instant_load = TRUE diff --git a/code/modules/projectiles/boxes_magazines/internal/rifle.dm b/code/modules/projectiles/boxes_magazines/internal/rifle.dm index 1b9bf492eca8..b85b223c254b 100644 --- a/code/modules/projectiles/boxes_magazines/internal/rifle.dm +++ b/code/modules/projectiles/boxes_magazines/internal/rifle.dm @@ -1,14 +1,14 @@ /obj/item/ammo_box/magazine/internal/boltaction name = "bolt action rifle internal magazine" desc = "Oh god, this shouldn't be here" - ammo_type = /obj/item/ammo_casing/a762 + ammo_type = /obj/item/ammo_casing/a762_54 caliber = "7.62x54mmR" max_ammo = 5 instant_load = TRUE /obj/item/ammo_box/magazine/internal/boltaction/enchanted max_ammo = 1 - ammo_type = /obj/item/ammo_casing/a762 + ammo_type = /obj/item/ammo_casing/a762_54 /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage ammo_type = /obj/item/ammo_casing/magic/arcane_barrage diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 9d51296f3424..8402e199c438 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -31,7 +31,6 @@ var/suppressed_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg' var/suppressed_volume = 60 var/can_unsuppress = TRUE - var/recoil = 0 //boom boom shake the room var/clumsy_check = TRUE var/obj/item/ammo_casing/chambered = null trigger_guard = TRIGGER_GUARD_NORMAL //trigger guard on the weapon, hulks can't fire them with their big meaty fingers @@ -43,7 +42,6 @@ var/semicd = 0 //cooldown handler var/weapon_weight = WEAPON_LIGHT var/dual_wield_spread = 24 //additional spread when dual wielding - var/spread = 0 //Spread induced by the gun itself. var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once. var/projectile_damage_multiplier = 1 //Alters projectile damage multiplicatively based on this value. Use it for "better" or "worse" weapons that use the same ammo. @@ -77,14 +75,78 @@ var/pb_knockback = 0 + var/wielded = FALSE // true if the gun is wielded via twohanded component, shouldnt affect anything else + + var/wielded_fully = FALSE // true if the gun is wielded after delay, should affects accuracy + + ///How much the bullet scatters when fired while wielded. + var/spread = 4 + ///How much the bullet scatters when fired while unwielded. + var/spread_unwielded = 12 + + ///Screen shake when the weapon is fired while wielded. + var/recoil = 0 + ///Screen shake when the weapon is fired while unwielded. + var/recoil_unwielded = 0 + ///a multiplier of the duration the recoil takes to go back to normal view, this is (recoil*recoil_backtime_multiplier)+1 + var/recoil_backtime_multiplier = 2 + ///this is how much deviation the gun recoil can have, recoil pushes the screen towards the reverse angle you shot + some deviation which this is the max. + var/recoil_deviation = 22.5 + + ///Slowdown for wielding + var/wield_slowdown = 0.1 + ///How long between wielding and firing in tenths of seconds + var/wield_delay = 0.4 SECONDS + ///Storing value for above + var/wield_time = 0 + + ///Effect for the muzzle flash of the gun. + var/obj/effect/muzzle_flash/muzzle_flash + ///Icon state of the muzzle flash effect. + var/muzzleflash_iconstate + ///Brightness of the muzzle flash effect. + var/muzzle_flash_lum = 3 + ///Color of the muzzle flash effect. + var/muzzle_flash_color = COLOR_VERY_SOFT_YELLOW + /obj/item/gun/Initialize() . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) if(pin) pin = new pin(src) if(gun_light) alight = new(src) + muzzle_flash = new(src, muzzleflash_iconstate) build_zooming() +/obj/item/gun/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed) + +/// triggered on wield of two handed item +/obj/item/gun/proc/on_wield(obj/item/source, mob/user) + wielded = TRUE + INVOKE_ASYNC(src, .proc.do_wield, user) + +/obj/item/gun/proc/do_wield(mob/user) + user.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/gun, multiplicative_slowdown = wield_slowdown) + wield_time = world.time + wield_delay + if(wield_time > 0) + if(do_mob(user, user, wield_delay, FALSE, TRUE, CALLBACK(src, PROC_REF(is_wielded)), ignore_loc_change = TRUE)) + wielded_fully = TRUE + else + wielded_fully = TRUE + +/obj/item/gun/proc/is_wielded() + return wielded + +/// triggered on unwield of two handed item +/obj/item/gun/proc/on_unwield(obj/item/source, mob/user) + wielded = FALSE + wielded_fully = FALSE + user.remove_movespeed_modifier(/datum/movespeed_modifier/gun) + /obj/item/gun/Destroy() if(isobj(pin)) //Can still be the initial path, then we skip QDEL_NULL(pin) @@ -96,6 +158,10 @@ QDEL_NULL(chambered) if(azoom) QDEL_NULL(azoom) + if(isatom(suppressed)) //SUPPRESSED IS USED AS BOTH A TRUE/FALSE AND AS A REF, WHAT THE FUCKKKKKKKKKKKKKKKKK + QDEL_NULL(suppressed) + if(muzzle_flash) + QDEL_NULL(muzzle_flash) return ..() /obj/item/gun/handle_atom_del(atom/A) @@ -152,8 +218,15 @@ /obj/item/gun/proc/shoot_live_shot(mob/living/user, pointblank = 0, atom/pbtarget = null, message = 1) - if(recoil) - shake_camera(user, recoil + 1, recoil) + var/actual_angle = get_angle_with_scatter((user || get_turf(src)), pbtarget, rand(-recoil_deviation, recoil_deviation) + 180) + var/muzzle_angle = Get_Angle(get_turf(src), pbtarget) + if(muzzle_flash && !muzzle_flash.applied) + handle_muzzle_flash(user, muzzle_angle) + + if(wielded_fully && recoil) + simulate_recoil(user, recoil, actual_angle) + else if(!wielded_fully && recoil_unwielded) + simulate_recoil(user, recoil_unwielded, actual_angle) if(suppressed) playsound(user, suppressed_sound, suppressed_volume, vary_fire_sound, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0) @@ -222,9 +295,8 @@ if(check_botched(user)) return - var/obj/item/bodypart/other_hand = user.has_hand_for_held_index(user.get_inactive_hand_index()) //returns non-disabled inactive hands - if(weapon_weight == WEAPON_HEAVY && (user.get_inactive_held_item() || !other_hand)) - to_chat(user, "You need two hands to fire [src]!") + if(weapon_weight == WEAPON_HEAVY && (!wielded)) + to_chat(user, "You need a more secure grip to fire [src]!") return //DUAL (or more!) WIELDING var/bonus_spread = 0 @@ -237,7 +309,7 @@ else if(G.can_trigger_gun(user)) bonus_spread += dual_wield_spread loop_counter++ - addtimer(CALLBACK(G, /obj/item/gun.proc/process_fire, target, user, TRUE, params, null, bonus_spread), loop_counter) + addtimer(CALLBACK(G, TYPE_PROC_REF(/obj/item/gun, process_fire), target, user, TRUE, params, null, bonus_spread), loop_counter) return process_fire(target, user, TRUE, params, null, bonus_spread) @@ -320,8 +392,12 @@ var/sprd = 0 var/randomized_gun_spread = 0 var/rand_spr = rand() - if(spread) + + if(wielded_fully && spread) randomized_gun_spread = rand(0,spread) + else if(!wielded_fully && spread_unwielded) + randomized_gun_spread = rand(0,spread_unwielded) + if(HAS_TRAIT(user, TRAIT_POOR_AIM)) //nice shootin' tex bonus_spread += 25 var/randomized_bonus_spread = rand(0, bonus_spread) @@ -329,7 +405,7 @@ if(burst_size > 1) firing_burst = TRUE for(var/i = 1 to burst_size) - addtimer(CALLBACK(src, .proc/process_burst, user, target, message, params, zone_override, sprd, randomized_gun_spread, randomized_bonus_spread, rand_spr, i), fire_delay * (i - 1)) + addtimer(CALLBACK(src, PROC_REF(process_burst), user, target, message, params, zone_override, sprd, randomized_gun_spread, randomized_bonus_spread, rand_spr, i), fire_delay * (i - 1)) 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. @@ -351,8 +427,9 @@ return process_chamber() update_appearance() - semicd = TRUE - addtimer(CALLBACK(src, .proc/reset_semicd), fire_delay) + if(fire_delay) + semicd = TRUE + addtimer(CALLBACK(src, PROC_REF(reset_semicd)), fire_delay) if(user) user.update_inv_hands() @@ -548,7 +625,7 @@ gun_light.update_brightness() to_chat(user, "You toggle the gunlight [gun_light.on ? "on":"off"].") - playsound(user, 'sound/weapons/empty.ogg', 100, TRUE) + playsound(user, gun_light.on ? gun_light.toggle_on_sound : gun_light.toggle_off_sound, 40, TRUE) update_gunlight() /obj/item/gun/proc/update_gunlight() @@ -635,6 +712,111 @@ /obj/item/gun/proc/before_firing(atom/target,mob/user) return +/obj/item/gun/proc/simulate_recoil(mob/living/user, recoil_bonus = 0, firing_angle) + var/total_recoil = recoil_bonus + + var/actual_angle = firing_angle + rand(-recoil_deviation, recoil_deviation) + 180 + if(actual_angle > 360) + actual_angle -= 360 + if(total_recoil > 0) + recoil_camera(user, total_recoil + 1, (total_recoil * recoil_backtime_multiplier)+1, total_recoil, actual_angle) + return TRUE + +/obj/item/gun/proc/handle_muzzle_flash(mob/living/user, firing_angle) + var/atom/movable/flash_loc = user + var/prev_light = light_range + if(!light_on && (light_range <= muzzle_flash_lum)) + set_light_range(muzzle_flash_lum) + set_light_color(muzzle_flash_color) + set_light_on(TRUE) + update_light() + addtimer(CALLBACK(src, PROC_REF(reset_light_range), prev_light), 1 SECONDS) + //Offset the pixels. + switch(firing_angle) + if(0, 360) + muzzle_flash.pixel_x = 0 + muzzle_flash.pixel_y = 8 + muzzle_flash.layer = initial(muzzle_flash.layer) + if(1 to 44) + muzzle_flash.pixel_x = round(4 * ((firing_angle) / 45)) + muzzle_flash.pixel_y = 8 + muzzle_flash.layer = initial(muzzle_flash.layer) + if(45) + muzzle_flash.pixel_x = 8 + muzzle_flash.pixel_y = 8 + muzzle_flash.layer = initial(muzzle_flash.layer) + if(46 to 89) + muzzle_flash.pixel_x = 8 + muzzle_flash.pixel_y = round(4 * ((90 - firing_angle) / 45)) + muzzle_flash.layer = initial(muzzle_flash.layer) + if(90) + muzzle_flash.pixel_x = 8 + muzzle_flash.pixel_y = 0 + muzzle_flash.layer = initial(muzzle_flash.layer) + if(91 to 134) + muzzle_flash.pixel_x = 8 + muzzle_flash.pixel_y = round(-3 * ((firing_angle - 90) / 45)) + muzzle_flash.layer = initial(muzzle_flash.layer) + if(135) + muzzle_flash.pixel_x = 8 + muzzle_flash.pixel_y = -6 + muzzle_flash.layer = initial(muzzle_flash.layer) + if(136 to 179) + muzzle_flash.pixel_x = round(4 * ((180 - firing_angle) / 45)) + muzzle_flash.pixel_y = -6 + muzzle_flash.layer = ABOVE_MOB_LAYER + if(180) + muzzle_flash.pixel_x = 0 + muzzle_flash.pixel_y = -6 + muzzle_flash.layer = ABOVE_MOB_LAYER + if(181 to 224) + muzzle_flash.pixel_x = round(-6 * ((firing_angle - 180) / 45)) + muzzle_flash.pixel_y = -6 + muzzle_flash.layer = ABOVE_MOB_LAYER + if(225) + muzzle_flash.pixel_x = -6 + muzzle_flash.pixel_y = -6 + muzzle_flash.layer = initial(muzzle_flash.layer) + if(226 to 269) + muzzle_flash.pixel_x = -6 + muzzle_flash.pixel_y = round(-6 * ((270 - firing_angle) / 45)) + muzzle_flash.layer = initial(muzzle_flash.layer) + if(270) + muzzle_flash.pixel_x = -6 + muzzle_flash.pixel_y = 0 + muzzle_flash.layer = initial(muzzle_flash.layer) + if(271 to 314) + muzzle_flash.pixel_x = -6 + muzzle_flash.pixel_y = round(8 * ((firing_angle - 270) / 45)) + muzzle_flash.layer = initial(muzzle_flash.layer) + if(315) + muzzle_flash.pixel_x = -6 + muzzle_flash.pixel_y = 8 + muzzle_flash.layer = initial(muzzle_flash.layer) + if(316 to 359) + muzzle_flash.pixel_x = round(-6 * ((360 - firing_angle) / 45)) + muzzle_flash.pixel_y = 8 + muzzle_flash.layer = initial(muzzle_flash.layer) + + muzzle_flash.transform = null + muzzle_flash.transform = turn(muzzle_flash.transform, firing_angle) + flash_loc.vis_contents += muzzle_flash + muzzle_flash.applied = TRUE + + addtimer(CALLBACK(src, PROC_REF(remove_muzzle_flash), flash_loc, muzzle_flash), 0.2 SECONDS) + +/obj/item/gun/proc/reset_light_range(lightrange) + set_light_range(lightrange) + set_light_color(initial(light_color)) + if(lightrange <= 0) + set_light_on(FALSE) + update_light() + +/obj/item/gun/proc/remove_muzzle_flash(atom/movable/flash_loc, obj/effect/muzzle_flash/muzzle_flash) + if(!QDELETED(flash_loc)) + flash_loc.vis_contents -= muzzle_flash + muzzle_flash.applied = FALSE + ///////////// // ZOOMING // ///////////// @@ -675,7 +857,7 @@ zoomed = forced_zoom if(zoomed) - RegisterSignal(user, COMSIG_ATOM_DIR_CHANGE, .proc/rotate) + RegisterSignal(user, COMSIG_ATOM_DIR_CHANGE, PROC_REF(rotate)) user.client.view_size.zoomOut(zoom_out_amt, zoom_amt, direc) else UnregisterSignal(user, COMSIG_ATOM_DIR_CHANGE) diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 9efbc6169b25..90bcf0c73508 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -81,12 +81,15 @@ var/rack_delay = 5 ///time of the most recent rack, used for cooldown purposes var/recent_rack = 0 - ///Whether the gun can be tacloaded by slapping a fresh magazine directly on it - var/tac_reloads = TRUE //Snowflake mechanic no more. ///Whether the gun can be sawn off by sawing tools var/can_be_sawn_off = FALSE var/flip_cooldown = 0 + ///Whether the gun can be tacloaded by slapping a fresh magazine directly on it + var/tac_reloads = TRUE //Snowflake mechanic no more. + ///If we have the 'snowflake mechanic,' how long should it take to reload? + var/tactical_reload_delay = 1.2 SECONDS + /obj/item/gun/ballistic/Initialize() . = ..() if (!spawnwithmagazine) @@ -220,19 +223,23 @@ playsound(src, eject_empty_sound, eject_sound_volume, eject_sound_vary) magazine.forceMove(drop_location()) var/obj/item/ammo_box/magazine/old_mag = magazine - if (tac_load) - if (insert_magazine(user, tac_load, FALSE)) - to_chat(user, "You perform a tactical reload on \the [src].") - else - to_chat(user, "You dropped the old [magazine_wording], but the new one doesn't fit. How embarassing.") - magazine = null - else - magazine = null - user.put_in_hands(old_mag) old_mag.update_appearance() + magazine = null if (display_message) to_chat(user, "You pull the [magazine_wording] out of \the [src].") update_appearance() + if (tac_load) + if(do_after(user, tactical_reload_delay, TRUE, src)) + if (insert_magazine(user, tac_load, FALSE)) + to_chat(user, "You perform a tactical reload on \the [src].") + else + to_chat(user, "You dropped the old [magazine_wording], but the new one doesn't fit. How embarassing.") + else + to_chat(user, "Your reload was interupted!") + return + + user.put_in_hands(old_mag) + update_appearance() /obj/item/gun/ballistic/can_shoot() return chambered @@ -342,7 +349,7 @@ return return ..() -/obj/item/gun/ballistic/attack_self(mob/living/user) +/obj/item/gun/ballistic/unique_action(mob/living/user) if(HAS_TRAIT(user, TRAIT_GUNFLIP)) if(flip_cooldown <= world.time) if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) @@ -352,13 +359,10 @@ user.dropItemToGround(src, TRUE) return flip_cooldown = (world.time + 30) + SpinAnimation(7,1) user.visible_message("[user] spins the [src] around their finger by the trigger. That’s pretty badass.") playsound(src, 'sound/items/handling/ammobox_pickup.ogg', 20, FALSE) return - if(!internal_magazine && magazine) - if(!magazine.ammo_count()) - eject_magazine(user) - return if(bolt_type == BOLT_TYPE_NO_BOLT) chambered = null var/num_unloaded = 0 diff --git a/code/modules/projectiles/guns/ballistic/assault.dm b/code/modules/projectiles/guns/ballistic/assault.dm index 6b0d14616ef7..5b3ced3e8100 100644 --- a/code/modules/projectiles/guns/ballistic/assault.dm +++ b/code/modules/projectiles/guns/ballistic/assault.dm @@ -1,12 +1,31 @@ -/obj/item/gun/ballistic/automatic/assualt +/obj/item/gun/ballistic/automatic/assault burst_size = 1 actions_types = list() + wield_delay = 0.7 SECONDS + wield_slowdown = 0.6 -/obj/item/gun/ballistic/automatic/assualt/ak47 + fire_delay = 1 + + load_sound = 'sound/weapons/gun/rifle/ar_reload.ogg' + load_empty_sound = 'sound/weapons/gun/rifle/ar_reload.ogg' + eject_sound = 'sound/weapons/gun/rifle/ar_unload.ogg' + eject_empty_sound = 'sound/weapons/gun/rifle/ar_unload.ogg' + + rack_sound = 'sound/weapons/gun/rifle/ar_cock.ogg' + spread_unwielded = 20 + +/obj/item/gun/ballistic/automatic/assault/ak47 name = "\improper SVG-67" - desc = "A frontier-built assault rifle descended from a pattern of unknown provenance. Its low cost and ease of maintenance make it a popular choice among a wide variety of outlaws." + desc = "A Frontier-built assault rifle descended from a pattern of unknown provenance. Its low cost, ease of maintenance, and powerful 7.62x39mm cartridge make it a popular choice among a wide variety of outlaws." icon = 'icons/obj/guns/48x32guns.dmi' fire_sound = 'sound/weapons/gun/rifle/ak47.ogg' + + rack_sound = 'sound/weapons/gun/rifle/ak47_cocked.ogg' + load_sound = 'sound/weapons/gun/rifle/ak47_reload.ogg' + load_empty_sound = 'sound/weapons/gun/rifle/ak47_reload.ogg' + eject_sound = 'sound/weapons/gun/rifle/ak47_unload.ogg' + eject_empty_sound = 'sound/weapons/gun/rifle/ak47_unload.ogg' + icon_state = "ak47" item_state = "ak47" mag_display = TRUE @@ -14,21 +33,20 @@ w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK mag_type = /obj/item/ammo_box/magazine/ak47 + spread = 0 + wield_delay = 0.7 SECONDS -/obj/item/gun/ballistic/automatic/assualt/ak47/ComponentInitialize() +/obj/item/gun/ballistic/automatic/assault/ak47/ComponentInitialize() . = ..() AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) -/obj/item/gun/ballistic/automatic/assualt/ak47/nt +/obj/item/gun/ballistic/automatic/assault/ak47/nt name = "\improper NT-SVG" - desc = "An even cheaper version of the already-cheap SVG-67, rechambered for the lightweight 4.6x38mm PDW cartridge. The flimsy folding stock and light construction make for a highly portable rifle lacking in accuracy and stopping power." + desc = "An even cheaper version of the SVG-67, rechambered for the lightweight 4.6x30mm PDW cartridge. The flimsy folding stock and light construction make for a highly-portable rifle that lacks accuracy and power." icon = 'icons/obj/guns/48x32guns.dmi' fire_sound = 'sound/weapons/gun/rifle/shot.ogg' icon_state = "ak47_nt" item_state = "ak47_nt" - mag_display = TRUE - weapon_weight = WEAPON_MEDIUM - w_class = WEIGHT_CLASS_BULKY mag_type = /obj/item/ammo_box/magazine/aknt var/folded = FALSE var/unfolded_spread = 2 @@ -36,7 +54,7 @@ var/folded_spread = 20 var/folded_item_state = "ak47_nt_stockless" -/obj/item/gun/ballistic/automatic/assualt/ak47/nt/CtrlClick(mob/user) +/obj/item/gun/ballistic/automatic/assault/ak47/nt/CtrlClick(mob/user) . = ..() if((!ishuman(user) || user.stat)) return @@ -47,7 +65,7 @@ user.update_inv_hands() user.update_inv_s_store() -/obj/item/gun/ballistic/automatic/assualt/ak47/nt/proc/fold(mob/user) +/obj/item/gun/ballistic/automatic/assault/ak47/nt/proc/fold(mob/user) if(folded) to_chat(user, "You unfold the stock on the [src].") spread = unfolded_spread @@ -63,7 +81,7 @@ playsound(src.loc, 'sound/weapons/empty.ogg', 100, 1) update_appearance() -/obj/item/gun/ballistic/automatic/assualt/ak47/nt/update_overlays() +/obj/item/gun/ballistic/automatic/assault/ak47/nt/update_overlays() . = ..() var/mutable_appearance/stock if(!folded) @@ -72,58 +90,61 @@ stock = mutable_appearance(icon, null) . += stock -/obj/item/gun/ballistic/automatic/assualt/ak47/inteq +/obj/item/gun/ballistic/automatic/assault/ak47/inteq name = "\improper SkM-24" - desc = "An obsolete assault rifle seized from some frontier armory and extensively modified to IRMG standards. Chambered in 7.62x39mm." + desc = "An antique assault rifle seized from Frontiersmen armories then extensively modified to IRMG standards. Chambered in 7.62x39mm." icon = 'icons/obj/guns/48x32guns.dmi' fire_sound = 'sound/weapons/gun/rifle/akm.ogg' icon_state = "akm" item_state = "akm" - lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' mob_overlay_icon = 'icons/mob/clothing/back.dmi' - mag_display = TRUE -/obj/item/gun/ballistic/automatic/assualt/p16 +/obj/item/gun/ballistic/automatic/assault/p16 name = "\improper P-16" - desc = "A Night of Fire-era assault rifle pattern from Sol, chambered in 5.56mm. Rediscovered by the Colonial Minutemen and now frequently reproduced. A favorite of professional mercenaries and well-heeled pirates." + desc = "An assault rifle pattern from Sol, existing before the Night of Fire. A favorite of professional mercenaries and well-heeled pirates. Chambered in 5.56mm." icon = 'icons/obj/guns/48x32guns.dmi' fire_sound = 'sound/weapons/gun/rifle/m16.ogg' icon_state = "p16" item_state = "p16" mag_display = TRUE - weapon_weight = WEAPON_MEDIUM w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK mag_type = /obj/item/ammo_box/magazine/p16 - -/obj/item/gun/ballistic/automatic/assualt/p16/ComponentInitialize() + spread = 2 + wield_delay = 0.5 SECONDS + rack_sound = 'sound/weapons/gun/rifle/m16_cocked.ogg' + load_sound = 'sound/weapons/gun/rifle/m16_reload.ogg' + load_empty_sound = 'sound/weapons/gun/rifle/m16_reload.ogg' + eject_sound = 'sound/weapons/gun/rifle/m16_unload.ogg' + eject_empty_sound = 'sound/weapons/gun/rifle/m16_unload.ogg' + +/obj/item/gun/ballistic/automatic/assault/p16/ComponentInitialize() . = ..() AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) -/obj/item/gun/ballistic/automatic/assualt/p16/minutemen +/obj/item/gun/ballistic/automatic/assault/p16/minutemen name = "\improper CM-16" - desc = "An extensive modification of the P-16, now the standard-issue rifle of the Colonial Minutemen. Chambered in 5.56mm." + desc = "The standard-issue rifle of the Colonial Minutemen and an extensively modified reproduction of the P-16. Chambered in 5.56mm." icon_state = "cm16" item_state = "cm16" -/obj/item/gun/ballistic/automatic/assualt/ar +/obj/item/gun/ballistic/automatic/assault/ar name = "\improper NT-ARG 'Boarder'" desc = "A burst-fire 5.56mm carbine occasionally found in the hands of Nanotrasen marines." fire_sound = 'sound/weapons/gun/rifle/shot_alt2.ogg' icon_state = "arg" item_state = "arg" slot_flags = 0 - mag_type = /obj/item/ammo_box/magazine/m556 + mag_type = /obj/item/ammo_box/magazine/p16 can_suppress = FALSE burst_size = 3 fire_delay = 1 -/obj/item/gun/ballistic/automatic/assualt/ar/ComponentInitialize() +/obj/item/gun/ballistic/automatic/assault/ar/ComponentInitialize() . = ..() AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) -/obj/item/gun/ballistic/automatic/assualt/swiss_cheese +/obj/item/gun/ballistic/automatic/assault/swiss_cheese name = "\improper Swiss Cheese" desc = "An ancient longarm famous for its boxy, modular design. The DMA on this unit is, sadly, broken. Uses 5.56mm ammunition for Matter mode." icon = 'icons/obj/guns/48x32guns.dmi' @@ -140,19 +161,21 @@ slot_flags = ITEM_SLOT_BACK mag_type = /obj/item/ammo_box/magazine/swiss actions_types = list(/datum/action/item_action/toggle_firemode) + spread = 8 + spread_unwielded = 15 -/obj/item/gun/ballistic/automatic/assualt/swiss_cheese/ComponentInitialize() +/obj/item/gun/ballistic/automatic/assault/swiss_cheese/ComponentInitialize() . = ..() AddComponent(/datum/component/automatic_fire, 0.65 SECONDS) -/obj/item/gun/ballistic/automatic/assualt/swiss_cheese/afterattack(atom/target, mob/living/user, flag, params) +/obj/item/gun/ballistic/automatic/assault/swiss_cheese/afterattack(atom/target, mob/living/user, flag, params) if(select == 2) to_chat(user, "You hear a strange sound from the DMA unit. It doesn't appear to be operational.") return else return ..() -/obj/item/gun/ballistic/automatic/assualt/swiss_cheese/burst_select() +/obj/item/gun/ballistic/automatic/assault/swiss_cheese/burst_select() var/mob/living/carbon/human/user = usr switch(select) if(1) @@ -164,7 +187,7 @@ fire_delay = initial(fire_delay) to_chat(user, "You switch to [burst_size]-rnd Matter.") - playsound(user, 'sound/weapons/empty.ogg', 100, TRUE) + playsound(user, 'sound/weapons/gun/general/selector.ogg', 100, TRUE) update_appearance() for(var/datum/action/action as anything in actions) action.UpdateButtonIcon() diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 20066b6a7abf..ed45f24a7625 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -14,6 +14,13 @@ weapon_weight = WEAPON_MEDIUM pickup_sound = 'sound/items/handling/rifle_pickup.ogg' + wield_delay = 1 SECONDS + spread = 0 + spread_unwielded = 13 + recoil = 0 + recoil_unwielded = 4 + wield_slowdown = 0.35 + /obj/item/gun/ballistic/automatic/update_overlays() . = ..() if(!select) @@ -39,7 +46,7 @@ fire_delay = initial(fire_delay) to_chat(user, "You switch to [burst_size]-rnd burst.") - playsound(user, 'sound/weapons/empty.ogg', 100, TRUE) + playsound(user, 'sound/weapons/gun/general/selector.ogg', 100, TRUE) update_appearance() for(var/X in actions) var/datum/action/A = X @@ -49,7 +56,7 @@ /obj/item/gun/ballistic/automatic/sniper_rifle name = "sniper rifle" - desc = "An anti-materiel rifle chambered in .50 BMG, partnered with an effective optics package that grants it much greater range than most rifles. Its prodigious bulk requires both hands and some time to aim." + desc = "An anti-material rifle chambered in .50 BMG with a scope mounted on it. Its prodigious bulk requires both hands to use." icon_state = "sniper" item_state = "sniper" fire_sound = 'sound/weapons/gun/sniper/shot.ogg' @@ -71,9 +78,16 @@ actions_types = list() mag_display = TRUE + spread = -5 + spread_unwielded = 20 + recoil = 0 + recoil_unwielded = 4 + wield_slowdown = 1 + wield_delay = 1.3 SECONDS + /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate name = "syndicate sniper rifle" - desc = "A heavily modified .50 caliber anti-materiel rifle capable of accepting a suppressor. Its prodigious bulk requires both hands and some time to aim." + desc = "A heavily-modified .50 BMG anti-material rifle utilized by Syndicate agents. Requires both hands to fire." can_suppress = TRUE can_unsuppress = TRUE pin = /obj/item/firing_pin/implant/pindicate @@ -81,13 +95,13 @@ // Old Semi-Auto Rifle // /obj/item/gun/ballistic/automatic/surplus - name = "Surplus Rifle" - desc = "One of countless cheap, obsolete rifles found throughout the frontier, chambered in 10mm. While bulky and easily defeated by even mild armor, they are effective deterrents against wildlife and are still powerful enough to put up some fight against pirates and other boarders." + name = "surplus rifle" + desc = "One of countless cheap, obsolete rifles found throughout the Frontier. Its lack of lethality renders it mostly a deterrent. Chambered in 10mm." icon_state = "surplus" item_state = "moistnugget" weapon_weight = WEAPON_HEAVY mag_type = /obj/item/ammo_box/magazine/m10mm/rifle - fire_delay = 30 + fire_delay = 10 burst_size = 1 can_unsuppress = TRUE can_suppress = TRUE @@ -113,11 +127,10 @@ /obj/item/gun/ballistic/automatic/ebr name = "\improper M514 EBR" - desc = "A reliable, high-powered battle rifle often found in the hands of Syndicate personnel and remnants, chambered in .308 Winchester. It's known for rather high stopping power and mild armor-piercing capabilities." + desc = "A reliable, high-powered battle rifle often found in the hands of Syndicate personnel and remnants, chambered in .308 Winchester. Effective against personnel and armor alike." icon = 'icons/obj/guns/48x32guns.dmi' lefthand_file = 'icons/mob/inhands/weapons/64x_guns_left.dmi' righthand_file = 'icons/mob/inhands/weapons/64x_guns_right.dmi' - fire_sound = 'sound/weapons/gun/rifle/shot.ogg' icon_state = "ebr" item_state = "ebr" mag_display = TRUE @@ -128,9 +141,12 @@ burst_size = 0 actions_types = list() + wield_slowdown = 2 + spread = -4 + /obj/item/gun/ballistic/automatic/gal name = "\improper CM-GAL-S" - desc = "The standard issue DMR of the CMM. Dates back to the Xenofauna War, this particular model is in a carbine configuration and as such shorter than the standard model. Chambered in .308." + desc = "The standard issue DMR of the CMM. Dates back to the Xenofauna War, this particular model is in a carbine configuration, and, as such, is shorter than the standard model. Chambered in .308." icon = 'icons/obj/guns/48x32guns.dmi' fire_sound = 'sound/weapons/gun/rifle/shot.ogg' icon_state = "gal" @@ -143,6 +159,9 @@ burst_size = 0 actions_types = list() + wield_slowdown = 2 + spread = -4 + /obj/item/gun/ballistic/automatic/gal/inteq name = "\improper SsG-04" desc = "A marksman rifle purchased from the Colonial Minutemen and modified to suit IRMG's needs. Chambered in .308." diff --git a/code/modules/projectiles/guns/ballistic/gauss.dm b/code/modules/projectiles/guns/ballistic/gauss.dm index cb21b5d1a867..32cee65317cf 100644 --- a/code/modules/projectiles/guns/ballistic/gauss.dm +++ b/code/modules/projectiles/guns/ballistic/gauss.dm @@ -1,12 +1,11 @@ /obj/item/gun/ballistic/automatic/powered/gauss name = "prototype gauss rifle" - desc = "A NT experimental rifle with an high capacity. Useful for putting down crowds. Chambered in ferromagnetic pellets." + desc = "An experimental Nanotrasen rifle with a high capacity. Useful for putting down crowds. Chambered in ferromagnetic pellets." icon_state = "gauss" item_state = "arg" slot_flags = 0 mag_type = /obj/item/ammo_box/magazine/gauss fire_sound = 'sound/weapons/gun/gauss/magrifle.ogg' - load_sound = 'sound/weapons/gun/gauss/rifle_reload.ogg' can_suppress = FALSE burst_size = 1 @@ -16,71 +15,71 @@ empty_indicator = TRUE weapon_weight = WEAPON_MEDIUM w_class = WEIGHT_CLASS_BULKY - charge_sections = 4 ammo_x_offset = 2 + spread = 0 + spread_unwielded = 25 + recoil = 0 + recoil_unwielded = 4 + wield_slowdown = 0.75 + wield_delay = 1 SECONDS + /obj/item/gun/ballistic/automatic/powered/gauss/modelh name = "Model H" - desc = "Standard issue pistol of the Solarian confederation. Its unique ability to fire slugs instead of pellets make it effective in taking down unarmored targets, but can be useless against armored ones. This also makes it drain battery very fast, be careful. Chambered in ferromagnetic slugs." + desc = "Standard-issue pistol of the Solarian Confederation. Fires slow ferromagnetic slugs at a high energy cost, though they rend flesh with ease." mag_type = /obj/item/ammo_box/magazine/modelh - icon_state = "model-h" item_state = "model-h" fire_sound = 'sound/weapons/gun/gauss/modelh.ogg' load_sound = 'sound/weapons/gun/gauss/pistol_reload.ogg' - cell_type = /obj/item/stock_parts/cell/gun/solgov - slot_flags = ITEM_SLOT_BELT - w_class = WEIGHT_CLASS_SMALL fire_delay = 0 //pistol - mag_display = FALSE empty_indicator = FALSE + recoil = 1 + recoil_unwielded = 2 + spread = 3 + spread_unwielded = 6 /obj/item/gun/ballistic/automatic/powered/gauss/claris name = "Claris" - desc = "A antiquated solarian rifle. Just as the founding Solarians intended. Chambered in ferromagnetic pellets." + desc = "An antiquated Solarian rifle. Chambered in ferromagnetic pellets, just as the founding Solarians intended." mag_type = /obj/item/ammo_box/magazine/internal/claris - icon = 'icons/obj/guns/48x32guns.dmi' icon_state = "claris" item_state = "claris" fire_sound = 'sound/weapons/gun/gauss/claris.ogg' load_sound = 'sound/weapons/gun/gauss/sniper_reload.ogg' - cell_type = /obj/item/stock_parts/cell/gun/solgov fire_delay = 2 - bolt_type = BOLT_TYPE_NO_BOLT internal_magazine = TRUE casing_ejector = FALSE - mag_display = FALSE empty_indicator = FALSE /obj/item/gun/ballistic/automatic/powered/gauss/gar - name = "Solar 'GAR' Assualt Rifle" - desc = "A unusally modern, for the solar confederation, assualt rifle. Fires ferromagnetic lances at alarming speeds in every sense of the word. Chambered in ferromagnetic lances." + name = "Solar 'GAR' Assault Rifle" + desc = "A Solarian assault rifle, unusually modern for its producers. Launches ferromagnetic lances at alarming speeds." mag_type = /obj/item/ammo_box/magazine/gar - icon = 'icons/obj/guns/48x32guns.dmi' icon_state = "gar" item_state = "gar" fire_sound = 'sound/weapons/gun/gauss/gar.ogg' load_sound = 'sound/weapons/gun/gauss/rifle_reload.ogg' - cell_type = /obj/item/stock_parts/cell/gun/solgov - burst_size = 2 fire_delay = 2 actions_types = list() - empty_indicator = FALSE + wield_delay = 0.7 SECONDS + fire_delay = 1 + /obj/item/gun/ballistic/automatic/powered/gauss/gar/ComponentInitialize() . = ..() AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) //setiting this to 0.1 breaks auotfire, not sure why, so we use the standard fire rate but in 2 shot bursts to shoot 'faster' diff --git a/code/modules/projectiles/guns/ballistic/hmg.dm b/code/modules/projectiles/guns/ballistic/hmg.dm index b94e679d4783..29d4b7914395 100644 --- a/code/modules/projectiles/guns/ballistic/hmg.dm +++ b/code/modules/projectiles/guns/ballistic/hmg.dm @@ -6,13 +6,19 @@ actions_types = list() slowdown = 1 drag_slowdown = 1.5 + fire_delay = 1 + spread = 2 + spread_unwielded = 80 + recoil = 1 + recoil_unwielded = 4 + wield_slowdown = 4 // L6 SAW // /obj/item/gun/ballistic/automatic/hmg/l6_saw name = "\improper L6 SAW" - desc = "A heavy machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 490 FS' engraved on the receiver below the designation. Chambered in 7.12x82mm." + desc = "An HMG designated 'L6 SAW'. Has 'Aussec Armoury - 490 FS' engraved on the receiver below the designation. Chambered in 7.12x82mm." icon_state = "l6" item_state = "l6closedmag" base_icon_state = "l6" @@ -30,7 +36,7 @@ /obj/item/gun/ballistic/automatic/hmg/l6_saw/ComponentInitialize() . = ..() - AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) + AddComponent(/datum/component/automatic_fire, 0.1 SECONDS) /obj/item/gun/ballistic/automatic/hmg/l6_saw/examine(mob/user) . = ..() @@ -38,19 +44,16 @@ if(cover_open && magazine) . += "It seems like you could use an empty hand to remove the magazine." - /obj/item/gun/ballistic/automatic/hmg/l6_saw/AltClick(mob/user) cover_open = !cover_open to_chat(user, "You [cover_open ? "open" : "close"] [src]'s cover.") playsound(user, 'sound/weapons/gun/l6/l6_door.ogg', 60, TRUE) update_appearance() - /obj/item/gun/ballistic/automatic/hmg/l6_saw/update_overlays() . = ..() . += "l6_door_[cover_open ? "open" : "closed"]" - /obj/item/gun/ballistic/automatic/hmg/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) if(cover_open) to_chat(user, "[src]'s cover is open! Close it before firing!") @@ -75,9 +78,9 @@ return ..() -/obj/item/gun/ballistic/automatic/hmg/solar +/obj/item/gun/ballistic/automatic/hmg/solar //This thing fires a 5.56 equivalent, that's an LMG, not an HMG, get out name = "\improper Solar" - desc = "The TerraGov HMG-169, designed in 169 FS, nicknamed 'Solar.' A inscription reads: 'PROPERTY OF TERRAGOV', with 'TERRAGOV' poorly scribbled out, and replaced by 'SOLAR ARMORIES.' Chambered in 4.73×33mm caseless ammunition." + desc = "A TerraGov LMG-169 designed in 169 FS, nicknamed 'Solar.' A inscription reads: 'PROPERTY OF TERRAGOV', with 'TERRAGOV' poorly scribbled out, and replaced by 'SOLAR ARMORIES'. Chambered in 4.73×33mm caseless ammunition." icon_state = "solar" fire_sound = 'sound/weapons/gun/l6/shot.ogg' item_state = "arg" @@ -90,4 +93,4 @@ /obj/item/gun/ballistic/automatic/hmg/solar/ComponentInitialize() . = ..() - AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) + AddComponent(/datum/component/automatic_fire, 0.1 SECONDS) diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm index ccd54cf5dfec..eafe30f362a8 100644 --- a/code/modules/projectiles/guns/ballistic/launchers.dm +++ b/code/modules/projectiles/guns/ballistic/launchers.dm @@ -34,7 +34,7 @@ /obj/item/gun/ballistic/automatic/gyropistol name = "gyrojet pistol" - desc = "A prototype pistol designed to fire self propelled rockets." + desc = "A prototype pistol designed to fire self-propelled rockets." icon_state = "gyropistol" fire_sound = 'sound/weapons/gun/general/grenade_launch.ogg' mag_type = /obj/item/ammo_box/magazine/m75 @@ -45,11 +45,12 @@ /obj/item/gun/ballistic/rocketlauncher name = "\improper PML-9" - desc = "A reusable rocket propelled grenade launcher. The words \"NT this way\" and an arrow have been written near the barrel." + desc = "A reusable rocket-propelled grenade launcher. The words \"NT this way\" and an arrow have been written near the barrel." icon_state = "rocketlauncher" item_state = "rocketlauncher" mag_type = /obj/item/ammo_box/magazine/internal/rocketlauncher fire_sound = 'sound/weapons/gun/general/rocket_launch.ogg' + load_sound = 'sound/weapons/gun/general/rocket_load.ogg' w_class = WEIGHT_CLASS_BULKY can_suppress = FALSE pin = /obj/item/firing_pin @@ -75,9 +76,7 @@ /obj/item/gun/ballistic/rocketlauncher/solgov name = "Panzerfaust XII" - desc = "The standard recoiless rifle of the Solarian Confederation. Legend goes that every couple of decades, the bureaucracy changes a small part of the rifle, then bumps up the number. Chambered in rockets." - + desc = "The standard recoiless rifle of the Solarian Confederation. Barely varies from previous models." icon = 'icons/obj/guns/48x32guns.dmi' icon_state = "panzerfaust" item_state = "panzerfaust" - diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index 3b0c0742a657..b466f2811dd4 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -1,21 +1,21 @@ /obj/item/gun/ballistic/automatic/pistol - name = "stechkin pistol" - desc = "A small, easily concealable 10mm handgun, bearing Scarborough Arms stamps. Has a threaded barrel for suppressors." + name = "Stechkin" + desc = "A small, easily concealable 10mm handgun that bears Scarborough Arms stamps. Has a threaded barrel for suppressors." icon_state = "pistol" w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/m10mm can_suppress = TRUE burst_size = 1 - fire_delay = 0 + fire_delay = 0 //spam it as fast as you can actions_types = list() bolt_type = BOLT_TYPE_LOCKING fire_sound = 'sound/weapons/gun/pistol/shot.ogg' dry_fire_sound = 'sound/weapons/gun/pistol/dry_fire.ogg' suppressed_sound = 'sound/weapons/gun/pistol/shot_suppressed.ogg' - load_sound = 'sound/weapons/gun/pistol/mag_insert.ogg' - load_empty_sound = 'sound/weapons/gun/pistol/mag_insert.ogg' - eject_sound = 'sound/weapons/gun/pistol/mag_release.ogg' - eject_empty_sound = 'sound/weapons/gun/pistol/mag_release.ogg' + load_sound = 'sound/weapons/gun/pistol/mag_insert_alt.ogg' + load_empty_sound = 'sound/weapons/gun/pistol/mag_insert_alt.ogg' + eject_sound = 'sound/weapons/gun/pistol/mag_release_alt.ogg' + eject_empty_sound = 'sound/weapons/gun/pistol/mag_release_alt.ogg' vary_fire_sound = FALSE rack_sound = 'sound/weapons/gun/pistol/rack_small.ogg' lock_back_sound = 'sound/weapons/gun/pistol/lock_small.ogg' @@ -24,7 +24,13 @@ bolt_wording = "slide" weapon_weight = WEAPON_LIGHT pickup_sound = 'sound/items/handling/gun_pickup.ogg' - fire_delay = 1 + + wield_delay = 0.2 SECONDS + spread = -2 + spread_unwielded = 4 + wield_slowdown = 0.15 + + muzzleflash_iconstate = "muzzle_flash_light" /obj/item/gun/ballistic/automatic/pistol/no_mag spawnwithmagazine = FALSE @@ -35,16 +41,21 @@ install_suppressor(S) /obj/item/gun/ballistic/automatic/pistol/m1911 - name = "\improper M1911" - desc = "A classic .45 handgun with a small magazine capacity. An engraving on the slide marks it as a product of Hunter's Pride." + name = "\improper M1911A8" + desc = "A classic .45 handgun. An engraving on the slide marks it as a product of Hunter's Pride." icon_state = "m1911" w_class = WEIGHT_CLASS_NORMAL mag_type = /obj/item/ammo_box/magazine/m45 can_suppress = FALSE - fire_sound = 'sound/weapons/gun/pistol/shot.ogg' - rack_sound = 'sound/weapons/gun/pistol/rack.ogg' + fire_sound = 'sound/weapons/gun/pistol/m1911.ogg' + rack_sound = 'sound/weapons/gun/pistol/m1911_cocked.ogg' lock_back_sound = 'sound/weapons/gun/pistol/slide_lock.ogg' bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg' + load_sound = 'sound/weapons/gun/pistol/m1911_reload.ogg' + load_empty_sound = 'sound/weapons/gun/pistol/m1911_reload.ogg' + eject_sound = 'sound/weapons/gun/pistol/m1911_unload.ogg' + eject_empty_sound = 'sound/weapons/gun/pistol/m1911_unload.ogg' + recoil = -2 /obj/item/gun/ballistic/automatic/pistol/m1911/no_mag spawnwithmagazine = FALSE @@ -57,24 +68,33 @@ mag_type = /obj/item/ammo_box/magazine/m50 can_suppress = FALSE mag_display = TRUE - fire_sound = 'sound/weapons/gun/rifle/shot_alt.ogg' + fire_sound = 'sound/weapons/gun/pistol/deagle.ogg' rack_sound = 'sound/weapons/gun/pistol/rack.ogg' lock_back_sound = 'sound/weapons/gun/pistol/slide_lock.ogg' bolt_drop_sound = 'sound/weapons/gun/pistol/slide_drop.ogg' + load_sound = 'sound/weapons/gun/pistol/deagle_reload.ogg' + load_empty_sound = 'sound/weapons/gun/pistol/deagle_reload.ogg' + eject_sound = 'sound/weapons/gun/pistol/deagle_unload.ogg' + eject_empty_sound = 'sound/weapons/gun/pistol/deagle_unload.ogg' + fire_delay = 0.7 SECONDS + recoil = 1 + recoil_unwielded = 2 + spread = 4 + spread_unwielded = 7 /obj/item/gun/ballistic/automatic/pistol/deagle/gold - desc = "A gold plated Desert Eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo." + desc = "A gold-plated Desert Eagle folded over a million times by superior Martian gunsmiths. Uses .50 AE ammo." icon_state = "deagleg" item_state = "deagleg" /obj/item/gun/ballistic/automatic/pistol/deagle/camo - desc = "A Deagle brand Deagle for operators operating operationally. Uses .50 AE ammo." + desc = "A Deagle-brand Deagle for operators operating operationally. Uses .50 AE ammo." //I hate this joke with a passion icon_state = "deaglecamo" item_state = "deagleg" /obj/item/gun/ballistic/automatic/pistol/APS name = "stechkin APS pistol" - desc = "A relative of the more common 10mm Stechkin, converted into a burst-fire machine pistol. Uses 9mm ammo." + desc = "A burst-fire machine pistol based on the stechkin model. Utilizes specialized 9mm magazines." icon_state = "aps" w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/pistolm9mm @@ -101,18 +121,23 @@ /obj/item/gun/ballistic/automatic/pistol/commander name = "\improper Commander" - desc = "A classic handgun in a tasteful black and stainless steel color scheme, with an enamel Nanotrasen logo set into the grips. Chambered in 9mm." + desc = "A classic handgun in a tasteful black and stainless steel color scheme. An enamel Nanotrasen logo is set into the grips. Chambered in 9mm." icon_state = "commander" w_class = WEIGHT_CLASS_NORMAL mag_type = /obj/item/ammo_box/magazine/co9mm can_suppress = FALSE + fire_sound = 'sound/weapons/gun/pistol/commander.ogg' + load_sound = 'sound/weapons/gun/pistol/mag_insert.ogg' + load_empty_sound = 'sound/weapons/gun/pistol/mag_insert.ogg' + eject_sound = 'sound/weapons/gun/pistol/mag_release.ogg' + eject_empty_sound = 'sound/weapons/gun/pistol/mag_release.ogg' /obj/item/gun/ballistic/automatic/pistol/commander/no_mag spawnwithmagazine = FALSE /obj/item/gun/ballistic/automatic/pistol/commander/inteq name = "\improper Commissioner" - desc = "A handgun seized from Nanotrasen armories by deserting troopers and modified to IRMG's standards, with a yellow IRMG shield set into the grips. Chambered in 9mm." + desc = "A handgun seized from Nanotrasen armories by deserting troopers and modified to IRMG's standards. A yellow IRMG shield is set into the grips. Chambered in 9mm." icon_state = "commander-inteq" item_state = "commander-inteq" @@ -121,13 +146,17 @@ /obj/item/gun/ballistic/automatic/pistol/commissar name = "\improper Commissar" - desc = "A Nanotrasen-issue handgun, modified to further enhance it's effectiveness in troop discipline." + desc = "A Nanotrasen-issue handgun, modified with a voice box to further enhance its effectiveness in troop discipline." icon_state = "commander" w_class = WEIGHT_CLASS_NORMAL mag_type = /obj/item/ammo_box/magazine/co9mm can_suppress = FALSE var/funnysounds = TRUE var/cooldown = 0 + load_sound = 'sound/weapons/gun/pistol/mag_insert.ogg' + load_empty_sound = 'sound/weapons/gun/pistol/mag_insert.ogg' + eject_sound = 'sound/weapons/gun/pistol/mag_release.ogg' + eject_empty_sound = 'sound/weapons/gun/pistol/mag_release.ogg' /obj/item/gun/ballistic/automatic/pistol/commissar/equipped(mob/living/user, slot) ..() @@ -171,29 +200,36 @@ /obj/item/gun/ballistic/automatic/pistol/solgov name = "\improper Pistole C" - desc = "A favorite of the Terran Regency, but despised by the Solarian bureaucracy. Was taken out of standard service several centruries ago, and is issued in low numbers in the military. However, it is popular with civillians. Chambered in 5.56mm caseless." + desc = "A favorite of the Terran Regency that is despised by the Solarian bureaucracy. Shifted out of military service centuries ago, though still popular among civilians. Chambered in 5.56mm caseless." icon_state = "pistole-c" weapon_weight = WEAPON_LIGHT w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/pistol556mm fire_sound = 'sound/weapons/gun/pistol/pistolec.ogg' + load_sound = 'sound/weapons/gun/pistol/mag_insert.ogg' + load_empty_sound = 'sound/weapons/gun/pistol/mag_insert.ogg' + eject_sound = 'sound/weapons/gun/pistol/mag_release.ogg' + eject_empty_sound = 'sound/weapons/gun/pistol/mag_release.ogg' /obj/item/gun/ballistic/automatic/pistol/solgov/old - desc = "A favorite of the Terran Regency, but despised by the Solarian bureaucracy. Was taken out of standard service several centruries ago, and is issued in low numbers in the military. However, it is popular with civillians. Chambered in 5.56mm caseless." icon_state = "pistole-c-old" /obj/item/gun/ballistic/automatic/pistol/tec9 - name = "\improper TEC9 machine pistol" - desc = "A somewhat cheaply-made machine pistol designed to vomit forth 9mm ammunition at a truly eye-watering rate of fire." + name = "\improper TEC-9 machine pistol" + desc = "A crude machine pistol designed to vomit 9mm ammunition at a truly eye-watering rate of fire." icon_state = "tec9" weapon_weight = WEAPON_LIGHT w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/tec9 mag_display = TRUE + load_sound = 'sound/weapons/gun/pistol/mag_insert.ogg' + load_empty_sound = 'sound/weapons/gun/pistol/mag_insert.ogg' + eject_sound = 'sound/weapons/gun/pistol/mag_release.ogg' + eject_empty_sound = 'sound/weapons/gun/pistol/mag_release.ogg' /obj/item/gun/ballistic/automatic/pistol/disposable name = "disposable gun" - desc = "An exceedingly flimsy plastic gun that is extremely cheap and easy to produce. You get what you pay for." + desc = "An exceedingly flimsy plastic gun that is extremely cheap to produce. You get what you pay for." icon_state = "disposable" w_class = WEIGHT_CLASS_NORMAL mag_type = /obj/item/ammo_box/magazine/disposable @@ -219,7 +255,7 @@ /obj/item/gun/ballistic/automatic/pistol/disposable/pizza name = "pizza disposable gun" - desc = "How horrible. Whoever you point at with this won't be very cheesed to meet you." //this is a warcrime against itallians + desc = "How horrible. Whoever you point at with this won't be very cheesed to meet you." //this is a warcrime against italians // IF YOU'RE GOING TO DO US DIRTY SPELL IT RIGHT icon_state = "disposable_pizza" random_icon = FALSE custom_materials = list(/datum/material/pizza=2000) @@ -227,7 +263,7 @@ //not technically a pistol but whatever /obj/item/gun/ballistic/derringer name = ".38 Derringer" - desc = "A easily concealable derringer. Uses .38 ammo." + desc = "An easily concealable derringer. Uses .38 special ammo." icon_state = "derringer" mag_type = /obj/item/ammo_box/magazine/internal/derr38 fire_sound = 'sound/weapons/gun/revolver/shot.ogg' @@ -256,13 +292,27 @@ /obj/item/gun/ballistic/derringer/traitor name = "\improper .357 Syndicate Derringer" - desc = "An easily concealable derriger, if not for the bright red and black. Uses .357 ammo." + desc = "An easily concealable derriger, if not for the bright red-and-black. Uses .357 ammo." icon_state = "derringer_syndie" mag_type = /obj/item/ammo_box/magazine/internal/derr357 fire_sound_volume = 50 //Tactical stealth firing /obj/item/gun/ballistic/derringer/gold name = "\improper Golden Derringer" - desc = "The golden sheen is somewhat counterintuitive as a stealth weapon, but it looks cool. Uses .357 ammo." + desc = "The golden sheen is somewhat counter-intuitive on a holdout weapon, but it looks cool. Uses .357 ammo." icon_state = "derringer_gold" mag_type = /obj/item/ammo_box/magazine/internal/derr357 + +/obj/item/gun/ballistic/automatic/pistol/himehabu + name = "\improper Himehabu" + desc = "A very small .22 LR pistol. The long awaited successor to the Stechkin; It has become a favorite among syndicate spies. Chambered in .22 LR." + icon_state = "himehabu" + w_class = WEIGHT_CLASS_TINY + mag_type = /obj/item/ammo_box/magazine/m22lr + can_suppress = FALSE + fire_sound = 'sound/weapons/gun/pistol/himehabu.ogg' + + recoil = -2 + recoil_unwielded = -2 + spread_unwielded = 0 + wield_slowdown = 0 diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 83fe331f4210..1e922d26aed0 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -1,9 +1,10 @@ /obj/item/gun/ballistic/revolver name = "\improper .357 revolver" - desc = "A weighty magnum revolver with a Scarborough Arms logo engraved on the barrel. Uses .357 ammo." //usually used by syndicates + desc = "A weighty revolver with a Scarborough Arms logo engraved on the barrel. Uses .357 ammo." //usually used by syndicates icon_state = "revolver" mag_type = /obj/item/ammo_box/magazine/internal/cylinder fire_sound = 'sound/weapons/gun/revolver/shot.ogg' + rack_sound = 'sound/weapons/gun/revolver/revolver_prime.ogg' load_sound = 'sound/weapons/gun/revolver/load_bullet.ogg' eject_sound = 'sound/weapons/gun/revolver/empty.ogg' vary_fire_sound = FALSE @@ -15,7 +16,50 @@ tac_reloads = FALSE var/spin_delay = 10 var/recent_spin = 0 - fire_delay = 7 + fire_delay = 2 + spread_unwielded = 15 + recoil = 0.5 + recoil_unwielded = 1 + semi_auto = FALSE + bolt_wording = "hammer" + wield_slowdown = 0.3 + +/obj/item/gun/ballistic/revolver/examine(mob/user) + . = ..() + . += "You can use the revolver with your other empty hand to empty the cylinder." + +/obj/item/gun/ballistic/revolver/attack_hand(mob/user) + if(loc == user && user.is_holding(src)) + chambered = null + var/num_unloaded = 0 + for(var/obj/item/ammo_casing/CB in get_ammo_list(FALSE, TRUE)) + CB.forceMove(drop_location()) + CB.bounce_away(FALSE, NONE) + num_unloaded++ + SSblackbox.record_feedback("tally", "station_mess_created", 1, CB.name) + if (num_unloaded) + to_chat(user, "You unload [num_unloaded] [cartridge_wording]\s from [src].") + playsound(user, eject_sound, eject_sound_volume, eject_sound_vary) + update_appearance() + return + else + return ..() + else + return ..() + + +/obj/item/gun/ballistic/revolver/unique_action(mob/living/user) + rack(user) + return + +///updates a bunch of racking related stuff and also handles the sound effects and the like +/obj/item/gun/ballistic/revolver/rack(mob/user = null) + if(user) + to_chat(user, "You rack the [bolt_wording] of \the [src].") + chamber_round(TRUE) + playsound(src, rack_sound, rack_sound_volume, rack_sound_vary) + update_appearance() + /obj/item/gun/ballistic/revolver/chamber_round(spin_cylinder = TRUE) if(spin_cylinder) @@ -23,10 +67,6 @@ else chambered = magazine.stored_ammo[1] -/obj/item/gun/ballistic/revolver/shoot_with_empty_chamber(mob/living/user as mob|obj) - ..() - chamber_round(TRUE) - /obj/item/gun/ballistic/revolver/AltClick(mob/user) ..() spin() @@ -75,8 +115,8 @@ /obj/item/gun/ballistic/revolver/detective name = "\improper Colt Detective Special" - desc = "A compact and ridiculously old-fashioned law enforcement firearm. Uses .38 Special rounds." - fire_sound = 'sound/weapons/gun/revolver/shot.ogg' + desc = "A compact and ridiculously old-fashioned law enforcement firearm. Uses .38 special rounds." + fire_sound = 'sound/weapons/gun/revolver/shot_light.ogg' icon_state = "detective" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev38 obj_flags = UNIQUE_RENAME @@ -91,6 +131,8 @@ "Black Panther" = "detective_panther" ) + recoil = 0 //weaker than normal revovler, no recoil + /obj/item/gun/ballistic/revolver/detective/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) if(magazine.caliber != initial(magazine.caliber)) if(prob(100 - (magazine.ammo_count() * 5))) //minimum probability of 70, maximum of 95 @@ -140,6 +182,9 @@ name = "\improper Unica 6 auto-revolver" desc = "A high-powered revolver with a unique auto-reloading system. Uses .357 ammo." icon_state = "mateba" + semi_auto = TRUE + spread = 0 + spread_unwielded = 7 /obj/item/gun/ballistic/revolver/golden name = "\improper Golden revolver" @@ -151,25 +196,34 @@ /obj/item/gun/ballistic/revolver/nagant name = "\improper Nagant revolver" - desc = "An ancient model of revolver with notoriously poor ergonomics, chambered in 7.62x38mmR. While its unique design prevents the use of speed loaders, it is the only revolver able to use a suppressor." + desc = "An ancient model of revolver with notoriously poor ergonomics, chambered in 7.62x38mmR. Uniquely able to be suppressed." icon_state = "nagant" can_suppress = TRUE + spread_unwielded = 12 + recoil = 0 + recoil_unwielded = 0 mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev762 /obj/item/gun/ballistic/revolver/hunting name = "hunting revolver" - desc = "A massive, long-barreled revolver designed for hunting the most dangerous game. Can only be reloaded one cartridge at a time due to its reinforced frame. Uses .45-70 ammo." + desc = "A massive, long-barreled revolver designed for the most dangerous game. Can only be reloaded one cartridge at a time due to its reinforced frame. Uses .45-70 ammo." icon_state = "hunting" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev4570 + fire_sound = 'sound/weapons/gun/revolver/shot_hunting.ogg' + wield_slowdown = 0.5 + spread_unwielded = 5 + spread = 2 + recoil = 2 + recoil_unwielded = 3 // A gun to play Russian Roulette! // You can spin the chamber to randomize the position of the bullet. /obj/item/gun/ballistic/revolver/russian name = "\improper Russian revolver" - desc = "A revolver for particularly lethal drinking games. Uses .357 ammo, and has a mechanism requiring you to spin the chamber before each trigger pull. The origin of its name remains a subject of intense debate. " + desc = "A Solarian revolver for particularly lethal drinking games. It has a mechanism requiring you to spin the chamber before each trigger pull. Uses .357 ammo." icon_state = "russianrevolver" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rus357 var/spun = FALSE @@ -269,12 +323,29 @@ /obj/item/gun/ballistic/revolver/srm name = "SRM Standard Issue .357 Revolver" - desc = "A sturdy, powerful, and reliable revolver. Try not to find yourself on the other end." + desc = "A sturdy, powerful, and reliable revolver utilized by the Saint-Roumain Militia." /obj/item/gun/ballistic/revolver/pepperbox name = "\improper pepperbox pistol" - desc = "An archaic precursor to revolver-type firearms, this gun was rendered completely obsolete millennia ago. How did it even end up here? While fast to fire, it is extremely inaccurate. Uses .357 ammo." + desc = "An archaic precursor to revolver-type firearms, this gun was rendered completely obsolete millennia ago. While fast to fire, it is extremely inaccurate. Uses .357 ammo." icon_state = "pepperbox" mag_type = /obj/item/ammo_box/magazine/internal/cylinder/pepperbox spread = 20 - fire_delay = 4 + spread_unwielded = 50 + fire_delay = 0 + semi_auto = TRUE + +/obj/item/gun/ballistic/revolver/cattleman + name = "\improper Cattleman" + desc = "A strangely ancient revolver. Despite the age, it is a favorite of fast drawing spacers and officers in various militaries, but sometimes very rarely used in small colonial police units. Uses .45 ACP." + fire_sound = 'sound/weapons/gun/revolver/cattleman.ogg' + icon = 'icons/obj/guns/48x32guns.dmi' + icon_state = "cattleman" + mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev45 + obj_flags = UNIQUE_RENAME + unique_reskin = list("Default" = "cattleman", + "Army" = "cattleman_army", + "General" = "cattleman_general" + ) + + recoil = 0 //weaker than normal revovler, no recoil diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index 8ac729535335..5d29a26a84a8 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -1,6 +1,6 @@ /obj/item/gun/ballistic/rifle name = "Bolt Rifle" - desc = "Some kind of bolt action rifle. You get the feeling you shouldn't have this." + desc = "Some kind of bolt-action rifle. You get the feeling you shouldn't have this." icon_state = "hunting" item_state = "hunting" mag_type = /obj/item/ammo_box/magazine/internal/boltaction @@ -17,6 +17,13 @@ weapon_weight = WEAPON_MEDIUM pickup_sound = 'sound/items/handling/rifle_pickup.ogg' + spread = -1 + spread_unwielded = 12 + recoil = -3 + recoil_unwielded = 4 + wield_slowdown = 1 + wield_delay = 1.2 SECONDS + /obj/item/gun/ballistic/rifle/update_overlays() . = ..() . += "[icon_state]_bolt[bolt_locked ? "_locked" : ""]" @@ -52,8 +59,8 @@ /obj/item/gun/ballistic/rifle/boltaction name = "\improper Illestren Hunting Rifle" - desc = "A point of pride for Hunter's Pride, this rifle is one of their most popular offerings. Despite its marketing, it is very rarely used for actual hunting and more often used for putting holes in people, for which it is even more popular for. Chambered in 7.62x54." - sawn_desc = "An extremely sawn-off Illestren, popularly known as an \"obrez\". There was probably a reason it wasn't made this short to begin with." + desc = "One of Hunter's Pride most successful firearms. The bolt-action is popular among colonists, pirates, snipers, and countless more. Chambered in 7.62x54." + sawn_desc = "An extremely sawn-off Illestren, generally known as an \"obrez\". There was probably a reason it wasn't made this short to begin with." w_class = WEIGHT_CLASS_BULKY weapon_weight = WEAPON_HEAVY icon = 'icons/obj/guns/48x32guns.dmi' @@ -82,16 +89,23 @@ /obj/item/gun/ballistic/rifle/boltaction/solgov name = "SSG-669C" - desc = "A bolt action sniper rifle used by the solarian army, beloved for its rotary design and accuracy. Chambered in 8x58mm Caseless." + desc = "A bolt-action sniper rifle used by Solarian troops. Beloved for its rotary design and accuracy. Chambered in 8x58mm Caseless." mag_type = /obj/item/ammo_box/magazine/internal/boltaction/solgov icon_state = "ssg669c" item_state = "ssg669c" fire_sound = 'sound/weapons/gun/rifle/ssg669c.ogg' can_be_sawn_off = FALSE + spread = -5 + spread_unwielded = 20 + recoil = 0 + recoil_unwielded = 4 + wield_slowdown = 1 + wield_delay = 1.3 SECONDS + /obj/item/gun/ballistic/rifle/boltaction/roumain name = "standard-issue 'Smile' rifle" - desc = "A bolt action rifle usually given to mercenary hunters of the Saint-Roumain Militia. Chambered in .300 Magnum." + desc = "A bolt-action rifle usually given to mercenary hunters of the Saint-Roumain Militia. Chambered in .300 Magnum." mag_type = /obj/item/ammo_box/magazine/internal/boltaction/smile icon_state = "roma" item_state = "roma" @@ -150,7 +164,7 @@ /obj/item/gun/ballistic/rifle/boltaction/polymer name = "polymer survivor rifle" - desc = "A bolt-action rifle chambered in .300 Blackout, manufactured out of improvised materials and showing obvious signs of years of makeshift repairs and ill-advised modifications. Use at your own risk." + desc = "A bolt-action rifle made of scrap, desperation, and luck. Likely to shatter at any moment. Chambered in .300 Blackout." icon = 'icons/obj/guns/projectile.dmi' icon_state = "crackhead_rifle" item_state = "crackhead_rifle" diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index f8ddd3a31b6c..5f9db248d6af 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -27,6 +27,14 @@ fire_delay = 7 pb_knockback = 2 + wield_slowdown = 0.45 + wield_delay = 0.6 SECONDS //Shotguns are really easy to put up to fire, since they are designed for CQC (at least compared to a rifle) + + spread = 4 + spread_unwielded = 10 + recoil = 2 + recoil_unwielded = 4 + /obj/item/gun/ballistic/shotgun/blow_up(mob/user) . = 0 if(chambered && chambered.BB) @@ -40,14 +48,35 @@ /obj/item/gun/ballistic/shotgun/riot //for spawn in the armory name = "riot shotgun" - desc = "A sturdy shotgun with a longer magazine tube and a fixed wooden stock designed for non-lethal riot control." + desc = "A sturdy shotgun with a six-shell tube and a fixed wooden stock designed for non-lethal riot control." + icon = 'icons/obj/guns/48x32guns.dmi' icon_state = "riotshotgun" item_state = "shotgun" mag_type = /obj/item/ammo_box/magazine/internal/shot/riot sawn_desc = "Come with me if you want to live." can_be_sawn_off = TRUE + rack_sound = 'sound/weapons/gun/shotgun/rack_alt.ogg' + fire_delay = 1 + +/obj/item/gun/ballistic/shotgun/riot/sawoff(mob/user) + . = ..() + if(.) + weapon_weight = WEAPON_MEDIUM + wield_slowdown = 0.25 + wield_delay = 0.3 SECONDS //OP? maybe + + spread = 8 + spread_unwielded = 15 + recoil = 3 //or not + recoil_unwielded = 5 // Automatic Shotguns// +/obj/item/gun/ballistic/shotgun/automatic + spread = 4 + spread_unwielded = 16 + recoil = 1 + recoil_unwielded = 4 + wield_delay = 0.65 SECONDS /obj/item/gun/ballistic/shotgun/automatic/shoot_live_shot(mob/living/user) ..() @@ -55,7 +84,7 @@ /obj/item/gun/ballistic/shotgun/automatic/combat name = "combat shotgun" - desc = "A semi automatic shotgun with tactical furniture and a six-shell capacity underneath." + desc = "A semi-automatic shotgun with tactical furniture and six-shell capacity underneath." icon_state = "cshotgun" item_state = "shotgun_combat" fire_delay = 5 @@ -64,7 +93,7 @@ /obj/item/gun/ballistic/shotgun/automatic/combat/compact name = "compact combat shotgun" - desc = "A compact version of the semi automatic combat shotgun. For close encounters." + desc = "A compact version of the semi-automatic combat shotgun. For close encounters." icon_state = "cshotgunc" mag_type = /obj/item/ammo_box/magazine/internal/shot/com/compact w_class = WEIGHT_CLASS_BULKY @@ -146,6 +175,13 @@ tac_reloads = TRUE pickup_sound = 'sound/items/handling/rifle_pickup.ogg' + spread = 4 + spread_unwielded = 16 + recoil = 1 + recoil_unwielded = 4 + wield_slowdown = 0.6 + wield_delay = 0.65 SECONDS + /obj/item/gun/ballistic/shotgun/bulldog/unrestricted pin = /obj/item/firing_pin @@ -175,7 +211,7 @@ /obj/item/gun/ballistic/shotgun/doublebarrel name = "double-barreled shotgun" - desc = "A true classic." + desc = "A true classic. Both barrels can be fired in quick succession." icon_state = "dshotgun" item_state = "shotgun_db" w_class = WEIGHT_CLASS_BULKY @@ -208,6 +244,13 @@ . = ..() if(.) weapon_weight = WEAPON_MEDIUM + wield_slowdown = 0.25 + wield_delay = 0.3 SECONDS //OP? maybe + + spread = 8 + spread_unwielded = 15 + recoil = 3 //or not + recoil_unwielded = 5 // IMPROVISED SHOTGUN // @@ -372,6 +415,7 @@ attack_verb = list("bludgeoned", "smashed") mag_type = /obj/item/ammo_box/magazine/internal/shot/sex burst_size = 6 + fire_delay = 0.1 pb_knockback = 12 unique_reskin = null recoil = 10 @@ -420,10 +464,21 @@ inhand_y_dimension = 32 mag_type = /obj/item/ammo_box/magazine/internal/shot/winchester fire_sound = 'sound/weapons/gun/rifle/shot.ogg' - rack_sound = 'sound/weapons/gun/rifle/winchester_cocked.ogg' + rack_sound = 'sound/weapons/gun/rifle/ak47_cocked.ogg' bolt_wording = "lever" cartridge_wording = "bullet" + spread = -5 + spread_unwielded = 7 + recoil = 0 + recoil_unwielded = 2 + wield_slowdown = 0.5 + +/obj/item/gun/ballistic/shotgun/winchester/rack(mob/user = null) + . = ..() + if(!wielded) + SpinAnimation(7,1) + /obj/item/gun/ballistic/shotgun/winchester/mk1 name = "Winchester MK.1" desc = "A sturdy lever-action rifle. This antique pattern appears to be in excellent condition despite its age." @@ -469,7 +524,7 @@ inhand_x_dimension = 32 inhand_y_dimension = 32 mag_type = /obj/item/ammo_box/magazine/internal/shot/contender - fire_sound = 'sound/weapons/gun/rifle/shot.ogg' + fire_sound = 'sound/weapons/gun/revolver/shot_hunting.ogg' can_be_sawn_off=TRUE sawn_desc= "A single-shot pistol. It's hard to aim without a front sight." w_class = WEIGHT_CLASS_BULKY @@ -483,9 +538,22 @@ bolt_type = BOLT_TYPE_NO_BOLT can_be_sawn_off = TRUE pb_knockback = 3 + wield_slowdown = 0.7 + spread_unwielded = 15 + spread = 0 + recoil = 0 + recoil_unwielded = 5 + /obj/item/gun/ballistic/shotgun/contender/sawoff(mob/user) . = ..() if(.) item_state = "contender_sawn" + wield_slowdown = 0.5 + wield_delay = 0.5 SECONDS + + spread_unwielded = 5 //mostly the hunting revolver stats + spread = 2 + recoil = 2 + recoil_unwielded = 3 diff --git a/code/modules/projectiles/guns/ballistic/smg.dm b/code/modules/projectiles/guns/ballistic/smg.dm index 11db569a5181..8ffe9be41bf2 100644 --- a/code/modules/projectiles/guns/ballistic/smg.dm +++ b/code/modules/projectiles/guns/ballistic/smg.dm @@ -1,10 +1,20 @@ /obj/item/gun/ballistic/automatic/smg burst_size = 1 actions_types = list() + fire_delay = 1 + spread = 4 + spread_unwielded = 10 + wield_slowdown = 0.35 + recoil_unwielded = 0.5 + + load_sound = 'sound/weapons/gun/smg/smg_reload.ogg' + load_empty_sound = 'sound/weapons/gun/smg/smg_reload.ogg' + eject_sound = 'sound/weapons/gun/smg/smg_unload.ogg' + eject_empty_sound = 'sound/weapons/gun/smg/smg_unload.ogg' /obj/item/gun/ballistic/automatic/smg/proto name = "\improper Nanotrasen Saber SMG" - desc = "A prototype full auto 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors and a folding stock." + desc = "A prototype full-auto 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors and a folding stock." icon_state = "saber" actions_types = list() mag_type = /obj/item/ammo_box/magazine/smgm9mm @@ -14,7 +24,7 @@ /obj/item/gun/ballistic/automatic/smg/proto/ComponentInitialize() . = ..() - AddComponent(/datum/component/automatic_fire, 0.25 SECONDS) + AddComponent(/datum/component/automatic_fire, 0.15 SECONDS) /obj/item/gun/ballistic/automatic/smg/proto/unrestricted pin = /obj/item/firing_pin @@ -35,7 +45,7 @@ /obj/item/gun/ballistic/automatic/smg/c20r/ComponentInitialize() . = ..() - AddComponent(/datum/component/automatic_fire, 0.25 SECONDS) + AddComponent(/datum/component/automatic_fire, 0.15 SECONDS) /obj/item/gun/ballistic/automatic/smg/c20r/unrestricted pin = /obj/item/firing_pin @@ -48,7 +58,6 @@ name = "\improper Cobra 20" desc = "An older model of SMG manufactured by Scarborough Arms, a predecessor to the military C-20 series. Chambered in .45. " can_bayonet = FALSE - icon_state = "cobra20" item_state = "cobra20" @@ -57,6 +66,7 @@ desc = "An extreme modification of an obsolete assault rifle, converted into a compact submachine gun by IRMG. Chambered in 10mm." icon_state = "inteqsmg" item_state = "inteqsmg" + fire_sound = 'sound/weapons/gun/smg/vector_fire.ogg' mag_type = /obj/item/ammo_box/magazine/smgm10mm can_bayonet = FALSE can_flashlight = TRUE @@ -67,11 +77,11 @@ /obj/item/gun/ballistic/automatic/smg/inteq/ComponentInitialize() . = ..() - AddComponent(/datum/component/automatic_fire, 0.25 SECONDS) + AddComponent(/datum/component/automatic_fire, 0.15 SECONDS) /obj/item/gun/ballistic/automatic/smg/wt550 name = "\improper WT-550 Automatic Rifle" - desc = "An outdated personal defence weapon. Uses 4.6x30mm rounds and is designated the WT-550 Automatic Rifle." + desc = "An outdated PDW, used centuries ago by Nanotrasen security elements. Uses 4.6x30mm rounds." icon_state = "wt550" item_state = "arg" mag_type = /obj/item/ammo_box/magazine/wt550m9 @@ -85,38 +95,51 @@ mag_display = TRUE mag_display_ammo = TRUE empty_indicator = TRUE + fire_sound = 'sound/weapons/gun/smg/smg_heavy.ogg' /obj/item/gun/ballistic/automatic/smg/wt550/ComponentInitialize() . = ..() - AddComponent(/datum/component/automatic_fire, 0.25 SECONDS) + AddComponent(/datum/component/automatic_fire, 0.15 SECONDS) /obj/item/gun/ballistic/automatic/smg/mini_uzi name = "\improper Type U3 Uzi" desc = "A lightweight submachine gun, for when you really want someone dead. Uses 9mm rounds." icon_state = "uzi" mag_type = /obj/item/ammo_box/magazine/uzim9mm - burst_size = 2 bolt_type = BOLT_TYPE_OPEN mag_display = TRUE - rack_sound = 'sound/weapons/gun/pistol/slide_lock.ogg' + + fire_sound = 'sound/weapons/gun/smg/uzi.ogg' + rack_sound = 'sound/weapons/gun/smg/uzi_cocked.ogg' + + load_sound = 'sound/weapons/gun/smg/uzi_reload.ogg' + load_empty_sound = 'sound/weapons/gun/smg/uzi_reload.ogg' + eject_sound = 'sound/weapons/gun/smg/uzi_unload.ogg' + eject_empty_sound = 'sound/weapons/gun/smg/uzi_unload.ogg' + + spread = 4 + spread_unwielded = 8 + wield_slowdown = 0.25 + wield_delay = 0.2 SECONDS /obj/item/gun/ballistic/automatic/smg/mini_uzi/ComponentInitialize() . = ..() - AddComponent(/datum/component/automatic_fire, 0.25 SECONDS) + AddComponent(/datum/component/automatic_fire, 0.1 SECONDS) /obj/item/gun/ballistic/automatic/smg/vector name = "\improper Vector carbine" - desc = "A police carbine based off of an SMG design, with most of the complex workings removed for reliability. Chambered in 9mm." + desc = "A police carbine based on a pre-Night of Fire SMG design. Most of the complex workings have been removed for reliability. Chambered in 9mm." icon_state = "vector" item_state = "vector" - mag_type = /obj/item/ammo_box/magazine/smgm9mm/rubbershot //you guys remember when the autorifle was chambered in 9mm + mag_type = /obj/item/ammo_box/magazine/smgm9mm //you guys remember when the autorifle was chambered in 9mm bolt_type = BOLT_TYPE_LOCKING mag_display = TRUE weapon_weight = WEAPON_LIGHT + fire_sound = 'sound/weapons/gun/smg/vector_fire.ogg' /obj/item/gun/ballistic/automatic/smg/vector/ComponentInitialize() . = ..() - AddComponent(/datum/component/automatic_fire, 0.25 SECONDS) + AddComponent(/datum/component/automatic_fire, 0.15 SECONDS) /obj/item/gun/ballistic/automatic/smg/m90 name = "\improper M-90gl Carbine" @@ -134,6 +157,10 @@ empty_indicator = TRUE fire_sound = 'sound/weapons/gun/rifle/shot_alt.ogg' + spread = 1 + spread_unwielded = 8 + wield_slowdown = 0.4 + /obj/item/gun/ballistic/automatic/smg/m90/Initialize() . = ..() underbarrel = new /obj/item/gun/ballistic/revolver/grenadelauncher(src) @@ -187,7 +214,7 @@ burst_size = 1 fire_delay = 0 to_chat(user, "You switch to semi-auto.") - playsound(user, 'sound/weapons/empty.ogg', 100, TRUE) + playsound(user, 'sound/weapons/gun/general/selector.ogg', 100, TRUE) update_appearance() return @@ -204,10 +231,11 @@ actions_types = list() fire_delay = 1 bolt_type = BOLT_TYPE_OPEN + wield_slowdown = 0.4 /obj/item/gun/ballistic/automatic/smg/thompson/Initialize() . = ..() - AddComponent(/datum/component/automatic_fire, 0.25 SECONDS) + AddComponent(/datum/component/automatic_fire, 0.15 SECONDS) /obj/item/gun/ballistic/automatic/smg/thompson/drum name = "\improper Chicago Typewriter" @@ -221,15 +249,15 @@ item_state = "cm5" mag_type = /obj/item/ammo_box/magazine/smgm9mm weapon_weight = WEAPON_LIGHT - fire_sound = 'sound/weapons/gun/smg/smg_light.ogg' + fire_sound = 'sound/weapons/gun/smg/smg_heavy.ogg' /obj/item/gun/ballistic/automatic/smg/cm5/ComponentInitialize() . = ..() - AddComponent(/datum/component/automatic_fire, 0.25 SECONDS) + AddComponent(/datum/component/automatic_fire, 0.15 SECONDS) /obj/item/gun/ballistic/automatic/smg/aks74u name = "\improper AKS-74U" - desc = "A pre-FTL era carbine, the \"curio\" status of the weapon and its extreme fire rate make it perfect for bandits, pirates and colonists on a budget." + desc = "A pre-FTL era carbine, known to be incredibly cheap. Its extreme fire rate make it perfect for bandits, pirates and colonists on a budget." fire_sound = 'sound/weapons/gun/rifle/shot.ogg' icon_state = "aks74u" lefthand_file = 'icons/mob/inhands/weapons/64x_guns_left.dmi' diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index f810dc221dbf..943c1319a4a0 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -4,6 +4,9 @@ desc = "A basic energy-based gun." icon = 'icons/obj/guns/energy.dmi' + muzzleflash_iconstate = "muzzle_flash_laser" + muzzle_flash_color = COLOR_SOFT_RED + var/obj/item/stock_parts/cell/gun/cell //What type of power cell this uses var/cell_type = /obj/item/stock_parts/cell/gun var/modifystate = 0 @@ -20,7 +23,6 @@ var/use_cyborg_cell = FALSE //whether the gun's cell drains the cyborg user's cell to recharge var/dead_cell = FALSE //set to true so the gun is given an empty cell - //WS Begin - Gun Cells var/internal_cell = FALSE ///if the gun's cell cannot be replaced var/small_gun = FALSE ///if the gun is small and can only fit the small gun cell var/big_gun = FALSE ///if the gun is big and can fit the comically large gun cell @@ -30,7 +32,6 @@ var/eject_sound = 'sound/weapons/gun/general/magazine_remove_full.ogg' //Sound of ejecting a cell. UPDATE PLEASE var/sound_volume = 40 //Volume of loading/unloading sounds var/load_sound_vary = TRUE //Should the load/unload sounds vary? - //WS End /obj/item/gun/energy/emp_act(severity) . = ..() @@ -75,7 +76,8 @@ if (cell) QDEL_NULL(cell) STOP_PROCESSING(SSobj, src) - return ..() + . = ..() + ammo_type.Cut() /obj/item/gun/energy/handle_atom_del(atom/A) if(A == cell) @@ -94,7 +96,7 @@ recharge_newshot(TRUE) update_appearance() -/obj/item/gun/energy/attack_self(mob/living/user as mob) +/obj/item/gun/energy/unique_action(mob/living/user) if(ammo_type.len > 1) select_fire(user) update_appearance() @@ -197,6 +199,7 @@ if (shot.select_name) to_chat(user, "[src] is now set to [shot.select_name].") chambered = null + playsound(user, 'sound/weapons/gun/general/selector.ogg', 100, TRUE) recharge_newshot(TRUE) update_appearance() return @@ -216,7 +219,7 @@ /obj/item/gun/energy/update_overlays() . = ..() - if(!automatic_charge_overlays) + if(!automatic_charge_overlays || QDELETED(src)) return // Every time I see code this "flexible", a kitten fucking dies var/overlay_icon_state = "[icon_state]_charge" @@ -269,18 +272,18 @@ else if(BB.nodamage || !BB.damage || BB.damage_type == STAMINA) user.visible_message("[user] tries to light [user.p_their()] [A.name] with [src], but it doesn't do anything. Dumbass.") playsound(user, E.fire_sound, 50, TRUE) - playsound(user, BB.hitsound, 50, TRUE) + playsound(user, BB.hitsound_non_living, 50, TRUE) cell.use(E.e_cost) . = "" else if(BB.damage_type != BURN) user.visible_message("[user] tries to light [user.p_their()] [A.name] with [src], but only succeeds in utterly destroying it. Dumbass.") playsound(user, E.fire_sound, 50, TRUE) - playsound(user, BB.hitsound, 50, TRUE) + playsound(user, BB.hitsound_non_living, 50, TRUE) cell.use(E.e_cost) qdel(A) . = "" else playsound(user, E.fire_sound, 50, TRUE) - playsound(user, BB.hitsound, 50, TRUE) + playsound(user, BB.hitsound_non_living, 50, TRUE) cell.use(E.e_cost) . = "[user] casually lights their [A.name] with [src]. Damn." diff --git a/code/modules/projectiles/guns/energy/dueling.dm b/code/modules/projectiles/guns/energy/dueling.dm index db923335b369..1ecb29a27a64 100644 --- a/code/modules/projectiles/guns/energy/dueling.dm +++ b/code/modules/projectiles/guns/energy/dueling.dm @@ -183,11 +183,12 @@ /obj/item/gun/energy/dueling/Destroy() . = ..() - if(duel.gun_A == src) - duel.gun_A = null - if(duel.gun_B == src) - duel.gun_B = null - duel = null + if(duel) + if(duel.gun_A == src) + duel.gun_A = null + if(duel.gun_B == src) + duel.gun_B = null + duel = null /obj/item/gun/energy/dueling/can_trigger_gun(mob/living/user) . = ..() diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 7928094cab13..8a829153fcfd 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -18,6 +18,10 @@ internal_cell = TRUE custom_price = 750 w_class = WEIGHT_CLASS_BULKY + + muzzleflash_iconstate = "muzzle_flash_light" + muzzle_flash_color = COLOR_WHITE + var/overheat_time = 16 var/holds_charge = FALSE var/unique_frequency = FALSE // modified by KA modkits @@ -113,7 +117,7 @@ if(!QDELING(src) && !holds_charge) // Put it on a delay because moving item from slot to hand // calls dropped(). - addtimer(CALLBACK(src, .proc/empty_if_not_held), 2) + addtimer(CALLBACK(src, PROC_REF(empty_if_not_held)), 2) /obj/item/gun/energy/kinetic_accelerator/proc/empty_if_not_held() if(!ismob(loc)) @@ -144,7 +148,7 @@ carried = 1 deltimer(recharge_timerid) - recharge_timerid = addtimer(CALLBACK(src, .proc/reload), recharge_time * carried, TIMER_STOPPABLE) + recharge_timerid = addtimer(CALLBACK(src, PROC_REF(reload)), recharge_time * carried, TIMER_STOPPABLE) /obj/item/gun/energy/kinetic_accelerator/emp_act(severity) return diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index 4551014cafea..5a4caeefc373 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -10,6 +10,9 @@ shaded_charge = 1 supports_variations = VOX_VARIATION + spread = 0 + spread_unwielded = 10 + /obj/item/gun/energy/laser/practice name = "practice laser gun" desc = "A modified version of the basic laser gun, this one fires less concentrated energy bolts designed for target practice." diff --git a/code/modules/projectiles/guns/energy/laser_gatling.dm b/code/modules/projectiles/guns/energy/laser_gatling.dm index 2ef1f8293bcf..b21e176b92e8 100644 --- a/code/modules/projectiles/guns/energy/laser_gatling.dm +++ b/code/modules/projectiles/guns/energy/laser_gatling.dm @@ -22,9 +22,14 @@ . = ..() gun = new(src) battery = new(src) + gun.cell = battery START_PROCESSING(SSobj, src) /obj/item/minigunpack/Destroy() + if(!QDELETED(gun)) + qdel(gun) + gun = null + QDEL_NULL(battery) STOP_PROCESSING(SSobj, src) return ..() @@ -103,7 +108,7 @@ slot_flags = null w_class = WEIGHT_CLASS_HUGE custom_materials = null - weapon_weight = WEAPON_HEAVY + weapon_weight = WEAPON_MEDIUM ammo_type = list(/obj/item/ammo_casing/energy/laser/minigun) cell_type = /obj/item/stock_parts/cell/crap item_flags = NEEDS_PERMIT | SLOWS_WHILE_IN_HAND @@ -116,7 +121,13 @@ ammo_pack = loc AddElement(/datum/element/update_icon_blocker) - AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) + AddComponent(/datum/component/automatic_fire, 0.15 SECONDS) + return ..() + +/obj/item/gun/energy/minigun/Destroy() + if(!QDELETED(ammo_pack)) + qdel(ammo_pack) + ammo_pack = null return ..() /obj/item/gun/energy/minigun/attack_self(mob/living/user) diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index a4d252107fc6..83a33691008b 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -12,6 +12,11 @@ internal_cell = TRUE //prevents you from giving it an OP cell - WS Edit cell_type = "/obj/item/stock_parts/cell/pulse" + spread_unwielded = 25 + + muzzleflash_iconstate = "muzzle_flash_pulse" + muzzle_flash_color = COLOR_BRIGHT_BLUE + /obj/item/gun/energy/pulse/emp_act(severity) return diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 1311920eb8b2..9226a587e4aa 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -221,10 +221,10 @@ for(var/i in 1 to ammo_type.len) var/obj/item/ammo_casing/energy/wormhole/W = ammo_type[i] if(istype(W)) - W.gun = src + W.gun = WEAKREF(src) var/obj/projectile/beam/wormhole/WH = W.BB if(istype(WH)) - WH.gun = src + WH.gun = WEAKREF(src) /obj/item/gun/energy/wormhole_projector/process_chamber() ..() @@ -260,7 +260,7 @@ /obj/item/gun/energy/wormhole_projector/proc/create_portal(obj/projectile/beam/wormhole/W, turf/target) var/obj/effect/portal/P = new /obj/effect/portal(target, 300, null, FALSE, null, atmos_link) - RegisterSignal(P, COMSIG_PARENT_QDELETING, .proc/on_portal_destroy) + RegisterSignal(P, COMSIG_PARENT_QDELETING, PROC_REF(on_portal_destroy)) if(istype(W, /obj/projectile/beam/wormhole/orange)) qdel(p_orange) p_orange = P diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 2caeca6f3a16..1d8f78213707 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -6,6 +6,9 @@ ammo_type = list(/obj/item/ammo_casing/energy/electrode) ammo_x_offset = 3 + spread = 2 + spread_unwielded = 4 + /obj/item/gun/energy/e_gun/advtaser name = "hybrid taser" desc = "A dual-mode taser designed to fire both short-range high-power electrodes and long-range disabler beams." @@ -13,6 +16,9 @@ ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/disabler) ammo_x_offset = 2 + spread = 2 + spread_unwielded = 4 + /obj/item/gun/energy/e_gun/advtaser/cyborg name = "cyborg taser" desc = "An integrated hybrid taser that draws directly from a cyborg's power cell. The weapon contains a limiter to prevent the cyborg's power cell from overheating." @@ -31,6 +37,9 @@ flight_x_offset = 15 flight_y_offset = 10 + spread = 2 + spread_unwielded = 4 + /obj/item/gun/energy/disabler/cyborg name = "cyborg disabler" desc = "An integrated disabler that draws from a cyborg's power cell. This weapon contains a limiter to prevent the cyborg's power cell from overheating." diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 6ef3367b67d6..63c4ef8aa2d0 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -51,7 +51,8 @@ /obj/item/gun/magic/Initialize() . = ..() charges = max_charges - chambered = new ammo_type(src) + if(ammo_type) + chambered = new ammo_type(src) if(can_charge) START_PROCESSING(SSobj, src) diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index 4822e2b59ba7..fad4f485aa88 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -148,7 +148,7 @@ current_zoom_x = 0 current_zoom_y = 0 -/obj/item/gun/energy/beam_rifle/attack_self(mob/user) +/obj/item/gun/energy/beam_rifle/unique_action(mob/living/user) projectile_setting_pierce = !projectile_setting_pierce to_chat(user, "You set \the [src] to [projectile_setting_pierce? "pierce":"impact"] mode.") aiming_beam() @@ -265,7 +265,7 @@ current_user = null if(istype(user)) current_user = user - RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move) + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_mob_move)) listeningTo = user /obj/item/gun/energy/beam_rifle/onMouseDrag(src_object, over_object, src_location, over_location, params, mob) @@ -521,7 +521,7 @@ tracer_type = /obj/effect/projectile/tracer/tracer/aiming name = "aiming beam" hitsound = null - hitsound_wall = null + hitsound_non_living = null nodamage = TRUE damage = 0 constant_tracer = TRUE diff --git a/code/modules/projectiles/guns/misc/blastcannon.dm b/code/modules/projectiles/guns/misc/blastcannon.dm index d2a8c80827fc..888e680479ea 100644 --- a/code/modules/projectiles/guns/misc/blastcannon.dm +++ b/code/modules/projectiles/guns/misc/blastcannon.dm @@ -35,7 +35,7 @@ QDEL_NULL(bomb) return ..() -/obj/item/gun/blastcannon/attack_self(mob/user) +/obj/item/gun/blastcannon/unique_action(mob/living/user) if(bomb) bomb.forceMove(user.loc) user.put_in_hands(bomb) diff --git a/code/modules/projectiles/guns/misc/bow.dm b/code/modules/projectiles/guns/misc/bow.dm index df30f5a89022..9f2957ba40cd 100644 --- a/code/modules/projectiles/guns/misc/bow.dm +++ b/code/modules/projectiles/guns/misc/bow.dm @@ -28,7 +28,7 @@ chambered = magazine.get_round(TRUE) chambered.forceMove(src) -/obj/item/gun/ballistic/bow/attack_self(mob/user) +/obj/item/gun/ballistic/bow/unique_action(mob/living/user) if(chambered) to_chat(user, "You [drawn ? "release" : "draw"] [src]'s string.") if(!drawn) @@ -51,7 +51,7 @@ /obj/item/ammo_casing/caseless/arrow/despawning/dropped() . = ..() - addtimer(CALLBACK(src, .proc/floor_vanish), 5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(floor_vanish)), 5 SECONDS) /obj/item/ammo_casing/caseless/arrow/despawning/proc/floor_vanish() if(isturf(loc)) diff --git a/code/modules/projectiles/guns/misc/grenade_launcher.dm b/code/modules/projectiles/guns/misc/grenade_launcher.dm index 588e697c28c5..b381c8267738 100644 --- a/code/modules/projectiles/guns/misc/grenade_launcher.dm +++ b/code/modules/projectiles/guns/misc/grenade_launcher.dm @@ -43,4 +43,4 @@ F.active = 1 F.icon_state = initial(F.icon_state) + "_active" playsound(user.loc, 'sound/weapons/armbomb.ogg', 75, TRUE, -3) - addtimer(CALLBACK(F, /obj/item/grenade.proc/prime), 15) + addtimer(CALLBACK(F, TYPE_PROC_REF(/obj/item/grenade, prime)), 15) diff --git a/code/modules/projectiles/guns/misc/medbeam.dm b/code/modules/projectiles/guns/misc/medbeam.dm index d0fd3052ed97..dd676a46d068 100644 --- a/code/modules/projectiles/guns/misc/medbeam.dm +++ b/code/modules/projectiles/guns/misc/medbeam.dm @@ -67,7 +67,7 @@ current_target = target active = TRUE current_beam = user.Beam(current_target, icon_state="medbeam", time = 10 MINUTES, maxdistance = max_range, beam_type = /obj/effect/ebeam/medical) - RegisterSignal(current_beam, COMSIG_PARENT_QDELETING, .proc/beam_died)//this is a WAY better rangecheck than what was done before (process check) + RegisterSignal(current_beam, COMSIG_PARENT_QDELETING, PROC_REF(beam_died))//this is a WAY better rangecheck than what was done before (process check) SSblackbox.record_feedback("tally", "gun_fired", 1, type) @@ -101,21 +101,33 @@ return 0 var/obj/dummy = new(user_turf) dummy.pass_flags |= PASSTABLE|PASSGLASS|PASSGRILLE //Grille/Glass so it can be used through common windows - for(var/turf/turf in getline(user_turf,target)) - if(mounted && turf == user_turf) + var/turf/previous_step = user_turf + var/first_step = TRUE + for(var/turf/next_step as anything in (getline(user_turf, target) - user_turf)) + if(first_step) + for(var/obj/blocker in user_turf) + if(!blocker.density || !(blocker.flags_1 & ON_BORDER_1)) + continue + if(blocker.CanPass(dummy, get_dir(user_turf, next_step))) + continue + return FALSE // Could not leave the first turf. + first_step = FALSE + if(mounted && next_step == user_turf) + continue //Mechs are dense and thus fail the check - if(turf.density) + if(next_step.density) qdel(dummy) - return 0 - for(var/atom/movable/AM in turf) - if(!AM.CanPass(dummy,turf,1)) + return FALSE + for(var/atom/movable/movable as anything in next_step) + if(!movable.CanPass(dummy, get_dir(next_step, previous_step))) qdel(dummy) - return 0 - for(var/obj/effect/ebeam/medical/B in turf)// Don't cross the str-beams! + return FALSE + for(var/obj/effect/ebeam/medical/B in next_step)// Don't cross the str-beams! if(B.owner.origin != current_beam.origin) explosion(B.loc,0,3,5,8) qdel(dummy) - return 0 + return FALSE + previous_step = next_step qdel(dummy) return 1 diff --git a/code/modules/projectiles/guns/misc/syringe_gun.dm b/code/modules/projectiles/guns/misc/syringe_gun.dm index efd99b2d5b49..34af73b855c6 100644 --- a/code/modules/projectiles/guns/misc/syringe_gun.dm +++ b/code/modules/projectiles/guns/misc/syringe_gun.dm @@ -38,7 +38,7 @@ . = ..() . += "Can hold [max_syringes] syringe\s. Has [syringes.len] syringe\s remaining." -/obj/item/gun/syringe/attack_self(mob/living/user) +/obj/item/gun/syringe/unique_action(mob/living/user) if(!syringes.len) to_chat(user, "[src] is empty!") return 0 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 8f2488be7f69..7cc9b1c6ebb4 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -13,7 +13,17 @@ generic_canpass = FALSE //The sound this plays on impact. var/hitsound = 'sound/weapons/pierce.ogg' - var/hitsound_wall = "" + var/hitsound_non_living = "" + var/hitsound_glass + var/hitsound_stone + var/hitsound_metal + var/hitsound_wood + var/hitsound_snow + + var/near_miss_sound = "" + var/ricochet_sound = "" + + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF var/def_zone = "" //Aiming at @@ -157,14 +167,14 @@ /// If true directly targeted turfs can be hit var/can_hit_turfs = FALSE + var/static/list/projectile_connections = list( + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), + ) + /obj/projectile/Initialize() . = ..() decayedRange = range - - var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered - ) - AddElement(/datum/element/connect_loc, loc_connections) + AddElement(/datum/element/connect_loc, projectile_connections) /obj/projectile/proc/Range() range-- @@ -223,11 +233,6 @@ if(!isliving(target)) if(impact_effect_type && !hitscan) new impact_effect_type(target_loca, hitx, hity) - if(isturf(target) && hitsound_wall) - var/volume = clamp(vol_by_damage() + 20, 0, 100) - if(suppressed) - volume = 5 - playsound(loc, hitsound_wall, volume, TRUE, -1) return BULLET_ACT_HIT var/mob/living/L = target @@ -264,8 +269,7 @@ to_chat(L, "You're shot by \a [src][organ_hit_text]!") else if(hitsound) - var/volume = vol_by_damage() - playsound(src, hitsound, volume, TRUE, -1) + playsound(get_turf(L), hitsound, 100, TRUE, -1) L.visible_message("[L] is hit by \a [src][organ_hit_text]!", \ "You're hit by \a [src][organ_hit_text]!", null, COMBAT_MESSAGE_RANGE) L.on_hit(src) @@ -334,7 +338,7 @@ if(!trajectory) qdel(src) return FALSE - if(impacted[A]) // NEVER doublehit + if(LAZYISIN(impacted, A)) // NEVER doublehit return FALSE var/datum/point/pcache = trajectory.copy_to() var/turf/T = get_turf(A) @@ -342,7 +346,7 @@ ricochets++ if(A.handle_ricochet(src)) on_ricochet(A) - impacted = list() // Shoot a x-ray laser at a pair of mirrors I dare you + impacted = null // Shoot a x-ray laser at a pair of mirrors I dare you ignore_source_check = TRUE // Firer is no longer immune decayedRange = max(0, decayedRange - reflect_range_decrease) ricochet_chance *= ricochet_decay_chance @@ -350,6 +354,8 @@ range = decayedRange if(hitscan) store_hitscan_collision(pcache) + if(ricochet_sound) + playsound(get_turf(src), ricochet_sound, 120, TRUE, 2) //make it loud, we want to make it known when a ricochet happens. for aesthetic reasons mostly return TRUE var/distance = get_dist(T, starting) // Get the distance between the turf shot from and the mob we hit and use that for the calculations. @@ -383,7 +389,7 @@ if(QDELETED(src) || !T || !target) return // 2. - impacted[target] = TRUE //hash lookup > in for performance in hit-checking + LAZYSET(impacted, target, TRUE) //hash lookup > in for performance in hit-checking // 3. var/mode = prehit_pierce(target) if(mode == PROJECTILE_DELETE_WITHOUT_HITTING) @@ -459,7 +465,7 @@ //Returns true if the target atom is on our current turf and above the right layer //If direct target is true it's the originally clicked target. /obj/projectile/proc/can_hit_target(atom/target, direct_target = FALSE, ignore_loc = FALSE) - if(QDELETED(target) || impacted[target]) + if(QDELETED(target) || LAZYISIN(impacted, target)) return FALSE if(!ignore_loc && (loc != target.loc) && !(can_hit_turfs && direct_target && loc == target)) return FALSE @@ -521,6 +527,16 @@ if(can_hit_target(M, M == original, TRUE)) Impact(M) break + if(!near_miss_sound) + return FALSE + if(decayedRange <= range+2) + return FALSE + for(var/mob/misser in range(1,src)) + if(!(misser.stat <= SOFT_CRIT)) + continue + misser.playsound_local(get_turf(src), near_miss_sound, 100, FALSE) + misser.shake_animation(damage) + /** * Projectile crossed: When something enters a projectile's tile, make sure the projectile hits it if it should be hitting it. @@ -533,8 +549,8 @@ * Projectile can pass through * Used to not even attempt to Bump() or fail to Cross() anything we already hit. */ -/obj/projectile/CanPassThrough(atom/blocker, turf/target, blocker_opinion) - return impacted[blocker]? TRUE : ..() +/obj/projectile/CanPassThrough(atom/blocker, movement_dir, blocker_opinion) + return LAZYISIN(impacted, blocker) ? TRUE : ..() /** * Projectile moved: @@ -758,8 +774,6 @@ process_homing() var/forcemoved = FALSE for(var/i in 1 to SSprojectiles.global_iterations_per_move) - if(QDELETED(src)) - return trajectory.increment(trajectory_multiplier) var/turf/T = trajectory.return_turf() if(!istype(T)) @@ -780,6 +794,8 @@ else if(T != loc) step_towards(src, T) hitscan_last = loc + if(QDELETED(src)) + return if(!hitscanning && !forcemoved) pixel_x = trajectory.return_px() - trajectory.mpx * trajectory_multiplier * SSprojectiles.global_iterations_per_move pixel_y = trajectory.return_py() - trajectory.mpy * trajectory_multiplier * SSprojectiles.global_iterations_per_move @@ -871,13 +887,14 @@ finalize_hitscan_and_generate_tracers() STOP_PROCESSING(SSprojectiles, src) cleanup_beam_segments() - qdel(trajectory) + if(trajectory) + QDEL_NULL(trajectory) return ..() /obj/projectile/proc/cleanup_beam_segments() QDEL_LIST_ASSOC(beam_segments) beam_segments = list() - QDEL_NULL(beam_index) //WS edit - Hitscan emitters + QDEL_NULL(beam_index) /obj/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE) if(trajectory && beam_index) diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index d17f94af19ae..d0fa95841ab4 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -4,8 +4,18 @@ pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE damage = 20 damage_type = BURN - hitsound = 'sound/weapons/sear.ogg' - hitsound_wall = 'sound/weapons/effects/searwall.ogg' + + hitsound = 'sound/weapons/gun/hit/energy_impact1.ogg' + hitsound_non_living = 'sound/weapons/effects/searwall.ogg' + hitsound_glass = 'sound/weapons/effects/searwall.ogg' + hitsound_stone = 'sound/weapons/sear.ogg' + hitsound_metal = 'sound/weapons/effects/searwall.ogg' + hitsound_wood = 'sound/weapons/sear.ogg' + hitsound_snow = 'sound/weapons/sear.ogg' + + near_miss_sound = 'sound/weapons/gun/hit/energy_miss1.ogg' + ricochet_sound = 'sound/weapons/gun/hit/energy_ricochet1.ogg' + flag = "laser" eyeblur = 2 impact_effect_type = /obj/effect/temp_visual/impact_effect/red_laser @@ -14,7 +24,7 @@ light_power = 1 light_color = COLOR_SOFT_RED ricochets_max = 50 //Honk! - ricochet_chance = 80 + ricochet_chance = 90 reflectable = REFLECT_NORMAL /obj/projectile/beam/throw_atom_into_space() diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 6123789df438..43106f97deec 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -6,5 +6,20 @@ damage_type = BRUTE nodamage = FALSE flag = "bullet" - hitsound_wall = "ricochet" + + hitsound = "bullet_hit" + hitsound_non_living = "bullet_impact" + hitsound_glass = "bullet_hit_glass" + hitsound_stone = "bullet_hit_stone" + hitsound_metal = "bullet_hit_metal" + hitsound_wood = "bullet_hit_wood" + hitsound_snow = "bullet_hit_snow" + + near_miss_sound = "bullet_miss" + ricochet_sound = "bullet_bounce" + + impact_effect_type = /obj/effect/temp_visual/impact_effect + ricochets_max = 5 //should be enough to scare the shit out of someone + ricochet_chance = 30 + ricochet_decay_damage = 0.5 //shouldnt being reliable, but deadly enough to be careful if you accidentally hit an ally diff --git a/code/modules/projectiles/projectile/bullets/dnainjector.dm b/code/modules/projectiles/projectile/bullets/dnainjector.dm index ad20c47eeb71..b8cd6f92b10d 100644 --- a/code/modules/projectiles/projectile/bullets/dnainjector.dm +++ b/code/modules/projectiles/projectile/bullets/dnainjector.dm @@ -3,7 +3,7 @@ icon_state = "syringeproj" var/obj/item/dnainjector/injector damage = 5 - hitsound_wall = "shatter" + hitsound_non_living = "shatter" /obj/projectile/bullet/dnainjector/on_hit(atom/target, blocked = FALSE) if(iscarbon(target)) diff --git a/code/modules/projectiles/projectile/bullets/gauss.dm b/code/modules/projectiles/projectile/bullets/gauss.dm index 3a25619ba9a8..0955745ed798 100644 --- a/code/modules/projectiles/projectile/bullets/gauss.dm +++ b/code/modules/projectiles/projectile/bullets/gauss.dm @@ -1,22 +1,26 @@ +// Ferromagnetic Pellet (Prototype Gauss Rifle & Claris) + /obj/projectile/bullet/gauss name = "ferromagnetic pellet" icon_state = "gauss-pellet" - damage = 20 - armour_penetration = 40 + damage = 25 range = 35 light_color = COLOR_SOFT_RED light_range = 3 +// Ferromagnetic Lance (GAR AR) + /obj/projectile/bullet/gauss/lance name = "ferromagnetic lance" icon_state = "redtrac" damage = 30 - armour_penetration = 40 - speed = 0.4 + armour_penetration = 20 + +// Ferromagnetic Slug (Model H) /obj/projectile/bullet/gauss/slug name = "ferromagnetic slug" icon_state = "gauss-slug" damage = 50 + armour_penetration = -60 speed = 0.8 - armour_penetration = 40 diff --git a/code/modules/projectiles/projectile/bullets/lmg.dm b/code/modules/projectiles/projectile/bullets/lmg.dm index 327113038a0c..ed9469cb668a 100644 --- a/code/modules/projectiles/projectile/bullets/lmg.dm +++ b/code/modules/projectiles/projectile/bullets/lmg.dm @@ -54,18 +54,18 @@ damage = 20 armour_penetration = 20 -// 7.12x82mm (SAW) +// 7.12x82mm (L6 SAW) /obj/projectile/bullet/mm712x82 name = "7.12x82mm bullet" damage = 25 armour_penetration = 40 -/obj/projectile/bullet/mm712x82_ap +/obj/projectile/bullet/mm712x82/ap name = "7.12x82mm armor-piercing bullet" armour_penetration = 75 -/obj/projectile/bullet/mm712x82_hp +/obj/projectile/bullet/mm712x82/hp name = "7.12x82mm hollow point bullet" damage = 45 armour_penetration = -20 @@ -76,12 +76,11 @@ armour_penetration = 40 fire_stacks = 3 -/obj/projectile/bullet/mm712x82_match +/obj/projectile/bullet/mm712x82/match name = "7.12x82mm match bullet" - damage = 25 - armour_penetration = 40 + speed = 0.3 + armour_penetration = 50 ricochets_max = 2 ricochet_chance = 60 ricochet_auto_aim_range = 4 ricochet_incidence_leeway = 35 - diff --git a/code/modules/projectiles/projectile/bullets/pistol.dm b/code/modules/projectiles/projectile/bullets/pistol.dm index 5fabb11b9420..6a1323e481dc 100644 --- a/code/modules/projectiles/projectile/bullets/pistol.dm +++ b/code/modules/projectiles/projectile/bullets/pistol.dm @@ -5,17 +5,16 @@ damage = 20 armour_penetration = -20 -/obj/projectile/bullet/c9mm_surplus +/obj/projectile/bullet/c9mm/surplus name = "9mm surplus bullet" damage = 15 - armour_penetration = -20 -/obj/projectile/bullet/c9mm_ap +/obj/projectile/bullet/c9mm/ap name = "9mm armor-piercing bullet" damage = 15 armour_penetration = 20 -/obj/projectile/bullet/c9mm_hp +/obj/projectile/bullet/c9mm/hp name = "9mm hollow point bullet" damage = 40 armour_penetration = -50 @@ -26,30 +25,29 @@ armour_penetration = -20 fire_stacks = 2 -/obj/projectile/bullet/c9mm/rubbershot +/obj/projectile/bullet/c9mm/rubber name = "9mm rubber bullet" damage = 5 - armour_penetration = -50 - stamina = 20 + armour_penetration = -40 + stamina = 30 -// 10mm (Stechkin) +// 10mm (Stechkin & SkM-44(k)) /obj/projectile/bullet/c10mm name = "10mm bullet" damage = 25 armour_penetration = -20 -/obj/projectile/bullet/c10mm_surplus +/obj/projectile/bullet/c10mm/surplus name = "10mm surplus bullet" damage = 20 - armour_penetration = -20 -/obj/projectile/bullet/c10mm_ap +/obj/projectile/bullet/c10mm/ap name = "10mm armor-piercing bullet" damage = 20 armour_penetration = 20 -/obj/projectile/bullet/c10mm_hp +/obj/projectile/bullet/c10mm/hp name = "10mm hollow point bullet" damage = 45 armour_penetration = -50 @@ -60,30 +58,29 @@ armour_penetration = -20 fire_stacks = 2 -/obj/projectile/bullet/c10mm/rubbershot +/obj/projectile/bullet/c10mm/rubber name = "10mm rubber bullet" - damage = 5 - stamina = 20 - armour_penetration = -20 + damage = 7 + stamina = 38 + armour_penetration = -40 -// .45 (M1911, C20r) +// .45 (M1911, C20r, Thompson) /obj/projectile/bullet/c45 name = ".45 bullet" damage = 25 armour_penetration = -20 -/obj/projectile/bullet/c45_surplus +/obj/projectile/bullet/c45/surplus name = ".45 surplus bullet" damage = 20 - armour_penetration = -20 -/obj/projectile/bullet/c45_ap +/obj/projectile/bullet/c45/ap name = ".45 armor-piercing bullet" damage = 20 armour_penetration = 20 -/obj/projectile/bullet/c45_hp +/obj/projectile/bullet/c45/hp name = ".45 hollow point bullet" damage = 45 armour_penetration = -50 @@ -94,8 +91,8 @@ fire_stacks = 2 armour_penetration = -20 -/obj/projectile/bullet/c45/rubbershot +/obj/projectile/bullet/c45/rubber name = ".45 rubber bullet" - damage = 5 - stamina = 20 - armour_penetration = -20 + damage = 7 + stamina = 38 + armour_penetration = -40 diff --git a/code/modules/projectiles/projectile/bullets/revolver.dm b/code/modules/projectiles/projectile/bullets/revolver.dm index 3c204157f8a3..ecd8b5abbbb9 100644 --- a/code/modules/projectiles/projectile/bullets/revolver.dm +++ b/code/modules/projectiles/projectile/bullets/revolver.dm @@ -5,7 +5,7 @@ damage = 30 armour_penetration = -20 -// .50AE (Desert Eagle) +// .50 AE (Desert Eagle) /obj/projectile/bullet/a50AE name = ".50 AE bullet" @@ -16,19 +16,17 @@ damage = 60 armour_penetration = -50 -// .38 (Detective's Gun & Winchester) +// .38 (Colt Detective Special & Winchester) /obj/projectile/bullet/c38 name = ".38 bullet" - damage = 20 + damage = 25 armour_penetration = -20 - ricochets_max = 2 - ricochet_chance = 50 - ricochet_auto_aim_angle = 10 - ricochet_auto_aim_range = 3 /obj/projectile/bullet/c38/match name = ".38 match bullet" + speed = 0.3 + armour_penetration = -10 ricochets_max = 4 ricochet_chance = 100 ricochet_auto_aim_angle = 40 @@ -37,10 +35,12 @@ ricochet_decay_chance = 1 ricochet_decay_damage = 1 -/obj/projectile/bullet/c38/match/bouncy +/obj/projectile/bullet/c38/match/bouncy // I don't know why this is a subtype of match name = ".38 rubber bullet" - damage = 10 - stamina = 30 + speed = 0.4 + damage = 7 + stamina = 38 + armour_penetration = -60 ricochets_max = 6 ricochet_incidence_leeway = 70 ricochet_chance = 130 @@ -49,7 +49,7 @@ /obj/projectile/bullet/c38/dumdum name = ".38 dum-dum bullet" - damage = 15 + damage = 20 armour_penetration = -50 ricochets_max = 0 shrapnel_type = /obj/item/shrapnel/bullet/c38/dumdum @@ -74,19 +74,17 @@ /obj/projectile/bullet/c38/hotshot //similar to incendiary bullets, but do not leave a flaming trail name = ".38 hot shot bullet" - damage = 20 ricochets_max = 0 /obj/projectile/bullet/c38/hotshot/on_hit(atom/target, blocked = FALSE) . = ..() if(iscarbon(target)) var/mob/living/carbon/M = target - M.adjust_fire_stacks(6) + M.adjust_fire_stacks(3) M.IgniteMob() /obj/projectile/bullet/c38/iceblox //see /obj/projectile/temp for the original code name = ".38 iceblox bullet" - damage = 20 var/temperature = 100 ricochets_max = 0 @@ -96,7 +94,7 @@ var/mob/living/M = target M.adjust_bodytemperature(((100-blocked)/100)*(temperature - M.bodytemperature)) -// .357 (Syndie Revolver) +// .357 (Syndicate Revolver) /obj/projectile/bullet/a357 name = ".357 bullet" @@ -105,6 +103,8 @@ // admin only really, for ocelot memes /obj/projectile/bullet/a357/match name = ".357 match bullet" + speed = 0.3 + armour_penetration = 10 ricochets_max = 5 ricochet_chance = 140 ricochet_auto_aim_angle = 50 @@ -122,10 +122,12 @@ /obj/projectile/bullet/a4570 name = ".45-70 bullet" - damage = 40 //crits in 3-4 taps depending on armor + damage = 45 //crits in 3-4 taps depending on armor /obj/projectile/bullet/a4570/match name = ".45-70 match bullet" + speed = 0.3 + armour_penetration = 10 ricochets_max = 5 ricochet_chance = 140 ricochet_auto_aim_angle = 50 @@ -146,3 +148,11 @@ ..() explosion(target, -1, 0, 1) return BULLET_ACT_HIT + + +/obj/projectile/bullet/c22lr + name = ".22LR bullet" + damage = 20 + armour_penetration = -45 + ricochet_incidence_leeway = 20 + ricochet_chance = 45 diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm index 8fe2beeae20c..a69ef88b4f68 100644 --- a/code/modules/projectiles/projectile/bullets/rifle.dm +++ b/code/modules/projectiles/projectile/bullets/rifle.dm @@ -1,21 +1,28 @@ -// 5.56mm (M-90gl Carbine) +// 5.56mm (M-90gl Carbine & P-16) -/obj/projectile/bullet/a556 +/obj/projectile/bullet/a556_45 name = "5.56x45mm bullet" damage = 25 armour_penetration = 20 -// 7.62 (Nagant Rifle) +// 7.62x54mmR (Illestren Rifle) -/obj/projectile/bullet/a762 +/obj/projectile/bullet/a762_54 name = "7.62x54mmR bullet" + speed = 0.3 damage = 30 armour_penetration = 40 +// .300 Magnum (Smile Rifle) + /obj/projectile/bullet/a300 name = ".300 Magnum bullet" - damage = 60 + speed = 0.3 + damage = 40 stamina = 10 + armour_penetration = 40 + +// Bloat evil wizard stupid shit /obj/projectile/bullet/a762_enchanted name = "enchanted 7.62x54mmR bullet" @@ -29,30 +36,32 @@ damage = 25 armour_penetration = 20 -//.300 BLK (Survivor Rifle) +//.300 BLK (Polymer Survivor Rifle) /obj/projectile/bullet/aac_300blk name = ".300 Blackout bullet" damage = 30 - dismemberment = 20 + armour_penetration = 20 -//7.62x39mm (SVG-67) +//7.62x39mm (SVG-67 & SkM-24) /obj/projectile/bullet/a762_39 name = "7.62x39mm" damage = 30 armour_penetration = 20 -//.308 WIN (M514) +//.308 WIN (M514 & GAL DMRs) /obj/projectile/bullet/win308 name = ".308 Winchester" + speed = 0.3 damage = 30 armour_penetration = 40 -// 8x58 (SG-whatever) +// 8x58mm caseless (SG-669) /obj/projectile/bullet/a858 name = "8x58mm caseless bullet" - damage = 50 - armour_penetration = 15 + speed = 0.3 + damage = 30 + armour_penetration = 40 diff --git a/code/modules/projectiles/projectile/bullets/shotgun.dm b/code/modules/projectiles/projectile/bullets/shotgun.dm index c3f9049e3a64..0979a268ee16 100644 --- a/code/modules/projectiles/projectile/bullets/shotgun.dm +++ b/code/modules/projectiles/projectile/bullets/shotgun.dm @@ -1,28 +1,29 @@ -/obj/projectile/bullet/shotgun_slug +/obj/projectile/bullet/slug name = "12g shotgun slug" - damage = 60 + damage = 40 armour_penetration = -10 + speed = 0.5 -/obj/projectile/bullet/shotgun_beanbag +/obj/projectile/bullet/slug/beanbag name = "beanbag slug" - damage = 5 - stamina = 45 - armour_penetration = -10 + damage = 10 + stamina = 60 + armour_penetration = -20 /obj/projectile/bullet/incendiary/shotgun name = "incendiary slug" - damage = 20 + damage = 25 armour_penetration = -10 + speed = 0.5 /obj/projectile/bullet/incendiary/shotgun/dragonsbreath name = "dragonsbreath pellet" damage = 5 armour_penetration = -35 -/obj/projectile/bullet/shotgun_stunslug +/obj/projectile/bullet/slug/stun name = "stunslug" damage = 5 - armour_penetration = -10 paralyze = 100 stutter = 5 jitter = 20 @@ -30,63 +31,66 @@ icon_state = "spark" color = "#FFFF00" -/obj/projectile/bullet/shotgun_meteorslug +/obj/projectile/bullet/slug/meteor name = "meteorslug" icon = 'icons/obj/meteor.dmi' icon_state = "dust" - damage = 40 - armour_penetration = -10 + damage = 30 paralyze = 15 knockdown = 80 hitsound = 'sound/effects/meteorimpact.ogg' -/obj/projectile/bullet/shotgun_meteorslug/on_hit(atom/target, blocked = FALSE) +/obj/projectile/bullet/slug/meteor/on_hit(atom/target, blocked = FALSE) . = ..() if(ismovable(target)) var/atom/movable/M = target var/atom/throw_target = get_edge_target_turf(M, get_dir(src, get_step_away(M, src))) M.safe_throw_at(throw_target, 3, 2) -/obj/projectile/bullet/shotgun_meteorslug/Initialize() +/obj/projectile/bullet/slug/meteor/Initialize() . = ..() SpinAnimation() -/obj/projectile/bullet/shotgun_frag12 - name ="frag12 slug" - damage = 35 - armour_penetration = -10 +/obj/projectile/bullet/slug/frag12 + name = "frag12 slug" + damage = 25 paralyze = 50 -/obj/projectile/bullet/shotgun_frag12/on_hit(atom/target, blocked = FALSE) +/obj/projectile/bullet/slug/frag12/on_hit(atom/target, blocked = FALSE) ..() explosion(target, -1, 0, 1) return BULLET_ACT_HIT /obj/projectile/bullet/pellet ///How much damage is subtracted per tile? - var/tile_dropoff = 1 + var/tile_dropoff = 1 //Standard of 10% per tile ///How much stamina damage is subtracted per tile? - var/tile_dropoff_stamina = 0.8 + var/tile_dropoff_stamina = 1.5 //As above + icon_state = "pellet" armour_penetration = -35 + speed = 0.5 -/obj/projectile/bullet/pellet/shotgun_buckshot +/obj/projectile/bullet/pellet/buckshot name = "buckshot pellet" - damage = 10 - + damage = 20 + armour_penetration = -10 -/obj/projectile/bullet/pellet/shotgun_rubbershot +/obj/projectile/bullet/pellet/rubbershot name = "rubbershot pellet" - damage = 2 - stamina = 8 - tile_dropoff = 0.2 // Keep it at 10% per tile + damage = 2.5 + tile_dropoff = 0.15 + stamina = 15 + armour_penetration = -70 -/obj/projectile/bullet/pellet/shotgun_incapacitate +/obj/projectile/bullet/pellet/rubbershot/incapacitate name = "incapacitating pellet" damage = 1 + tile_dropoff = 0.1 stamina = 6 + tile_dropoff_stamina = 0.6 -/obj/projectile/bullet/pellet/Range() +/obj/projectile/bullet/pellet/Range() //10% loss per tile = max range of 10, generally ..() if(damage > 0) damage -= tile_dropoff @@ -95,17 +99,9 @@ if(damage < 0 && stamina < 0) qdel(src) -/obj/projectile/bullet/pellet/shotgun_improvised - tile_dropoff = 0.45 //Come on it does 4.5 damage don't be like that. //WS Edit - Shotgun nerf +/obj/projectile/bullet/pellet/improvised damage = 6 - -/obj/projectile/bullet/pellet/shotgun_improvised/Initialize() - . = ..() - range = rand(1, 8) - -/obj/projectile/bullet/pellet/shotgun_improvised/on_range() - do_sparks(1, TRUE, src) - ..() + tile_dropoff = 0.6 // Mech Scattershot @@ -113,8 +109,8 @@ damage = 24 armour_penetration = -20 -/obj/projectile/bullet/pellet/shotgun_buckshot/twobore +/obj/projectile/bullet/pellet/buckshot/twobore name = "two-bore pellet" damage = 30 armour_penetration = -25 - tile_dropoff = 5 + tile_dropoff = 3 diff --git a/code/modules/projectiles/projectile/bullets/smg.dm b/code/modules/projectiles/projectile/bullets/smg.dm index 0cf2225e3872..fb5e2a53ce65 100644 --- a/code/modules/projectiles/projectile/bullets/smg.dm +++ b/code/modules/projectiles/projectile/bullets/smg.dm @@ -1,10 +1,10 @@ -// 4.6x30mm (Autorifles) +// 4.6x30mm (WT-550 Automatic Rifle & NT-SVG) /obj/projectile/bullet/c46x30mm name = "4.6x30mm bullet" damage = 20 -/obj/projectile/bullet/c46x30mm_ap +/obj/projectile/bullet/c46x30mm/ap name = "4.6x30mm armor-piercing bullet" damage = 15 armour_penetration = 40 @@ -14,30 +14,35 @@ damage = 10 fire_stacks = 1 +// 4.73x33mm caseless (Solar) + /obj/projectile/bullet/c47x33mm name = "4.73x33mm bullet" damage = 25 armour_penetration = 20 +// 5.56 HITP caseless (Solare C) + /obj/projectile/bullet/c556mm name = "5.56mm HITP bullet" damage = 20 -/obj/projectile/bullet/c556mm_surplus +/obj/projectile/bullet/c556mm/surplus name = "5.56mm HITP surplus bullet" damage = 15 -/obj/projectile/bullet/c556mm_ap +/obj/projectile/bullet/c556mm/ap name = "5.56mm HITP AP bullet" damage = 15 armour_penetration = 40 -/obj/projectile/bullet/c556mm_hp - name = "5.56mm HITP hollow-point bullet" +/obj/projectile/bullet/c556mm/hp + name = "5.56mm HITP hollow point bullet" damage = 30 armour_penetration = -50 -/obj/projectile/bullet/c556mm/rubbershot +/obj/projectile/bullet/c556mm/rubber name = "5.56mm HITP rubber bullet" damage = 5 - stamina = 20 + stamina = 30 + armour_penetration = -20 diff --git a/code/modules/projectiles/projectile/bullets/sniper.dm b/code/modules/projectiles/projectile/bullets/sniper.dm index 9dc8bfb5d4d7..1f725b8113f2 100644 --- a/code/modules/projectiles/projectile/bullets/sniper.dm +++ b/code/modules/projectiles/projectile/bullets/sniper.dm @@ -1,10 +1,10 @@ -// .50 (Sniper) +// .50 BMG (Sniper) /obj/projectile/bullet/p50 - name =".50 bullet" - speed = 0.4 + name = ".50 BMG bullet" + speed = 0.3 damage = 70 - paralyze = 100 + knockdown = 100 dismemberment = 50 armour_penetration = 60 var/breakthings = TRUE @@ -16,11 +16,11 @@ return ..() /obj/projectile/bullet/p50/soporific - name =".50 soporific bullet" + name = ".50 BMG soporific bullet" armour_penetration = 0 damage = 0 dismemberment = 0 - paralyze = 0 + knockdown = 0 breakthings = FALSE /obj/projectile/bullet/p50/soporific/on_hit(atom/target, blocked = FALSE) @@ -30,17 +30,16 @@ return ..() /obj/projectile/bullet/p50/penetrator - name = "penetrator round" + name = ".50 BMG penetrator round" icon_state = "gauss" damage = 60 projectile_piercing = PASSMOB projectile_phasing = (ALL & (~PASSMOB)) dismemberment = 0 //It goes through you cleanly. - paralyze = 0 + knockdown = 0 breakthings = FALSE /obj/projectile/bullet/p50/penetrator/shuttle //Nukeop Shuttle Variety icon_state = "gaussstrong" damage = 25 - speed = 0.3 range = 16 diff --git a/code/modules/projectiles/projectile/energy/net_snare.dm b/code/modules/projectiles/projectile/energy/net_snare.dm index 2a9196ce9ef8..0e1dff3d1e72 100644 --- a/code/modules/projectiles/projectile/energy/net_snare.dm +++ b/code/modules/projectiles/projectile/energy/net_snare.dm @@ -37,7 +37,7 @@ if(com.power_station && com.power_station.teleporter_hub && com.power_station.engaged) teletarget = com.target - addtimer(CALLBACK(src, .proc/pop, teletarget), 30) + addtimer(CALLBACK(src, PROC_REF(pop), teletarget), 30) /obj/effect/nettingportal/proc/pop(teletarget) if(teletarget) diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 93e3de355636..458c19d053da 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -423,6 +423,7 @@ /obj/projectile/magic/locker/Destroy() locker_suck = FALSE + RemoveElement(/datum/element/connect_loc, projectile_connections) //We do this manually so the forcemoves don't "hit" us. This behavior is kinda dumb, someone refactor this for(var/atom/movable/AM in contents) AM.forceMove(get_turf(src)) . = ..() @@ -437,8 +438,8 @@ /obj/structure/closet/decay/Initialize() . = ..() if(auto_destroy) - addtimer(CALLBACK(src, .proc/bust_open), 5 MINUTES) - addtimer(CALLBACK(src, .proc/magicly_lock), 5) + addtimer(CALLBACK(src, PROC_REF(bust_open)), 5 MINUTES) + addtimer(CALLBACK(src, PROC_REF(magicly_lock)), 5) /obj/structure/closet/decay/proc/magicly_lock() if(!welded) @@ -452,7 +453,7 @@ /obj/structure/closet/decay/proc/decay() animate(src, alpha = 0, time = 30) - addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, src), 30) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), 30) /obj/structure/closet/decay/open(mob/living/user, force = FALSE) . = ..() @@ -460,12 +461,12 @@ if(icon_state == magic_icon) //check if we used the magic icon at all before giving it the lesser magic icon unmagify() else - addtimer(CALLBACK(src, .proc/decay), 15 SECONDS) + addtimer(CALLBACK(src, PROC_REF(decay)), 15 SECONDS) /obj/structure/closet/decay/proc/unmagify() icon_state = weakened_icon update_appearance() - addtimer(CALLBACK(src, .proc/decay), 15 SECONDS) + addtimer(CALLBACK(src, PROC_REF(decay)), 15 SECONDS) icon_welded = "welded" /obj/projectile/magic/flying @@ -717,7 +718,7 @@ return BULLET_ACT_BLOCK var/turf/T = get_turf(target) for(var/i=0, i<50, i+=10) - addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, T, -1, exp_heavy, exp_light, exp_flash, FALSE, FALSE, exp_fire), i) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), T, -1, exp_heavy, exp_light, exp_flash, FALSE, FALSE, exp_fire), i) //still magic related, but a different path diff --git a/code/modules/projectiles/projectile/special/curse.dm b/code/modules/projectiles/projectile/special/curse.dm index 8001593d86a7..5c928e293e12 100644 --- a/code/modules/projectiles/projectile/special/curse.dm +++ b/code/modules/projectiles/projectile/special/curse.dm @@ -20,6 +20,10 @@ handedness = prob(50) icon_state = "cursehand[handedness]" +/obj/projectile/curse_hand/Destroy() + QDEL_NULL(arm) + return ..() + /obj/projectile/curse_hand/update_icon_state() icon_state = "[initial(icon_state)][handedness]" return ..() diff --git a/code/modules/projectiles/projectile/special/gravity.dm b/code/modules/projectiles/projectile/special/gravity.dm index d3abf739d34d..2b56599f9812 100644 --- a/code/modules/projectiles/projectile/special/gravity.dm +++ b/code/modules/projectiles/projectile/special/gravity.dm @@ -15,7 +15,7 @@ . = ..() var/obj/item/ammo_casing/energy/gravity/repulse/C = loc if(istype(C)) //Hard-coded maximum power so servers can't be crashed by trying to throw the entire Z level's items - power = min(C.gun.power, 15) + power = min(C.gun?.power, 15) /obj/projectile/gravityrepulse/on_hit() . = ..() @@ -50,7 +50,7 @@ . = ..() var/obj/item/ammo_casing/energy/gravity/attract/C = loc if(istype(C)) //Hard-coded maximum power so servers can't be crashed by trying to throw the entire Z level's items - power = min(C.gun.power, 15) + power = min(C.gun?.power, 15) /obj/projectile/gravityattract/on_hit() . = ..() @@ -84,7 +84,7 @@ . = ..() var/obj/item/ammo_casing/energy/gravity/chaos/C = loc if(istype(C)) //Hard-coded maximum power so servers can't be crashed by trying to throw the entire Z level's items - power = min(C.gun.power, 15) + power = min(C.gun?.power, 15) /obj/projectile/gravitychaos/on_hit() . = ..() diff --git a/code/modules/projectiles/projectile/special/hallucination.dm b/code/modules/projectiles/projectile/special/hallucination.dm index 918ce629ebcf..c146932df085 100644 --- a/code/modules/projectiles/projectile/special/hallucination.dm +++ b/code/modules/projectiles/projectile/special/hallucination.dm @@ -28,7 +28,7 @@ hal_target.client.images += fake_icon /obj/projectile/hallucination/Destroy() - if(hal_target.client) + if(hal_target?.client) hal_target.client.images -= fake_icon QDEL_NULL(fake_icon) return ..() @@ -100,7 +100,7 @@ layer = ABOVE_MOB_LAYER hal_target.client.images += blood animate(blood, pixel_x = target_pixel_x, pixel_y = target_pixel_y, alpha = 0, time = 5) - addtimer(CALLBACK(src, .proc/cleanup_blood), 5) + addtimer(CALLBACK(src, PROC_REF(cleanup_blood)), 5) /obj/projectile/hallucination/proc/cleanup_blood(image/blood) hal_target.client.images -= blood @@ -128,7 +128,7 @@ hal_icon_state = "bullet" hal_fire_sound = "gunshot" hal_hitsound = 'sound/weapons/pierce.ogg' - hal_hitsound_wall = "ricochet" + hal_hitsound_wall = "bullet_impact" hal_impact_effect = "impact_bullet" hal_impact_effect_wall = "impact_bullet" hit_duration = 5 @@ -171,7 +171,7 @@ if(hal_target.dna && hal_target.dna.check_mutation(HULK)) hal_target.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk") else if((hal_target.status_flags & CANKNOCKDOWN) && !HAS_TRAIT(hal_target, TRAIT_STUNIMMUNE)) - addtimer(CALLBACK(hal_target, /mob/living/carbon.proc/do_jitter_animation, 20), 5) + addtimer(CALLBACK(hal_target, TYPE_PROC_REF(/mob/living/carbon, do_jitter_animation), 20), 5) /obj/projectile/hallucination/disabler name = "disabler beam" diff --git a/code/modules/projectiles/projectile/special/rocket.dm b/code/modules/projectiles/projectile/special/rocket.dm index d86f90b9368e..0680c62279fd 100644 --- a/code/modules/projectiles/projectile/special/rocket.dm +++ b/code/modules/projectiles/projectile/special/rocket.dm @@ -19,7 +19,7 @@ /obj/projectile/bullet/a84mm/on_hit(atom/target, blocked = FALSE) ..() - explosion(target, -1, 1, 3, 1, 0, flame_range = 4) + explosion(target, 1, 1, 2, 1, 0, flame_range = 4) if(ismecha(target)) var/obj/mecha/M = target @@ -69,7 +69,7 @@ ..() for(var/i in sturdy) if(istype(target, i)) - explosion(target, 0, 1, 1, 2) + explosion(target, 1, 1, 1, 2) return BULLET_ACT_HIT //if(istype(target, /turf/closed) || ismecha(target)) new /obj/item/broken_missile(get_turf(src), 1) diff --git a/code/modules/projectiles/projectile/special/wormhole.dm b/code/modules/projectiles/projectile/special/wormhole.dm index 2bc9713f1a03..f35436683377 100644 --- a/code/modules/projectiles/projectile/special/wormhole.dm +++ b/code/modules/projectiles/projectile/special/wormhole.dm @@ -5,7 +5,8 @@ damage = 0 nodamage = TRUE pass_flags = PASSGLASS | PASSTABLE | PASSGRILLE | PASSMOB - var/obj/item/gun/energy/wormhole_projector/gun + //Weakref to the thing that shot us + var/datum/weakref/gun color = "#33CCFF" tracer_type = /obj/effect/projectile/tracer/wormhole impact_type = /obj/effect/projectile/impact/wormhole @@ -23,7 +24,8 @@ /obj/projectile/beam/wormhole/on_hit(atom/target) - if(!gun) + var/obj/item/gun/energy/wormhole_projector/projector = gun.resolve() + if(!projector) qdel(src) return - gun.create_portal(src, get_turf(src)) + projector.create_portal(src, get_turf(src)) diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index eb01cf28b714..1fefd1d55031 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -217,7 +217,7 @@ update_appearance() var/turf/source_turf = get_turf(src) log_virus("A culture bottle was printed for the virus [A.admin_details()] at [loc_name(source_turf)] by [key_name(usr)]") - addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 50) + addtimer(CALLBACK(src, PROC_REF(reset_replicator_cooldown)), 50) . = TRUE if("create_vaccine_bottle") if (wait) @@ -229,7 +229,7 @@ B.reagents.add_reagent(/datum/reagent/vaccine, 15, list(id)) wait = TRUE update_appearance() - addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 200) + addtimer(CALLBACK(src, PROC_REF(reset_replicator_cooldown)), 200) . = TRUE diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index b638c82fef78..5e5bd21747dc 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -241,7 +241,7 @@ var/offset = prob(50) ? -2 : 2 var/old_pixel_x = pixel_x animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = -1) //start shaking - addtimer(CALLBACK(src, .proc/stop_shaking, old_pixel_x), duration) + addtimer(CALLBACK(src, PROC_REF(stop_shaking), old_pixel_x), duration) /obj/machinery/reagentgrinder/proc/stop_shaking(old_px) animate(src) @@ -255,7 +255,7 @@ playsound(src, 'sound/machines/blender.ogg', 50, TRUE) else playsound(src, 'sound/machines/juicer.ogg', 20, TRUE) - addtimer(CALLBACK(src, .proc/stop_operating), time / speed) + addtimer(CALLBACK(src, PROC_REF(stop_operating)), time / speed) /obj/machinery/reagentgrinder/proc/stop_operating() operating = FALSE @@ -314,7 +314,7 @@ if(!beaker || machine_stat & (NOPOWER|BROKEN)) return operate_for(50, juicing = TRUE) - addtimer(CALLBACK(src, /obj/machinery/reagentgrinder/proc/mix_complete), 50) + addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/reagentgrinder, mix_complete)), 50) /obj/machinery/reagentgrinder/proc/mix_complete() if(beaker?.reagents.total_volume) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 5196298a80c3..b2c8633321ea 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -265,7 +265,7 @@ All effects don't start immediately, but rather get worse over time; the rate is /datum/reagent/consumable/ethanol/vodka name = "Vodka" - description = "Number one drink AND fueling choice for Russians worldwide." + description = "Number one drink that also serves as fuel." color = "#0064C8" // rgb: 0, 100, 200 boozepwr = 65 taste_description = "grain alcohol" @@ -365,8 +365,8 @@ All effects don't start immediately, but rather get worse over time; the rate is shot_glass_icon_state = "shotglassred" /datum/reagent/consumable/ethanol/lizardwine - name = "lizard wine" - description = "An alcoholic beverage from Space China, made by infusing lizard tails in ethanol." + name = "Kalixcis Wine" + description = "A relatively popular Kalixcane beverage, made by infusing cacti in ethanol." color = "#7E4043" // rgb: 126, 64, 67 boozepwr = 45 quality = DRINK_FANTASTIC @@ -502,15 +502,6 @@ All effects don't start immediately, but rather get worse over time; the rate is glass_name = "Cuba Libre" glass_desc = "A classic mix of rum, cola, and lime. A favorite of revolutionaries everywhere!" -/datum/reagent/consumable/ethanol/cuba_libre/on_mob_life(mob/living/carbon/M) - if(M.mind && M.mind.has_antag_datum(/datum/antagonist/rev)) //Cuba Libre, the traditional drink of revolutions! Heals revolutionaries. - M.adjustBruteLoss(-1, 0) - M.adjustFireLoss(-1, 0) - M.adjustToxLoss(-1, 0) - M.adjustOxyLoss(-5, 0) - . = 1 - return ..() || . - /datum/reagent/consumable/ethanol/whiskey_cola name = "Whiskey Cola" description = "Whiskey, mixed with cola. Surprisingly refreshing." @@ -1948,7 +1939,8 @@ All effects don't start immediately, but rather get worse over time; the rate is generate_data_info(data) /datum/reagent/consumable/ethanol/fruit_wine/proc/generate_data_info(list/data) - var/minimum_percent = 0.15 //Percentages measured between 0 and 1. + // BYOND's compiler fails to catch non-consts in a ranged switch case, and it causes incorrect behavior. So this needs to explicitly be a constant. + var/const/minimum_percent = 0.15 //Percentages measured between 0 and 1. var/list/primary_tastes = list() var/list/secondary_tastes = list() glass_name = "glass of [name]" diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index 3ddadea35b04..4fc71a1eba0d 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -1,12 +1,13 @@ // Category 2 medicines are medicines that have an ill effect regardless of volume/OD to dissuade doping. Mostly used as emergency chemicals OR to convert damage (and heal a bit in the process). The type is used to prompt borgs that the medicine is harmful. -/datum/reagent/medicine/C2 +/datum/reagent/medicine/c2 + name = "Category two reagent" harmful = TRUE metabolization_rate = 0.2 /******BRUTE******/ /*Suffix: -bital*/ -/datum/reagent/medicine/C2/helbital //kinda a C2 only if you're not in hardcrit. +/datum/reagent/medicine/c2/helbital //kinda a C2 only if you're not in hardcrit. name = "Helbital" description = "Named after the norse goddess Hel, this medicine heals the patient's bruises the closer they are to death. Patients will find the medicine 'aids' their healing if not near death by causing asphyxiation." color = "#9400D3" @@ -16,7 +17,7 @@ var/helbent = FALSE var/reaping = FALSE -/datum/reagent/medicine/C2/helbital/on_mob_life(mob/living/carbon/M) +/datum/reagent/medicine/c2/helbital/on_mob_life(mob/living/carbon/M) . = TRUE var/death_is_coming = (M.getToxLoss() + M.getOxyLoss() + M.getFireLoss() + M.getBruteLoss()) var/thou_shall_heal = 0 @@ -66,26 +67,26 @@ ..() return -/datum/reagent/medicine/C2/helbital/overdose_process(mob/living/carbon/M) +/datum/reagent/medicine/c2/helbital/overdose_process(mob/living/carbon/M) if(!helbent) M.apply_necropolis_curse(CURSE_WASTING | CURSE_BLINDING) helbent = TRUE ..() return TRUE -/datum/reagent/medicine/C2/helbital/on_mob_delete(mob/living/L) +/datum/reagent/medicine/c2/helbital/on_mob_delete(mob/living/L) if(helbent) L.remove_status_effect(STATUS_EFFECT_NECROPOLIS_CURSE) ..() -/datum/reagent/medicine/C2/libital //messes with your liber +/datum/reagent/medicine/c2/libital //messes with your liber name = "Libital" description = "A bruise reliever. Does minor liver damage." color = "#ECEC8D" // rgb: 236 236 141 taste_description = "bitter with a hint of alcohol" reagent_state = SOLID -/datum/reagent/medicine/C2/libital/on_mob_life(mob/living/carbon/M) +/datum/reagent/medicine/c2/libital/on_mob_life(mob/living/carbon/M) M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.3*REM) M.adjustBruteLoss(-3*REM) ..() @@ -93,14 +94,14 @@ /*WS Begin - Medicine Fixes -/datum/reagent/medicine/C2/probital +/datum/reagent/medicine/c2/probital name = "Probital" description = "Originally developed as a prototype-gym supliment for those looking for quick workout turnover, this oral medication quickly repairs broken muscle tissue but causes lactic acid buildup, tiring the patient. Overdosing can cause extreme drowsiness. An Influx of nutrients promotes the muscle repair even further." reagent_state = SOLID color = "#FFFF6B" overdose_threshold = 20 -/datum/reagent/medicine/C2/probital/on_mob_life(mob/living/carbon/M) +/datum/reagent/medicine/c2/probital/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(-2.25*REM, FALSE) var/ooo_youaregettingsleepy = 3.5 switch(round(M.getStaminaLoss())) @@ -114,7 +115,7 @@ ..() . = TRUE -/datum/reagent/medicine/C2/probital/overdose_process(mob/living/M) +/datum/reagent/medicine/c2/probital/overdose_process(mob/living/M) M.adjustStaminaLoss(3*REM, 0) if(M.getStaminaLoss() >= 80) M.drowsyness++ @@ -125,11 +126,11 @@ ..() . = TRUE -/datum/reagent/medicine/C2/probital/on_transfer(atom/A, method=INGEST, trans_volume) +/datum/reagent/medicine/c2/probital/on_transfer(atom/A, method=INGEST, trans_volume) if(method != INGEST || !iscarbon(A)) return - A.reagents.remove_reagent(/datum/reagent/medicine/C2/probital, trans_volume * 0.05) + A.reagents.remove_reagent(/datum/reagent/medicine/c2/probital, trans_volume * 0.05) A.reagents.add_reagent(/datum/reagent/medicine/metafactor, trans_volume * 0.25) ..() @@ -138,7 +139,7 @@ WS End */ /******BURN******/ /*Suffix: -uri*/ -/datum/reagent/medicine/C2/lenturi +/datum/reagent/medicine/c2/lenturi name = "Lenturi" description = "Used to treat burns. Makes you move slower while it is in your system. Applies stomach damage when it leaves your system." reagent_state = LIQUID @@ -146,21 +147,21 @@ WS End */ var/resetting_probability = 0 var/spammer = 0 -/datum/reagent/medicine/C2/lenturi/on_mob_life(mob/living/carbon/M) +/datum/reagent/medicine/c2/lenturi/on_mob_life(mob/living/carbon/M) M.adjustFireLoss(-3 * REM) M.adjustOrganLoss(ORGAN_SLOT_STOMACH, 0.4 * REM) ..() return TRUE -/datum/reagent/medicine/C2/lenturi/on_mob_metabolize(mob/living/carbon/M) +/datum/reagent/medicine/c2/lenturi/on_mob_metabolize(mob/living/carbon/M) M.add_movespeed_modifier(/datum/movespeed_modifier/reagent/lenturi) return ..() -/datum/reagent/medicine/C2/lenturi/on_mob_end_metabolize(mob/living/carbon/M) +/datum/reagent/medicine/c2/lenturi/on_mob_end_metabolize(mob/living/carbon/M) M.remove_movespeed_modifier(/datum/movespeed_modifier/reagent/lenturi) return ..() -/datum/reagent/medicine/C2/aiuri +/datum/reagent/medicine/c2/aiuri name = "Aiuri" description = "Used to treat burns. Does minor eye damage." reagent_state = LIQUID @@ -168,7 +169,7 @@ WS End */ var/resetting_probability = 0 var/message_cd = 0 -/datum/reagent/medicine/C2/aiuri/on_mob_life(mob/living/carbon/M) +/datum/reagent/medicine/c2/aiuri/on_mob_life(mob/living/carbon/M) M.adjustFireLoss(-2*REM) M.adjustOrganLoss(ORGAN_SLOT_EYES,0.25*REM) ..() @@ -176,7 +177,7 @@ WS End */ /*WS Begin - Fixes Medicines -/datum/reagent/medicine/C2/hercuri +/datum/reagent/medicine/c2/hercuri name = "Hercuri" description = "Not to be confused with element Mercury, this medicine excels in reverting effects of dangerous high-temperature environments. Prolonged exposure can cause hypothermia." reagent_state = LIQUID @@ -184,7 +185,7 @@ WS End */ overdose_threshold = 25 reagent_weight = 0.6 -/datum/reagent/medicine/C2/hercuri/on_mob_life(mob/living/carbon/M) +/datum/reagent/medicine/c2/hercuri/on_mob_life(mob/living/carbon/M) if(M.getFireLoss() > 50) M.adjustFireLoss(-2*REM, FALSE) else @@ -206,7 +207,7 @@ WS End */ ..() -/datum/reagent/medicine/C2/hercuri/overdose_process(mob/living/carbon/M) +/datum/reagent/medicine/c2/hercuri/overdose_process(mob/living/carbon/M) M.adjust_bodytemperature(-10*TEMPERATURE_DAMAGE_COEFFICIENT*REM,50) //chilly chilly ..() @@ -216,14 +217,14 @@ WS End*/ /*Suffix: -mol*/ #define CONVERMOL_RATIO 5 //# Oxygen damage to result in 1 tox -/datum/reagent/medicine/C2/convermol +/datum/reagent/medicine/c2/convermol name = "Convermol" description = "Restores oxygen deprivation while producing a lesser amount of toxic byproducts. Both scale with exposure to the drug and current amount of oxygen deprivation. Overdose causes toxic byproducts regardless of oxygen deprivation." reagent_state = LIQUID color = "#FF6464" overdose_threshold = 35 // at least 2 full syringes +some, this stuff is nasty if left in for long -/datum/reagent/medicine/C2/convermol/on_mob_life(mob/living/carbon/human/M) +/datum/reagent/medicine/c2/convermol/on_mob_life(mob/living/carbon/human/M) var/oxycalc = 2.5*REM*current_cycle if(!overdosed) oxycalc = min(oxycalc,M.getOxyLoss()+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. @@ -234,20 +235,20 @@ WS End*/ ..() return TRUE -/datum/reagent/medicine/C2/convermol/overdose_process(mob/living/carbon/human/M) +/datum/reagent/medicine/c2/convermol/overdose_process(mob/living/carbon/human/M) metabolization_rate += 1 ..() return TRUE #undef CONVERMOL_RATIO -/datum/reagent/medicine/C2/tirimol +/datum/reagent/medicine/c2/tirimol name = "Tirimol" description = "An oxygen deprivation medication that causes fatigue. Prolonged exposure causes the patient to fall asleep once the medicine metabolizes." color = "#FF6464" var/drowsycd = 0 -/datum/reagent/medicine/C2/tirimol/on_mob_life(mob/living/carbon/human/M) +/datum/reagent/medicine/c2/tirimol/on_mob_life(mob/living/carbon/human/M) M.adjustOxyLoss(-3) M.adjustStaminaLoss(2) if(drowsycd && (world.time > drowsycd)) @@ -258,7 +259,7 @@ WS End*/ ..() return TRUE -/datum/reagent/medicine/C2/tirimol/on_mob_end_metabolize(mob/living/L) +/datum/reagent/medicine/c2/tirimol/on_mob_end_metabolize(mob/living/L) if(current_cycle > 20) L.Sleeping(10 SECONDS) ..() @@ -266,16 +267,16 @@ WS End*/ /******TOXIN******/ /*Suffix: -iver*/ -/datum/reagent/medicine/C2/seiver //a bit of a gray joke +/datum/reagent/medicine/c2/seiver //a bit of a gray joke name = "Seiver" description = "A medicine that shifts functionality based on temperature. Colder temperatures incurs radiation removal while hotter temperatures promote antitoxicity. Damages the heart." //CHEM HOLDER TEMPS, NOT AIR TEMPS var/radbonustemp = (T0C - 100) //being below this number gives you 10% off rads. -/datum/reagent/medicine/C2/seiver/on_mob_metabolize(mob/living/carbon/human/M) +/datum/reagent/medicine/c2/seiver/on_mob_metabolize(mob/living/carbon/human/M) . = ..() radbonustemp = rand(radbonustemp - 50, radbonustemp + 50) // Basically this means 50K and below will always give the percent heal, and upto 150K could. Calculated once. -/datum/reagent/medicine/C2/seiver/on_mob_life(mob/living/carbon/human/M) +/datum/reagent/medicine/c2/seiver/on_mob_life(mob/living/carbon/human/M) var/chemtemp = min(M.reagents?.chem_temp, 1000) chemtemp = chemtemp ? chemtemp : 273 //why do you have null sweaty var/healypoints = 0 //5 healypoints = 1 heart damage; 5 rads = 1 tox damage healed for the purpose of healypoints @@ -304,11 +305,11 @@ WS End*/ ..() return TRUE -/datum/reagent/medicine/C2/multiver //enhanced with MULTIple medicines +/datum/reagent/medicine/c2/multiver //enhanced with MULTIple medicines name = "Multiver" description = "A chem-purger that becomes more effective the more unique medicines present. Slightly heals toxicity but causes lung damage (mitigatable by unique medicines)." -/datum/reagent/medicine/C2/multiver/on_mob_life(mob/living/carbon/human/M) +/datum/reagent/medicine/c2/multiver/on_mob_life(mob/living/carbon/human/M) var/medibonus = 0 //it will always have itself which makes it REALLY start @ 1 for(var/r in M.reagents.reagent_list) var/datum/reagent/the_reagent = r @@ -327,11 +328,11 @@ WS End*/ ..() return TRUE -#define issyrinormusc(A) (istype(A,/datum/reagent/medicine/C2/syriniver) || istype(A,/datum/reagent/medicine/C2/musiver)) //musc is metab of syrin so let's make sure we're not purging either +#define issyrinormusc(A) (istype(A,/datum/reagent/medicine/c2/syriniver) || istype(A,/datum/reagent/medicine/c2/musiver)) //musc is metab of syrin so let's make sure we're not purging either /*WS Begin - Medicine Fixes -/datum/reagent/medicine/C2/syriniver //Inject >> SYRINge +/datum/reagent/medicine/c2/syriniver //Inject >> SYRINge name = "Syriniver" description = "A potent antidote for intravenous use with a narrow therapeutic index, it is considered an active prodrug of musiver." reagent_state = LIQUID @@ -340,7 +341,7 @@ WS End*/ overdose_threshold = 6 var/conversion_amount -/datum/reagent/medicine/C2/syriniver/on_transfer(atom/A, method=INJECT, trans_volume) +/datum/reagent/medicine/c2/syriniver/on_transfer(atom/A, method=INJECT, trans_volume) if(method != INJECT || !iscarbon(A)) return var/mob/living/carbon/C = A @@ -350,11 +351,11 @@ WS End*/ if((L.organ_flags & ORGAN_FAILING) || !L) return conversion_amount = trans_volume * (min(100 -C.getOrganLoss(ORGAN_SLOT_LIVER), 80) / 100) //the more damaged the liver the worse we metabolize. - C.reagents.remove_reagent(/datum/reagent/medicine/C2/syriniver, conversion_amount) - C.reagents.add_reagent(/datum/reagent/medicine/C2/musiver, conversion_amount) + C.reagents.remove_reagent(/datum/reagent/medicine/c2/syriniver, conversion_amount) + C.reagents.add_reagent(/datum/reagent/medicine/c2/musiver, conversion_amount) ..() -/datum/reagent/medicine/C2/syriniver/on_mob_life(mob/living/carbon/M) +/datum/reagent/medicine/c2/syriniver/on_mob_life(mob/living/carbon/M) M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.8) M.adjustToxLoss(-1*REM, 0) for(var/datum/reagent/R in M.reagents.reagent_list) @@ -365,14 +366,14 @@ WS End*/ ..() . = 1 -/datum/reagent/medicine/C2/syriniver/overdose_process(mob/living/carbon/M) +/datum/reagent/medicine/c2/syriniver/overdose_process(mob/living/carbon/M) M.adjustOrganLoss(ORGAN_SLOT_LIVER, 1.5) M.adjust_disgust(3) - M.reagents.add_reagent(/datum/reagent/medicine/C2/musiver, 0.225 * REM) + M.reagents.add_reagent(/datum/reagent/medicine/c2/musiver, 0.225 * REM) ..() . = 1 -/datum/reagent/medicine/C2/musiver //MUScles +/datum/reagent/medicine/c2/musiver //MUScles name = "Musiver" description = "The active metabolite of syriniver. Causes muscle weakness on overdose" reagent_state = LIQUID @@ -381,7 +382,7 @@ WS End*/ overdose_threshold = 25 var/datum/brain_trauma/mild/muscle_weakness/U -/datum/reagent/medicine/C2/musiver/on_mob_life(mob/living/carbon/M) +/datum/reagent/medicine/c2/musiver/on_mob_life(mob/living/carbon/M) M.adjustOrganLoss(ORGAN_SLOT_LIVER, 0.1) M.adjustToxLoss(-1*REM, 0) for(var/datum/reagent/R in M.reagents.reagent_list) @@ -391,17 +392,17 @@ WS End*/ ..() . = 1 -/datum/reagent/medicine/C2/musiver/overdose_start(mob/living/carbon/M) +/datum/reagent/medicine/c2/musiver/overdose_start(mob/living/carbon/M) U = new() M.gain_trauma(U, TRAUMA_RESILIENCE_ABSOLUTE) ..() -/datum/reagent/medicine/C2/musiver/on_mob_delete(mob/living/carbon/M) +/datum/reagent/medicine/c2/musiver/on_mob_delete(mob/living/carbon/M) if(U) QDEL_NULL(U) return ..() -/datum/reagent/medicine/C2/musiver/overdose_process(mob/living/carbon/M) +/datum/reagent/medicine/c2/musiver/overdose_process(mob/living/carbon/M) M.adjustOrganLoss(ORGAN_SLOT_LIVER, 1.5) M.adjust_disgust(3) ..() @@ -413,7 +414,7 @@ WS End*/ /******COMBOS******/ /*Suffix: Combo of healing, prob gonna get wack REAL fast*/ -/datum/reagent/medicine/C2/instabitaluri +/datum/reagent/medicine/c2/instabitaluri name = "Synthflesh (Instabitaluri)" description = "Heals brute and burn damage at the cost of toxicity (66% of damage healed). Touch application only." reagent_state = LIQUID @@ -431,7 +432,7 @@ WS End*/ if(show_message) to_chat(carbies, "You feel your burns and bruises healing! It stings like hell!") SEND_SIGNAL(carbies, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) - if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && carbies.getFireLoss() < THRESHOLD_UNHUSK && (carbies.reagents.get_reagent_amount(/datum/reagent/medicine/C2/instabitaluri) + reac_volume >= 100)) + if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && carbies.getFireLoss() < THRESHOLD_UNHUSK && (carbies.reagents.get_reagent_amount(/datum/reagent/medicine/c2/instabitaluri) + reac_volume >= 100)) carbies.cure_husk("burn") carbies.visible_message("A rubbery liquid coats [carbies]'s burns. [carbies] looks a lot healthier!") //we're avoiding using the phrases "burnt flesh" and "burnt skin" here because carbies could be a skeleton or a golem or something ..() @@ -449,13 +450,13 @@ WS End*/ *causing you to loose your soft crit, hard crit and heart stabilization effects. *Overdosing on penthrite also causes a heart failure. */ -/datum/reagent/medicine/C2/penthrite +/datum/reagent/medicine/c2/penthrite name = "Penthrite" description = "An expensive medicine that aids with pumping blood around the body even without a heart, and prevents the heart from slowing down. It reacts violently with other emergency medication." color = "#F5F5F5" overdose_threshold = 50 -/datum/reagent/medicine/C2/penthrite/on_mob_add(mob/living/M) +/datum/reagent/medicine/c2/penthrite/on_mob_add(mob/living/M) . = ..() to_chat(M,"Your heart begins to beat with great force!") ADD_TRAIT(M, TRAIT_STABLEHEART, type) @@ -464,7 +465,7 @@ WS End*/ M.crit_threshold = M.crit_threshold + HEALTH_THRESHOLD_FULLCRIT*2 //your heart is still pumping! -/datum/reagent/medicine/C2/penthrite/on_mob_life(mob/living/carbon/human/H) +/datum/reagent/medicine/c2/penthrite/on_mob_life(mob/living/carbon/human/H) H.adjustOrganLoss(ORGAN_SLOT_STOMACH,0.25) if(H.health <= HEALTH_THRESHOLD_CRIT && H.health > H.crit_threshold) //we cannot save someone above our raised crit threshold. @@ -492,14 +493,14 @@ WS End*/ volume = 0 . = ..() -/datum/reagent/medicine/C2/penthrite/on_mob_end_metabolize(mob/living/M) +/datum/reagent/medicine/c2/penthrite/on_mob_end_metabolize(mob/living/M) M.crit_threshold = M.crit_threshold - HEALTH_THRESHOLD_FULLCRIT*2 //your heart is still pumping! REMOVE_TRAIT(M, TRAIT_STABLEHEART, type) REMOVE_TRAIT(M, TRAIT_NOHARDCRIT,type) REMOVE_TRAIT(M, TRAIT_NOSOFTCRIT,type) . = ..() -/datum/reagent/medicine/C2/penthrite/overdose_process(mob/living/carbon/human/H) +/datum/reagent/medicine/c2/penthrite/overdose_process(mob/living/carbon/human/H) REMOVE_TRAIT(H, TRAIT_STABLEHEART, type) H.adjustStaminaLoss(10) H.adjustOrganLoss(ORGAN_SLOT_HEART,10) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index 614cb298fd05..1fca654b01a4 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -139,7 +139,7 @@ M.emote("scream") playsound(M, 'sound/machines/fryer/deep_fryer_emerge.ogg', 25, TRUE) ADD_TRAIT(M, TRAIT_OIL_FRIED, "cooking_oil_react") - addtimer(CALLBACK(M, /mob/living/proc/unfry_mob), 3) + addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living, unfry_mob)), 3) if(FryLoss) M.adjustFireLoss(FryLoss) return TRUE @@ -300,7 +300,7 @@ victim.confused = max(M.confused, 5) // 10 seconds victim.Knockdown(3 SECONDS) victim.add_movespeed_modifier(/datum/movespeed_modifier/reagent/pepperspray) - addtimer(CALLBACK(victim, /mob.proc/remove_movespeed_modifier, /datum/movespeed_modifier/reagent/pepperspray), 10 SECONDS) + addtimer(CALLBACK(victim, TYPE_PROC_REF(/mob, remove_movespeed_modifier), /datum/movespeed_modifier/reagent/pepperspray), 10 SECONDS) victim.update_damage_hud() if(method == INGEST) if(!holder.has_reagent(/datum/reagent/consumable/milk)) @@ -673,7 +673,7 @@ /datum/reagent/consumable/tinlux/proc/add_reagent_light(mob/living/living_holder) var/obj/effect/dummy/lighting_obj/moblight/mob_light_obj = living_holder.mob_light(2) LAZYSET(mobs_affected, living_holder, mob_light_obj) - RegisterSignal(living_holder, COMSIG_PARENT_QDELETING, .proc/on_living_holder_deletion) + RegisterSignal(living_holder, COMSIG_PARENT_QDELETING, PROC_REF(on_living_holder_deletion)) /datum/reagent/consumable/tinlux/proc/remove_reagent_light(mob/living/living_holder) UnregisterSignal(living_holder, COMSIG_PARENT_QDELETING) @@ -849,3 +849,17 @@ M.adjustFireLoss(-2*REM, 0) M.adjustStaminaLoss(-5*REM, 0) ..() + +/datum/reagent/consumable/cheese_spread + name = "Cheese Spread" + description = "I cant believe its not cheese!" + color = "#FBDB65" + nutriment_factor = 2 * REAGENTS_METABOLISM + taste_mult = 2 + taste_description = "cheese" + +/datum/reagent/consumable/peanut_butter + name = "Peanut Butter" + nutriment_factor = 1 * REAGENTS_METABOLISM + taste_description = "peanut" + reagent_state = SOLID diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 98d72d1fd5c6..20e1240d7e01 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -942,9 +942,9 @@ M.notify_ghost_cloning("Your body is being revived with Strange Reagent!") M.do_jitter_animation(10) var/excess_healing = 5*(reac_volume-amount_to_revive) //excess reagent will heal blood and organs across the board - addtimer(CALLBACK(M, /mob/living/carbon.proc/do_jitter_animation, 10), 40) //jitter immediately, then again after 4 and 8 seconds - addtimer(CALLBACK(M, /mob/living/carbon.proc/do_jitter_animation, 10), 80) - addtimer(CALLBACK(M, /mob/living.proc/revive, FALSE, FALSE, excess_healing), 79) + addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living/carbon, do_jitter_animation), 10), 40) //jitter immediately, then again after 4 and 8 seconds + addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living/carbon, do_jitter_animation), 10), 80) + addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living, revive), FALSE, FALSE, excess_healing), 79) ..() /datum/reagent/medicine/strange_reagent/on_mob_life(mob/living/carbon/M) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 4c150a53f299..e878cfc0f71d 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1,5 +1,5 @@ /datum/reagent/blood - data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null,"quirks"=null) + data = list("viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null,"quirks"=null) name = "Blood" color = COLOR_BLOOD metabolization_rate = 5 //fast rate so it disappears fast. @@ -118,6 +118,7 @@ src.data |= data.Copy() /datum/reagent/vaccine/fungal_tb + name = "Fungal TB Vaccine" /datum/reagent/vaccine/fungal_tb/New(data) . = ..() @@ -692,7 +693,7 @@ taste_description = "brai...nothing in particular" /datum/reagent/mutationtoxin/goofzombie - name = "Zombie Mutation Toxin" + name = "Krokodil Zombie Mutation Toxin" description = "An undead toxin... kinda..." color = "#5EFF3B" //RGB: 94, 255, 59 race = /datum/species/human/krokodil_addict //Not the infectious kind. The days of xenobio zombie outbreaks are long past. @@ -1097,7 +1098,7 @@ /datum/reagent/uranium/radium/dip_object(obj/item/I, mob/user, obj/item/reagent_containers/H) return FALSE -/datum/reagent/radium/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) +/datum/reagent/uranium/radium/on_hydroponics_apply(obj/item/seeds/myseed, datum/reagents/chems, obj/machinery/hydroponics/mytray, mob/user) . = ..() if(chems.has_reagent(type, 1)) mytray.adjustHealth(-round(chems.get_reagent_amount(type) * 2.5)) @@ -1127,7 +1128,7 @@ to_chat(M, "You feel unstable...") M.Jitter(2) current_cycle = 1 - addtimer(CALLBACK(M, /mob/living/proc/bluespace_shuffle), 30) + addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living, bluespace_shuffle)), 30) ..() /mob/living/proc/bluespace_shuffle() @@ -1918,7 +1919,7 @@ var/can_colour_mobs = TRUE /datum/reagent/colorful_reagent/New() - SSticker.OnRoundstart(CALLBACK(src,.proc/UpdateColor)) + SSticker.OnRoundstart(CALLBACK(src, PROC_REF(UpdateColor))) /datum/reagent/colorful_reagent/proc/UpdateColor() color = pick(random_color_list) @@ -1943,7 +1944,7 @@ taste_description = "sourness" /datum/reagent/hair_dye/New() - SSticker.OnRoundstart(CALLBACK(src,.proc/UpdateColor)) + SSticker.OnRoundstart(CALLBACK(src, PROC_REF(UpdateColor))) /datum/reagent/hair_dye/proc/UpdateColor() color = pick(potential_colors) @@ -2242,11 +2243,12 @@ return ..() /datum/reagent/pax/peaceborg - name = "synthpax" + name = "Synthpax" description = "A colorless liquid that suppresses violence in its subjects. Cheaper to synthesize than normal Pax, but wears off faster." metabolization_rate = 1.5 * REAGENTS_METABOLISM /datum/reagent/peaceborg + name = "Abstract Peaceborg Reagent" can_synth = FALSE /datum/reagent/peaceborg/confuse @@ -2412,7 +2414,7 @@ /datum/reagent/gravitum/expose_obj(obj/O, volume) O.AddElement(/datum/element/forced_gravity, 0) - addtimer(CALLBACK(O, .proc/_RemoveElement, list(/datum/element/forced_gravity, 0)), volume * time_multiplier) + addtimer(CALLBACK(O, PROC_REF(_RemoveElement), list(/datum/element/forced_gravity, 0)), volume * time_multiplier) /datum/reagent/gravitum/on_mob_add(mob/living/L) L.AddElement(/datum/element/forced_gravity, 0) //0 is the gravity, and in this case weightless @@ -2563,14 +2565,14 @@ ) /datum/reagent/three_eye/on_mob_metabolize(mob/living/L) . = ..() - //addtimer(CALLBACK(L, /mob.proc/add_client_colour, /datum/client_colour/thirdeye), 1.5 SECONDS) + //addtimer(CALLBACK(L, TYPE_PROC_REF(/mob, add_client_colour), /datum/client_colour/thirdeye), 1.5 SECONDS) L.add_client_colour(/datum/client_colour/thirdeye) if(L.client?.holder) //You are worthy. worthy = TRUE L.visible_message("Grips their head and dances around, collapsing to the floor!", \ "Visions of a realm BYOND your own flash across your eyes, before it all goes black...") - addtimer(CALLBACK(L, /mob/living.proc/SetSleeping, 40 SECONDS), 10 SECONDS) - addtimer(CALLBACK(L.reagents, /datum/reagents.proc/remove_reagent, src.type, src.volume,), 10 SECONDS) + addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, SetSleeping), 40 SECONDS), 10 SECONDS) + addtimer(CALLBACK(L.reagents, TYPE_PROC_REF(/datum/reagents, remove_reagent), src.type, src.volume,), 10 SECONDS) return /datum/reagent/three_eye/on_mob_life(mob/living/carbon/M) @@ -2598,7 +2600,7 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M - addtimer(CALLBACK(H, /mob/living.proc/seizure), rand(1 SECONDS, 5 SECONDS)) + addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living, seizure)), rand(1 SECONDS, 5 SECONDS)) /datum/reagent/three_eye/overdose_process(mob/living/M) . = ..() @@ -2618,9 +2620,9 @@ to_chat(L, "Your mind reels and the world begins to fade away...") if(iscarbon(L)) var/mob/living/carbon/C = L - addtimer(CALLBACK(C, /mob/living/carbon.proc/adjustOrganLoss, ORGAN_SLOT_BRAIN, 200), 5 SECONDS) //Deathblow to the brain + addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon, adjustOrganLoss), ORGAN_SLOT_BRAIN, 200), 5 SECONDS) //Deathblow to the brain else - addtimer(CALLBACK(L, /mob/living.proc/gib), 5 SECONDS) + addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, gib)), 5 SECONDS) /datum/reagent/cement name = "Cement" diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 210f980eb041..9cde25afcac0 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -377,7 +377,7 @@ ..() /datum/reagent/toxin/fakebeer //disguised as normal beer for use by emagged brobots - name = "Beer" + name = "Beer?" description = "A specially-engineered sedative disguised as beer. It induces instant sleep in its target." color = "#664300" // rgb: 102, 67, 0 metabolization_rate = 1.5 * REAGENTS_METABOLISM diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index 57df3331c799..4aa0bbc2fe94 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -68,7 +68,7 @@ else if(setting_type) if(step_away(X, T) && moving_power > 1) //Can happen twice at most. So this is fine. - addtimer(CALLBACK(GLOBAL_PROC, .proc/_step_away, X, T), 2) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(_step_away), X, T), 2) else if(step_towards(X, T) && moving_power > 1) - addtimer(CALLBACK(GLOBAL_PROC, .proc/_step_towards, X, T), 2) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(_step_towards), X, T), 2) diff --git a/code/modules/reagents/chemistry/recipes/cat2_medicines.dm b/code/modules/reagents/chemistry/recipes/cat2_medicines.dm index dbe3398e3f0c..c68438fa73ce 100644 --- a/code/modules/reagents/chemistry/recipes/cat2_medicines.dm +++ b/code/modules/reagents/chemistry/recipes/cat2_medicines.dm @@ -3,19 +3,19 @@ /*****BRUTE*****/ /datum/chemical_reaction/helbital - results = list(/datum/reagent/medicine/C2/helbital = 3) + results = list(/datum/reagent/medicine/c2/helbital = 3) required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/fluorine = 1, /datum/reagent/carbon = 1) mix_message = "The mixture turns into a thick, yellow powder." /datum/chemical_reaction/libital - results = list(/datum/reagent/medicine/C2/libital = 3) + results = list(/datum/reagent/medicine/c2/libital = 3) required_reagents = list(/datum/reagent/phenol = 1, /datum/reagent/oxygen = 1, /datum/reagent/nitrogen = 1) /*WS Begin - Fixes medicines /datum/chemical_reaction/probital - results = list(/datum/reagent/medicine/C2/probital = 4) + results = list(/datum/reagent/medicine/c2/probital = 4) required_reagents = list(/datum/reagent/copper = 1, /datum/reagent/acetone = 2, /datum/reagent/phosphorus = 1) WS End */ @@ -25,19 +25,19 @@ WS End */ /*WS Begin - No CobbyChems /datum/chemical_reaction/lenturi - results = list(/datum/reagent/medicine/C2/lenturi = 5) + results = list(/datum/reagent/medicine/c2/lenturi = 5) required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/silver = 1, /datum/reagent/sulfur = 1, /datum/reagent/oxygen = 1, /datum/reagent/chlorine = 1) */ /datum/chemical_reaction/aiuri - results = list(/datum/reagent/medicine/C2/aiuri = 4) + results = list(/datum/reagent/medicine/c2/aiuri = 4) required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/toxin/acid = 1, /datum/reagent/hydrogen = 2) /*WS Begin - Fixes medicines /datum/chemical_reaction/hercuri - results = list(/datum/reagent/medicine/C2/hercuri = 5) + results = list(/datum/reagent/medicine/c2/hercuri = 5) required_reagents = list(/datum/reagent/cryostylane = 3, /datum/reagent/bromine = 1, /datum/reagent/lye = 1) required_temp = 47 is_cold_recipe = TRUE @@ -49,7 +49,7 @@ WS End */ /*WS Begin - No CobbyChems /datum/chemical_reaction/convermol - results = list(/datum/reagent/medicine/C2/convermol = 3) + results = list(/datum/reagent/medicine/c2/convermol = 3) required_reagents = list(/datum/reagent/hydrogen = 1, /datum/reagent/fluorine = 1, /datum/reagent/fuel/oil = 1) required_temp = 370 mix_message = "The mixture rapidly turns into a dense pink liquid." @@ -57,30 +57,30 @@ WS End */ */ /datum/chemical_reaction/tirimol - results = list(/datum/reagent/medicine/C2/tirimol = 5) + results = list(/datum/reagent/medicine/c2/tirimol = 5) required_reagents = list(/datum/reagent/nitrogen = 3, /datum/reagent/acetone = 2) required_catalysts = list(/datum/reagent/toxin/acid = 1) /*****TOX*****/ /datum/chemical_reaction/seiver - results = list(/datum/reagent/medicine/C2/seiver = 3) + results = list(/datum/reagent/medicine/c2/seiver = 3) required_reagents = list(/datum/reagent/nitrogen = 1, /datum/reagent/potassium = 1, /datum/reagent/aluminium = 1) /*WS Begin - No CobbyChems /datum/chemical_reaction/multiver - results = list(/datum/reagent/medicine/C2/multiver = 2) + results = list(/datum/reagent/medicine/c2/multiver = 2) required_reagents = list(/datum/reagent/ash = 1, /datum/reagent/consumable/sodiumchloride = 1) mix_message = "The mixture yields a fine black powder." required_temp = 380 /datum/chemical_reaction/syriniver - results = list(/datum/reagent/medicine/C2/syriniver = 5) + results = list(/datum/reagent/medicine/c2/syriniver = 5) required_reagents = list(/datum/reagent/sulfur = 1, /datum/reagent/fluorine = 1, /datum/reagent/toxin = 1, /datum/reagent/nitrous_oxide = 2) */ /datum/chemical_reaction/penthrite - results = list(/datum/reagent/medicine/C2/penthrite = 3) + results = list(/datum/reagent/medicine/c2/penthrite = 3) required_reagents = list(/datum/reagent/pentaerythritol = 1, /datum/reagent/acetone = 1, /datum/reagent/toxin/acid/nitracid = 1 , /datum/reagent/wittel = 1) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 5e689add2433..b2e275bc0631 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -126,8 +126,8 @@ /*WS Begin - No Cobbychmes /datum/chemical_reaction/instabitaluri - results = list(/datum/reagent/medicine/C2/instabitaluri = 3) - required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/C2/libital = 1) + results = list(/datum/reagent/medicine/c2/instabitaluri = 3) + required_reagents = list(/datum/reagent/blood = 1, /datum/reagent/carbon = 1, /datum/reagent/medicine/c2/libital = 1) WS End */ diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 5b64f57e1a37..f6f46d3c3970 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -92,7 +92,7 @@ strengthdiv = 3 /datum/chemical_reaction/reagent_explosion/tatp/New() - SSticker.OnRoundstart(CALLBACK(src,.proc/UpdateInfo)) //method used by secret sauce. + SSticker.OnRoundstart(CALLBACK(src, PROC_REF(UpdateInfo))) //method used by secret sauce. /datum/chemical_reaction/reagent_explosion/tatp/proc/UpdateInfo() //note to the future: find the PR that refactors this so that we can port more of https://github.com/tgstation/tgstation/pull/50775 required_temp = 450 + rand(-49,49) //this gets loaded only on round start @@ -109,7 +109,7 @@ strengthdiv = 3 /datum/chemical_reaction/reagent_explosion/tatp_explosion/New() //did i mention i have no idea what i am doing? - zeta - SSticker.OnRoundstart(CALLBACK(src,.proc/UpdateInfo)) + SSticker.OnRoundstart(CALLBACK(src, PROC_REF(UpdateInfo))) /datum/chemical_reaction/reagent_explosion/tatp_explosion/on_reaction(datum/reagents/holder, created_volume) var/strengthdiv_adjust = created_volume / (2100 / initial(strengthdiv)) @@ -122,11 +122,11 @@ /datum/chemical_reaction/reagent_explosion/penthrite_explosion_epinephrine - required_reagents = list(/datum/reagent/medicine/C2/penthrite = 1, /datum/reagent/medicine/epinephrine = 1) + required_reagents = list(/datum/reagent/medicine/c2/penthrite = 1, /datum/reagent/medicine/epinephrine = 1) strengthdiv = 5 /datum/chemical_reaction/reagent_explosion/penthrite_explosion_atropine - required_reagents = list(/datum/reagent/medicine/C2/penthrite = 1, /datum/reagent/medicine/atropine = 1) + required_reagents = list(/datum/reagent/medicine/c2/penthrite = 1, /datum/reagent/medicine/atropine = 1) strengthdiv = 5 modifier = 5 @@ -151,7 +151,7 @@ R.stun(20) R.reveal(100) R.adjustHealth(50) - addtimer(CALLBACK(src, .proc/divine_explosion, round(created_volume/48,1),get_turf(holder.my_atom)), 2 SECONDS) + addtimer(CALLBACK(src, PROC_REF(divine_explosion), round(created_volume/48,1),get_turf(holder.my_atom)), 2 SECONDS) ..() /datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom/proc/divine_explosion(size, turf/T) @@ -175,7 +175,7 @@ /datum/chemical_reaction/reagent_explosion/gunpowder_explosion/on_reaction(datum/reagents/holder, created_volume) - addtimer(CALLBACK(src, .proc/explode, holder, created_volume), rand(5,10) SECONDS) + addtimer(CALLBACK(src, PROC_REF(explode), holder, created_volume), rand(5,10) SECONDS) /datum/chemical_reaction/thermite results = list(/datum/reagent/thermite = 3) @@ -460,14 +460,14 @@ var/T3 = created_volume * 120 var/added_delay = 0.5 SECONDS if(created_volume >= 75) - addtimer(CALLBACK(src, .proc/zappy_zappy, holder, T1), added_delay) + addtimer(CALLBACK(src, PROC_REF(zappy_zappy), holder, T1), added_delay) added_delay += 1.5 SECONDS if(created_volume >= 40) - addtimer(CALLBACK(src, .proc/zappy_zappy, holder, T2), added_delay) + addtimer(CALLBACK(src, PROC_REF(zappy_zappy), holder, T2), added_delay) added_delay += 1.5 SECONDS if(created_volume >= 10) //10 units minimum for lightning, 40 units for secondary blast, 75 units for tertiary blast. - addtimer(CALLBACK(src, .proc/zappy_zappy, holder, T3), added_delay) - addtimer(CALLBACK(src, .proc/explode, holder, created_volume), added_delay) + addtimer(CALLBACK(src, PROC_REF(zappy_zappy), holder, T3), added_delay) + addtimer(CALLBACK(src, PROC_REF(explode), holder, created_volume), added_delay) /datum/chemical_reaction/reagent_explosion/teslium_lightning/proc/zappy_zappy(datum/reagents/holder, power) if(QDELETED(holder.my_atom)) diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index bf2f58b146ad..07753cea4a15 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -92,32 +92,32 @@ var/obj/item/slime_extract/M = holder.my_atom deltimer(M.qdel_timer) ..() - M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE) + M.qdel_timer = addtimer(CALLBACK(src, PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE) /datum/chemical_reaction/slime/slimemobspawn/proc/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate violently!") - addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime", HOSTILE_SPAWN), 50) + addtimer(CALLBACK(src, PROC_REF(chemical_mob_spawn), holder, 5, "Gold Slime", HOSTILE_SPAWN), 50) /datum/chemical_reaction/slime/slimemobspawn/lesser required_reagents = list(/datum/reagent/blood = 1) /datum/chemical_reaction/slime/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate violently!") - addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Lesser Gold Slime", HOSTILE_SPAWN, "neutral"), 50) + addtimer(CALLBACK(src, PROC_REF(chemical_mob_spawn), holder, 3, "Lesser Gold Slime", HOSTILE_SPAWN, "neutral"), 50) /datum/chemical_reaction/slime/slimemobspawn/friendly required_reagents = list(/datum/reagent/water = 1) /datum/chemical_reaction/slime/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate adorably!") - addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 1, "Friendly Gold Slime", FRIENDLY_SPAWN, "neutral"), 50) + addtimer(CALLBACK(src, PROC_REF(chemical_mob_spawn), holder, 1, "Friendly Gold Slime", FRIENDLY_SPAWN, "neutral"), 50) /datum/chemical_reaction/slime/slimemobspawn/spider required_reagents = list(/datum/reagent/spider_extract = 1) /datum/chemical_reaction/slime/slimemobspawn/spider/summon_mobs(datum/reagents/holder, turf/T) T.visible_message("The slime extract begins to vibrate crikey-ingly!") - addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Traitor Spider Slime", /mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife, "neutral", FALSE), 50) + addtimer(CALLBACK(src, PROC_REF(chemical_mob_spawn), holder, 3, "Traitor Spider Slime", /mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife, "neutral", FALSE), 50) //Silver @@ -191,11 +191,11 @@ /datum/chemical_reaction/slime/slimefreeze/on_reaction(datum/reagents/holder) var/turf/T = get_turf(holder.my_atom) T.visible_message("The slime extract starts to feel extremely cold!") - addtimer(CALLBACK(src, .proc/freeze, holder), 50) + addtimer(CALLBACK(src, PROC_REF(freeze), holder), 50) var/obj/item/slime_extract/M = holder.my_atom deltimer(M.qdel_timer) ..() - M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE) + M.qdel_timer = addtimer(CALLBACK(src, PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE) /datum/chemical_reaction/slime/slimefreeze/proc/freeze(datum/reagents/holder) if(holder && holder.my_atom) @@ -228,11 +228,11 @@ /datum/chemical_reaction/slime/slimefire/on_reaction(datum/reagents/holder) var/turf/T = get_turf(holder.my_atom) T.visible_message("The slime extract begins to vibrate adorably!") - addtimer(CALLBACK(src, .proc/slime_burn, holder), 50) + addtimer(CALLBACK(src, PROC_REF(slime_burn), holder), 50) var/obj/item/slime_extract/M = holder.my_atom deltimer(M.qdel_timer) ..() - M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE) + M.qdel_timer = addtimer(CALLBACK(src, PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE) /datum/chemical_reaction/slime/slimefire/proc/slime_burn(datum/reagents/holder) if(holder && holder.my_atom) @@ -381,11 +381,11 @@ message_admins("Slime Explosion reaction started at [ADMIN_VERBOSEJMP(T)]. Last Fingerprint: [touch_msg]") log_game("Slime Explosion reaction started at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"].") T.visible_message("The slime extract begins to vibrate violently !") - addtimer(CALLBACK(src, .proc/boom, holder), 50) + addtimer(CALLBACK(src, PROC_REF(boom), holder), 50) var/obj/item/slime_extract/M = holder.my_atom deltimer(M.qdel_timer) ..() - M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE) + M.qdel_timer = addtimer(CALLBACK(src, PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE) /datum/chemical_reaction/slime/slimeexplosion/proc/boom(datum/reagents/holder) if(holder && holder.my_atom) @@ -484,7 +484,7 @@ required_other = TRUE /datum/chemical_reaction/slime/slimestop/on_reaction(datum/reagents/holder) - addtimer(CALLBACK(src, .proc/slime_stop, holder), 5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(slime_stop), holder), 5 SECONDS) /datum/chemical_reaction/slime/slimestop/proc/slime_stop(datum/reagents/holder) var/obj/item/slime_extract/sepia/extract = holder.my_atom @@ -549,7 +549,7 @@ S.visible_message("Infused with plasma, the core begins to expand uncontrollably!") S.icon_state = "[S.base_state]_active" S.active = TRUE - addtimer(CALLBACK(S, /obj/item/grenade.proc/prime), rand(15,60)) + addtimer(CALLBACK(S, TYPE_PROC_REF(/obj/item/grenade, prime)), rand(15,60)) else var/mob/living/simple_animal/slime/random/S = new (get_turf(holder.my_atom)) S.visible_message("Infused with plasma, the core begins to quiver and grow, and a new baby slime emerges from it!") @@ -566,7 +566,7 @@ S.visible_message("Infused with slime jelly, the core begins to expand uncontrollably!") S.icon_state = "[S.base_state]_active" S.active = TRUE - addtimer(CALLBACK(S, /obj/item/grenade.proc/prime), rand(15,60)) + addtimer(CALLBACK(S, TYPE_PROC_REF(/obj/item/grenade, prime)), rand(15,60)) var/lastkey = holder.my_atom.fingerprintslast var/touch_msg = "N/A" if(lastkey) diff --git a/code/modules/reagents/chemistry/recipes/special.dm b/code/modules/reagents/chemistry/recipes/special.dm index f0aeaf8504cd..e95dc19c56b2 100644 --- a/code/modules/reagents/chemistry/recipes/special.dm +++ b/code/modules/reagents/chemistry/recipes/special.dm @@ -177,7 +177,7 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related if(SSpersistence.initialized) UpdateInfo() else - SSticker.OnRoundstart(CALLBACK(src,.proc/UpdateInfo)) + SSticker.OnRoundstart(CALLBACK(src, PROC_REF(UpdateInfo))) /obj/item/paper/secretrecipe/proc/UpdateInfo() var/datum/chemical_reaction/recipe = get_chemical_reaction(recipe_id) diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 0d583cb5a16f..dca353500b42 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -195,12 +195,14 @@ /obj/item/reagent_containers/proc/bartender_check(atom/target) . = FALSE - if(target.CanPass(src, get_turf(src)) && thrownby && HAS_TRAIT(thrownby, TRAIT_BOOZE_SLIDER)) + var/mob/thrown_by = thrownby?.resolve() + if(target.CanPass(src, get_dir(target, src)) && thrown_by && HAS_TRAIT(thrown_by, TRAIT_BOOZE_SLIDER)) . = TRUE /obj/item/reagent_containers/proc/SplashReagents(atom/target, thrown = FALSE) if(!reagents || !reagents.total_volume || !spillable) return + var/mob/thrown_by = thrownby?.resolve() if(ismob(target) && target.reagents) if(thrown) @@ -213,8 +215,8 @@ for(var/datum/reagent/A in reagents.reagent_list) R += "[A.type] ([num2text(A.volume)])," - if(thrownby) - log_combat(thrownby, M, "splashed", R) + if(thrown_by) + log_combat(thrown_by, M, "splashed", R) reagents.expose(target, TOUCH) else if(bartender_check(target) && thrown) @@ -222,10 +224,10 @@ return else - if(isturf(target) && reagents.reagent_list.len && thrownby) - log_combat(thrownby, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]") - log_game("[key_name(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].") - message_admins("[ADMIN_LOOKUPFLW(thrownby)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [ADMIN_VERBOSEJMP(target)].") + if(isturf(target) && reagents.reagent_list.len && thrown_by) + log_combat(thrown_by, target, "splashed (thrown) [english_list(reagents.reagent_list)]", "in [AREACOORD(target)]") + log_game("[key_name(thrown_by)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [AREACOORD(target)].") + message_admins("[ADMIN_LOOKUPFLW(thrown_by)] splashed (thrown) [english_list(reagents.reagent_list)] on [target] in [ADMIN_VERBOSEJMP(target)].") playsound(src, 'sound/items/glass_splash.ogg', 50, 1) visible_message("[src] spills its contents all over [target].") reagents.expose(target, TOUCH) diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index a4cd49a131fb..97e0b7c0946b 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -44,9 +44,9 @@ Borg Hypospray /obj/item/reagent_containers/borghypo/Destroy() STOP_PROCESSING(SSobj, src) + QDEL_LIST(reagent_list) return ..() - /obj/item/reagent_containers/borghypo/process() //Every [recharge_time] seconds, recharge some reagents for the cyborg charge_tick++ if(charge_tick >= recharge_time) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 332decf03e38..e5f5f22db67a 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -49,7 +49,7 @@ log_combat(user, M, "fed", reagents.log_list()) else to_chat(user, "You swallow a gulp of [src].") - addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, 5, TRUE, TRUE, FALSE, user, FALSE, INGEST), 5) + addtimer(CALLBACK(reagents, TYPE_PROC_REF(/datum/reagents, trans_to), M, 5, TRUE, TRUE, FALSE, user, FALSE, INGEST), 5) playsound(M.loc,'sound/items/drink.ogg', rand(10,50), TRUE) /obj/item/reagent_containers/glass/afterattack(obj/target, mob/user, proximity) diff --git a/code/modules/reagents/reagent_containers/jug.dm b/code/modules/reagents/reagent_containers/jug.dm index ae80ab51578a..a863be707c48 100644 --- a/code/modules/reagents/reagent_containers/jug.dm +++ b/code/modules/reagents/reagent_containers/jug.dm @@ -103,7 +103,7 @@ /obj/item/reagent_containers/glass/chem_jug/radium name = "chemical jug (radium)" icon_state = "chem_jug_radium" - list_reagents = list(/datum/reagent/radium = 150) + list_reagents = list(/datum/reagent/uranium/radium = 150) /obj/item/reagent_containers/glass/chem_jug/aluminium name = "chemical jug (aluminium)" diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index ba365d435952..187935fa0b25 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -47,7 +47,7 @@ "[user] forces you to [apply_method] [src].") if(icon_state == "pill4" && prob(5)) //you take the red pill - you stay in Wonderland, and I show you how deep the rabbit hole goes - addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, M, "[pick(strings(REDPILL_FILE, "redpill_questions"))]"), 50) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(to_chat), M, "[pick(strings(REDPILL_FILE, "redpill_questions"))]"), 50) if(reagents.total_volume) reagents.trans_to(M, reagents.total_volume, transfered_by = user, method = apply_type) @@ -270,11 +270,11 @@ /*WS Begin - No Cobbychem -/obj/item/reagent_containers/pill/C2/probital +/obj/item/reagent_containers/pill/c2/probital name = "Probital pill" desc = "Used to treat brute damage of minor and moderate severity.The carving in the pill says 'Eat before ingesting'. Causes fatigue and diluted with granibitaluri." icon_state = "pill12" - list_reagents = list(/datum/reagent/medicine/C2/probital = 5, /datum/reagent/medicine/granibitaluri = 10) + list_reagents = list(/datum/reagent/medicine/c2/probital = 5, /datum/reagent/medicine/granibitaluri = 10) rename_with_volume = TRUE WS End */ diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 9d92cfa78f53..da4c5d0b68fa 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -395,6 +395,6 @@ name = "medical spray (hercuri)" desc = "A medical spray bottle.This one contains hercuri, a medicine used to negate the effects of dangerous high-temperature environments. Careful not to freeze the patient!" icon_state = "sprayer_large" - list_reagents = list(/datum/reagent/medicine/C2/hercuri = 100) + list_reagents = list(/datum/reagent/medicine/c2/hercuri = 100) WS End */ diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 021d37cd61b0..f0901e416b25 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -86,7 +86,7 @@ target.visible_message("[user] is trying to take a blood sample from [target]!", \ "[user] is trying to take a blood sample from you!") busy = TRUE - if(!do_mob(user, target, extra_checks=CALLBACK(L, /mob/living/proc/can_inject, user, TRUE))) + if(!do_mob(user, target, extra_checks=CALLBACK(L, TYPE_PROC_REF(/mob/living, can_inject), user, TRUE))) busy = FALSE return if(reagents.total_volume >= reagents.maximum_volume) @@ -136,7 +136,7 @@ if(L != user) L.visible_message("[user] is trying to inject [L]!", \ "[user] is trying to inject you!") - if(!do_mob(user, L, extra_checks=CALLBACK(L, /mob/living/proc/can_inject, user, TRUE))) + if(!do_mob(user, L, extra_checks=CALLBACK(L, TYPE_PROC_REF(/mob/living, can_inject), user, TRUE))) return if(!reagents.total_volume) return diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 7a4e79f9e40c..b8b08486f20d 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -146,14 +146,14 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) affecting.Add(item) conveying = TRUE - addtimer(CALLBACK(src, .proc/convey, affecting), 1) + addtimer(CALLBACK(src, PROC_REF(convey), affecting), 1) /obj/machinery/conveyor/proc/convey(list/affecting) for(var/atom/movable/A in affecting) if(!QDELETED(A) && (A.loc == loc)) A.ConveyorMove(movedir) //Give this a chance to yield if the server is busy - stoplag() + CHECK_TICK conveying = FALSE // attack with item, place item on conveyor diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 6cc5fa117bb6..9f2861218418 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -140,7 +140,8 @@ else target.visible_message("[user] places [target] in [src].", "[user] places you in [src].") log_combat(user, target, "stuffed", addition="into [src]") - target.LAssailant = user + target.LAssailant = WEAKREF(user) + . = TRUE update_appearance() /obj/machinery/disposal/relaymove(mob/living/user, direction) diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm index 7ffc4e3b9db1..13158e86daad 100644 --- a/code/modules/recycling/disposal/construction.dm +++ b/code/modules/recycling/disposal/construction.dm @@ -87,7 +87,7 @@ /obj/structure/disposalconstruct/ComponentInitialize() . = ..() - AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_FLIP | ROTATION_VERBS ,null,CALLBACK(src, .proc/can_be_rotated), CALLBACK(src, .proc/after_rot)) + AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_FLIP | ROTATION_VERBS ,null,CALLBACK(src, PROC_REF(can_be_rotated)), CALLBACK(src, PROC_REF(after_rot))) /obj/structure/disposalconstruct/proc/after_rot(mob/user,rotation_type) if(rotation_type == ROTATION_FLIP) diff --git a/code/modules/recycling/disposal/outlet.dm b/code/modules/recycling/disposal/outlet.dm index aa516b91fab3..2de8ff057405 100644 --- a/code/modules/recycling/disposal/outlet.dm +++ b/code/modules/recycling/disposal/outlet.dm @@ -44,9 +44,9 @@ if((start_eject + 30) < world.time) start_eject = world.time playsound(src, 'sound/machines/warning-buzzer.ogg', 50, FALSE, FALSE) - addtimer(CALLBACK(src, .proc/expel_holder, H, TRUE), 20) + addtimer(CALLBACK(src, PROC_REF(expel_holder), H, TRUE), 20) else - addtimer(CALLBACK(src, .proc/expel_holder, H), 20) + addtimer(CALLBACK(src, PROC_REF(expel_holder), H), 20) /obj/structure/disposaloutlet/proc/expel_holder(obj/structure/disposalholder/H, playsound=FALSE) if(playsound) diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm index 21cc7a7feeb4..c4722c40fd2f 100644 --- a/code/modules/recycling/disposal/pipe.dm +++ b/code/modules/recycling/disposal/pipe.dm @@ -90,7 +90,7 @@ if(isfloorturf(T)) //intact floor, pop the tile floorturf = T - if(floorturf.floor_tile) + if(floorturf.floor_tile && !istype(floorturf, /turf/open/floor/engine)) new floorturf.floor_tile(T) floorturf.make_plating() diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 04390b9563e6..ec4038ec8f2b 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -98,14 +98,14 @@ other types of metals and chemistry for reagents). illustration = "design" custom_materials = list(/datum/material/iron =300, /datum/material/glass =100) var/list/blueprints = list() + var/list/starting_blueprints = list() var/max_blueprints = 1 /obj/item/disk/design_disk/Initialize() . = ..() pixel_x = base_pixel_x + rand(-5, 5) pixel_y = base_pixel_y + rand(-5, 5) - for(var/i in 1 to max_blueprints) - blueprints += null + blueprints = new/list(max_blueprints) /obj/item/disk/design_disk/adv name = "Advanced Component Design Disk" @@ -149,21 +149,20 @@ other types of metals and chemistry for reagents). name = "design disk - disposable gun" desc = "A design disk containing designs for a cheap and disposable gun." illustration = "gun" + max_blueprints = 2 -/obj/item/disk/design_disk/disposable_gun/Initialize() +/obj/item/disk/design_disk/adv/disposable_gun/Initialize() . = ..() - var/datum/design/disposable_gun/G = new - var/datum/design/pizza_disposable_gun/P = new - blueprints[1] = G - blueprints[2] = P + blueprints[1] = new /datum/design/disposable_gun() + blueprints[2] = new /datum/design/pizza_disposable_gun() /obj/item/disk/design_disk/cmm_mechs name = "design disk - CMM mecha modifications" desc = "A design disk containing specifications for CMM-custom mecha conversions." color = "#57b8f0" - max_blueprints = 3 + max_blueprints = 2 /obj/item/disk/design_disk/cmm_mechs/Initialize() . = ..() - blueprints[1] = new /datum/design/cmm_ripley_upgrade - blueprints[2] = new /datum/design/cmm_durand_upgrade + blueprints[1] = new /datum/design/cmm_ripley_upgrade() + blueprints[2] = new /datum/design/cmm_durand_upgrade() diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 5e0947d7e378..3aa9cc7d7767 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -215,6 +215,14 @@ category = list("initial", "Electronics") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING +/datum/design/lightswitch_frame + name = "Lightswitch Frame" + id = "lightswitch_frame" + build_type = AUTOLATHE + materials = list(/datum/material/iron = 50, /datum/material/glass = 50) + build_path = /obj/item/wallframe/light_switch + category = list("initial", "Misc") + /datum/design/camera name = "Camera" id = "camera" @@ -1175,6 +1183,14 @@ build_path = /obj/item/storage/bag/trash category = list("initial","Tools","Tool Designs","Misc") +/datum/design/bodybag + name="Body Bag" + id="bodybag" + build_type = AUTOLATHE | PROTOLATHE + materials = list(/datum/material/plastic = 4000) + build_path = /obj/item/bodybag + category = list("initial","Medical","Misc") + /datum/design/fishing_rod_basic name = "Fishing Rod" id = "fishing rod" diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm index 4f48995190dc..16bf2a9241cb 100644 --- a/code/modules/research/designs/limbgrower_designs.dm +++ b/code/modules/research/designs/limbgrower_designs.dm @@ -116,7 +116,7 @@ build_path = /obj/item/organ/tongue category = list("initial",SPECIES_HUMAN) -// Grows a fake lizard tail - not usable in lizard wine and other similar recipes. +// Grows a fake lizard tail /datum/design/lizard_tail name = "Lizard Tail" id = "liztail" diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 1b5ccd05a63a..4d28452521af 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -265,7 +265,7 @@ desc = "A 20 round armour piercing magazine for the out of date security WT-550 Auto Rifle" id = "mag_oldsmg_ap" materials = list(/datum/material/iron = 6000, /datum/material/silver = 600) - build_path = /obj/item/ammo_box/magazine/wt550m9/wtap + build_path = /obj/item/ammo_box/magazine/wt550m9/ap departmental_flags = DEPARTMENTAL_FLAG_SECURITY /datum/design/mag_oldsmg/ic_mag @@ -273,7 +273,7 @@ desc = "A 20 round armour piercing magazine for the out of date security WT-550 Auto Rifle" id = "mag_oldsmg_ic" materials = list(/datum/material/iron = 6000, /datum/material/silver = 600, /datum/material/glass = 1000) - build_path = /obj/item/ammo_box/magazine/wt550m9/wtic + build_path = /obj/item/ammo_box/magazine/wt550m9/inc departmental_flags = DEPARTMENTAL_FLAG_SECURITY //WS edit - free lethals diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index 8c2b53b624bc..ab2933c60bcc 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -44,7 +44,7 @@ Note: Must be placed within 3 tiles of the R&D Console loaded_item = O to_chat(user, "You add the [O.name] to the [src.name]!") flick("d_analyzer_la", src) - addtimer(CALLBACK(src, .proc/finish_loading), 10) + addtimer(CALLBACK(src, PROC_REF(finish_loading)), 10) if (linked_console) linked_console.updateUsrDialog() @@ -82,7 +82,7 @@ Note: Must be placed within 3 tiles of the R&D Console if(!innermode) flick("d_analyzer_process", src) busy = TRUE - addtimer(CALLBACK(src, .proc/reset_busy), 24) + addtimer(CALLBACK(src, PROC_REF(reset_busy)), 24) use_power(250) if(thing == loaded_item) loaded_item = null diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index dd9003a52014..f714f65f154d 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -510,12 +510,12 @@ investigate_log("Experimentor has drained power from its APC", INVESTIGATE_EXPERIMENTOR) if(globalMalf == 99) visible_message("[src] begins to glow and vibrate. It's going to blow!") - addtimer(CALLBACK(src, .proc/boom), 50) + addtimer(CALLBACK(src, PROC_REF(boom)), 50) if(globalMalf == 100) visible_message("[src] begins to glow and vibrate. It's going to blow!") - addtimer(CALLBACK(src, .proc/honk), 50) + addtimer(CALLBACK(src, PROC_REF(honk)), 50) - addtimer(CALLBACK(src, .proc/reset_exp), resetTime) + addtimer(CALLBACK(src, PROC_REF(reset_exp)), resetTime) /obj/machinery/rnd/experimentor/proc/boom() explosion(src, 1, 5, 10, 5, 1) @@ -578,7 +578,7 @@ revealed = TRUE name = realName cooldownMax = rand(60,300) - realProc = pick(.proc/teleport,.proc/explode,.proc/rapidDupe,.proc/petSpray,.proc/flash,.proc/clean,.proc/corgicannon) + realProc = pick(PROC_REF(teleport), PROC_REF(explode), PROC_REF(rapidDupe), PROC_REF(petSpray), PROC_REF(flash), PROC_REF(clean), PROC_REF(corgicannon)) /obj/item/relic/attack_self(mob/user) if(revealed) @@ -589,7 +589,7 @@ cooldown = TRUE call(src,realProc)(user) if(!QDELETED(src)) - addtimer(CALLBACK(src, .proc/cd), cooldownMax) + addtimer(CALLBACK(src, PROC_REF(cd)), cooldownMax) else to_chat(user, "You aren't quite sure what this is. Maybe R&D knows what to do with it?") @@ -606,7 +606,7 @@ /obj/item/relic/proc/corgicannon(mob/user) playsound(src, "sparks", rand(25,50), TRUE, SHORT_RANGE_SOUND_EXTRARANGE) var/mob/living/simple_animal/pet/dog/corgi/C = new/mob/living/simple_animal/pet/dog/corgi(get_turf(user)) - C.throw_at(pick(oview(10,user)), 10, rand(3,8), callback = CALLBACK(src, .proc/throwSmoke, C)) + C.throw_at(pick(oview(10,user)), 10, rand(3,8), callback = CALLBACK(src, PROC_REF(throwSmoke), C)) warn_admins(user, "Corgi Cannon", 0) /obj/item/relic/proc/clean(mob/user) @@ -656,7 +656,7 @@ /obj/item/relic/proc/explode(mob/user) to_chat(user, "[src] begins to heat up!") - addtimer(CALLBACK(src, .proc/do_explode, user), rand(35, 100)) + addtimer(CALLBACK(src, PROC_REF(do_explode), user), rand(35, 100)) /obj/item/relic/proc/do_explode(mob/user) if(loc == user) @@ -667,7 +667,7 @@ /obj/item/relic/proc/teleport(mob/user) to_chat(user, "[src] begins to vibrate!") - addtimer(CALLBACK(src, .proc/do_the_teleport, user), rand(10, 30)) + addtimer(CALLBACK(src, PROC_REF(do_the_teleport), user), rand(10, 30)) /obj/item/relic/proc/do_the_teleport(mob/user) var/turf/userturf = get_turf(user) diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 5a1e9303b013..36a22dac2cc7 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -23,7 +23,7 @@ matching_designs = list() cached_designs = list() stored_research = new - INVOKE_ASYNC(src, .proc/update_research) + INVOKE_ASYNC(src, PROC_REF(update_research)) materials = AddComponent(/datum/component/remote_materials, "lathe", mapload) RefreshParts() @@ -167,8 +167,8 @@ if(production_animation) flick(production_animation, src) var/timecoeff = D.lathe_time_factor / efficiency_coeff - addtimer(CALLBACK(src, .proc/reset_busy), (30 * timecoeff * amount) ** 0.5) - addtimer(CALLBACK(src, .proc/do_print, D.build_path, amount, efficient_mats, D.dangerous_construction), (32 * timecoeff * amount) ** 0.8) + addtimer(CALLBACK(src, PROC_REF(reset_busy)), (30 * timecoeff * amount) ** 0.5) + addtimer(CALLBACK(src, PROC_REF(do_print), D.build_path, amount, efficient_mats, D.dangerous_construction), (32 * timecoeff * amount) ** 0.8) return TRUE /obj/machinery/rnd/production/proc/search(string) diff --git a/code/modules/research/nanites/nanite_chamber.dm b/code/modules/research/nanites/nanite_chamber.dm index 4063ae19fb6e..d5d5fa79e8ca 100644 --- a/code/modules/research/nanites/nanite_chamber.dm +++ b/code/modules/research/nanites/nanite_chamber.dm @@ -12,7 +12,6 @@ idle_power_usage = 50 active_power_usage = 300 - var/obj/machinery/computer/nanite_chamber_control/console var/locked = FALSE var/breakout_time = 1200 var/scan_level @@ -69,11 +68,11 @@ //TODO OMINOUS MACHINE SOUNDS set_busy(TRUE, "Initializing injection protocol...", "[initial(icon_state)]_raising") - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Priming nanites...", "[initial(icon_state)]_active"),40) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Injecting...", "[initial(icon_state)]_active"),70) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Activating nanites...", "[initial(icon_state)]_falling"),110) - addtimer(CALLBACK(src, .proc/complete_injection, locked_state),130) + addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20) + addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Priming nanites...", "[initial(icon_state)]_active"),40) + addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Injecting...", "[initial(icon_state)]_active"),70) + addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Activating nanites...", "[initial(icon_state)]_falling"),110) + addtimer(CALLBACK(src, PROC_REF(complete_injection), locked_state),130) /obj/machinery/nanite_chamber/proc/complete_injection(locked_state) //TODO MACHINE DING @@ -96,11 +95,11 @@ //TODO OMINOUS MACHINE SOUNDS set_busy(TRUE, "Initializing cleanup protocol...", "[initial(icon_state)]_raising") - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Pinging nanites...", "[initial(icon_state)]_active"),40) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Initiating graceful self-destruct sequence...", "[initial(icon_state)]_active"),70) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Removing debris...", "[initial(icon_state)]_falling"),110) - addtimer(CALLBACK(src, .proc/complete_removal, locked_state),130) + addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20) + addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Pinging nanites...", "[initial(icon_state)]_active"),40) + addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Initiating graceful self-destruct sequence...", "[initial(icon_state)]_active"),70) + addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Removing debris...", "[initial(icon_state)]_falling"),110) + addtimer(CALLBACK(src, PROC_REF(complete_removal), locked_state),130) /obj/machinery/nanite_chamber/proc/complete_removal(locked_state) //TODO MACHINE DING diff --git a/code/modules/research/nanites/nanite_chamber_computer.dm b/code/modules/research/nanites/nanite_chamber_computer.dm index f2b155c0e0cd..3a41e394b1dc 100644 --- a/code/modules/research/nanites/nanite_chamber_computer.dm +++ b/code/modules/research/nanites/nanite_chamber_computer.dm @@ -2,7 +2,6 @@ name = "nanite chamber control console" desc = "Controls a connected nanite chamber. Can inoculate nanites, load programs, and analyze existing nanite swarms." var/obj/machinery/nanite_chamber/chamber - var/obj/item/disk/nanite_program/disk icon_screen = "nanite_chamber_control" circuit = /obj/item/circuitboard/computer/nanite_chamber_control @@ -15,8 +14,7 @@ var/C = locate(/obj/machinery/nanite_chamber, get_step(src, direction)) if(C) var/obj/machinery/nanite_chamber/NC = C - chamber = NC - NC.console = src + set_connected_chamber(NC) /obj/machinery/computer/nanite_chamber_control/interact() if(!chamber) @@ -97,3 +95,14 @@ log_combat(usr, chamber.occupant, "injected", null, "with nanites via [src]") chamber.occupant.investigate_log("was injected with nanites by [key_name(usr)] via [src] at [AREACOORD(src)].", INVESTIGATE_NANITES) . = TRUE + +/obj/machinery/computer/nanite_chamber_control/proc/set_connected_chamber(new_chamber) + if(chamber) + UnregisterSignal(chamber, COMSIG_PARENT_QDELETING) + chamber = new_chamber + if(chamber) + RegisterSignal(chamber, COMSIG_PARENT_QDELETING, PROC_REF(react_to_chamber_del)) + +/obj/machinery/computer/nanite_chamber_control/proc/react_to_chamber_del(datum/source) + SIGNAL_HANDLER + set_connected_chamber(null) diff --git a/code/modules/research/nanites/nanite_programs.dm b/code/modules/research/nanites/nanite_programs.dm index 06c7bf13d45f..9f9752fa5cb2 100644 --- a/code/modules/research/nanites/nanite_programs.dm +++ b/code/modules/research/nanites/nanite_programs.dm @@ -69,6 +69,9 @@ on_mob_remove() if(nanites) nanites.programs -= src + for(var/datum/nanite_rule/rule as anything in rules) + rule.remove() + rules.Cut() return ..() /datum/nanite_program/proc/copy() diff --git a/code/modules/research/nanites/nanite_programs/buffing.dm b/code/modules/research/nanites/nanite_programs/buffing.dm index 7d82324a8de1..e0f490ca1123 100644 --- a/code/modules/research/nanites/nanite_programs/buffing.dm +++ b/code/modules/research/nanites/nanite_programs/buffing.dm @@ -116,9 +116,8 @@ /datum/nanite_program/mindshield/enable_passive_effect() . = ..() - if(!host_mob.mind.has_antag_datum(/datum/antagonist/rev, TRUE)) //won't work if on a rev, to avoid having implanted revs. - ADD_TRAIT(host_mob, TRAIT_MINDSHIELD, "nanites") - host_mob.sec_hud_set_implants() + ADD_TRAIT(host_mob, TRAIT_MINDSHIELD, "nanites") + host_mob.sec_hud_set_implants() /datum/nanite_program/mindshield/disable_passive_effect() . = ..() diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm index a33f42f5f848..11b862e4a751 100644 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -217,7 +217,7 @@ /datum/nanite_program/defib/on_trigger(comm_message) host_mob.notify_ghost_cloning("Your heart is being defibrillated by nanites. Re-enter your corpse if you want to be revived!") - addtimer(CALLBACK(src, .proc/zap), 50) + addtimer(CALLBACK(src, PROC_REF(zap)), 50) /datum/nanite_program/defib/proc/check_revivable() if(!iscarbon(host_mob)) //nonstandard biology diff --git a/code/modules/research/nanites/nanite_programs/sensor.dm b/code/modules/research/nanites/nanite_programs/sensor.dm index ff42a5fe099c..dacdc0481408 100644 --- a/code/modules/research/nanites/nanite_programs/sensor.dm +++ b/code/modules/research/nanites/nanite_programs/sensor.dm @@ -36,7 +36,7 @@ /datum/nanite_program/sensor/repeat/on_trigger(comm_message) var/datum/nanite_extra_setting/ES = extra_settings[NES_DELAY] - addtimer(CALLBACK(src, .proc/send_code), ES.get_value() * 10) + addtimer(CALLBACK(src, PROC_REF(send_code)), ES.get_value() * 10) /datum/nanite_program/sensor/relay_repeat name = "Relay Signal Repeater" @@ -53,7 +53,7 @@ /datum/nanite_program/sensor/relay_repeat/on_trigger(comm_message) var/datum/nanite_extra_setting/ES = extra_settings[NES_DELAY] - addtimer(CALLBACK(src, .proc/send_code), ES.get_value() * 10) + addtimer(CALLBACK(src, PROC_REF(send_code)), ES.get_value() * 10) /datum/nanite_program/sensor/relay_repeat/send_code() var/datum/nanite_extra_setting/relay = extra_settings[NES_RELAY_CHANNEL] @@ -244,10 +244,10 @@ /datum/nanite_program/sensor/voice/on_mob_add() . = ..() - RegisterSignal(host_mob, COMSIG_MOVABLE_HEAR, .proc/on_hear) + RegisterSignal(host_mob, COMSIG_MOVABLE_HEAR, PROC_REF(on_hear)) /datum/nanite_program/sensor/voice/on_mob_remove() - UnregisterSignal(host_mob, COMSIG_MOVABLE_HEAR, .proc/on_hear) + UnregisterSignal(host_mob, COMSIG_MOVABLE_HEAR, PROC_REF(on_hear)) /datum/nanite_program/sensor/voice/proc/on_hear(datum/source, list/hearing_args) var/datum/nanite_extra_setting/sentence = extra_settings[NES_SENTENCE] diff --git a/code/modules/research/nanites/nanite_programs/suppression.dm b/code/modules/research/nanites/nanite_programs/suppression.dm index 848c5b2e4610..76bddd35c066 100644 --- a/code/modules/research/nanites/nanite_programs/suppression.dm +++ b/code/modules/research/nanites/nanite_programs/suppression.dm @@ -11,7 +11,7 @@ /datum/nanite_program/sleepy/on_trigger(comm_message) to_chat(host_mob, "You start to feel very sleepy...") host_mob.drowsyness += 20 - addtimer(CALLBACK(host_mob, /mob/living.proc/Sleeping, 200), rand(60,200)) + addtimer(CALLBACK(host_mob, TYPE_PROC_REF(/mob/living, Sleeping), 200), rand(60,200)) /datum/nanite_program/paralyzing name = "Paralysis" diff --git a/code/modules/research/nanites/nanite_programs/utility.dm b/code/modules/research/nanites/nanite_programs/utility.dm index 7e6237dc5744..73c0b2ea8006 100644 --- a/code/modules/research/nanites/nanite_programs/utility.dm +++ b/code/modules/research/nanites/nanite_programs/utility.dm @@ -324,7 +324,7 @@ /datum/nanite_program/dermal_button/on_mob_remove() . = ..() - qdel(button) + QDEL_NULL(button) /datum/nanite_program/dermal_button/proc/press() if(activated) diff --git a/code/modules/research/nanites/nanite_programs/weapon.dm b/code/modules/research/nanites/nanite_programs/weapon.dm index 16f87bc6bdee..5f166d4d610a 100644 --- a/code/modules/research/nanites/nanite_programs/weapon.dm +++ b/code/modules/research/nanites/nanite_programs/weapon.dm @@ -84,7 +84,7 @@ /datum/nanite_program/explosive/on_trigger(comm_message) host_mob.visible_message("[host_mob] starts emitting a high-pitched buzzing, and [host_mob.p_their()] skin begins to glow...",\ "You start emitting a high-pitched buzzing, and your skin begins to glow...") - addtimer(CALLBACK(src, .proc/boom), clamp((nanites.nanite_volume * 0.35), 25, 150)) + addtimer(CALLBACK(src, PROC_REF(boom)), clamp((nanites.nanite_volume * 0.35), 25, 150)) /datum/nanite_program/explosive/proc/boom() var/nanite_amount = nanites.nanite_volume @@ -179,7 +179,7 @@ sent_directive = ES.get_value() brainwash(host_mob, sent_directive) log_game("A mind control nanite program brainwashed [key_name(host_mob)] with the objective '[sent_directive]'.") - addtimer(CALLBACK(src, .proc/end_brainwashing), 600) + addtimer(CALLBACK(src, PROC_REF(end_brainwashing)), 600) /datum/nanite_program/comm/mind_control/proc/end_brainwashing() if(host_mob.mind && host_mob.mind.has_antag_datum(/datum/antagonist/brainwashed)) diff --git a/code/modules/research/nanites/public_chamber.dm b/code/modules/research/nanites/public_chamber.dm index f53707206a38..9e39486c2052 100644 --- a/code/modules/research/nanites/public_chamber.dm +++ b/code/modules/research/nanites/public_chamber.dm @@ -50,9 +50,9 @@ //TODO OMINOUS MACHINE SOUNDS set_busy(TRUE, "[initial(icon_state)]_raising") - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_active"),20) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_falling"),60) - addtimer(CALLBACK(src, .proc/complete_injection, locked_state, attacker),80) + addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "[initial(icon_state)]_active"),20) + addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "[initial(icon_state)]_falling"),60) + addtimer(CALLBACK(src, PROC_REF(complete_injection), locked_state, attacker),80) /obj/machinery/public_nanite_chamber/proc/complete_injection(locked_state, mob/living/attacker) //TODO MACHINE DING @@ -77,9 +77,9 @@ locked = TRUE set_busy(TRUE, "[initial(icon_state)]_raising") - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_active"),20) - addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_falling"),40) - addtimer(CALLBACK(src, .proc/complete_cloud_change, locked_state, attacker),60) + addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "[initial(icon_state)]_active"),20) + addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "[initial(icon_state)]_falling"),40) + addtimer(CALLBACK(src, PROC_REF(complete_cloud_change), locked_state, attacker),60) /obj/machinery/public_nanite_chamber/proc/complete_cloud_change(locked_state, mob/living/attacker) locked = locked_state @@ -157,7 +157,7 @@ . = TRUE - addtimer(CALLBACK(src, .proc/try_inject_nanites, attacker), 30) //If someone is shoved in give them a chance to get out before the injection starts + addtimer(CALLBACK(src, PROC_REF(try_inject_nanites), attacker), 30) //If someone is shoved in give them a chance to get out before the injection starts /obj/machinery/public_nanite_chamber/proc/try_inject_nanites(mob/living/attacker) if(occupant) diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 90094f64594f..7c46ac61d784 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -111,4 +111,4 @@ stack_name = S.name use_power(min(1000, (amount_inserted / 100))) add_overlay("protolathe_[stack_name]") - addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10) + addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, cut_overlay), "protolathe_[stack_name]"), 10) diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index be4a4d6714c7..651eb2fece14 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -66,7 +66,7 @@ var/icon/bluespace /datum/status_effect/slimerecall/on_apply() - RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/resistField) + RegisterSignal(owner, COMSIG_LIVING_RESIST, PROC_REF(resistField)) to_chat(owner, "You feel a sudden tug from an unknown force, and feel a pull to bluespace!") to_chat(owner, "Resist if you wish avoid the force!") bluespace = icon('icons/effects/effects.dmi',"chronofield") @@ -98,7 +98,7 @@ var/obj/structure/ice_stasis/cube /datum/status_effect/frozenstasis/on_apply() - RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/breakCube) + RegisterSignal(owner, COMSIG_LIVING_RESIST, PROC_REF(breakCube)) cube = new /obj/structure/ice_stasis(get_turf(owner)) owner.forceMove(cube) owner.status_flags |= GODMODE @@ -462,7 +462,7 @@ for(var/mob/living/simple_animal/slime/S in range(1, get_turf(owner))) if(!(owner in S.Friends)) to_chat(owner, "[linked_extract] pulses gently as it communicates with [S].") - S.Friends[owner] = 1 + S.set_friendship(owner, 1) return ..() /datum/status_effect/stabilized/orange diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index ee581e7ab39c..e9fd98232e2c 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -34,7 +34,7 @@ Burning extracts: /obj/item/slimecross/burning/grey/do_effect(mob/user) var/mob/living/simple_animal/slime/S = new(get_turf(user),"grey") S.visible_message("A baby slime emerges from [src], and it nuzzles [user] before burbling hungrily!") - S.Friends[user] = 20 //Gas, gas, gas + S.set_friendship(user, 20) //Gas, gas, gas S.bodytemperature = T0C + 400 //We gonna step on the gas. S.set_nutrition(S.get_hunger_nutrition()) //Tonight, we fight! ..() @@ -201,10 +201,10 @@ Burning extracts: for(var/mob/living/simple_animal/slime/S in view(7, get_turf(user))) if(user in S.Friends) var/friendliness = S.Friends[user] - S.Friends = list() - S.Friends[user] = friendliness + S.clear_friends() + S.set_friendship(user, friendliness) else - S.Friends = list() + S.clear_friends() S.rabid = 1 S.visible_message("The [S] is driven into a dangerous frenzy!") ..() @@ -261,7 +261,7 @@ Burning extracts: /obj/item/slimecross/burning/oil/do_effect(mob/user) user.visible_message("[user] activates [src]. It's going to explode!", "You activate [src]. It crackles in anticipation") - addtimer(CALLBACK(src, .proc/boom), 50) + addtimer(CALLBACK(src, PROC_REF(boom)), 50) /obj/item/slimecross/burning/oil/proc/boom() var/turf/T = get_turf(src) diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm index a2853592e4d2..d44f1bd4ad8b 100644 --- a/code/modules/research/xenobiology/crossbreeding/charged.dm +++ b/code/modules/research/xenobiology/crossbreeding/charged.dm @@ -195,7 +195,7 @@ Charged extracts: /obj/item/slimecross/charged/gold/do_effect(mob/user) user.visible_message("[src] starts shuddering violently!") - addtimer(CALLBACK(src, .proc/startTimer), 50) + addtimer(CALLBACK(src, PROC_REF(startTimer)), 50) /obj/item/slimecross/charged/gold/proc/startTimer() START_PROCESSING(SSobj, src) @@ -220,7 +220,7 @@ Charged extracts: /obj/item/slimecross/charged/oil/do_effect(mob/user) user.visible_message("[src] begins to shake with rapidly increasing force!") - addtimer(CALLBACK(src, .proc/boom), 50) + addtimer(CALLBACK(src, PROC_REF(boom)), 50) /obj/item/slimecross/charged/oil/proc/boom() explosion(get_turf(src), 2, 3, 4) //Much smaller effect than normal oils, but devastatingly strong where it does hit. diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm index e4f19c892a12..085f8486ac32 100644 --- a/code/modules/research/xenobiology/crossbreeding/chilling.dm +++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm @@ -282,7 +282,7 @@ Chilling extracts: /obj/item/slimecross/chilling/oil/do_effect(mob/user) user.visible_message("[src] begins to shake with muted intensity!") - addtimer(CALLBACK(src, .proc/boom), 50) + addtimer(CALLBACK(src, PROC_REF(boom)), 50) /obj/item/slimecross/chilling/oil/proc/boom() explosion(get_turf(src), -1, -1, 10, 0) //Large radius, but mostly light damage, and no flash. diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index ea28f5196e59..81ac7db98b01 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -119,12 +119,12 @@ hotkey_help.Grant(user) actions += hotkey_help - RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_CTRL, .proc/XenoSlimeClickCtrl) - RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_ALT, .proc/XenoSlimeClickAlt) - RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_SHIFT, .proc/XenoSlimeClickShift) - RegisterSignal(user, COMSIG_XENO_TURF_CLICK_SHIFT, .proc/XenoTurfClickShift) - RegisterSignal(user, COMSIG_XENO_TURF_CLICK_CTRL, .proc/XenoTurfClickCtrl) - RegisterSignal(user, COMSIG_XENO_MONKEY_CLICK_CTRL, .proc/XenoMonkeyClickCtrl) + RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_CTRL, PROC_REF(XenoSlimeClickCtrl)) + RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_ALT, PROC_REF(XenoSlimeClickAlt)) + RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_SHIFT, PROC_REF(XenoSlimeClickShift)) + RegisterSignal(user, COMSIG_XENO_TURF_CLICK_SHIFT, PROC_REF(XenoTurfClickShift)) + RegisterSignal(user, COMSIG_XENO_TURF_CLICK_CTRL, PROC_REF(XenoTurfClickCtrl)) + RegisterSignal(user, COMSIG_XENO_MONKEY_CLICK_CTRL, PROC_REF(XenoMonkeyClickCtrl)) //Checks for recycler on every interact, prevents issues with load order on certain maps. if(!connected_recycler) @@ -241,7 +241,7 @@ if(X.monkeys >= 1) var/mob/living/carbon/monkey/food = new /mob/living/carbon/monkey(remote_eye.loc, TRUE, owner) if (!QDELETED(food)) - food.LAssailant = C + food.LAssailant = WEAKREF(C) X.monkeys-- X.monkeys = round(X.monkeys, 0.1) //Prevents rounding errors to_chat(owner, "[X] now has [X.monkeys] monkeys stored.") @@ -443,7 +443,7 @@ if(X.monkeys >= 1) var/mob/living/carbon/monkey/food = new /mob/living/carbon/monkey(T, TRUE, C) if (!QDELETED(food)) - food.LAssailant = C + food.LAssailant = WEAKREF(C) X.monkeys-- X.monkeys = round(X.monkeys, 0.1) //Prevents rounding errors to_chat(C, "[X] now has [X.monkeys] monkeys stored.") diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 9a1c98ad6212..939c14589586 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -278,7 +278,7 @@ to_chat(user, "Your glow is already enhanced!") return species.update_glow(user, 5) - addtimer(CALLBACK(species, /datum/species/jelly/luminescent.proc/update_glow, user, LUMINESCENT_DEFAULT_GLOW), 600) + addtimer(CALLBACK(species, TYPE_PROC_REF(/datum/species/jelly/luminescent, update_glow), user, LUMINESCENT_DEFAULT_GLOW), 600) to_chat(user, "You start glowing brighter.") if(SLIME_ACTIVATE_MAJOR) @@ -494,7 +494,7 @@ return to_chat(user, "You feel your skin harden and become more resistant.") species.armor += 25 - addtimer(CALLBACK(src, .proc/reset_armor, species), 1200) + addtimer(CALLBACK(src, PROC_REF(reset_armor), species), 1200) return 450 if(SLIME_ACTIVATE_MAJOR) diff --git a/code/modules/ruins/icemoonruin_code/hotsprings.dm b/code/modules/ruins/icemoonruin_code/hotsprings.dm index a318f5bb1a48..dd4d39e91a20 100644 --- a/code/modules/ruins/icemoonruin_code/hotsprings.dm +++ b/code/modules/ruins/icemoonruin_code/hotsprings.dm @@ -27,7 +27,7 @@ GLOBAL_LIST_EMPTY(cursed_minds) if(GLOB.cursed_minds[L.mind]) return GLOB.cursed_minds[L.mind] = TRUE - RegisterSignal(L.mind, COMSIG_PARENT_QDELETING, .proc/remove_from_cursed) + RegisterSignal(L.mind, COMSIG_PARENT_QDELETING, PROC_REF(remove_from_cursed)) var/random_choice = pick("Mob", "Appearance") switch(random_choice) if("Mob") diff --git a/code/modules/ruins/icemoonruin_code/wrath.dm b/code/modules/ruins/icemoonruin_code/wrath.dm index d43a72d80c96..11e7e24e6547 100644 --- a/code/modules/ruins/icemoonruin_code/wrath.dm +++ b/code/modules/ruins/icemoonruin_code/wrath.dm @@ -14,7 +14,7 @@ /obj/item/clothing/gloves/butchering/equipped(mob/user, slot, initial = FALSE) . = ..() - RegisterSignal(user, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, .proc/butcher_target) + RegisterSignal(user, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, PROC_REF(butcher_target)) var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.butchering_enabled = TRUE diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index cb5465f881fd..bf583bcd2157 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -86,9 +86,7 @@ /obj/item/stack/sheet/bone = /datum/species/golem/bone, /obj/item/stack/sheet/durathread = /datum/species/golem/durathread, /obj/item/stack/sheet/cotton/durathread = /datum/species/golem/durathread, - /obj/item/stack/sheet/mineral/snow = /datum/species/golem/snow, - /obj/item/stack/sheet/capitalisium = /datum/species/golem/capitalist, - /obj/item/stack/sheet/stalinium = /datum/species/golem/soviet) + /obj/item/stack/sheet/mineral/snow = /datum/species/golem/snow) if(istype(I, /obj/item/stack)) var/obj/item/stack/O = I diff --git a/code/modules/ruins/lavalandruin_code/puzzle.dm b/code/modules/ruins/lavalandruin_code/puzzle.dm index 6dffbb81272b..1325e40310f9 100644 --- a/code/modules/ruins/lavalandruin_code/puzzle.dm +++ b/code/modules/ruins/lavalandruin_code/puzzle.dm @@ -242,7 +242,8 @@ /obj/structure/puzzle_element/Moved() . = ..() - source.validate() + if(source) + source.validate() //Admin abuse version so you can pick the icon before it sets up /obj/effect/sliding_puzzle/admin diff --git a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm index 1538f4d1145a..b231ea902371 100644 --- a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm +++ b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm @@ -19,6 +19,7 @@ var/datum/team/ashwalkers/ashies var/last_act = 0 var/init_zlevel = 0 //This is my home, I refuse to settle anywhere else. + var/datum/linked_objective /obj/structure/lavaland/ash_walker/Initialize() .=..() @@ -26,9 +27,17 @@ ashies = new /datum/team/ashwalkers() var/datum/objective/protect_object/objective = new objective.set_target(src) + linked_objective = objective ashies.objectives += objective START_PROCESSING(SSprocessing, src) +/obj/structure/lavaland/ash_walker/Destroy() + ashies.objectives -= linked_objective + ashies = null + QDEL_NULL(linked_objective) + STOP_PROCESSING(SSprocessing, src) + return ..() + /obj/structure/lavaland/ash_walker/deconstruct(disassembled) new /obj/item/assembly/signaler/anomaly (get_step(loc, pick(GLOB.alldirs))) new /obj/effect/collapse(loc) @@ -58,7 +67,7 @@ deadmind = H.get_ghost(FALSE, TRUE) to_chat(deadmind, "Your body has been returned to the nest. You are being remade anew, and will awaken shortly.
Your memories will remain intact in your new body, as your soul is being salvaged") SEND_SOUND(deadmind, sound('sound/magic/enter_blood.ogg',volume=100)) - addtimer(CALLBACK(src, .proc/remake_walker, H.mind, H.real_name), 20 SECONDS) + addtimer(CALLBACK(src, PROC_REF(remake_walker), H.mind, H.real_name), 20 SECONDS) new /obj/effect/gibspawner/generic(get_turf(H)) qdel(H) return diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm index 7e133dbe5500..bc0e8a9d401d 100644 --- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm +++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm @@ -47,7 +47,7 @@ add_overlay(dais_overlay) var/static/list/loc_connections = list( - COMSIG_ATOM_EXIT = .proc/on_exit + COMSIG_ATOM_EXIT = PROC_REF(on_exit) ) AddElement(/datum/element/connect_loc, loc_connections) @@ -61,9 +61,9 @@ /obj/structure/necropolis_gate/singularity_pull() return 0 -/obj/structure/necropolis_gate/CanAllowThrough(atom/movable/mover, turf/target) +/obj/structure/necropolis_gate/CanAllowThrough(atom/movable/mover, border_dir) . = ..() - if(!(get_dir(loc, target) == dir)) + if(border_dir != dir) return TRUE /obj/structure/necropolis_gate/proc/on_exit(datum/source, atom/movable/leaving, direction) @@ -268,7 +268,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) icon_state = "[tile_key][rand(1, tile_random_sprite_max)]" var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered + COMSIG_ATOM_ENTERED = PROC_REF(on_entered) ) AddElement(/datum/element/connect_loc, loc_connections) @@ -297,7 +297,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) switch(fall_on_cross) if(COLLAPSE_ON_CROSS, DESTROY_ON_CROSS) if((I && I.w_class >= WEIGHT_CLASS_BULKY) || (L && !(L.movement_type & FLYING) && L.mob_size >= MOB_SIZE_HUMAN)) //too heavy! too big! aaah! - INVOKE_ASYNC(src, .proc/collapse) + INVOKE_ASYNC(src, PROC_REF(collapse)) if(UNIQUE_EFFECT) crossed_effect(AM) @@ -316,7 +316,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate) if(break_that_sucker) QDEL_IN(src, 10) else - addtimer(CALLBACK(src, .proc/rebuild), 55) + addtimer(CALLBACK(src, PROC_REF(rebuild)), 55) /obj/structure/stone_tile/proc/rebuild() pixel_x = initial(pixel_x) diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm index e1e2f97fc7cf..fbdf03eff183 100644 --- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm +++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm @@ -29,7 +29,7 @@ know it'll be worth it.
") icon_state = "slots2" playsound(src, 'sound/lavaland/cursed_slot_machine.ogg', 50, FALSE) - addtimer(CALLBACK(src, .proc/determine_victor, user), 50) + addtimer(CALLBACK(src, PROC_REF(determine_victor), user), 50) /obj/structure/cursed_slot_machine/proc/determine_victor(mob/living/user) icon_state = "slots1" @@ -55,7 +55,7 @@ /obj/structure/cursed_money/Initialize() . = ..() - addtimer(CALLBACK(src, .proc/collapse), 600) + addtimer(CALLBACK(src, PROC_REF(collapse)), 600) /obj/structure/cursed_money/proc/collapse() visible_message("[src] falls in on itself, \ @@ -85,7 +85,7 @@ icon = 'icons/mob/blob.dmi' color = rgb(145, 150, 0) -/obj/effect/gluttony/CanAllowThrough(atom/movable/mover, turf/target)//So bullets will fly over and stuff. +/obj/effect/gluttony/CanAllowThrough(atom/movable/mover, border_dir)//So bullets will fly over and stuff. . = ..() if(ishuman(mover)) var/mob/living/carbon/human/H = mover diff --git a/code/modules/ruins/spaceruin_code/forgottenship.dm b/code/modules/ruins/spaceruin_code/forgottenship.dm index 4a3611dcbdcc..8e3ae585d73d 100644 --- a/code/modules/ruins/spaceruin_code/forgottenship.dm +++ b/code/modules/ruins/spaceruin_code/forgottenship.dm @@ -90,29 +90,6 @@ GLOBAL_VAR_INIT(fscpassword, generate_password()) //Cybersun hardsuit -/obj/item/clothing/head/helmet/space/hardsuit/cybersun - name = "Cybersun hardsuit helmet" - desc = "Prototype hardsuit helmet with experimental armor plates, protecting from laser-based weapons very well, while giving limited protection against anything else." - icon_state = "cybersun" - item_state = "cybersun" - hardsuit_type = "cybersun" - armor = list("melee" = 30, "bullet" = 40, "laser" = 55, "energy" = 55, "bomb" = 30, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60) - strip_delay = 600 - actions_types = list() - - -/obj/item/clothing/suit/space/hardsuit/cybersun - icon_state = "cybersun" - item_state = "cybersun" - hardsuit_type = "cybersun" - name = "Cybersun hardsuit" - desc = "Prototype hardsuit with experimental armor plates, protecting from laser-based weapons very well, while giving limited protection against anything else." - armor = list("melee" = 30, "bullet" = 40, "laser" = 55, "energy" = 55, "bomb" = 30, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60) - slowdown = 0 - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cybersun - actions_types = list(/datum/action/item_action/toggle_helmet) - jetpack = /obj/item/tank/jetpack/suit - //Special NT NPCs /mob/living/simple_animal/hostile/nanotrasen/ranged/assault diff --git a/code/modules/screen_alerts/_screen_alerts.dm b/code/modules/screen_alerts/_screen_alerts.dm index 3cf3dd376795..08a21635ea93 100644 --- a/code/modules/screen_alerts/_screen_alerts.dm +++ b/code/modules/screen_alerts/_screen_alerts.dm @@ -12,7 +12,7 @@ text_box.text_to_play = text LAZYADD(client.screen_texts, text_box) if(LAZYLEN(client.screen_texts) == 1) //lets only play one at a time, for thematic effect and prevent overlap - INVOKE_ASYNC(text_box, /atom/movable/screen/text/screen_text.proc/play_to_mob, src) + INVOKE_ASYNC(text_box, TYPE_PROC_REF(/atom/movable/screen/text/screen_text, play_to_mob), src) return client.screen_texts += text_box @@ -79,7 +79,7 @@ continue maptext = "[style_open][copytext_char(text_to_play, 1, letter)][style_close]" sleep(play_delay) - addtimer(CALLBACK(src, .proc/after_play, user), fade_out_delay) + addtimer(CALLBACK(src, PROC_REF(after_play), user), fade_out_delay) ///handles post-play effects like fade out after the fade out delay /atom/movable/screen/text/screen_text/proc/after_play(mob/user) @@ -87,7 +87,7 @@ end_play(user) return animate(src, alpha = 0, time = fade_out_time) - addtimer(CALLBACK(src, .proc/end_play, user), fade_out_time) + addtimer(CALLBACK(src, PROC_REF(end_play), user), fade_out_time) ///ends the play then deletes this screen object and plalys the next one in queue if it exists /atom/movable/screen/text/screen_text/proc/end_play(mob/user) diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm index be021492b2de..7f3693e98760 100644 --- a/code/modules/security_levels/keycard_authentication.dm +++ b/code/modules/security_levels/keycard_authentication.dm @@ -24,7 +24,7 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new) /obj/machinery/keycard_auth/Initialize() . = ..() - ev = GLOB.keycard_events.addEvent("triggerEvent", CALLBACK(src, .proc/triggerEvent)) + ev = GLOB.keycard_events.addEvent("triggerEvent", CALLBACK(src, PROC_REF(triggerEvent))) /obj/machinery/keycard_auth/Destroy() GLOB.keycard_events.clearEvent("triggerEvent", ev) @@ -86,7 +86,7 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new) event = event_type waiting = 1 GLOB.keycard_events.fireEvent("triggerEvent", src) - addtimer(CALLBACK(src, .proc/eventSent), 20) + addtimer(CALLBACK(src, PROC_REF(eventSent)), 20) /obj/machinery/keycard_auth/proc/eventSent() triggerer = null @@ -96,7 +96,7 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new) /obj/machinery/keycard_auth/proc/triggerEvent(source) icon_state = "auth_on" event_source = source - addtimer(CALLBACK(src, .proc/eventTriggered), 20) + addtimer(CALLBACK(src, PROC_REF(eventTriggered)), 20) /obj/machinery/keycard_auth/proc/eventTriggered() icon_state = "auth_off" diff --git a/code/modules/shuttle/docking.dm b/code/modules/shuttle/docking.dm index 64b20d8a2eeb..ec0727a2cc24 100644 --- a/code/modules/shuttle/docking.dm +++ b/code/modules/shuttle/docking.dm @@ -97,9 +97,11 @@ for(var/turf/oldT as anything in old_turfs) oldT.blocks_air = TRUE oldT.set_sleeping(TRUE) + oldT.air_update_turf(TRUE) for(var/turf/newT as anything in new_turfs) newT.blocks_air = TRUE newT.set_sleeping(TRUE) + newT.air_update_turf(TRUE) /obj/docking_port/mobile/proc/throw_exception(exception/e) throw e diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 7b4c75fe0104..2d48fc3a82a3 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -20,8 +20,7 @@ All ShuttleMove procs go here if(!(. & MOVE_TURF)) return - for(var/i in contents) - var/atom/movable/thing = i + for(var/atom/movable/thing as anything in contents) if(ismob(thing)) if(isliving(thing)) var/mob/living/M = thing @@ -40,12 +39,13 @@ All ShuttleMove procs go here else //non-living mobs shouldn't be affected by shuttles, which is why this is an else - if(istype(thing, /obj/singularity) && !istype(thing, /obj/singularity/narsie)) //it's a singularity but not a god, ignore it. - continue - if(!thing.anchored) - qdel(thing) - else + if(!isobj(thing)) qdel(thing) + continue + var/obj/object = thing + if(object.resistance_flags & LANDING_PROOF) + continue + qdel(thing) // Called on the old turf to move the turf data /turf/proc/onShuttleMove(turf/newT, list/movement_force, move_dir, shuttle_layers) @@ -79,11 +79,19 @@ All ShuttleMove procs go here //Dealing with the turf we left behind oldT.TransferComponents(src) SEND_SIGNAL(oldT, COMSIG_TURF_AFTER_SHUTTLE_MOVE, src) //Mostly for decals + + if(rotation) + shuttleRotate(rotation) //see shuttle_rotate.dm + //find the boundary between the shuttle that left and what remains - var/area/ship/A = loc - var/obj/docking_port/mobile/top_shuttle = A?.mobile_port - var/shuttle_layers = -1*A.get_missing_shuttles(src) - for(var/index in 1 to all_towed_shuttles.len) + var/area/ship/ship_area = loc + if(!istype(ship_area)) + return TRUE + + //Only run this code if it's a ship area + var/obj/docking_port/mobile/top_shuttle = ship_area.mobile_port + var/shuttle_layers = -1 * ship_area.get_missing_shuttles(src) + for(var/index in 1 to length(all_towed_shuttles)) var/obj/docking_port/mobile/M = all_towed_shuttles[index] if(!M.underlying_turf_area[src]) continue @@ -103,9 +111,6 @@ All ShuttleMove procs go here if(BT_index != length(baseturfs)) oldT.ScrapeAway(baseturfs.len - BT_index, CHANGETURF_FORCEOP) - if(rotation) - shuttleRotate(rotation) //see shuttle_rotate.dm - return TRUE /turf/proc/lateShuttleMove(turf/oldT) @@ -206,7 +211,7 @@ All ShuttleMove procs go here for(var/obj/machinery/door/airlock/A in range(1, src)) // includes src A.shuttledocked = FALSE A.air_tight = TRUE - INVOKE_ASYNC(A, /obj/machinery/door/.proc/close) + INVOKE_ASYNC(A, TYPE_PROC_REF(/obj/machinery/door, close)) /obj/machinery/door/airlock/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) . = ..() @@ -282,22 +287,6 @@ All ShuttleMove procs go here // atmosinit() calls update_appearance(), so we don't need to call it update_appearance() -/obj/machinery/navbeacon/beforeShuttleMove(turf/newT, rotation, move_mode, obj/docking_port/mobile/moving_dock) - . = ..() - GLOB.navbeacons["[z]"] -= src - GLOB.deliverybeacons -= src - -/obj/machinery/navbeacon/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) - . = ..() - - if(codes["patrol"]) - if(!GLOB.navbeacons["[z]"]) - GLOB.navbeacons["[z]"] = list() - GLOB.navbeacons["[z]"] += src //Register with the patrol list! - if(codes["delivery"]) - GLOB.deliverybeacons += src - GLOB.deliverybeacontags += location - /************************************Item move procs************************************/ /obj/item/storage/pod/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) @@ -404,11 +393,3 @@ All ShuttleMove procs go here if((!(src in moving_dock.docking_points) || !towed_shuttles[docked]) && !moving_dock.can_move_docking_ports) return FALSE . = ..() - -/obj/effect/abstract/proximity_checker/onShuttleMove(turf/newT, turf/oldT, list/movement_force, move_dir, obj/docking_port/stationary/old_dock, obj/docking_port/mobile/moving_dock, list/obj/docking_port/mobile/towed_shuttles) - . = ..() - //timer so it only happens once - if(!monitor) - qdel(src) - return - addtimer(CALLBACK(monitor, /datum/proximity_monitor/proc/SetRange, monitor.current_range, TRUE), 0, TIMER_UNIQUE) diff --git a/code/modules/shuttle/ripple.dm b/code/modules/shuttle/ripple.dm index 4bf6eac0ebed..824c1843bac7 100644 --- a/code/modules/shuttle/ripple.dm +++ b/code/modules/shuttle/ripple.dm @@ -14,7 +14,7 @@ /obj/effect/abstract/ripple/Initialize(mapload, time_left) . = ..() animate(src, alpha=255, time=time_left) - addtimer(CALLBACK(src, .proc/stop_animation), 8, TIMER_CLIENT_TIME) + addtimer(CALLBACK(src, PROC_REF(stop_animation)), 8, TIMER_CLIENT_TIME) /obj/effect/abstract/ripple/proc/stop_animation() icon_state = "medi_holo_no_anim" diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index f1816cb8b5ef..8c4a61e5dc25 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -9,7 +9,7 @@ icon = 'icons/obj/device.dmi' icon_state = "pinonfar" - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | LANDING_PROOF | HYPERSPACE_PROOF anchored = TRUE ///Common standard is for this to point -away- from the dockingport door, ie towards the ship @@ -29,18 +29,11 @@ //The shuttle docked here/dock we're parked at. var/obj/docking_port/docked - //these objects are indestructible /obj/docking_port/Destroy(force) - // unless you assert that you know what you're doing. Horrible things - // may result. - if(force) - if(docked) - docked.docked = null - docked = null - ..() - . = QDEL_HINT_QUEUE - else - return QDEL_HINT_LETMELIVE + if(docked) + docked.docked = null + docked = null + return ..() /obj/docking_port/has_gravity(turf/T) return FALSE @@ -182,8 +175,12 @@ T.maptext = null if(_color) var/turf/T = locate(L[1], L[2], z) + if(!T) + return T.color = "#0f0" T = locate(L[3], L[4], z) + if(!T) + return T.color = "#00f" #endif @@ -225,16 +222,17 @@ for(var/turf/T in return_turfs()) T.flags_1 |= NO_RUINS_1 if(SSshuttle.initialized && load_template_on_initialize) // If the docking port is loaded via map but SSshuttle has already init (therefore this would never be called) - INVOKE_ASYNC(src, .proc/load_roundstart) + INVOKE_ASYNC(src, PROC_REF(load_roundstart)) #ifdef DOCKING_PORT_HIGHLIGHT highlight("#f00") #endif /obj/docking_port/stationary/Destroy(force) - if(force) - SSshuttle.stationary -= src - . = ..() + SSshuttle.stationary -= src + owner_ship?.towed_shuttles -= docked + owner_ship?.docking_points -= src + return ..() /obj/docking_port/stationary/proc/load_roundstart() if(roundstart_template) // passed a PATH @@ -259,18 +257,15 @@ transit_dock_counter++ name = "transit dock [transit_dock_counter]" -/obj/docking_port/stationary/transit/Destroy(force=FALSE) - if(force) - if(docked) - log_world("A transit dock was destroyed while something was docked to it.") - SSshuttle.transit -= src - if(owner) - if(owner.assigned_transit == src) - owner.assigned_transit = null - owner = null - if(!QDELETED(reserved_mapzone)) - qdel(reserved_mapzone) - reserved_mapzone = null +/obj/docking_port/stationary/transit/Destroy(force) + if(!QDELETED(docked)) + log_world("A transit dock was destroyed while something was docked to it.") + SSshuttle.transit -= src + if(owner?.assigned_transit == src) + owner.assigned_transit = null + owner = null + if(!QDELETED(reserved_mapzone)) + QDEL_NULL(reserved_mapzone) return ..() /obj/docking_port/mobile @@ -357,22 +352,44 @@ SSshuttle.mobile += src /obj/docking_port/mobile/Destroy(force) - if(force) - SSshuttle.mobile -= src - destination = null - previous = null - if(!QDELETED(current_ship)) - QDEL_NULL(current_ship) - qdel(assigned_transit, TRUE) //don't need it where we're goin'! - assigned_transit = null - for(var/obj/docking_port/stationary/docking_point as anything in docking_points) - qdel(docking_point, TRUE) - docking_points = null - shuttle_areas = null //TODO: This is nowhere near enough to clear references, lol. We need an /atom/proc/disconnect_from_shuttle() proc to clear references. - towed_shuttles = null - underlying_turf_area = null - remove_ripples() - . = ..() + if(!QDELETED(current_ship)) + message_admins("Shuttle [src] tried to delete at [ADMIN_VERBOSEJMP(src)], but failed!") + stack_trace("Ship attempted deletion while current ship still exists! Aborting!") + return QDEL_HINT_LETMELIVE + + if(SSticker.IsRoundInProgress()) + message_admins("Shuttle [src] deleted at [ADMIN_VERBOSEJMP(src)]") + log_game("Shuttle [src] deleted at [AREACOORD(src)]") + + spawn_points.Cut() + + SSshuttle.mobile -= src + + destination = null + previous = null + + qdel(assigned_transit, TRUE) //don't need it where we're goin'! + assigned_transit = null + for(var/port in docking_points) + qdel(port, TRUE) + //This is only null checked for the very snowflakey reason that it might be deleted before it's loaded properly. + //See the middle of /datum/controller/subsystem/shuttle/proc/load_template() for an example. + docking_points?.Cut() + + //VERY important proc. Should probably get folded into this one, but oh well. + //Requires the shuttle areas list and the towed_shuttles list, and will clear the latter. + jump_to_null_space() + + for(var/area/ship/shuttle_area in shuttle_areas) //TODO: make a disconnect_from_shuttle() proc + shuttle_area.mobile_port = null + shuttle_areas.Cut() + shuttle_areas = null + + remove_ripples() + + underlying_turf_area = null + + return ..() /obj/docking_port/mobile/Initialize(mapload) . = ..() @@ -564,7 +581,7 @@ play_engine_sound(src, launch_sound) -/obj/docking_port/mobile/proc/jumpToNullSpace() +/obj/docking_port/mobile/proc/jump_to_null_space() // Destroys the docking port and the shuttle contents. // Not in a fancy way, it just ceases. @@ -578,9 +595,8 @@ for(var/obj/docking_port/mobile/M in all_towed_shuttles) all_shuttle_areas += M.shuttle_areas - for(var/i in 1 to old_turfs.len) - var/turf/oldT = old_turfs[i] - if(!all_shuttle_areas[oldT?.loc]) + for(var/turf/oldT as anything in old_turfs) + if(!(oldT?.loc in all_shuttle_areas)) continue var/area/old_area = oldT.loc for(var/obj/docking_port/mobile/bottom_shuttle in all_towed_shuttles) @@ -598,24 +614,9 @@ oldT.ScrapeAway(baseturf_cache.len - k + 1) break - for(var/obj/docking_port/mobile/shuttle in all_towed_shuttles) - qdel(shuttle, force=TRUE) - -/obj/docking_port/mobile/proc/intoTheSunset() - // Loop over mobs - for(var/t in return_turfs()) - var/turf/T = t - for(var/mob/living/M in T.GetAllContents()) - // If they have a mind and they're not in the brig, they escaped - if(M.mind && !istype(t, /turf/open/floor/mineral/plastitanium/red/brig)) - M.mind.force_escaped = TRUE - // Ghostize them and put them in nullspace stasis (for stat & possession checks) - M.notransform = TRUE - M.ghostize(FALSE) - M.moveToNullspace() - - // Now that mobs are stowed, delete the shuttle - jumpToNullSpace() + for(var/obj/docking_port/mobile/shuttle in all_towed_shuttles - src) + qdel(shuttle, TRUE) + towed_shuttles.Cut() /obj/docking_port/mobile/proc/create_ripples(obj/docking_port/stationary/S1, animate_time) var/list/turfs = ripple_area(S1) @@ -862,6 +863,15 @@ else . = "unknown" +/obj/docking_port/mobile/proc/get_engines() + . = list() + for(var/datum/weakref/engine in engine_list) + var/obj/structure/shuttle/engine/real_engine = engine.resolve() + if(!real_engine) + engine_list -= engine + continue + . += real_engine + /obj/docking_port/mobile/proc/hyperspace_sound(phase, list/areas) var/selected_sound switch(phase) @@ -879,8 +889,10 @@ var/range = max(width, height) var/long_range = range * 2.5 var/atom/distant_source - if(engine_list[1]) - distant_source = engine_list[1] + var/list/engines = get_engines() + + if(engines[1]) + distant_source = engines[1] else for(var/A in areas) distant_source = locate(/obj/machinery/door) in A @@ -894,11 +906,11 @@ M.playsound_local(distant_source, "sound/runtime/hyperspace/[selected_sound]_distance.ogg", 100) else if(dist_far <= range) var/source - if(engine_list.len == 0) + if(engines.len == 0) source = distant_source else var/closest_dist = 10000 - for(var/obj/O in engine_list) + for(var/obj/O in engines) var/dist_near = get_dist(M, O) if(dist_near < closest_dist) source = O diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index aa2206efb4ba..fd18f0c5a1ee 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -93,7 +93,7 @@ L.visible_message("A strange purple glow wraps itself around [L] as [L.p_they()] suddenly fall[L.p_s()] unconscious.", "[desc]") // Don't let them sit suround unconscious forever - addtimer(CALLBACK(src, .proc/sleeper_dreams, L), 100) + addtimer(CALLBACK(src, PROC_REF(sleeper_dreams), L), 100) // Existing sleepers for(var/i in found) @@ -145,7 +145,7 @@ /mob/living/simple_animal/drone/snowflake/bardrone/Initialize() . = ..() access_card.access |= ACCESS_CENT_BAR - RegisterSignal(src, COMSIG_ENTER_AREA, .proc/check_barstaff_godmode) + RegisterSignal(src, COMSIG_ENTER_AREA, PROC_REF(check_barstaff_godmode)) check_barstaff_godmode() /mob/living/simple_animal/hostile/alien/maid/barmaid @@ -165,7 +165,7 @@ access_card.access = C.get_access() access_card.access |= ACCESS_CENT_BAR ADD_TRAIT(access_card, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) - RegisterSignal(src, COMSIG_ENTER_AREA, .proc/check_barstaff_godmode) + RegisterSignal(src, COMSIG_ENTER_AREA, PROC_REF(check_barstaff_godmode)) check_barstaff_godmode() /mob/living/simple_animal/hostile/alien/maid/barmaid/Destroy() @@ -193,7 +193,7 @@ /obj/structure/table/wood/bar/Initialize() . = ..() var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered + COMSIG_ATOM_ENTERED = PROC_REF(on_entered) ) AddElement(/datum/element/connect_loc, loc_connections) @@ -230,7 +230,7 @@ var/static/list/check_times = list() var/list/payees = list() -/obj/machinery/scanner_gate/luxury_shuttle/CanAllowThrough(atom/movable/mover, turf/target) +/obj/machinery/scanner_gate/luxury_shuttle/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(mover in approved_passengers) @@ -363,7 +363,7 @@ /mob/living/simple_animal/hostile/bear/fightpit name = "fight pit bear" - desc = "This bear's trained through ancient Russian secrets to fear the walls of its glass prison." + desc = "This bear's trained through ancient Solarian secrets to fear the walls of its glass prison." environment_smash = ENVIRONMENT_SMASH_NONE /obj/effect/decal/hammerandsickle diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 4a791beb5ee7..f91eb07f52cb 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -20,6 +20,12 @@ if(has_action) action = new base_action(src) +/obj/effect/proc_holder/Destroy() + if(!QDELETED(action)) + qdel(action) + action = null + return ..() + /obj/effect/proc_holder/proc/on_gain(mob/living/user) return @@ -512,11 +518,22 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th //Checks for obstacles from A to B var/obj/dummy = new(A.loc) dummy.pass_flags |= PASSTABLE - for(var/turf/turf in getline(A,B)) - for(var/atom/movable/AM in turf) - if(!AM.CanPass(dummy,turf,1)) + var/turf/previous_step = get_turf(A) + var/first_step = TRUE + for(var/turf/next_step as anything in (getline(A, B) - previous_step)) + if(first_step) + for(var/obj/blocker in previous_step) + if(!blocker.density || !(blocker.flags_1 & ON_BORDER_1)) + continue + if(blocker.CanPass(dummy, get_dir(previous_step, next_step))) + continue + return FALSE // Could not leave the first turf. + first_step = FALSE + for(var/atom/movable/movable as anything in next_step) + if(!movable.CanPass(dummy, get_dir(next_step, previous_step))) qdel(dummy) - return 0 + return FALSE + previous_step = next_step qdel(dummy) return 1 diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm index 66c0c232c06c..9e30c708774d 100644 --- a/code/modules/spells/spell_types/aimed.dm +++ b/code/modules/spells/spell_types/aimed.dm @@ -156,7 +156,7 @@ /obj/effect/proc_holder/spell/aimed/spell_cards/on_activation(mob/M) QDEL_NULL(lockon_component) - lockon_component = M.AddComponent(/datum/component/lockon_aiming, 5, typecacheof(list(/mob/living)), 1, null, CALLBACK(src, .proc/on_lockon_component)) + lockon_component = M.AddComponent(/datum/component/lockon_aiming, 5, typecacheof(list(/mob/living)), 1, null, CALLBACK(src, PROC_REF(on_lockon_component))) /obj/effect/proc_holder/spell/aimed/spell_cards/proc/on_lockon_component(list/locked_weakrefs) if(!length(locked_weakrefs)) diff --git a/code/modules/spells/spell_types/area_teleport.dm b/code/modules/spells/spell_types/area_teleport.dm index f8d5af4e2824..73014c5b3f47 100644 --- a/code/modules/spells/spell_types/area_teleport.dm +++ b/code/modules/spells/spell_types/area_teleport.dm @@ -17,7 +17,7 @@ return invocation(thearea,user) if(charge_type == "recharge" && recharge) - INVOKE_ASYNC(src, .proc/start_recharge) + INVOKE_ASYNC(src, PROC_REF(start_recharge)) cast(targets,thearea,user) after_cast(targets) diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm index 02e3532175a7..5f6403ca3cdd 100644 --- a/code/modules/spells/spell_types/construct_spells.dm +++ b/code/modules/spells/spell_types/construct_spells.dm @@ -210,7 +210,7 @@ target.playsound_local(get_turf(target), 'sound/hallucinations/i_see_you1.ogg', 50, 1) user.playsound_local(get_turf(user), 'sound/effects/ghost2.ogg', 50, 1) target.become_blind(ABYSSAL_GAZE_BLIND) - addtimer(CALLBACK(src, .proc/cure_blindness, target), 40) + addtimer(CALLBACK(src, PROC_REF(cure_blindness), target), 40) target.adjust_bodytemperature(-200) /** diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm index eaa8eae9731b..6631d943a3aa 100644 --- a/code/modules/spells/spell_types/devil.dm +++ b/code/modules/spells/spell_types/devil.dm @@ -161,7 +161,7 @@ client.eye = src visible_message("[src] appears in a fiery blaze!") playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, TRUE, -1) - addtimer(CALLBACK(src, .proc/fakefireextinguish), 15, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(fakefireextinguish)), 15, TIMER_UNIQUE) /obj/effect/proc_holder/spell/targeted/sintouch name = "Sin Touch" diff --git a/code/modules/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm index 11dc1ca1a690..8b948802a7ac 100644 --- a/code/modules/spells/spell_types/ethereal_jaunt.dm +++ b/code/modules/spells/spell_types/ethereal_jaunt.dm @@ -20,7 +20,7 @@ /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/cast(list/targets,mob/user = usr) //magnets, so mostly hardcoded playsound(get_turf(user), 'sound/magic/ethereal_enter.ogg', 50, TRUE, -1) for(var/mob/living/target in targets) - INVOKE_ASYNC(src, .proc/do_jaunt, target) + INVOKE_ASYNC(src, PROC_REF(do_jaunt), target) /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/do_jaunt(mob/living/target) target.notransform = 1 diff --git a/code/modules/spells/spell_types/forcewall.dm b/code/modules/spells/spell_types/forcewall.dm index 64eca54e3d7a..62bd538120e1 100644 --- a/code/modules/spells/spell_types/forcewall.dm +++ b/code/modules/spells/spell_types/forcewall.dm @@ -30,11 +30,11 @@ . = ..() wizard = summoner -/obj/effect/forcefield/wizard/CanAllowThrough(atom/movable/mover, turf/target) +/obj/effect/forcefield/wizard/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(mover == wizard) return TRUE - if(ismob(mover)) + if(isliving(mover)) var/mob/M = mover if(M.anti_magic_check(chargecost = 0)) return TRUE diff --git a/code/modules/spells/spell_types/genetic.dm b/code/modules/spells/spell_types/genetic.dm index 9397484aeb6b..fea675fdc17d 100644 --- a/code/modules/spells/spell_types/genetic.dm +++ b/code/modules/spells/spell_types/genetic.dm @@ -29,7 +29,7 @@ ADD_TRAIT(target, A, GENETICS_SPELL) active_on += target if(duration < charge_max) - addtimer(CALLBACK(src, .proc/remove, target), duration, TIMER_OVERRIDE|TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(remove), target), duration, TIMER_OVERRIDE|TIMER_UNIQUE) /obj/effect/proc_holder/spell/targeted/genetic/Destroy() . = ..() diff --git a/code/modules/spells/spell_types/knock.dm b/code/modules/spells/spell_types/knock.dm index 28430fd86220..6fe24f5d3874 100644 --- a/code/modules/spells/spell_types/knock.dm +++ b/code/modules/spells/spell_types/knock.dm @@ -16,9 +16,9 @@ SEND_SOUND(user, sound('sound/magic/knock.ogg')) for(var/turf/T in targets) for(var/obj/machinery/door/door in T.contents) - INVOKE_ASYNC(src, .proc/open_door, door) + INVOKE_ASYNC(src, PROC_REF(open_door), door) for(var/obj/structure/closet/C in T.contents) - INVOKE_ASYNC(src, .proc/open_closet, C) + INVOKE_ASYNC(src, PROC_REF(open_closet), C) /obj/effect/proc_holder/spell/aoe_turf/knock/proc/open_door(obj/machinery/door/door) if(istype(door, /obj/machinery/door/airlock)) diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm index aa5eed12dcbd..c8d1c4a7c027 100644 --- a/code/modules/spells/spell_types/lichdom.dm +++ b/code/modules/spells/spell_types/lichdom.dm @@ -92,6 +92,9 @@ /obj/item/phylactery/Initialize(mapload, datum/mind/newmind) . = ..() + if(!mind) + stack_trace("A phylactery was created with no target mind") + return INITIALIZE_HINT_QDEL mind = newmind name = "phylactery of [mind.name]" @@ -115,7 +118,7 @@ return if(!mind.current || (mind.current && mind.current.stat == DEAD)) - addtimer(CALLBACK(src, .proc/rise), respawn_time, TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(rise)), respawn_time, TIMER_UNIQUE) /obj/item/phylactery/proc/rise() if(mind.current && mind.current.stat != DEAD) diff --git a/code/modules/spells/spell_types/mime.dm b/code/modules/spells/spell_types/mime.dm index 1f6302b89637..0e56c1112488 100644 --- a/code/modules/spells/spell_types/mime.dm +++ b/code/modules/spells/spell_types/mime.dm @@ -92,7 +92,7 @@ for (var/obj/item/storage/box/mime/B in T) user.put_in_hands(B) B.alpha = 255 - addtimer(CALLBACK(B, /obj/item/storage/box/mime/.proc/emptyStorage, FALSE), (summon_lifespan - 1)) + addtimer(CALLBACK(B, TYPE_PROC_REF(/obj/item/storage/box/mime, emptyStorage), FALSE), (summon_lifespan - 1)) /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_box/Click() if(usr && usr.mind) diff --git a/code/modules/spells/spell_types/personality_commune.dm b/code/modules/spells/spell_types/personality_commune.dm index f358f2eb9e7f..1b6389bf3816 100644 --- a/code/modules/spells/spell_types/personality_commune.dm +++ b/code/modules/spells/spell_types/personality_commune.dm @@ -14,6 +14,10 @@ . = ..() trauma = T +/obj/effect/proc_holder/spell/targeted/personality_commune/Destroy() + trauma = null + return ..() + // Pillaged and adapted from telepathy code /obj/effect/proc_holder/spell/targeted/personality_commune/cast(list/targets, mob/user) if(!istype(trauma)) diff --git a/code/modules/spells/spell_types/pointed/mind_transfer.dm b/code/modules/spells/spell_types/pointed/mind_transfer.dm index 61425a82cf0c..e0ef3566fa0d 100644 --- a/code/modules/spells/spell_types/pointed/mind_transfer.dm +++ b/code/modules/spells/spell_types/pointed/mind_transfer.dm @@ -30,7 +30,7 @@ var/mob/living/victim = targets[1] //The target of the spell whos body will be transferred to. var/datum/mind/VM = victim.mind - if(victim.anti_magic_check(TRUE, FALSE) || VM.has_antag_datum(/datum/antagonist/wizard) || VM.has_antag_datum(/datum/antagonist/cult) || VM.has_antag_datum(/datum/antagonist/changeling) || VM.has_antag_datum(/datum/antagonist/rev) || victim.key[1] == "@") + if(victim.anti_magic_check(TRUE, FALSE) || VM.has_antag_datum(/datum/antagonist/wizard) || VM.has_antag_datum(/datum/antagonist/cult) || VM.has_antag_datum(/datum/antagonist/changeling) || victim.key[1] == "@") if(!silent) to_chat(user, "[victim.p_their(TRUE)] mind is resisting your spell!") return FALSE diff --git a/code/modules/spells/spell_types/rightandwrong.dm b/code/modules/spells/spell_types/rightandwrong.dm index 6cf283f8f49b..ee40b2782574 100644 --- a/code/modules/spells/spell_types/rightandwrong.dm +++ b/code/modules/spells/spell_types/rightandwrong.dm @@ -17,7 +17,7 @@ GLOBAL_LIST_INIT(summoned_guns, list( /obj/item/gun/ballistic/shotgun/doublebarrel, /obj/item/gun/ballistic/shotgun, /obj/item/gun/ballistic/shotgun/automatic/combat, - /obj/item/gun/ballistic/automatic/assualt/ar, + /obj/item/gun/ballistic/automatic/assault/ar, /obj/item/gun/ballistic/revolver/mateba, /obj/item/gun/ballistic/rifle/boltaction, /obj/item/pneumatic_cannon/speargun, diff --git a/code/modules/spells/spell_types/shapeshift.dm b/code/modules/spells/spell_types/shapeshift.dm index c9101c396334..65eb0cebb2b3 100644 --- a/code/modules/spells/spell_types/shapeshift.dm +++ b/code/modules/spells/spell_types/shapeshift.dm @@ -120,7 +120,8 @@ src.source = source shape = loc if(!istype(shape)) - CRASH("shapeshift holder created outside mob/living") + stack_trace("shapeshift holder created outside mob/living") + return INITIALIZE_HINT_QDEL stored = caster if(stored.mind) stored.mind.transfer_to(shape) diff --git a/code/modules/spells/spell_types/spacetime_distortion.dm b/code/modules/spells/spell_types/spacetime_distortion.dm index def36f4c8b12..a45f2afdaad5 100644 --- a/code/modules/spells/spell_types/spacetime_distortion.dm +++ b/code/modules/spells/spell_types/spacetime_distortion.dm @@ -36,7 +36,7 @@ perform(turf_steps,user=user) /obj/effect/proc_holder/spell/spacetime_dist/after_cast(list/targets) - addtimer(CALLBACK(src, .proc/clean_turfs), duration) + addtimer(CALLBACK(src, PROC_REF(clean_turfs)), duration) /obj/effect/proc_holder/spell/spacetime_dist/cast(list/targets, mob/user = usr) effects = list() @@ -84,7 +84,7 @@ . = ..() setDir(pick(GLOB.cardinals)) var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = .proc/on_entered, + COMSIG_ATOM_ENTERED = PROC_REF(on_entered), ) AddElement(/datum/element/connect_loc, loc_connections) diff --git a/code/modules/spells/spell_types/touch_attacks.dm b/code/modules/spells/spell_types/touch_attacks.dm index c130dbb57f5b..69649d11aebb 100644 --- a/code/modules/spells/spell_types/touch_attacks.dm +++ b/code/modules/spells/spell_types/touch_attacks.dm @@ -9,8 +9,10 @@ /obj/effect/proc_holder/spell/targeted/touch/Destroy() remove_hand() - to_chat(usr, "The power of the spell dissipates from your hand.") - ..() + if(action?.owner) + var/mob/guy_who_needs_to_know = action.owner + to_chat(guy_who_needs_to_know, span_notice("The power of the spell dissipates from your hand.")) + return ..() /obj/effect/proc_holder/spell/targeted/touch/proc/remove_hand(recharge = FALSE) QDEL_NULL(attached_hand) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 92b51e0f2049..366fb41790ab 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -125,8 +125,8 @@ /obj/item/bodypart/Initialize(mapload) . = ..() if(can_be_disabled) - RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS), .proc/on_paralysis_trait_gain) - RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS), .proc/on_paralysis_trait_loss) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS), PROC_REF(on_paralysis_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS), PROC_REF(on_paralysis_trait_loss)) /obj/item/bodypart/Destroy() @@ -338,7 +338,7 @@ if(total_damage >= max_damage * disable_threshold) //Easy limb disable disables the limb at 40% health instead of 0% if(!last_maxed) if(owner.stat < UNCONSCIOUS) - INVOKE_ASYNC(owner, /mob.proc/emote, "scream") + INVOKE_ASYNC(owner, TYPE_PROC_REF(/mob, emote), "scream") last_maxed = TRUE set_disabled(TRUE) return @@ -390,14 +390,14 @@ if(HAS_TRAIT(owner, TRAIT_EASYLIMBDISABLE)) disable_threshold = 0.6 needs_update_disabled = TRUE - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_EASYLIMBDISABLE), .proc/on_owner_easylimbwound_trait_loss) - RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_EASYLIMBDISABLE), .proc/on_owner_easylimbwound_trait_gain) + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_EASYLIMBDISABLE), PROC_REF(on_owner_easylimbwound_trait_loss)) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_EASYLIMBDISABLE), PROC_REF(on_owner_easylimbwound_trait_gain)) if(initial(can_be_disabled)) if(HAS_TRAIT(owner, TRAIT_NOLIMBDISABLE)) set_can_be_disabled(FALSE) needs_update_disabled = FALSE - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_NOLIMBDISABLE), .proc/on_owner_nolimbdisable_trait_loss) - RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_NOLIMBDISABLE), .proc/on_owner_nolimbdisable_trait_gain) + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_NOLIMBDISABLE), PROC_REF(on_owner_nolimbdisable_trait_loss)) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_NOLIMBDISABLE), PROC_REF(on_owner_nolimbdisable_trait_gain)) if(needs_update_disabled) update_disabled() @@ -412,12 +412,12 @@ if(owner) if(HAS_TRAIT(owner, TRAIT_NOLIMBDISABLE)) CRASH("set_can_be_disabled to TRUE with for limb whose owner has TRAIT_NOLIMBDISABLE") - RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS), .proc/on_paralysis_trait_gain) - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS), .proc/on_paralysis_trait_loss) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS), PROC_REF(on_paralysis_trait_gain)) + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS), PROC_REF(on_paralysis_trait_loss)) if(HAS_TRAIT(owner, TRAIT_EASYLIMBDISABLE)) disable_threshold = 0.6 - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_EASYLIMBDISABLE), .proc/on_owner_easylimbwound_trait_loss) - RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_EASYLIMBDISABLE), .proc/on_owner_easylimbwound_trait_gain) + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_EASYLIMBDISABLE), PROC_REF(on_owner_easylimbwound_trait_loss)) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_EASYLIMBDISABLE), PROC_REF(on_owner_easylimbwound_trait_gain)) update_disabled() else if(.) if(owner) @@ -581,7 +581,7 @@ bone_status = BONE_FLAG_NO_BONES else bone_status = BONE_FLAG_NORMAL - RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/on_mob_move) + RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(on_mob_move)) draw_color = mutation_color @@ -736,7 +736,7 @@ if (bone_status == BONE_FLAG_NORMAL && body_part & LEGS) // Because arms are not legs owner.set_broken_legs(owner.broken_legs + 1) bone_status = BONE_FLAG_BROKEN - addtimer(CALLBACK(owner, /atom/.proc/visible_message, "You hear a cracking sound coming from [owner]'s [name].", "You feel something crack in your [name]!", "You hear an awful cracking sound."), 1 SECONDS) + addtimer(CALLBACK(owner, TYPE_PROC_REF(/atom, visible_message), "You hear a cracking sound coming from [owner]'s [name].", "You feel something crack in your [name]!", "You hear an awful cracking sound."), 1 SECONDS) /obj/item/bodypart/proc/fix_bone() // owner.update_inv_splints() breaks diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index b063d01f8048..7c292ac21fc4 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -20,7 +20,7 @@ if(C.stat <= SOFT_CRIT)//No more screaming while unconsious if(IS_ORGANIC_LIMB(affecting))//Chest is a good indicator for if a carbon is robotic in nature or not. - INVOKE_ASYNC(C, /mob.proc/emote, "scream") + INVOKE_ASYNC(C, TYPE_PROC_REF(/mob, emote), "scream") SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered) diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index 73ecf0e52444..ce2ed5e98d40 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -62,6 +62,7 @@ /mob/living/proc/get_missing_limbs() + RETURN_TYPE(/list) return list() /mob/living/carbon/get_missing_limbs() diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index 8a101112377f..57d20bc3952a 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -85,10 +85,10 @@ if(owner) if(HAS_TRAIT(owner, TRAIT_PARALYSIS_L_ARM)) ADD_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_L_ARM) - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_L_ARM), .proc/on_owner_paralysis_loss) + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_L_ARM), PROC_REF(on_owner_paralysis_loss)) else REMOVE_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_L_ARM) - RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_L_ARM), .proc/on_owner_paralysis_gain) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_L_ARM), PROC_REF(on_owner_paralysis_gain)) if(.) var/mob/living/carbon/old_owner = . if(HAS_TRAIT(old_owner, TRAIT_PARALYSIS_L_ARM)) @@ -104,7 +104,7 @@ SIGNAL_HANDLER ADD_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_L_ARM) UnregisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_L_ARM)) - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_L_ARM), .proc/on_owner_paralysis_loss) + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_L_ARM), PROC_REF(on_owner_paralysis_loss)) ///Proc to react to the owner losing the TRAIT_PARALYSIS_L_ARM trait. @@ -112,7 +112,7 @@ SIGNAL_HANDLER REMOVE_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_L_ARM) UnregisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_L_ARM)) - RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_L_ARM), .proc/on_owner_paralysis_gain) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_L_ARM), PROC_REF(on_owner_paralysis_gain)) /obj/item/bodypart/l_arm/set_disabled(new_disabled) @@ -187,10 +187,10 @@ if(owner) if(HAS_TRAIT(owner, TRAIT_PARALYSIS_R_ARM)) ADD_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_R_ARM) - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_R_ARM), .proc/on_owner_paralysis_loss) + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_R_ARM), PROC_REF(on_owner_paralysis_loss)) else REMOVE_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_R_ARM) - RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_R_ARM), .proc/on_owner_paralysis_gain) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_R_ARM), PROC_REF(on_owner_paralysis_gain)) if(.) var/mob/living/carbon/old_owner = . if(HAS_TRAIT(old_owner, TRAIT_PARALYSIS_R_ARM)) @@ -206,7 +206,7 @@ SIGNAL_HANDLER ADD_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_R_ARM) UnregisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_R_ARM)) - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_R_ARM), .proc/on_owner_paralysis_loss) + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_R_ARM), PROC_REF(on_owner_paralysis_loss)) ///Proc to react to the owner losing the TRAIT_PARALYSIS_R_ARM trait. @@ -214,7 +214,7 @@ SIGNAL_HANDLER REMOVE_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_R_ARM) UnregisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_R_ARM)) - RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_R_ARM), .proc/on_owner_paralysis_gain) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_R_ARM), PROC_REF(on_owner_paralysis_gain)) /obj/item/bodypart/r_arm/set_disabled(new_disabled) @@ -285,10 +285,10 @@ if(owner) if(HAS_TRAIT(owner, TRAIT_PARALYSIS_L_LEG)) ADD_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_L_LEG) - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_L_LEG), .proc/on_owner_paralysis_loss) + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_L_LEG), PROC_REF(on_owner_paralysis_loss)) else REMOVE_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_L_LEG) - RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_L_LEG), .proc/on_owner_paralysis_gain) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_L_LEG), PROC_REF(on_owner_paralysis_gain)) if(.) var/mob/living/carbon/old_owner = . if(HAS_TRAIT(old_owner, TRAIT_PARALYSIS_L_LEG)) @@ -304,7 +304,7 @@ SIGNAL_HANDLER ADD_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_L_LEG) UnregisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_L_LEG)) - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_L_LEG), .proc/on_owner_paralysis_loss) + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_L_LEG), PROC_REF(on_owner_paralysis_loss)) ///Proc to react to the owner losing the TRAIT_PARALYSIS_L_LEG trait. @@ -312,7 +312,7 @@ SIGNAL_HANDLER REMOVE_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_L_LEG) UnregisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_L_LEG)) - RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_L_LEG), .proc/on_owner_paralysis_gain) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_L_LEG), PROC_REF(on_owner_paralysis_gain)) /obj/item/bodypart/leg/left/set_disabled(new_disabled) @@ -378,10 +378,10 @@ if(owner) if(HAS_TRAIT(owner, TRAIT_PARALYSIS_R_LEG)) ADD_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_R_LEG) - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_R_LEG), .proc/on_owner_paralysis_loss) + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_R_LEG), PROC_REF(on_owner_paralysis_loss)) else REMOVE_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_R_LEG) - RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_R_LEG), .proc/on_owner_paralysis_gain) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_R_LEG), PROC_REF(on_owner_paralysis_gain)) if(.) var/mob/living/carbon/old_owner = . if(HAS_TRAIT(old_owner, TRAIT_PARALYSIS_R_LEG)) @@ -397,7 +397,7 @@ SIGNAL_HANDLER ADD_TRAIT(src, TRAIT_PARALYSIS, TRAIT_PARALYSIS_R_LEG) UnregisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_R_LEG)) - RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_R_LEG), .proc/on_owner_paralysis_loss) + RegisterSignal(owner, SIGNAL_REMOVETRAIT(TRAIT_PARALYSIS_R_LEG), PROC_REF(on_owner_paralysis_loss)) ///Proc to react to the owner losing the TRAIT_PARALYSIS_R_LEG trait. @@ -405,7 +405,7 @@ SIGNAL_HANDLER 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/on_owner_paralysis_gain) + RegisterSignal(owner, SIGNAL_ADDTRAIT(TRAIT_PARALYSIS_R_LEG), PROC_REF(on_owner_paralysis_gain)) /obj/item/bodypart/leg/right/set_disabled(new_disabled) diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 79b674438098..398d937cc586 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -509,12 +509,12 @@ static_icon = 'icons/mob/augmentation/augments_vox.dmi' bodytype = BODYTYPE_VOX | BODYTYPE_ROBOTIC -/obj/item/bodypart/l_leg/robot/vox +/obj/item/bodypart/leg/left/robot/vox name = "prosthetic vox left leg" static_icon = 'icons/mob/augmentation/augments_vox.dmi' bodytype = BODYTYPE_VOX | BODYTYPE_ROBOTIC -/obj/item/bodypart/r_leg/robot/vox +/obj/item/bodypart/leg/right/robot/vox name = "prosthetic vox right leg" static_icon = 'icons/mob/augmentation/augments_vox.dmi' bodytype = BODYTYPE_VOX | BODYTYPE_ROBOTIC diff --git a/code/modules/surgery/bodyparts/species_parts/rachnid_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/rachnid_bodyparts.dm index 163b94385dea..367c07a54970 100644 --- a/code/modules/surgery/bodyparts/species_parts/rachnid_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/rachnid_bodyparts.dm @@ -1,31 +1,34 @@ /obj/item/bodypart/head/rachnid - icon = 'icons/mob/species/rachnid/bodyparts.dmi' + static_icon = 'icons/mob/species/rachnid/bodyparts.dmi' limb_id = SPECIES_RACHNID - is_dimorphic = FALSE should_draw_greyscale = FALSE + overlay_icon_state = TRUE /obj/item/bodypart/chest/rachnid - icon = 'icons/mob/species/rachnid/bodyparts.dmi' + static_icon = 'icons/mob/species/rachnid/bodyparts.dmi' limb_id = SPECIES_RACHNID is_dimorphic = FALSE should_draw_greyscale = FALSE + overlay_icon_state = TRUE /obj/item/bodypart/l_arm/rachnid - icon = 'icons/mob/species/rachnid/bodyparts.dmi' + static_icon = 'icons/mob/species/rachnid/bodyparts.dmi' limb_id = SPECIES_RACHNID should_draw_greyscale = FALSE /obj/item/bodypart/r_arm/rachnid - icon = 'icons/mob/species/rachnid/bodyparts.dmi' + static_icon = 'icons/mob/species/rachnid/bodyparts.dmi' limb_id = SPECIES_RACHNID should_draw_greyscale = FALSE /obj/item/bodypart/leg/left/rachnid - icon = 'icons/mob/species/rachnid/bodyparts.dmi' + static_icon = 'icons/mob/species/rachnid/bodyparts.dmi' limb_id = SPECIES_RACHNID should_draw_greyscale = FALSE + overlay_icon_state = TRUE /obj/item/bodypart/leg/right/rachnid - icon = 'icons/mob/species/rachnid/bodyparts.dmi' + static_icon = 'icons/mob/species/rachnid/bodyparts.dmi' limb_id = SPECIES_RACHNID should_draw_greyscale = FALSE + overlay_icon_state = TRUE diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 524077a19e6f..d9d3d6b0b717 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -5,22 +5,38 @@ icon_state = "implant-toolkit" w_class = WEIGHT_CLASS_SMALL actions_types = list(/datum/action/item_action/organ_action/toggle) - - var/list/items_list = list() - // Used to store a list of all items inside, for multi-item implants. - // I would use contents, but they shuffle on every activation/deactivation leading to interface inconsistencies. - - var/obj/item/holder = null - // You can use this var for item path, it would be converted into an item on New() + ///A ref for the arm we're taking up. Mostly for the unregister signal upon removal + var/obj/hand + //A list of typepaths to create and insert into ourself on init + var/list/items_to_create = list() + /// Used to store a list of all items inside, for multi-item implants. + var/list/items_list = list()// I would use contents, but they shuffle on every activation/deactivation leading to interface inconsistencies. + /// You can use this var for item path, it would be converted into an item on New(). + var/obj/item/active_item /obj/item/organ/cyberimp/arm/Initialize() . = ..() - if(ispath(holder)) - holder = new holder(src) + if(ispath(active_item)) + active_item = new active_item(src) + items_list += WEAKREF(active_item) + + for(var/typepath in items_to_create) + var/atom/new_item = new typepath(src) + items_list += WEAKREF(new_item) update_appearance() SetSlotFromZone() - items_list = contents.Copy() + +/obj/item/organ/cyberimp/arm/Destroy() + hand = null + active_item = null + for(var/datum/weakref/ref in items_list) + var/obj/item/to_del = ref.resolve() + if(!to_del) + continue + qdel(to_del) + items_list.Cut() + return ..() /obj/item/organ/cyberimp/arm/proc/SetSlotFromZone() switch(zone) @@ -66,40 +82,40 @@ Retract() /obj/item/organ/cyberimp/arm/proc/Retract() - if(!holder || (holder in src)) + if(!active_item || (active_item in src)) return - owner.visible_message("[owner] retracts [holder] back into [owner.p_their()] [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.", - "[holder] snaps back into your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.", + owner.visible_message("[owner] retracts [active_item] back into [owner.p_their()] [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.", + "[active_item] snaps back into your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.", "You hear a short mechanical noise.") - if(istype(holder, /obj/item/assembly/flash/armimplant)) - var/obj/item/assembly/flash/F = holder + if(istype(active_item, /obj/item/assembly/flash/armimplant)) + var/obj/item/assembly/flash/F = active_item F.set_light(0) - owner.transferItemToLoc(holder, src, TRUE) - holder = null + owner.transferItemToLoc(active_item, src, TRUE) + active_item = null playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, TRUE) /obj/item/organ/cyberimp/arm/proc/Extend(obj/item/item) if(!(item in src)) return - holder = item + active_item = item - ADD_TRAIT(holder, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) - holder.resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - holder.slot_flags = null - holder.set_custom_materials(null) + ADD_TRAIT(active_item, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) + active_item.resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + active_item.slot_flags = null + active_item.set_custom_materials(null) - if(istype(holder, /obj/item/assembly/flash/armimplant)) - var/obj/item/assembly/flash/F = holder + if(istype(active_item, /obj/item/assembly/flash/armimplant)) + var/obj/item/assembly/flash/F = active_item F.set_light(7) var/side = zone == BODY_ZONE_R_ARM? RIGHT_HANDS : LEFT_HANDS var/hand = owner.get_empty_held_index_for_side(side) if(hand) - owner.put_in_hand(holder, hand) + owner.put_in_hand(active_item, hand) else var/list/hand_items = owner.get_held_items_for_side(side, all = TRUE) var/success = FALSE @@ -110,32 +126,36 @@ failure_message += "Your [I] interferes with [src]!" continue to_chat(owner, "You drop [I] to activate [src]!") - success = owner.put_in_hand(holder, owner.get_empty_held_index_for_side(side)) + success = owner.put_in_hand(active_item, owner.get_empty_held_index_for_side(side)) break if(!success) for(var/i in failure_message) to_chat(owner, i) return - owner.visible_message("[owner] extends [holder] from [owner.p_their()] [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.", - "You extend [holder] from your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.", + owner.visible_message("[owner] extends [active_item] from [owner.p_their()] [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.", + "You extend [active_item] from your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.", "You hear a short mechanical noise.") playsound(get_turf(owner), 'sound/mecha/mechmove03.ogg', 50, TRUE) /obj/item/organ/cyberimp/arm/ui_action_click() - if((organ_flags & ORGAN_FAILING) || (!holder && !contents.len)) + if((organ_flags & ORGAN_FAILING) || (!active_item && !contents.len)) to_chat(owner, "The implant doesn't respond. It seems to be broken...") return - if(!holder || (holder in src)) - holder = null + if(!active_item || (active_item in src)) + active_item = null if(contents.len == 1) Extend(contents[1]) else var/list/choice_list = list() - for(var/obj/item/I in items_list) - choice_list[I] = image(I) + for(var/datum/weakref/augment_ref in items_list) + var/obj/item/augment_item = augment_ref.resolve() + if(!augment_item) + items_list -= augment_ref + continue + choice_list[augment_item] = image(augment_item) var/obj/item/choice = show_radial_menu(owner, owner, choice_list) - if(owner && owner == usr && owner.stat != DEAD && (src in owner.internal_organs) && !holder && (choice in contents)) + if(owner && owner == usr && owner.stat != DEAD && (src in owner.internal_organs) && !active_item && (choice in contents)) // This monster sanity check is a nice example of how bad input is. Extend(choice) else @@ -161,7 +181,7 @@ name = "arm-mounted laser implant" desc = "A variant of the arm cannon implant that fires lethal laser beams. The cannon emerges from the subject's arm and remains inside when not in use." icon_state = "arm_laser" - contents = newlist(/obj/item/gun/energy/laser/mounted) + items_to_create = list(/obj/item/gun/energy/laser/mounted) /obj/item/organ/cyberimp/arm/gun/laser/l zone = BODY_ZONE_L_ARM @@ -171,7 +191,7 @@ name = "arm-mounted taser implant" desc = "A variant of the arm cannon implant that fires electrodes and disabler shots. The cannon emerges from the subject's arm and remains inside when not in use." icon_state = "arm_taser" - contents = newlist(/obj/item/gun/energy/e_gun/advtaser/mounted) + items_to_create = list(/obj/item/gun/energy/e_gun/advtaser/mounted) /obj/item/organ/cyberimp/arm/gun/taser/l zone = BODY_ZONE_L_ARM @@ -179,64 +199,82 @@ /obj/item/organ/cyberimp/arm/toolset name = "integrated toolset implant" desc = "A stripped-down version of the engineering cyborg toolset, designed to be installed on subject's arm. Contain advanced versions of every tool." - contents = newlist(/obj/item/screwdriver/cyborg, /obj/item/wrench/cyborg, /obj/item/weldingtool/largetank/cyborg, + items_to_create = list(/obj/item/screwdriver/cyborg, /obj/item/wrench/cyborg, /obj/item/weldingtool/largetank/cyborg, /obj/item/crowbar/cyborg, /obj/item/wirecutters/cyborg, /obj/item/multitool/cyborg) /obj/item/organ/cyberimp/arm/toolset/l zone = BODY_ZONE_L_ARM /obj/item/organ/cyberimp/arm/toolset/emag_act(mob/user) - if(!(locate(/obj/item/kitchen/knife/combat/cyborg) in items_list)) - to_chat(user, "You unlock [src]'s integrated knife!") - items_list += new /obj/item/kitchen/knife/combat/cyborg(src) - return 1 - return 0 + for(var/datum/weakref/created_item in items_list) + var/obj/potential_knife = created_item.resolve() + if(istype(/obj/item/kitchen/knife/combat/cyborg, potential_knife)) + return FALSE + + to_chat(user, "You unlock [src]'s integrated knife!") + items_list += WEAKREF(new /obj/item/kitchen/knife/combat/cyborg(src)) + return TRUE /obj/item/organ/cyberimp/arm/esword name = "arm-mounted energy blade" desc = "An illegal and highly dangerous cybernetic implant that can project a deadly blade of concentrated energy." - contents = newlist(/obj/item/melee/transforming/energy/blade/hardlight) + items_to_create = list(/obj/item/melee/transforming/energy/blade/hardlight) /obj/item/organ/cyberimp/arm/medibeam name = "integrated medical beamgun" desc = "A cybernetic implant that allows the user to project a healing beam from their hand." - contents = newlist(/obj/item/gun/medbeam) + items_to_create = list(/obj/item/gun/medbeam) /obj/item/organ/cyberimp/arm/flash name = "integrated high-intensity photon projector" //Why not desc = "An integrated projector mounted onto a user's arm that is able to be used as a powerful flash." - contents = newlist(/obj/item/assembly/flash/armimplant) + items_to_create = list(/obj/item/assembly/flash/armimplant) /obj/item/organ/cyberimp/arm/flash/Initialize() . = ..() - if(locate(/obj/item/assembly/flash/armimplant) in items_list) - var/obj/item/assembly/flash/armimplant/F = locate(/obj/item/assembly/flash/armimplant) in items_list - F.I = src + for(var/datum/weakref/created_item in items_list) + var/obj/potential_flash = created_item.resolve() + if(!istype(/obj/item/assembly/flash/armimplant, potential_flash)) + continue + var/obj/item/assembly/flash/armimplant/flash = potential_flash + flash.arm = WEAKREF(src) // Todo: wipe single letter vars out of assembly code + +/obj/item/organ/cyberimp/arm/flash/Extend() + . = ..() + active_item.set_light_range(7) + active_item.set_light_on(TRUE) + +/obj/item/organ/cyberimp/arm/flash/Retract() + active_item.set_light_on(FALSE) + return ..() /obj/item/organ/cyberimp/arm/baton name = "arm electrification implant" desc = "An illegal combat implant that allows the user to administer disabling shocks from their arm." - contents = newlist(/obj/item/borg/stun) + items_to_create = list(/obj/item/borg/stun) /obj/item/organ/cyberimp/arm/combat name = "combat cybernetics implant" desc = "A powerful cybernetic implant that contains combat modules built into the user's arm." - contents = newlist(/obj/item/melee/transforming/energy/blade/hardlight, /obj/item/gun/medbeam, /obj/item/borg/stun, /obj/item/assembly/flash/armimplant) + items_to_create = list(/obj/item/melee/transforming/energy/blade/hardlight, /obj/item/gun/medbeam, /obj/item/borg/stun, /obj/item/assembly/flash/armimplant) /obj/item/organ/cyberimp/arm/combat/Initialize() . = ..() - if(locate(/obj/item/assembly/flash/armimplant) in items_list) - var/obj/item/assembly/flash/armimplant/F = locate(/obj/item/assembly/flash/armimplant) in items_list - F.I = src + for(var/datum/weakref/created_item in items_list) + var/obj/potential_flash = created_item.resolve() + if(!istype(/obj/item/assembly/flash/armimplant, potential_flash)) + continue + var/obj/item/assembly/flash/armimplant/flash = potential_flash + flash.arm = WEAKREF(src) // Todo: wipe single letter vars out of assembly code /obj/item/organ/cyberimp/arm/surgery name = "surgical toolset implant" desc = "A set of surgical tools hidden behind a concealed panel on the user's arm." - contents = newlist(/obj/item/retractor/augment, /obj/item/hemostat/augment, /obj/item/cautery/augment, /obj/item/surgicaldrill/augment, /obj/item/scalpel/augment, /obj/item/circular_saw/augment) + items_to_create = list(/obj/item/retractor/augment, /obj/item/hemostat/augment, /obj/item/cautery/augment, /obj/item/surgicaldrill/augment, /obj/item/scalpel/augment, /obj/item/circular_saw/augment) /obj/item/organ/cyberimp/arm/power_cord name = "power cord implant" desc = "An internal power cord hooked up to a battery. Useful if you run on volts." - contents = newlist(/obj/item/apc_powercord) + items_to_create = list(/obj/item/apc_powercord) zone = "l_arm" diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm index f8314a7c6dfa..dc95ab97cece 100644 --- a/code/modules/surgery/organs/augments_chest.dm +++ b/code/modules/surgery/organs/augments_chest.dm @@ -23,7 +23,7 @@ synthesizing = TRUE to_chat(owner, "You feel less hungry...") owner.adjust_nutrition(50) - addtimer(CALLBACK(src, .proc/synth_cool), 50) + addtimer(CALLBACK(src, PROC_REF(synth_cool)), 50) /obj/item/organ/cyberimp/chest/nutriment/proc/synth_cool() synthesizing = FALSE @@ -59,7 +59,7 @@ if(reviving) switch(owner.stat) if(UNCONSCIOUS, HARD_CRIT) - addtimer(CALLBACK(src, .proc/heal), 3 SECONDS) + addtimer(CALLBACK(src, PROC_REF(heal)), 3 SECONDS) else COOLDOWN_START(src, reviver_cooldown, revive_cost) reviving = FALSE @@ -105,7 +105,7 @@ if(H.stat != DEAD && prob(50 / severity) && H.can_heartattack()) H.set_heartattack(TRUE) to_chat(H, "You feel a horrible agony in your chest!") - addtimer(CALLBACK(src, .proc/undo_heart_attack), 600 / severity) + addtimer(CALLBACK(src, PROC_REF(undo_heart_attack)), 600 / severity) /obj/item/organ/cyberimp/chest/reviver/proc/undo_heart_attack() var/mob/living/carbon/human/H = owner @@ -154,9 +154,9 @@ if(allow_thrust(0.01)) on = TRUE ion_trail.start() - RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/move_react) + RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(move_react)) owner.add_movespeed_modifier(/datum/movespeed_modifier/jetpack/cybernetic) - RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, .proc/pre_move_react) + RegisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(pre_move_react)) if(!silent) to_chat(owner, "You turn your thrusters set on.") else diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index a7a383927b0e..ae6f1cf43d39 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -115,11 +115,11 @@ /obj/item/organ/cyberimp/brain/anti_stun/Insert() . = ..() - RegisterSignal(owner, signalCache, .proc/on_signal) + RegisterSignal(owner, signalCache, PROC_REF(on_signal)) /obj/item/organ/cyberimp/brain/anti_stun/proc/on_signal(datum/source, amount) if(!(organ_flags & ORGAN_FAILING) && amount > 0) - addtimer(CALLBACK(src, .proc/clear_stuns), stun_cap_amount, TIMER_UNIQUE|TIMER_OVERRIDE) + addtimer(CALLBACK(src, PROC_REF(clear_stuns)), stun_cap_amount, TIMER_UNIQUE|TIMER_OVERRIDE) /obj/item/organ/cyberimp/brain/anti_stun/proc/clear_stuns() if(owner || !(organ_flags & ORGAN_FAILING)) @@ -133,7 +133,7 @@ if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF) return organ_flags |= ORGAN_FAILING - addtimer(CALLBACK(src, .proc/reboot), 90 / severity) + addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity) /obj/item/organ/cyberimp/brain/anti_stun/proc/reboot() organ_flags &= ~ORGAN_FAILING diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index 0bd9ed46d1a9..de0ebac6eddb 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -301,7 +301,7 @@ /obj/item/organ/eyes/robotic/glow/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = FALSE) . = ..() - RegisterSignal(M, COMSIG_ATOM_DIR_CHANGE, .proc/update_visuals) + RegisterSignal(M, COMSIG_ATOM_DIR_CHANGE, PROC_REF(update_visuals)) /obj/item/organ/eyes/robotic/glow/Remove(mob/living/carbon/M, special = FALSE) . = ..() diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index dd6d8efc1065..26b93d2c4642 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -31,7 +31,7 @@ /obj/item/organ/heart/Remove(mob/living/carbon/M, special = 0) ..() if(!special) - addtimer(CALLBACK(src, .proc/stop_if_unowned), 120) + addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 120) /obj/item/organ/heart/proc/stop_if_unowned() if(!owner) @@ -43,7 +43,7 @@ user.visible_message("[user] squeezes [src] to \ make it beat again!","You squeeze [src] to make it beat again!") Restart() - addtimer(CALLBACK(src, .proc/stop_if_unowned), 80) + addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 80) /obj/item/organ/heart/proc/Stop() beating = 0 @@ -217,12 +217,6 @@ owner.Dizzy(10) owner.losebreath += 10 severe_cooldown = world.time + 20 SECONDS - if(prob(emp_vulnerability/severity)) //Chance of permanent effects - organ_flags = ORGAN_SYNTHETIC_EMP //Starts organ faliure - gonna need replacing soon. - Stop() - owner.visible_message("[owner] clutches at [owner.p_their()] chest as if [owner.p_their()] heart is stopping!", \ - "You feel a terrible pain in your chest, as if your heart has stopped!") - addtimer(CALLBACK(src, .proc/Restart), 10 SECONDS) /obj/item/organ/heart/cybernetic/on_life() . = ..() diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index d8e10731da30..b2812d941975 100644 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -116,8 +116,6 @@ if(world.time > severe_cooldown) //So we cant just spam emp to kill people. owner.adjustToxLoss(10) severe_cooldown = world.time + 10 SECONDS - if(prob(emp_vulnerability/severity)) //Chance of permanent effects - organ_flags = ORGAN_SYNTHETIC_EMP //Starts organ faliure - gonna need replacing soon. /obj/item/organ/liver/cybernetic/upgraded/ipc icon = 'icons/obj/surgery.dmi' diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index fa928c1e2053..fc5de4be3049 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -419,8 +419,6 @@ if(world.time > severe_cooldown) //So we cant just spam emp to kill people. owner.losebreath += 20 severe_cooldown = world.time + 30 SECONDS - if(prob(emp_vulnerability/severity)) //Chance of permanent effects - organ_flags = ORGAN_SYNTHETIC_EMP //Starts organ faliure - gonna need replacing soon. #undef PP #undef PP_MOLES diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 264574c476e4..4b5dd9a49717 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -38,7 +38,7 @@ /obj/item/organ/Initialize() . = ..() if(organ_flags & ORGAN_EDIBLE) - AddComponent(/datum/component/edible, food_reagents, null, RAW | MEAT | GROSS, null, 10, null, null, null, CALLBACK(src, .proc/OnEatFrom)) + AddComponent(/datum/component/edible, food_reagents, null, RAW | MEAT | GORE, null, 10, null, null, null, CALLBACK(src, PROC_REF(OnEatFrom))) ///When you take a bite you cant jam it in for surgery anymore. /obj/item/organ/proc/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm index 615428d962b5..2e2403db14c6 100644 --- a/code/modules/surgery/organs/stomach.dm +++ b/code/modules/surgery/organs/stomach.dm @@ -109,8 +109,8 @@ /obj/item/organ/stomach/ethereal/Insert(mob/living/carbon/M, special = 0) ..() - RegisterSignal(owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, .proc/charge) - RegisterSignal(owner, COMSIG_LIVING_ELECTROCUTE_ACT, .proc/on_electrocute) + RegisterSignal(owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(charge)) + RegisterSignal(owner, COMSIG_LIVING_ELECTROCUTE_ACT, PROC_REF(on_electrocute)) /obj/item/organ/stomach/ethereal/Remove(mob/living/carbon/M, special = 0) UnregisterSignal(owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT) @@ -160,8 +160,6 @@ if(!COOLDOWN_FINISHED(src, severe_cooldown)) //So we cant just spam emp to kill people. owner.vomit(stun = FALSE) COOLDOWN_START(src, severe_cooldown, 10 SECONDS) - if(prob(emp_vulnerability/severity)) //Chance of permanent effects - organ_flags |= ORGAN_SYNTHETIC_EMP //Starts organ faliure - gonna need replacing soon. //WS Begin - IPCs diff --git a/code/modules/surgery/organs/tails.dm b/code/modules/surgery/organs/tails.dm index f587a26d8404..2d3e402150a2 100644 --- a/code/modules/surgery/organs/tails.dm +++ b/code/modules/surgery/organs/tails.dm @@ -83,7 +83,7 @@ /obj/item/organ/tail/lizard/fake name = "fabricated lizard tail" - desc = "A fabricated severed lizard tail. This one's made of synthflesh. Probably not usable for lizard wine." + desc = "A fabricated severed lizard tail. This one's made of synthflesh." /obj/item/organ/tail/elzu name = "\improper Elzuose tail" diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 77fae8c0bb87..40920cc5d21a 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -34,13 +34,13 @@ /obj/item/organ/tongue/Insert(mob/living/carbon/M, special = 0) ..() if (modifies_speech) - RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech) + RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech)) M.UnregisterSignal(M, COMSIG_MOB_SAY) /obj/item/organ/tongue/Remove(mob/living/carbon/M, special = 0) ..() - UnregisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech) - M.RegisterSignal(M, COMSIG_MOB_SAY, /mob/living/carbon/.proc/handle_tongueless_speech) + UnregisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech)) + M.RegisterSignal(M, COMSIG_MOB_SAY, TYPE_PROC_REF(/mob/living/carbon, handle_tongueless_speech)) /obj/item/organ/tongue/could_speak_language(language) return is_type_in_typecache(language, languages_possible) diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 7fdf9532de17..1a0f1ea60f3d 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -368,7 +368,7 @@ text = devilinfo.truename else text = L.real_name - addtimer(CALLBACK(L, /atom/movable/proc/say, text), 5 * i) + addtimer(CALLBACK(L, TYPE_PROC_REF(/atom/movable, say), text), 5 * i) i++ //SAY MY NAME @@ -376,7 +376,7 @@ cooldown = COOLDOWN_MEME for(var/V in listeners) var/mob/living/L = V - addtimer(CALLBACK(L, /atom/movable/proc/say, user.name), 5 * i) + addtimer(CALLBACK(L, TYPE_PROC_REF(/atom/movable, say), user.name), 5 * i) i++ //KNOCK KNOCK @@ -384,7 +384,7 @@ cooldown = COOLDOWN_MEME for(var/V in listeners) var/mob/living/L = V - addtimer(CALLBACK(L, /atom/movable/proc/say, "Who's there?"), 5 * i) + addtimer(CALLBACK(L, TYPE_PROC_REF(/atom/movable, say), "Who's there?"), 5 * i) i++ //STATE LAWS @@ -408,7 +408,7 @@ for(var/iter in 1 to 5 * power_multiplier) for(var/V in listeners) var/mob/living/L = V - addtimer(CALLBACK(GLOBAL_PROC, .proc/_step, L, direction? direction : pick(GLOB.cardinals)), 10 * (iter - 1)) + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(_step), L, direction? direction : pick(GLOB.cardinals)), 10 * (iter - 1)) //WALK else if((findtext(message, walk_words))) @@ -431,7 +431,7 @@ cooldown = COOLDOWN_MEME for(var/mob/living/carbon/human/H in listeners) addtimer(CALLBACK(H, /mob/verb/a_intent_change, INTENT_HELP), i * 2) - addtimer(CALLBACK(H, /mob/proc/click_random_mob), i * 2) + addtimer(CALLBACK(H, TYPE_PROC_REF(/mob, click_random_mob)), i * 2) i++ //DISARM INTENT @@ -439,7 +439,7 @@ cooldown = COOLDOWN_MEME for(var/mob/living/carbon/human/H in listeners) addtimer(CALLBACK(H, /mob/verb/a_intent_change, INTENT_DISARM), i * 2) - addtimer(CALLBACK(H, /mob/proc/click_random_mob), i * 2) + addtimer(CALLBACK(H, TYPE_PROC_REF(/mob, click_random_mob)), i * 2) i++ //GRAB INTENT @@ -447,7 +447,7 @@ cooldown = COOLDOWN_MEME for(var/mob/living/carbon/human/H in listeners) addtimer(CALLBACK(H, /mob/verb/a_intent_change, INTENT_GRAB), i * 2) - addtimer(CALLBACK(H, /mob/proc/click_random_mob), i * 2) + addtimer(CALLBACK(H, TYPE_PROC_REF(/mob, click_random_mob)), i * 2) i++ //HARM INTENT @@ -455,7 +455,7 @@ cooldown = COOLDOWN_MEME for(var/mob/living/carbon/human/H in listeners) addtimer(CALLBACK(H, /mob/verb/a_intent_change, INTENT_HARM), i * 2) - addtimer(CALLBACK(H, /mob/proc/click_random_mob), i * 2) + addtimer(CALLBACK(H, TYPE_PROC_REF(/mob, click_random_mob)), i * 2) i++ //THROW/CATCH @@ -476,7 +476,7 @@ cooldown = COOLDOWN_MEME for(var/V in listeners) var/mob/living/L = V - addtimer(CALLBACK(L, /atom/movable/proc/say, pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage")), 5 * i) + addtimer(CALLBACK(L, TYPE_PROC_REF(/atom/movable, say), pick_list_replacements(BRAIN_DAMAGE_FILE, "brain_damage")), 5 * i) i++ //GET UP @@ -509,7 +509,7 @@ cooldown = COOLDOWN_MEME for(var/V in listeners) var/mob/living/L = V - addtimer(CALLBACK(L, /mob/living/.proc/emote, "dance"), 5 * i) + addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, emote), "dance"), 5 * i) i++ //JUMP @@ -518,8 +518,8 @@ for(var/V in listeners) var/mob/living/L = V if(prob(25)) - addtimer(CALLBACK(L, /atom/movable/proc/say, "HOW HIGH?!!"), 5 * i) - addtimer(CALLBACK(L, /mob/living/.proc/emote, "jump"), 5 * i) + addtimer(CALLBACK(L, TYPE_PROC_REF(/atom/movable, say), "HOW HIGH?!!"), 5 * i) + addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, emote), "jump"), 5 * i) i++ //SALUTE @@ -527,7 +527,7 @@ cooldown = COOLDOWN_MEME for(var/V in listeners) var/mob/living/L = V - addtimer(CALLBACK(L, /mob/living/.proc/emote, "salute"), 5 * i) + addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, emote), "salute"), 5 * i) i++ //PLAY DEAD @@ -535,7 +535,7 @@ cooldown = COOLDOWN_MEME for(var/V in listeners) var/mob/living/L = V - addtimer(CALLBACK(L, /mob/living/.proc/emote, "deathgasp"), 5 * i) + addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, emote), "deathgasp"), 5 * i) i++ //PLEASE CLAP @@ -543,13 +543,13 @@ cooldown = COOLDOWN_MEME for(var/V in listeners) var/mob/living/L = V - addtimer(CALLBACK(L, /mob/living/.proc/emote, "clap"), 5 * i) + addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, emote), "clap"), 5 * i) i++ //HONK else if((findtext(message, honk_words))) cooldown = COOLDOWN_MEME - addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, get_turf(user), 'sound/items/bikehorn.ogg', 300, 1), 25) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), get_turf(user), 'sound/items/bikehorn.ogg', 300, 1), 25) if(user.mind && user.mind.assigned_role == "Clown") for(var/mob/living/carbon/C in listeners) C.slip(140 * power_multiplier) diff --git a/code/modules/tgs/core/core.dm b/code/modules/tgs/core/core.dm index 41a047339452..b9a9f27a28ae 100644 --- a/code/modules/tgs/core/core.dm +++ b/code/modules/tgs/core/core.dm @@ -153,4 +153,9 @@ /world/TgsSecurityLevel() var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) if(api) - api.SecurityLevel() + return api.SecurityLevel() + +/world/TgsVisibility() + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + return api.Visibility() diff --git a/code/modules/tgs/core/datum.dm b/code/modules/tgs/core/datum.dm index 68b0330fe860..de420a2a325a 100644 --- a/code/modules/tgs/core/datum.dm +++ b/code/modules/tgs/core/datum.dm @@ -11,6 +11,10 @@ TGS_DEFINE_AND_SET_GLOBAL(tgs, null) src.event_handler = event_handler src.version = version +/datum/tgs_api/proc/TerminateWorld() + del(world) + sleep(1) // https://www.byond.com/forum/post/2894866 + /datum/tgs_api/latest parent_type = /datum/tgs_api/v5 @@ -57,3 +61,6 @@ TGS_PROTECT_DATUM(/datum/tgs_api) /datum/tgs_api/proc/SecurityLevel() return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/Visibility() + return TGS_UNIMPLEMENTED diff --git a/code/modules/tgs/v4/api.dm b/code/modules/tgs/v4/api.dm index b9a75c4abb48..945e2e411767 100644 --- a/code/modules/tgs/v4/api.dm +++ b/code/modules/tgs/v4/api.dm @@ -73,7 +73,7 @@ if(cached_json["apiValidateOnly"]) TGS_INFO_LOG("Validating API and exiting...") Export(TGS4_COMM_VALIDATE, list(TGS4_PARAMETER_DATA = "[minimum_required_security_level]")) - del(world) + TerminateWorld() security_level = cached_json["securityLevel"] chat_channels_json_path = cached_json["chatChannelsJson"] @@ -188,7 +188,7 @@ requesting_new_port = TRUE if(!world.OpenPort(0)) //open any port TGS_ERROR_LOG("Unable to open random port to retrieve new port![TGS4_PORT_CRITFAIL_MESSAGE]") - del(world) + TerminateWorld() //request a new port export_lock = FALSE @@ -196,16 +196,16 @@ if(!new_port_json) TGS_ERROR_LOG("No new port response from server![TGS4_PORT_CRITFAIL_MESSAGE]") - del(world) + TerminateWorld() var/new_port = new_port_json[TGS4_PARAMETER_DATA] if(!isnum(new_port) || new_port <= 0) TGS_ERROR_LOG("Malformed new port json ([json_encode(new_port_json)])![TGS4_PORT_CRITFAIL_MESSAGE]") - del(world) + TerminateWorld() if(new_port != world.port && !world.OpenPort(new_port)) TGS_ERROR_LOG("Unable to open port [new_port]![TGS4_PORT_CRITFAIL_MESSAGE]") - del(world) + TerminateWorld() requesting_new_port = FALSE while(export_lock) diff --git a/code/modules/tgs/v5/__interop_version.dm b/code/modules/tgs/v5/__interop_version.dm index 5d3d491a7362..1b52b31d6a73 100644 --- a/code/modules/tgs/v5/__interop_version.dm +++ b/code/modules/tgs/v5/__interop_version.dm @@ -1 +1 @@ -"5.6.1" +"5.6.2" diff --git a/code/modules/tgs/v5/_defines.dm b/code/modules/tgs/v5/_defines.dm index f973338daa03..bdcd4e4dd58e 100644 --- a/code/modules/tgs/v5/_defines.dm +++ b/code/modules/tgs/v5/_defines.dm @@ -48,6 +48,7 @@ #define DMAPI5_RUNTIME_INFORMATION_REVISION "revision" #define DMAPI5_RUNTIME_INFORMATION_TEST_MERGES "testMerges" #define DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL "securityLevel" +#define DMAPI5_RUNTIME_INFORMATION_VISIBILITY "visibility" #define DMAPI5_CHAT_UPDATE_CHANNELS "channels" diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index 34cc43f8762f..7226f29bba60 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -4,6 +4,7 @@ var/instance_name var/security_level + var/visibility var/reboot_mode = TGS_REBOOT_MODE_NORMAL @@ -50,10 +51,11 @@ if(runtime_information[DMAPI5_RUNTIME_INFORMATION_API_VALIDATE_ONLY]) TGS_INFO_LOG("DMAPI validation, exiting...") - del(world) + TerminateWorld() version = new /datum/tgs_version(runtime_information[DMAPI5_RUNTIME_INFORMATION_SERVER_VERSION]) security_level = runtime_information[DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL] + visibility = runtime_information[DMAPI5_RUNTIME_INFORMATION_VISIBILITY] instance_name = runtime_information[DMAPI5_RUNTIME_INFORMATION_INSTANCE_NAME] var/list/revisionData = runtime_information[DMAPI5_RUNTIME_INFORMATION_REVISION] @@ -252,3 +254,7 @@ /datum/tgs_api/v5/SecurityLevel() RequireInitialBridgeResponse() return security_level + +/datum/tgs_api/v5/Visibility() + RequireInitialBridgeResponse() + return visibility diff --git a/code/modules/tgs/v5/undefs.dm b/code/modules/tgs/v5/undefs.dm index c679737dfc49..f163adaaafe3 100644 --- a/code/modules/tgs/v5/undefs.dm +++ b/code/modules/tgs/v5/undefs.dm @@ -48,6 +48,7 @@ #undef DMAPI5_RUNTIME_INFORMATION_REVISION #undef DMAPI5_RUNTIME_INFORMATION_TEST_MERGES #undef DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL +#undef DMAPI5_RUNTIME_INFORMATION_VISIBILITY #undef DMAPI5_CHAT_UPDATE_CHANNELS diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index de912957a0ac..a79966f69ba1 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -312,8 +312,7 @@ window = window, src_object = src_object) process_status() - if(src_object.ui_act(act_type, payload, src, state)) - SStgui.update_uis(src_object) + DEFAULT_QUEUE_OR_CALL_VERB(VERB_CALLBACK(src, PROC_REF(on_act_message), act_type, payload, state)) return FALSE switch(type) if("ready") @@ -332,3 +331,10 @@ return LAZYSET(src_object.tgui_shared_states, href_list["key"], href_list["value"]) SStgui.update_uis(src_object) + +/// Wrapper for behavior to potentially wait until the next tick if the server is overloaded +/datum/tgui/proc/on_act_message(act_type, payload, state) + if(QDELETED(src) || QDELETED(src_object)) + return + if(src_object.ui_act(act_type, payload, src, state)) + SStgui.update_uis(src_object) diff --git a/code/modules/tgui/tgui_alert.dm b/code/modules/tgui/tgui_alert.dm index 1a86cca705bd..9d2dd3b5a059 100644 --- a/code/modules/tgui/tgui_alert.dm +++ b/code/modules/tgui/tgui_alert.dm @@ -90,7 +90,7 @@ * the window was closed by the user. */ /datum/tgui_modal/proc/wait() - while (!choice && !closed) + while (!choice && !closed && !QDELETED(src)) stoplag(1) /datum/tgui_modal/ui_interact(mob/user, datum/tgui/ui) diff --git a/code/modules/tgui_panel/tgui_panel.dm b/code/modules/tgui_panel/tgui_panel.dm index 8327fb838eb7..fdd74389c837 100644 --- a/code/modules/tgui_panel/tgui_panel.dm +++ b/code/modules/tgui_panel/tgui_panel.dm @@ -16,7 +16,7 @@ /datum/tgui_panel/New(client/client) src.client = client window = new(client, "browseroutput") - window.subscribe(src, .proc/on_message) + window.subscribe(src, PROC_REF(on_message)) /datum/tgui_panel/Del() window.unsubscribe(src) @@ -49,7 +49,7 @@ window.send_asset(get_asset_datum(/datum/asset/simple/namespaced/fontawesome)) window.send_asset(get_asset_datum(/datum/asset/spritesheet/chat)) request_telemetry() - addtimer(CALLBACK(src, .proc/on_initialize_timed_out), 5 SECONDS) + addtimer(CALLBACK(src, PROC_REF(on_initialize_timed_out)), 5 SECONDS) /** * private diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm index 31e570cd9431..f0cb3562bdf2 100644 --- a/code/modules/tooltip/tooltip.dm +++ b/code/modules/tooltip/tooltip.dm @@ -88,7 +88,7 @@ Notes: /datum/tooltip/proc/hide() if (queueHide) - addtimer(CALLBACK(src, .proc/do_hide), 1) + addtimer(CALLBACK(src, PROC_REF(do_hide)), 1) else do_hide() diff --git a/code/modules/unit_tests/README.md b/code/modules/unit_tests/README.md new file mode 100644 index 000000000000..5f9a62e124eb --- /dev/null +++ b/code/modules/unit_tests/README.md @@ -0,0 +1,76 @@ +# Unit Tests + +## What is unit testing? + +Unit tests are automated code to verify that parts of the game work exactly as they should. For example, [a test to make sure that the amputation surgery actually amputates the limb](https://github.com/tgstation/tgstation/blob/e416283f162b86345a8623125ab866839b1ac40d/code/modules/unit_tests/surgeries.dm#L1-L13). These are ran every time a PR is made, and thus are very helpful for preventing bugs from cropping up in your code that would've otherwise gone unnoticed. For example, would you have thought to check [that beach boys would still work the same after editing pizza](https://github.com/tgstation/tgstation/pull/53641#issuecomment-691384934)? If you value your time, probably not. + +On their most basic level, when `UNIT_TESTS` is defined, all subtypes of `/datum/unit_test` will have their `Run` proc executed. From here, if `Fail` is called at any point, then the tests will report as failed. + +## How do I write one? +1. Find a relevant file. + +All unit test related code is in `code/modules/unit_tests`. If you are adding a new test for a surgery, for example, then you'd open `surgeries.dm`. If a relevant file does not exist, simply create one in this folder, then `#include` it in `_unit_tests.dm`. + +2. Create the unit test. + +To make a new unit test, you simply need to define a `/datum/unit_test`. + +For example, let's suppose that we are creating a test to make sure a proc `square` correctly raises inputs to the power of two. We'd start with first: + +``` +/datum/unit_test/square/Run() +``` + +This defines our new unit test, `/datum/unit_test/square`. Inside this function, we're then going to run through whatever we want to check. Tests provide a few assertion functions to make this easy. For now, we're going to use `TEST_ASSERT_EQUAL`. + +``` +/datum/unit_test/square/Run() + TEST_ASSERT_EQUAL(square(3), 9, "square(3) did not return 9") + TEST_ASSERT_EQUAL(square(4), 16, "square(4) did not return 16") +``` + +As you can hopefully tell, we're simply checking if the output of `square` matches the output we are expecting. If the test fails, it'll report the error message given as well as whatever the actual output was. + +3. Run the unit test + +Open `code/_compile_options.dm` and uncomment the following line. + +``` +//#define UNIT_TESTS //If this is uncommented, we do a single run though of the game setup and tear down process with unit tests in between +``` + +Then, run tgstation.dmb in Dream Daemon. Don't bother trying to connect, you won't need to. You'll be able to see the outputs of all the tests. You'll get to see which tests failed and for what reason. If they all pass, you're set! + +## How to think about tests + +Unit tests exist to prevent bugs that would happen in a real game. Thus, they should attempt to emulate the game world wherever possible. For example, the [quick swap sanity test](https://github.com/tgstation/tgstation/blob/e416283f162b86345a8623125ab866839b1ac40d/code/modules/unit_tests/quick_swap_sanity.dm) emulates a *real* scenario of the bug it fixed occurring by creating a character and giving it real items. The unrecommended alternative would be to create special test-only items. This isn't a hard rule, the [reagent method exposure tests](https://github.com/tgstation/tgstation/blob/e416283f162b86345a8623125ab866839b1ac40d/code/modules/unit_tests/reagent_mod_expose.dm) create a test-only reagent for example, but do keep it in mind. + +Unit tests should also be just that--testing *units* of code. For example, instead of having one massive test for reagents, there are instead several smaller tests for testing exposure, metabolization, etc. + +## The unit testing API + +You can find more information about all of these from their respective doc comments, but for a brief overview: + +`/datum/unit_test` - The base for all tests to be ran. Subtypes must override `Run()`. `New()` and `Destroy()` can be used for setup and teardown. To fail, use `TEST_FAIL(reason)`. + +`/datum/unit_test/proc/allocate(type, ...)` - Allocates an instance of the provided type with the given arguments. Is automatically destroyed when the test is over. Commonly seen in the form of `var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human)`. + +`TEST_FAIL(reason)` - Marks a failure at this location, but does not stop the test. + +`TEST_ASSERT(assertion, reason)` - Stops the unit test and fails if the assertion is not met. For example: `TEST_ASSERT(powered(), "Machine is not powered")`. + +`TEST_ASSERT_NOTNULL(a, message)` - Same as `TEST_ASSERT`, but checks if `!isnull(a)`. For example: `TEST_ASSERT_NOTNULL(myatom, "My atom was never set!")`. + +`TEST_ASSERT_NULL(a, message)` - Same as `TEST_ASSERT`, but checks if `isnull(a)`. If not, gives a helpful message showing what `a` was. For example: `TEST_ASSERT_NULL(delme, "Delme was never cleaned up!")`. + +`TEST_ASSERT_EQUAL(a, b, message)` - Same as `TEST_ASSERT`, but checks if `a == b`. If not, gives a helpful message showing what both `a` and `b` were. For example: `TEST_ASSERT_EQUAL(2 + 2, 4, "The universe is falling apart before our eyes!")`. + +`TEST_ASSERT_NOTEQUAL(a, b, message)` - Same as `TEST_ASSERT_EQUAL`, but reversed. + +`TEST_FOCUS(test_path)` - *Only* run the test provided within the parameters. Useful for reducing noise. For example, if we only want to run our example square test, we can add `TEST_FOCUS(/datum/unit_test/square)`. Should *never* be pushed in a pull request--you will be laughed at. + +## Final Notes + +- Writing tests before you attempt to fix the bug can actually speed up development a lot! It means you don't have to go in game and folllow the same exact steps manually every time. This process is known as "TDD" (test driven development). Write the test first, make sure it fails, *then* start work on the fix/feature, and you'll know you're done when your tests pass. If you do try this, do make sure to confirm in a non-testing environment just to double check. +- Make sure that your tests don't accidentally call RNG functions like `prob`. Since RNG is seeded during tests, you may not realize you have until someone else makes a PR and the tests fail! +- Do your best not to change the behavior of non-testing code during tests. While it may sometimes be necessary in the case of situations such as the above, it is still a slippery slope that can lead to the code you're testing being too different from the production environment to be useful. diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 1607229a790a..cc12fe0c638f 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -3,23 +3,65 @@ #ifdef UNIT_TESTS +/// For advanced cases, fail unconditionally but don't return (so a test can return multiple results) +#define TEST_FAIL(reason) (Fail(reason || "No reason", __FILE__, __LINE__)) + /// Asserts that a condition is true /// If the condition is not true, fails the test -#define TEST_ASSERT(assertion, reason) if (!(assertion)) { return Fail("Assertion failed: [reason || "No reason"]") } +#define TEST_ASSERT(assertion, reason) if (!(assertion)) { return Fail("Assertion failed: [reason || "No reason"]", __FILE__, __LINE__) } + +/// Asserts that a parameter is not null +#define TEST_ASSERT_NOTNULL(a, reason) if (isnull(a)) { return Fail("Expected non-null value: [reason || "No reason"]", __FILE__, __LINE__) } + +/// Asserts that a parameter is null +#define TEST_ASSERT_NULL(a, reason) if (!isnull(a)) { return Fail("Expected null value but received [a]: [reason || "No reason"]", __FILE__, __LINE__) } /// Asserts that the two parameters passed are equal, fails otherwise /// Optionally allows an additional message in the case of a failure -#define TEST_ASSERT_EQUAL(a, b, message) if ((a) != (b)) { return Fail("Expected [isnull(a) ? "null" : a] to be equal to [isnull(b) ? "null" : b].[message ? " [message]" : ""]") } +#define TEST_ASSERT_EQUAL(a, b, message) do { \ + var/lhs = ##a; \ + var/rhs = ##b; \ + if (lhs != rhs) { \ + return Fail("Expected [isnull(lhs) ? "null" : lhs] to be equal to [isnull(rhs) ? "null" : rhs].[message ? " [message]" : ""]", __FILE__, __LINE__); \ + } \ +} while (FALSE) /// Asserts that the two parameters passed are not equal, fails otherwise /// Optionally allows an additional message in the case of a failure -#define TEST_ASSERT_NOTEQUAL(a, b, message) if ((a) == (b)) { return Fail("Expected [isnull(a) ? "null" : a] to not be equal to [isnull(b) ? "null" : b].[message ? " [message]" : ""]") } +#define TEST_ASSERT_NOTEQUAL(a, b, message) do { \ + var/lhs = ##a; \ + var/rhs = ##b; \ + if (lhs == rhs) { \ + return Fail("Expected [isnull(lhs) ? "null" : lhs] to not be equal to [isnull(rhs) ? "null" : rhs].[message ? " [message]" : ""]", __FILE__, __LINE__); \ + } \ +} while (FALSE) /// *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; } +/// Constants indicating unit test completion status +#define UNIT_TEST_PASSED 0 +#define UNIT_TEST_FAILED 1 +#define UNIT_TEST_SKIPPED 2 + +#define TEST_DEFAULT 1 +#define TEST_DEL_WORLD INFINITY + +/// 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" +#else +#define TEST_OUTPUT_RED(text) (text) +#endif +/// Change color to green on ANSI terminal output, if enabled with -DANSICOLORS. +#ifdef ANSICOLORS +#define TEST_OUTPUT_GREEN(text) "\x1B\x5B1;32m[text]\x1B\x5B0m" +#else +#define TEST_OUTPUT_GREEN(text) (text) +#endif + #include "anchored_mobs.dm" #include "autowiki.dm" #include "bespoke_id.dm" @@ -27,35 +69,46 @@ #include "combat.dm" #include "component_tests.dm" #include "connect_loc.dm" +#include "create_and_destroy.dm" +#include "biome_lists.dm" #include "emoting.dm" #include "keybinding_init.dm" #include "machine_disassembly.dm" -#include "outfit_sanity.dm" #include "open_air.dm" +#include "outfit_sanity.dm" #include "overmap.dm" #include "pills.dm" +#include "planet_gen.dm" #include "plantgrowth_tests.dm" +#include "projectiles.dm" #include "quick_swap_sanity.dm" #include "rcd.dm" -#include "projectiles.dm" #include "reactions.dm" #include "reagent_id_typos.dm" #include "reagent_mod_expose.dm" #include "reagent_mod_procs.dm" +#include "reagent_names.dm" #include "reagent_recipe_collisions.dm" #include "resist.dm" +#include "ruin_placement.dm" #include "say.dm" #include "serving_tray.dm" #include "ship_outpost_placement.dm" #include "spawn_humans.dm" +#include "species_unique_id.dm" #include "species_whitelists.dm" +#include "stack_singular_name.dm" #include "subsystem_init.dm" +#include "subsystem_metric_sanity.dm" #include "supply_pack.dm" #include "teleporters.dm" -#include "subsystem_metric_sanity.dm" #include "timer_sanity.dm" #include "unit_test.dm" +#ifdef REFERENCE_TRACKING_DEBUG //Don't try and parse this file if ref tracking isn't turned on. IE: don't parse ref tracking please mr linter +#include "find_reference_sanity.dm" +#endif + #undef TEST_ASSERT #undef TEST_ASSERT_EQUAL #undef TEST_ASSERT_NOTEQUAL diff --git a/code/modules/unit_tests/anchored_mobs.dm b/code/modules/unit_tests/anchored_mobs.dm index 103b97e7a993..88487ea2b8d7 100644 --- a/code/modules/unit_tests/anchored_mobs.dm +++ b/code/modules/unit_tests/anchored_mobs.dm @@ -4,6 +4,4 @@ var/mob/M = i if(initial(M.anchored)) L += "[i]" - if(!L.len) - return //passed! - Fail("The following mobs are defined as anchored. This is incompatible with the new move force/resist system and needs to be revised.: [L.Join(" ")]") + TEST_ASSERT(!L.len, "The following mobs are defined as anchored. This is incompatible with the new move force/resist system and needs to be revised.: [L.Join(" ")]") diff --git a/code/modules/unit_tests/bespoke_id.dm b/code/modules/unit_tests/bespoke_id.dm index 06676c626c7e..e1356650ded2 100644 --- a/code/modules/unit_tests/bespoke_id.dm +++ b/code/modules/unit_tests/bespoke_id.dm @@ -5,4 +5,4 @@ for(var/i in subtypesof(/datum/element)) var/datum/element/faketype = i if((initial(faketype.element_flags) & ELEMENT_BESPOKE) && initial(faketype.id_arg_index) == base_index) - Fail("A bespoke element was not configured with a proper id_arg_index: [faketype]") + TEST_FAIL("A bespoke element was not configured with a proper id_arg_index: [faketype]") diff --git a/code/modules/unit_tests/biome_lists.dm b/code/modules/unit_tests/biome_lists.dm new file mode 100644 index 000000000000..18334cc8a15d --- /dev/null +++ b/code/modules/unit_tests/biome_lists.dm @@ -0,0 +1,23 @@ +/datum/unit_test/biome_lists/Run() + for(var/biome_type as anything in SSmapping.biomes) + var/datum/biome/biome = SSmapping.biomes[biome_type] + + validate_chance(biome.open_turf_types, "open turf", biome_type) + validate_chance(biome.mob_spawn_list, "mob spawn", biome_type) + validate_chance(biome.flora_spawn_list, "flora spawn", biome_type) + validate_chance(biome.feature_spawn_list, "feature spawn", biome_type) + if(!istype(biome, /datum/biome/cave)) + continue + var/datum/biome/cave/cave = biome + validate_chance(cave.closed_turf_types, "closed turf", biome_type) + +/datum/unit_test/biome_lists/proc/validate_chance(list/to_check, name, biome) + if(to_check && !islist(to_check)) + TEST_FAIL("Biome [biome] has invalid [name] list") + for(var/type in to_check) + var/value = to_check[type] + if(!value) + TEST_FAIL("Biome [biome] has no [name] weight for [type]") + return + if(!isnum(value) || value < 1 || value != round(value)) //ensures natural numbers + TEST_FAIL("Biome [biome] has invalid [name] chance for [type] ([value])") diff --git a/code/modules/unit_tests/combat.dm b/code/modules/unit_tests/combat.dm index 30bad7217514..0ad01c2cb9f8 100644 --- a/code/modules/unit_tests/combat.dm +++ b/code/modules/unit_tests/combat.dm @@ -53,9 +53,9 @@ var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human) var/obj/item/storage/toolbox/toolbox = allocate(/obj/item/storage/toolbox) - RegisterSignal(toolbox, COMSIG_ITEM_PRE_ATTACK, .proc/pre_attack_hit) - RegisterSignal(toolbox, COMSIG_ITEM_ATTACK, .proc/attack_hit) - RegisterSignal(toolbox, COMSIG_ITEM_AFTERATTACK, .proc/post_attack_hit) + RegisterSignal(toolbox, COMSIG_ITEM_PRE_ATTACK, PROC_REF(pre_attack_hit)) + RegisterSignal(toolbox, COMSIG_ITEM_ATTACK, PROC_REF(attack_hit)) + RegisterSignal(toolbox, COMSIG_ITEM_AFTERATTACK, PROC_REF(post_attack_hit)) attacker.put_in_active_hand(toolbox, forced = TRUE) attacker.a_intent_change(INTENT_HARM) diff --git a/code/modules/unit_tests/component_tests.dm b/code/modules/unit_tests/component_tests.dm index 0099d7508c5d..f609e73c4b72 100644 --- a/code/modules/unit_tests/component_tests.dm +++ b/code/modules/unit_tests/component_tests.dm @@ -8,5 +8,5 @@ var/dupe_type = initial(comp.dupe_type) if(dupe_type && !ispath(dupe_type)) bad_dts += t - if(length(bad_dms) || length(bad_dts)) - Fail("Components with invalid dupe modes: ([bad_dms.Join(",")]) ||| Components with invalid dupe types: ([bad_dts.Join(",")])") + TEST_ASSERT(!length(bad_dms) && !length(bad_dts), + "Components with invalid dupe modes: ([bad_dms.Join(",")]) ||| Components with invalid dupe types: ([bad_dts.Join(",")])") diff --git a/code/modules/unit_tests/connect_loc.dm b/code/modules/unit_tests/connect_loc.dm index 511e1745a73a..e169cab1be5d 100644 --- a/code/modules/unit_tests/connect_loc.dm +++ b/code/modules/unit_tests/connect_loc.dm @@ -63,7 +63,7 @@ . = ..() var/static/list/connections = list( - COMSIG_MOCK_SIGNAL = .proc/on_receive_mock_signal, + COMSIG_MOCK_SIGNAL = PROC_REF(on_receive_mock_signal), ) AddElement(/datum/element/connect_loc, connections) diff --git a/code/modules/unit_tests/create_and_destroy.dm b/code/modules/unit_tests/create_and_destroy.dm new file mode 100644 index 000000000000..017356d9152a --- /dev/null +++ b/code/modules/unit_tests/create_and_destroy.dm @@ -0,0 +1,219 @@ +///Delete one of every type, sleep a while, then check to see if anything has gone fucky +/datum/unit_test/create_and_destroy + //You absolutely must run last + priority = TEST_DEL_WORLD + +/datum/unit_test/create_and_destroy/Run() + //We'll spawn everything here + var/turf/spawn_at = run_loc_bottom_left + var/list/ignore = list( + //Should never exist + /turf, + //No-op + /turf/template_noop, + //Never meant to be created, errors out the ass for mobcode reasons + /mob/living/carbon, + //And another + /obj/item/slimecross/recurring, + //This should be obvious + /obj/machinery/doomsday_device, + //Template type + /obj/effect/mob_spawn, + //Say it with me now, type template + /obj/effect/mapping_helpers/component_injector, + //template type + /obj/effect/mapping_helpers/trait_injector, + //Singleton + /mob/dview, + //Template + /obj/effect/mapping_helpers/custom_icon, + //Needs an implant inside + /obj/item/implantcase, + //Needs a ship + /obj/item/key/ship, + //Template + /obj/machinery/power/shuttle/engine/liquid, + //needs a template + /obj/effect/landmark/subship, + //needs a friend :( + /obj/effect/mob_spawn/human/demonic_friend, + //needs a derg + /obj/structure/carp_rift, + //doesn't have icons + /obj/item/bodypart, + /obj/item/bodypart/chest, + /obj/item/bodypart/head, + /obj/item/bodypart/l_arm, + /obj/item/bodypart/r_arm, + /obj/item/bodypart/leg, + //fucking explodes when created + /obj/item/grown/bananapeel/bombanana, + ) + //This turf existing is an error in and of itself + ignore += typesof(/turf/baseturf_skipover) + ignore += typesof(/turf/baseturf_bottom) + //Don't spam out baseturfs + ignore += typesof(/obj/effect/baseturf_helper) + //Needs a contractee + ignore += typesof(/obj/item/paper/contract) + //This demands a borg, so we'll let if off easy + ignore += typesof(/obj/item/modular_computer/tablet/integrated) + //This one demands a computer, ditto + ignore += typesof(/obj/item/modular_computer/processor) + //Very finiky, blacklisting to make things easier + ignore += typesof(/obj/item/poster/wanted) + //We can't pass a mind into this + ignore += typesof(/obj/item/phylactery) + //This expects a seed, we can't pass it + ignore += typesof(/obj/item/reagent_containers/food/snacks/grown) + //Nothing to hallucinate if there's nothing to hallicinate + ignore += typesof(/obj/effect/hallucination) + //We don't have a pod + ignore += typesof(/obj/effect/pod_landingzone_effect) + ignore += typesof(/obj/effect/pod_landingzone) + //These want fried food to take on the shape of, we can't pass that in + ignore += typesof(/obj/item/reagent_containers/food/snacks/deepfryholder) + //Can't pass in a thing to glow + ignore += typesof(/obj/effect/abstract/eye_lighting) + //It wants a lot more context then we have + ignore += typesof(/obj/effect/buildmode_line) + //We don't have a disease to pass in + ignore += typesof(/obj/effect/mapping_helpers/component_injector/infective) + //There's no shapeshift to hold + ignore += typesof(/obj/shapeshift_holder) + //No tauma to pass in + ignore += typesof(/mob/camera/imaginary_friend) + //No pod to gondola + ignore += typesof(/mob/living/simple_animal/pet/gondola/gondolapod) + //Hangs a ref post invoke async, which we don't support. Could put a qdeleted check but it feels hacky + ignore += typesof(/obj/effect/anomaly/grav/high) + //See above + ignore += typesof(/obj/effect/timestop) + //this boi spawns turf changing stuff, and it stacks and causes pain. Let's just not + ignore += typesof(/obj/effect/sliding_puzzle) + //Stacks baseturfs, can't be tested here + ignore += typesof(/obj/effect/temp_visual/lava_warning) + //Stacks baseturfs, can't be tested here + ignore += typesof(/obj/effect/ctf) + //Our system doesn't support it without warning spam from unregister calls on things that never registered + ignore += typesof(/obj/docking_port) + //This spawns beams as a part of init, which can sleep past an async proc. This hangs a ref, and fucks us. It's only a problem here because the beam sleeps with CHECK_TICK + ignore += typesof(/obj/structure/alien/resin/flower_bud_enemy) + //Expects a mob to holderize, we have nothing to give + ignore += typesof(/obj/item/clothing/head/mob_holder) + //Needs ships + ignore += typesof(/obj/overmap) + //Needs a holopad + ignore += typesof(/mob/living/simple_animal/hologram) + //Needs an elevator + ignore += typesof(/obj/machinery/status_display/elevator) + ignore += typesof(/obj/machinery/elevator_floor_button) + + var/list/cached_contents = spawn_at.contents.Copy() + var/original_turf_type = spawn_at.type + var/original_baseturfs = islist(spawn_at.baseturfs) ? spawn_at.baseturfs.Copy() : spawn_at.baseturfs + var/original_baseturf_count = length(original_baseturfs) + + for(var/type_path in typesof(/atom/movable, /turf) - ignore) //No areas please + if(ispath(type_path, /turf)) + spawn_at.ChangeTurf(type_path) + //We change it back to prevent baseturfs stacking and hitting the limit + spawn_at.ChangeTurf(original_turf_type, original_baseturfs) + if(original_baseturf_count != length(spawn_at.baseturfs)) + TEST_FAIL("[type_path] changed the amount of baseturfs from [original_baseturf_count] to [length(spawn_at.baseturfs)]; [english_list(original_baseturfs)] to [islist(spawn_at.baseturfs) ? english_list(spawn_at.baseturfs) : spawn_at.baseturfs]") + //Warn if it changes again + original_baseturfs = islist(spawn_at.baseturfs) ? spawn_at.baseturfs.Copy() : spawn_at.baseturfs + original_baseturf_count = length(original_baseturfs) + else + var/atom/creation = new type_path(spawn_at) + if(QDELETED(creation)) + continue + //Go all in + qdel(creation, force = TRUE) + //This will hold a ref to the last thing we process unless we set it to null + //Yes byond is fucking sinful + creation = null + + //There's a lot of stuff that either spawns stuff in on create, or removes stuff on destroy. Let's cut it all out so things are easier to deal with + var/list/to_del = spawn_at.contents - cached_contents + if(length(to_del)) + for(var/atom/to_kill in to_del) + qdel(to_kill) + + //Hell code, we're bound to have ended the round somehow so let's stop if from ending while we work + SSticker.delay_end = TRUE + + // Drastically lower the amount of time it takes to GC, since we don't have clients that can hold it up. + SSgarbage.collection_timeout[GC_QUEUE_CHECK] = 10 SECONDS + //Prevent the garbage subsystem from harddeling anything, if only to save time + SSgarbage.collection_timeout[GC_QUEUE_HARDDELETE] = 10000 HOURS + //Clear it, just in case + cached_contents.Cut() + + var/list/queues_we_care_about = list() + // All up to harddel + for(var/i in 1 to GC_QUEUE_HARDDELETE - 1) + 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 + // + 2 seconds to ensure that everything gets in the queue. + var/time_needed = 2 SECONDS + for(var/index in queues_we_care_about) + time_needed += SSgarbage.collection_timeout[index] + + var/start_time = world.time + var/garbage_queue_processed = FALSE + + sleep(time_needed) + while(!garbage_queue_processed) + var/oldest_packet_creation = INFINITY + for(var/index in queues_we_care_about) + var/list/queue_to_check = SSgarbage.queues[index] + if(!length(queue_to_check)) + continue + + var/list/oldest_packet = queue_to_check[1] + //Pull out the time we inserted at + var/qdeld_at = oldest_packet[GC_QUEUE_ITEM_GCD_DESTROYED] + + oldest_packet_creation = min(qdeld_at, oldest_packet_creation) + + //If we've found a packet that got del'd later then we finished, then all our shit has been processed + if(oldest_packet_creation > start_time) + garbage_queue_processed = TRUE + break + + if(world.time > start_time + time_needed + 30 MINUTES) //If this gets us gitbanned I'm going to laugh so hard + TEST_FAIL("Something has gone horribly wrong, the garbage queue has been processing for well over 30 minutes. What the hell did you do") + break + + //Immediately fire the gc right after + SSgarbage.next_fire = 1 + //Unless you've seriously fucked up, queue processing shouldn't take "that" long. Let her run for a bit, see if anything's changed + sleep(20 SECONDS) + + //Alright, time to see if anything messed up + var/list/cache_for_sonic_speed = SSgarbage.items + for(var/path in cache_for_sonic_speed) + var/datum/qdel_item/item = cache_for_sonic_speed[path] + if(item.failures) + TEST_FAIL("[item.name] hard deleted [item.failures] times out of a total del count of [item.qdels]") + if(item.no_respect_force) + TEST_FAIL("[item.name] failed to respect force deletion [item.no_respect_force] times out of a total del count of [item.qdels]") + if(item.no_hint) + TEST_FAIL("[item.name] failed to return a qdel hint [item.no_hint] times out of a total del count of [item.qdels]") + + cache_for_sonic_speed = SSatoms.BadInitializeCalls + for(var/path in cache_for_sonic_speed) + var/fails = cache_for_sonic_speed[path] + if(fails & BAD_INIT_NO_HINT) + TEST_FAIL("[path] didn't return an Initialize hint") + if(fails & BAD_INIT_QDEL_BEFORE) + TEST_FAIL("[path] qdel'd in New()") + if(fails & BAD_INIT_SLEPT) + TEST_FAIL("[path] slept during Initialize()") + + SSticker.delay_end = FALSE + //This shouldn't be needed, but let's be polite + SSgarbage.collection_timeout[GC_QUEUE_CHECK] = GC_CHECK_QUEUE + SSgarbage.collection_timeout[GC_QUEUE_HARDDELETE] = GC_DEL_QUEUE diff --git a/code/modules/unit_tests/emoting.dm b/code/modules/unit_tests/emoting.dm index 5795ab34374f..7111107b709b 100644 --- a/code/modules/unit_tests/emoting.dm +++ b/code/modules/unit_tests/emoting.dm @@ -3,7 +3,7 @@ /datum/unit_test/emoting/Run() var/mob/living/carbon/human/human = allocate(/mob/living/carbon/human) - RegisterSignal(human, COMSIG_MOB_EMOTE, .proc/on_emote_used) + RegisterSignal(human, COMSIG_MOB_EMOTE, PROC_REF(on_emote_used)) human.say("*shrug") TEST_ASSERT_EQUAL(emotes_used, 1, "Human did not shrug") diff --git a/code/modules/unit_tests/find_reference_sanity.dm b/code/modules/unit_tests/find_reference_sanity.dm new file mode 100644 index 000000000000..67b6072d3b96 --- /dev/null +++ b/code/modules/unit_tests/find_reference_sanity.dm @@ -0,0 +1,132 @@ +///Used to test the completeness of the reference finder proc. +/datum/unit_test/find_reference_sanity + +/atom/movable/ref_holder + var/static/atom/movable/ref_test/static_test + var/atom/movable/ref_test/test + var/list/test_list = list() + var/list/test_assoc_list = list() + +/atom/movable/ref_holder/Destroy() + test = null + static_test = null + test_list.Cut() + test_assoc_list.Cut() + return ..() + +/atom/movable/ref_test + var/atom/movable/ref_test/self_ref + +/atom/movable/ref_test/Destroy(force) + self_ref = null + return ..() + +/datum/unit_test/find_reference_sanity/Run() + var/atom/movable/ref_test/victim = allocate(/atom/movable/ref_test) + var/atom/movable/ref_holder/testbed = allocate(/atom/movable/ref_holder) + SSgarbage.should_save_refs = TRUE + + //Sanity check + victim.DoSearchVar(testbed, "Sanity Check", search_time = 1) //We increment search time to get around an optimization + TEST_ASSERT(!victim.found_refs.len, "The ref-tracking tool found a ref where none existed") + SSgarbage.should_save_refs = FALSE + +/datum/unit_test/find_reference_baseline/Run() + var/atom/movable/ref_test/victim = allocate(/atom/movable/ref_test) + var/atom/movable/ref_holder/testbed = allocate(/atom/movable/ref_holder) + SSgarbage.should_save_refs = TRUE + + //Set up for the first round of tests + testbed.test = victim + testbed.test_list += victim + testbed.test_assoc_list["baseline"] = victim + + victim.DoSearchVar(testbed, "First Run", search_time = 2) + + TEST_ASSERT(victim.found_refs["test"], "The ref-tracking tool failed to find a regular value") + TEST_ASSERT(victim.found_refs[testbed.test_list], "The ref-tracking tool failed to find a list entry") + TEST_ASSERT(victim.found_refs[testbed.test_assoc_list], "The ref-tracking tool failed to find an assoc list value") + SSgarbage.should_save_refs = FALSE + +/datum/unit_test/find_reference_exotic/Run() + var/atom/movable/ref_test/victim = allocate(/atom/movable/ref_test) + var/atom/movable/ref_holder/testbed = allocate(/atom/movable/ref_holder) + SSgarbage.should_save_refs = TRUE + + //Second round, bit harder this time + testbed.overlays += victim + testbed.vis_contents += victim + testbed.test_assoc_list[victim] = TRUE + + victim.DoSearchVar(testbed, "Second Run", search_time = 3) + + //This is another sanity check + TEST_ASSERT(!victim.found_refs[testbed.overlays], "The ref-tracking tool found an overlays entry? That shouldn't be possible") + TEST_ASSERT(victim.found_refs[testbed.vis_contents], "The ref-tracking tool failed to find a vis_contents entry") + TEST_ASSERT(victim.found_refs[testbed.test_assoc_list], "The ref-tracking tool failed to find an assoc list key") + SSgarbage.should_save_refs = FALSE + +/datum/unit_test/find_reference_esoteric/Run() + var/atom/movable/ref_test/victim = allocate(/atom/movable/ref_test) + var/atom/movable/ref_holder/testbed = allocate(/atom/movable/ref_holder) + SSgarbage.should_save_refs = TRUE + + //Let's get a bit esoteric + victim.self_ref = victim + var/list/to_find = list(victim) + testbed.test_list += list(to_find) + var/list/to_find_assoc = list(victim) + testbed.test_assoc_list["Nesting"] = to_find_assoc + + victim.DoSearchVar(victim, "Third Run Self", search_time = 4) + victim.DoSearchVar(testbed, "Third Run Testbed", search_time = 4) + TEST_ASSERT(victim.found_refs["self_ref"], "The ref-tracking tool failed to find a self reference") + TEST_ASSERT(victim.found_refs[to_find], "The ref-tracking tool failed to find a nested list entry") + TEST_ASSERT(victim.found_refs[to_find_assoc], "The ref-tracking tool failed to find a nested assoc list entry") + SSgarbage.should_save_refs = FALSE + +/datum/unit_test/find_reference_null_key_entry/Run() + var/atom/movable/ref_test/victim = allocate(/atom/movable/ref_test) + var/atom/movable/ref_holder/testbed = allocate(/atom/movable/ref_holder) + SSgarbage.should_save_refs = TRUE + + //Calm before the storm + testbed.test_assoc_list = list(null = victim) + + victim.DoSearchVar(testbed, "Fourth Run", search_time = 5) + TEST_ASSERT(testbed.test_assoc_list, "The ref-tracking tool failed to find a null key'd assoc list entry") + +/datum/unit_test/find_reference_assoc_investigation/Run() + var/atom/movable/ref_test/victim = allocate(/atom/movable/ref_test) + var/atom/movable/ref_holder/testbed = allocate(/atom/movable/ref_holder) + SSgarbage.should_save_refs = TRUE + + //Let's do some more complex assoc list investigation + var/list/to_find_in_key = list(victim) + testbed.test_assoc_list[to_find_in_key] = list("memes") + var/list/to_find_null_assoc_nested = list(victim) + testbed.test_assoc_list[null] = to_find_null_assoc_nested + + victim.DoSearchVar(testbed, "Fifth Run", search_time = 6) + TEST_ASSERT(victim.found_refs[to_find_in_key], "The ref-tracking tool failed to find a nested assoc list key") + TEST_ASSERT(victim.found_refs[to_find_null_assoc_nested], "The ref-tracking tool failed to find a null key'd nested assoc list entry") + SSgarbage.should_save_refs = FALSE + +/datum/unit_test/find_reference_static_investigation/Run() + var/atom/movable/ref_test/victim = allocate(/atom/movable/ref_test) + var/atom/movable/ref_holder/testbed = allocate(/atom/movable/ref_holder) + SSgarbage.should_save_refs = TRUE + + //Lets check static vars now, since those can be a real headache + testbed.static_test = victim + + //Yes we do actually need to do this. The searcher refuses to read weird lists + //And global.vars is a really weird list + var/global_vars = list() + for(var/key in global.vars) + global_vars[key] = global.vars[key] + + victim.DoSearchVar(global_vars, "Sixth Run", search_time = 7) + + TEST_ASSERT(victim.found_refs[global_vars], "The ref-tracking tool failed to find a natively global variable") + SSgarbage.should_save_refs = FALSE diff --git a/code/modules/unit_tests/keybinding_init.dm b/code/modules/unit_tests/keybinding_init.dm index 2bd2fdee1e2e..c9d17f688afd 100644 --- a/code/modules/unit_tests/keybinding_init.dm +++ b/code/modules/unit_tests/keybinding_init.dm @@ -3,4 +3,4 @@ var/datum/keybinding/KB = i if(initial(KB.keybind_signal) || !initial(KB.name)) continue - Fail("[KB.name] does not have a keybind signal defined.") + TEST_FAIL("[KB.name] does not have a keybind signal defined.") diff --git a/code/modules/unit_tests/open_air.dm b/code/modules/unit_tests/open_air.dm index d2ead5c53ed4..969e1f7561cc 100644 --- a/code/modules/unit_tests/open_air.dm +++ b/code/modules/unit_tests/open_air.dm @@ -9,19 +9,19 @@ SSair.fire() sleep(1) if(center_turf.air.get_moles(GAS_PLASMA) > 28) - Fail("Gas isn't moving at all, or isn't moving enough (somehow) (plasma started at 32, is now [center_turf.air.get_moles(GAS_PLASMA)]") + TEST_FAIL("Gas isn't moving at all, or isn't moving enough (somehow) (plasma started at 32, is now [center_turf.air.get_moles(GAS_PLASMA)]") center_turf.air.set_moles(GAS_PLASMA, 100) center_turf.air.set_moles(GAS_O2, 100/1.4) center_turf.air.set_temperature(5000) center_turf.air.vv_react(center_turf) if(center_turf.air.get_moles(GAS_PLASMA) >= 100) - Fail("Gas isn't reacting properly (plasma: [center_turf.air.get_moles(GAS_PLASMA)], temp: [center_turf.air.return_temperature()]") + TEST_FAIL("Gas isn't reacting properly (plasma: [center_turf.air.get_moles(GAS_PLASMA)], temp: [center_turf.air.return_temperature()]") var/obj/effect/hotspot = locate(/obj/effect/hotspot) in center_turf if(!istype(hotspot)) - Fail("Hotspots aren't showing up on reaction") + TEST_FAIL("Hotspots aren't showing up on reaction") /datum/unit_test/open_air/Destroy() var/datum/virtual_level/vlevel = mapzone.virtual_levels[1] for(var/turf/T in vlevel.get_block()) T.Initalize_Atmos(0) - ..() + return ..() diff --git a/code/modules/unit_tests/outfit_sanity.dm b/code/modules/unit_tests/outfit_sanity.dm index ef41539c9019..fee653cd626f 100644 --- a/code/modules/unit_tests/outfit_sanity.dm +++ b/code/modules/unit_tests/outfit_sanity.dm @@ -1,8 +1,9 @@ #define CHECK_OUTFIT_SLOT(outfit_key, slot_name) if (outfit.##outfit_key) { \ H.equip_to_slot_or_del(new outfit.##outfit_key(H), ##slot_name, TRUE); \ /* We don't check the result of equip_to_slot_or_del because it returns false for random jumpsuits, as they delete themselves on init */ \ - if (!H.get_item_by_slot(##slot_name)) { \ - Fail("[outfit.name]'s [#outfit_key] is invalid!"); \ + var/obj/item/outfit_item = H.get_item_by_slot(##slot_name); \ + if (!outfit_item) { \ + TEST_FAIL("[outfit.name]'s [#outfit_key] is invalid! Could not equip a [outfit.##outfit_key] into that slot."); \ } \ } @@ -56,6 +57,6 @@ var/number = backpack_contents[path] || 1 for (var/_ in 1 to number) if (!H.equip_to_slot_or_del(new path(H), ITEM_SLOT_BACKPACK, TRUE)) - Fail("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") + TEST_FAIL("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") #undef CHECK_OUTFIT_SLOT diff --git a/code/modules/unit_tests/planet_gen.dm b/code/modules/unit_tests/planet_gen.dm new file mode 100644 index 000000000000..fdcfda1faeaa --- /dev/null +++ b/code/modules/unit_tests/planet_gen.dm @@ -0,0 +1,19 @@ +/datum/unit_test/planet_gen/Run() + var/datum/map_zone/mapzone = SSmapping.create_map_zone("Planet Generation Testing Zone") + for(var/planet_name as anything in SSmapping.planet_types) + var/datum/planet_type/planet_type = SSmapping.planet_types[planet_name] + var/datum/map_generator/mapgen = new planet_type.mapgen + var/datum/virtual_level/vlevel = SSmapping.create_virtual_level( + planet_name, + list(ZTRAIT_MINING = TRUE, ZTRAIT_BASETURF = planet_type.default_baseturf), + mapzone, + QUADRANT_MAP_SIZE, + QUADRANT_MAP_SIZE, + ALLOCATION_QUADRANT, + QUADRANT_MAP_SIZE + ) + mapgen.generate_turfs(vlevel.get_unreserved_block()) + mapgen.populate_turfs(vlevel.get_unreserved_block()) + vlevel.clear_reservation() + qdel(vlevel) + qdel(mapzone) diff --git a/code/modules/unit_tests/plantgrowth_tests.dm b/code/modules/unit_tests/plantgrowth_tests.dm index 15c56a12ec1d..daff6cccb8c2 100644 --- a/code/modules/unit_tests/plantgrowth_tests.dm +++ b/code/modules/unit_tests/plantgrowth_tests.dm @@ -16,11 +16,11 @@ for(var/i in 1 to seed.growthstages) if("[seed.icon_grow][i]" in states) continue - Fail("[seed.name] ([seed.type]) lacks the [seed.icon_grow][i] icon!") + TEST_FAIL("[seed.name] ([seed.type]) lacks the [seed.icon_grow][i] icon!") if(!(seed.icon_dead in states)) - Fail("[seed.name] ([seed.type]) lacks the [seed.icon_dead] icon!") + TEST_FAIL("[seed.name] ([seed.type]) lacks the [seed.icon_dead] icon!") if(seed.icon_harvest) // mushrooms have no grown sprites, same for items with no product if(!(seed.icon_harvest in states)) - Fail("[seed.name] ([seed.type]) lacks the [seed.icon_harvest] icon!") + TEST_FAIL("[seed.name] ([seed.type]) lacks the [seed.icon_harvest] icon!") diff --git a/code/modules/unit_tests/projectiles.dm b/code/modules/unit_tests/projectiles.dm index 06a8fb0780a9..4950be10c1a6 100644 --- a/code/modules/unit_tests/projectiles.dm +++ b/code/modules/unit_tests/projectiles.dm @@ -2,4 +2,26 @@ for(var/path in typesof(/obj/projectile)) var/obj/projectile/projectile = path if(initial(projectile.movement_type) & PHASING) - Fail("[path] has default movement type PHASING. Piercing projectiles should be done using the projectile piercing system, not movement_types!") + TEST_FAIL("[path] has default movement type PHASING. Piercing projectiles should be done using the projectile piercing system, not movement_types!") + +/datum/unit_test/gun_go_bang/Run() + // test is for a ballistic gun that starts loaded + chambered + var/obj/item/gun/test_gun = allocate(/obj/item/gun/ballistic/automatic/pistol) + var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human) + var/mob/living/carbon/human/gunner = allocate(/mob/living/carbon/human) + ADD_TRAIT(victim, TRAIT_PIERCEIMMUNE, INNATE_TRAIT) // So the human isn't randomly affected by shrapnel + + var/obj/item/ammo_casing/loaded_casing = test_gun.chambered + TEST_ASSERT(loaded_casing, "Gun started without round chambered, should be loaded") + var/obj/projectile/loaded_bullet = loaded_casing.BB + TEST_ASSERT(loaded_bullet, "Ammo casing has no loaded bullet") + + gunner.put_in_hands(test_gun, forced=TRUE) + var/expected_damage = loaded_bullet.damage + loaded_bullet.def_zone = BODY_ZONE_CHEST + var/did_we_shoot = test_gun.afterattack(victim, gunner) + TEST_ASSERT(did_we_shoot, "Gun does not appeared to have successfully fired.") + TEST_ASSERT_EQUAL(victim.getBruteLoss(), expected_damage, "Victim took incorrect amount of damage, expected [expected_damage], got [victim.getBruteLoss()].") + + var/obj/item/bodypart/expected_part = victim.get_bodypart(BODY_ZONE_CHEST) + TEST_ASSERT_EQUAL(expected_part.brute_dam, expected_damage, "Intended bodypart took incorrect amount of damage, either it hit another bodypart or armor was incorrectly applied. Expected [expected_damage], got [expected_part.brute_dam].") diff --git a/code/modules/unit_tests/rcd.dm b/code/modules/unit_tests/rcd.dm index 989ac8c3b9c5..b65d02312a78 100644 --- a/code/modules/unit_tests/rcd.dm +++ b/code/modules/unit_tests/rcd.dm @@ -19,8 +19,7 @@ var/list/adjacent_turfs = get_adjacent_open_turfs(engineer) - if(!length(adjacent_turfs)) - Fail("RCD Test failed - Lack of adjacent open turfs. This may be an issue with the unit test.") + TEST_ASSERT(length(adjacent_turfs), "RCD Test failed - Lack of adjacent open turfs. This may be an issue with the unit test.") var/turf/adjacent_turf = adjacent_turfs[1] diff --git a/code/modules/unit_tests/reactions.dm b/code/modules/unit_tests/reactions.dm index 66d9b490991c..7a48aeb6dd7a 100644 --- a/code/modules/unit_tests/reactions.dm +++ b/code/modules/unit_tests/reactions.dm @@ -3,4 +3,4 @@ var/test_info = G.test() if(!test_info["success"]) var/message = test_info["message"] - Fail("Gas reaction [G.name] is failing its unit test with the following message: [message]") + TEST_FAIL("Gas reaction [G.name] is failing its unit test with the following message: [message]") diff --git a/code/modules/unit_tests/reagent_id_typos.dm b/code/modules/unit_tests/reagent_id_typos.dm index d6548852fa52..f85834999962 100644 --- a/code/modules/unit_tests/reagent_id_typos.dm +++ b/code/modules/unit_tests/reagent_id_typos.dm @@ -11,4 +11,4 @@ var/datum/chemical_reaction/R = V for(var/id in (R.required_reagents + R.required_catalysts)) if(!GLOB.chemical_reagents_list[id]) - Fail("Unknown chemical id \"[id]\" in recipe [R.type]") + TEST_FAIL("Unknown chemical id \"[id]\" in recipe [R.type]") diff --git a/code/modules/unit_tests/reagent_names.dm b/code/modules/unit_tests/reagent_names.dm new file mode 100644 index 000000000000..b7a690e93485 --- /dev/null +++ b/code/modules/unit_tests/reagent_names.dm @@ -0,0 +1,15 @@ +/// Test that all reagent names are different in order to prevent #65231 +/datum/unit_test/reagent_names + +/datum/unit_test/reagent_names/Run() + var/used_names = list() + + for (var/datum/reagent/reagent as anything in subtypesof(/datum/reagent)) + var/name = initial(reagent.name) + if (!name) + continue + + if (name in used_names) + TEST_FAIL("[used_names[name]] shares a name with [reagent] ([name])") + else + used_names[name] = reagent diff --git a/code/modules/unit_tests/reagent_recipe_collisions.dm b/code/modules/unit_tests/reagent_recipe_collisions.dm index 20e875422f29..b75a17a7e73c 100644 --- a/code/modules/unit_tests/reagent_recipe_collisions.dm +++ b/code/modules/unit_tests/reagent_recipe_collisions.dm @@ -12,4 +12,4 @@ var/datum/chemical_reaction/r1 = reactions[i] var/datum/chemical_reaction/r2 = reactions[i2] if(chem_recipes_do_conflict(r1, r2)) - Fail("Chemical recipe conflict between [r1.type] and [r2.type]") + TEST_FAIL("Chemical recipe conflict between [r1.type] and [r2.type]") diff --git a/code/modules/unit_tests/resist.dm b/code/modules/unit_tests/resist.dm index 265c0bd74991..542ad40ef1e1 100644 --- a/code/modules/unit_tests/resist.dm +++ b/code/modules/unit_tests/resist.dm @@ -12,4 +12,8 @@ // Stop, drop, and roll has a sleep call. This would delay the test, and is not necessary. CallAsync(human, /mob/living/verb/resist) + //since resist() is a verb that possibly queues its actual execution for the next tick, we need to make the subsystem that handles the delayed execution process + //the callback. either that or sleep ourselves and see if it ran. + SSverb_manager.run_verb_queue() + TEST_ASSERT(human.fire_stacks < 5, "Human did not lower fire stacks after resisting") diff --git a/code/modules/unit_tests/ruin_placement.dm b/code/modules/unit_tests/ruin_placement.dm new file mode 100644 index 000000000000..1df3560ed710 --- /dev/null +++ b/code/modules/unit_tests/ruin_placement.dm @@ -0,0 +1,53 @@ +/datum/unit_test/ruin_placement/Run() + var/datum/map_zone/mapzone = SSmapping.create_map_zone("Ruin Testing Zone") + for(var/planet_name as anything in SSmapping.planet_types) + var/datum/planet_type/planet_type = SSmapping.planet_types[planet_name] + for(var/ruin_name as anything in SSmapping.ruin_types_list[planet_type.ruin_type]) + var/datum/map_template/ruin/ruin = SSmapping.ruin_types_list[planet_type.ruin_type][ruin_name] + var/datum/virtual_level/vlevel = SSmapping.create_virtual_level( + ruin.name, + list(ZTRAIT_MINING = TRUE, ZTRAIT_BASETURF = planet_type.default_baseturf), + mapzone, + ruin.width, + ruin.height + ) + + ruin.load(vlevel.get_unreserved_bottom_left_turf()) + + var/list/errors = atmosscan(TRUE, TRUE) + //errors += powerdebug(TRUE) + + for(var/error in errors) + Fail("Mapping error in [ruin_name]: [error]", ruin.mappath, 1) + + vlevel.clear_reservation() + qdel(vlevel) + + qdel(mapzone) + +/* Slow, and usually unecessary +/datum/unit_test/direct_tmpl_placement/Run() + SSair.is_test_loading = TRUE + var/datum/map_zone/mapzone = SSmapping.create_map_zone("Template Testing Zone") + for(var/ship_name as anything in SSmapping.map_templates) + var/datum/map_template/template = SSmapping.map_templates[ship_name] + var/datum/virtual_level/vlevel = SSmapping.create_virtual_level( + template.name, + list(), + mapzone, + template.width, + template.height + ) + + template.load(vlevel.get_unreserved_bottom_left_turf()) + + var/list/errors = atmosscan(TRUE) + //errors += powerdebug(TRUE) + + for(var/error in errors) + Fail("Mapping error in [ship_name]: [error]", template.mappath, 1) + + vlevel.clear_reservation() + qdel(vlevel) + SSair.is_test_loading = FALSE +*/ diff --git a/code/modules/unit_tests/say.dm b/code/modules/unit_tests/say.dm index db686aa7db8f..d3fa6e6cdfc7 100644 --- a/code/modules/unit_tests/say.dm +++ b/code/modules/unit_tests/say.dm @@ -19,5 +19,5 @@ TEST_ASSERT_EQUAL(mods[mod_key], expected_mods[mod_key], "The value for [mod_key] was not what we expected. Message: [message]") expected_mods -= mod_key - if (expected_mods.len) - Fail("Some message mods were expected, but were not returned by get_message_mods: [json_encode(expected_mods)]. Message: [message]") + TEST_ASSERT(!expected_mods.len, + "Some message mods were expected, but were not returned by get_message_mods: [json_encode(expected_mods)]. Message: [message]") diff --git a/code/modules/unit_tests/ship_outpost_placement.dm b/code/modules/unit_tests/ship_outpost_placement.dm index 6042f42d5fd6..e1e27097ee6f 100644 --- a/code/modules/unit_tests/ship_outpost_placement.dm +++ b/code/modules/unit_tests/ship_outpost_placement.dm @@ -1,19 +1,11 @@ /datum/unit_test/ship_outpost_placement/Run() - SSair.is_test_loading = TRUE for(var/mapname as anything in SSmapping.ship_purchase_list) var/datum/map_template/shuttle/map = SSmapping.ship_purchase_list[mapname] try // they'll spawn in empty space, and won't be docked new /datum/overmap/ship/controlled(list("x" = 1, "y" = 1), map) catch(var/exception/e) - Fail("Runtime error loading ship type ([map.name]): [e] on [e.file]:[e.line]\n[e.desc]") - SSair.is_test_loading = FALSE - - var/list/errors = atmosscan(TRUE) - errors += powerdebug(TRUE) - - for(var/error in errors) - Fail("[error]") + TEST_FAIL("Runtime error loading ship type ([map.name]): [e] on [e.file]:[e.line]\n[e.desc]") for(var/outpost_type in subtypesof(/datum/overmap/outpost)) var/datum/overmap/outpost/test_outpost = new outpost_type() @@ -28,8 +20,17 @@ found_dock = TRUE break if(!found_dock) - Fail("[cur_ship.source_template.name] was unable to dock with [test_outpost.type]!") + TEST_FAIL("[cur_ship.source_template.name] was unable to dock with [test_outpost.type]!") // keeps ships ready for the next test, and stops us from loading 50 duplicate hangars if(cur_ship.docked_to) cur_ship.Undock(TRUE) + + var/list/errors = atmosscan(TRUE) + errors += powerdebug(TRUE) + + for(var/error in errors) + TEST_FAIL("Mapping error: [error]") + + for(var/datum/overmap/ship/controlled/deleting_ship as anything in SSovermap.controlled_ships) + qdel(deleting_ship) diff --git a/code/modules/unit_tests/species_unique_id.dm b/code/modules/unit_tests/species_unique_id.dm new file mode 100644 index 000000000000..d9fc2f288c91 --- /dev/null +++ b/code/modules/unit_tests/species_unique_id.dm @@ -0,0 +1,14 @@ +/** + * Every species should use a species ID unique to it and it alone. This test runs through every subtype of /datum/species, and checks for a species ID. + * Every ID is written to a list, gathered_species_ids, and if a previously written ID is written again, this test will fail. + */ +/datum/unit_test/species_unique_id + +/datum/unit_test/species_unique_id/Run() + var/list/gathered_species_ids = list() + for(var/datum/species/species as anything in subtypesof(/datum/species)) + var/species_id = initial(species.id) + if(gathered_species_ids[species_id]) + TEST_FAIL("Duplicate species ID! [species_id] is not unique to a single species.") + else + gathered_species_ids[species_id] = TRUE diff --git a/code/modules/unit_tests/species_whitelists.dm b/code/modules/unit_tests/species_whitelists.dm index 145f3a259fc2..ec05d0cf9f8f 100644 --- a/code/modules/unit_tests/species_whitelists.dm +++ b/code/modules/unit_tests/species_whitelists.dm @@ -2,4 +2,4 @@ for(var/typepath in subtypesof(/datum/species)) var/datum/species/S = typepath if(initial(S.changesource_flags) == NONE) - Fail("A species type was detected with no changesource flags: [S]") + TEST_FAIL("A species type was detected with no changesource flags: [S]") diff --git a/code/modules/unit_tests/stack_singular_name.dm b/code/modules/unit_tests/stack_singular_name.dm new file mode 100644 index 000000000000..739efb54d6a4 --- /dev/null +++ b/code/modules/unit_tests/stack_singular_name.dm @@ -0,0 +1,18 @@ +/** + * Goes through every subtype of /obj/item/stack to check for a singular name, var/singular_name. + * Everything within the blacklist does not need to be tested because it exists to be overriden. + * This test will fail if a subtype of /obj/item/stack is missing a singular name. + */ +/datum/unit_test/stack_singular_name + +/datum/unit_test/stack_singular_name/Run() + var/list/blacklist = list( // all of these are generally parents that exist to be overriden; ex. /obj/item/stack/license_plates exists to branch into /filled and /empty + /obj/item/stack/sheet, + /obj/item/stack/sheet/mineral, + /obj/item/stack/license_plates, + /obj/item/stack/sheet/animalhide, + ) + + for(var/obj/item/stack/stack_check as anything in subtypesof(/obj/item/stack) - blacklist) + if(!initial(stack_check.singular_name)) + TEST_FAIL("[stack_check] is missing a singular name!") diff --git a/code/modules/unit_tests/subsystem_init.dm b/code/modules/unit_tests/subsystem_init.dm index 7d5473bc1bb7..c377302ba6a1 100644 --- a/code/modules/unit_tests/subsystem_init.dm +++ b/code/modules/unit_tests/subsystem_init.dm @@ -4,4 +4,4 @@ if(ss.flags & SS_NO_INIT) continue if(!ss.initialized) - Fail("[ss]([ss.type]) is a subsystem meant to initialize but doesn't get set as initialized.") + TEST_FAIL("[ss]([ss.type]) is a subsystem meant to initialize but doesn't get set as initialized.") diff --git a/code/modules/unit_tests/subsystem_metric_sanity.dm b/code/modules/unit_tests/subsystem_metric_sanity.dm index 44e375b7535b..c062e60ae4ab 100644 --- a/code/modules/unit_tests/subsystem_metric_sanity.dm +++ b/code/modules/unit_tests/subsystem_metric_sanity.dm @@ -2,21 +2,21 @@ /datum/unit_test/subsystem_metric_sanity/Run() for(var/datum/controller/subsystem/SS in Master.subsystems) if(SS.ss_id == initial(SS.ss_id)) // initial() works here because ss_id is set at runtime during /New() - Fail("[SS.type] has no SS ID, somehow!") + TEST_FAIL("[SS.type] has no SS ID, somehow!") continue var/list/data = SS.get_metrics() if(length(data) != 3) - Fail("SS[SS.ss_id] has invalid metrics data!") + TEST_FAIL("SS[SS.ss_id] has invalid metrics data!") continue if(isnull(data["cost"])) - Fail("SS[SS.ss_id] has invalid metrics data! No 'cost' found in [json_encode(data)]") + TEST_FAIL("SS[SS.ss_id] has invalid metrics data! No 'cost' found in [json_encode(data)]") continue if(isnull(data["tick_usage"])) - Fail("SS[SS.ss_id] has invalid metrics data! No 'tick_usage' found in [json_encode(data)]") + TEST_FAIL("SS[SS.ss_id] has invalid metrics data! No 'tick_usage' found in [json_encode(data)]") continue if(isnull(data["custom"])) - Fail("SS[SS.ss_id] has invalid metrics data! No 'custom' found in [json_encode(data)]") + TEST_FAIL("SS[SS.ss_id] has invalid metrics data! No 'custom' found in [json_encode(data)]") continue if(!islist(data["custom"])) - Fail("SS[SS.ss_id] has invalid metrics data! 'custom' is not a list in [json_encode(data)]") + TEST_FAIL("SS[SS.ss_id] has invalid metrics data! 'custom' is not a list in [json_encode(data)]") continue diff --git a/code/modules/unit_tests/supply_pack.dm b/code/modules/unit_tests/supply_pack.dm index 37ba56b7865b..ca4c1154ca6a 100644 --- a/code/modules/unit_tests/supply_pack.dm +++ b/code/modules/unit_tests/supply_pack.dm @@ -9,4 +9,4 @@ value += rep.total_value[thing] if(value >= pack.cost) - Fail("[pack] ([pack_type]) was resold for [value], [value - pack.cost] greater than the buy price of [pack.cost]!") + TEST_FAIL("[pack] ([pack_type]) was resold for [value], [value - pack.cost] greater than the buy price of [pack.cost]!") diff --git a/code/modules/unit_tests/timer_sanity.dm b/code/modules/unit_tests/timer_sanity.dm index d92323a5253f..dbdf3f6d8e8d 100644 --- a/code/modules/unit_tests/timer_sanity.dm +++ b/code/modules/unit_tests/timer_sanity.dm @@ -1,3 +1,3 @@ /datum/unit_test/timer_sanity/Run() - if(SStimer.bucket_count < 0) - Fail("SStimer is going into negative bucket count from something") + TEST_ASSERT(SStimer.bucket_count >= 0, + "SStimer is going into negative bucket count from something") diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm index 4a1e5f37906e..7240adb33855 100644 --- a/code/modules/unit_tests/unit_test.dm +++ b/code/modules/unit_tests/unit_test.dm @@ -3,7 +3,7 @@ Usage: Override /Run() to run your test code -Call Fail() to fail the test (You should specify a reason) +Call TEST_FAIL() to fail the test (You should specify a reason) You may use /New() and /Destroy() for setup/teardown respectively @@ -28,6 +28,8 @@ GLOBAL_VAR(test_log) /// The type of turf to allocate for the testing zone var/test_turf_type = /turf/open/floor/plasteel + ///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 @@ -36,6 +38,9 @@ GLOBAL_VAR(test_log) var/static/datum/map_zone/mapzone +/proc/cmp_unit_test_priority(datum/unit_test/a, datum/unit_test/b) + return initial(a.priority) - initial(b.priority) + /datum/unit_test/New() if (isnull(mapzone)) var/height = 7 @@ -58,15 +63,15 @@ GLOBAL_VAR(test_log) return ..() /datum/unit_test/proc/Run() - Fail("Run() called parent or not implemented") + TEST_FAIL("Run() called parent or not implemented") -/datum/unit_test/proc/Fail(reason = "No reason") +/datum/unit_test/proc/Fail(reason = "No reason", file = "OUTDATED_TEST", line = 1) succeeded = FALSE if(!istext(reason)) reason = "FORMATTED: [reason != null ? reason : "NULL"]" - LAZYADD(fail_reasons, reason) + LAZYADD(fail_reasons, list(list(reason, file, line))) /// Allocates an instance of the provided type, and places it somewhere in an available loc /// Instances allocated through this proc will be destroyed when the test is over @@ -80,37 +85,62 @@ GLOBAL_VAR(test_log) allocated += instance return instance +/proc/RunUnitTest(test_path, list/test_results) + var/datum/unit_test/test = new test_path + + GLOB.current_test = test + var/duration = REALTIMEOFDAY + + test.Run() + + duration = REALTIMEOFDAY - duration + GLOB.current_test = null + GLOB.failed_any_test |= !test.succeeded + + var/list/log_entry = list( + "[test.succeeded ? TEST_OUTPUT_GREEN("PASS") : TEST_OUTPUT_RED("FAIL")]: [test_path] [duration / 10]s", + ) + var/list/fail_reasons = test.fail_reasons + + for(var/reasonID in 1 to LAZYLEN(fail_reasons)) + var/text = fail_reasons[reasonID][1] + var/file = fail_reasons[reasonID][2] + var/line = fail_reasons[reasonID][3] + + /// Github action annotation. + log_world("::error file=[file],line=[line],title=[test_path]::[text]") + + // Normal log message + log_entry += "\tREASON #[reasonID]: [text] at [file]:[line]" + + var/message = log_entry.Join("\n") + log_test(message) + + test_results[test_path] = list("status" = test.succeeded ? UNIT_TEST_PASSED : UNIT_TEST_FAILED, "message" = message, "name" = test_path) + + qdel(test) + /proc/RunUnitTests() CHECK_TICK - var/tests_to_run = subtypesof(/datum/unit_test) + var/list/tests_to_run = subtypesof(/datum/unit_test) + 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)) - tests_to_run = list(test_to_run) - break - - for(var/I in tests_to_run) - var/datum/unit_test/test = new I - - GLOB.current_test = test - var/duration = REALTIMEOFDAY - - test.Run() - - duration = REALTIMEOFDAY - duration - GLOB.current_test = null - GLOB.failed_any_test |= !test.succeeded + focused_tests += _test_to_run - var/list/log_entry = list("[test.succeeded ? "PASS" : "FAIL"]: [I] [duration / 10]s") - var/list/fail_reasons = test.fail_reasons + if(length(focused_tests)) + tests_to_run = focused_tests - qdel(test) + tests_to_run = sortTim(tests_to_run, /proc/cmp_unit_test_priority) - for(var/J in 1 to LAZYLEN(fail_reasons)) - log_entry += "\tREASON #[J]: [fail_reasons[J]]" - log_test(log_entry.Join("\n")) + var/list/test_results = list() - CHECK_TICK + for(var/unit_path in tests_to_run) + CHECK_TICK //We check tick first because the unit test we run last may be so expensive that checking tick will lock up this loop forever + RunUnitTest(unit_path, test_results) SSticker.force_ending = TRUE + //We have to call this manually because del_text can preceed us, and SSticker doesn't fire in the post game + SSticker.declare_completion() diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index c5050d08c0b7..53b49ab30f0b 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -197,9 +197,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/bundles_TC/firestarter name = "Spetsnaz Pyro bundle" - desc = "For systematic suppression of carbon lifeforms in close quarters: Contains a lethal New Russian backpack spray, Elite hardsuit, \ - Stechkin APS pistol, two magazines, a minibomb and a stimulant syringe. \ - Order NOW and comrade Boris will throw in an extra tracksuit." + desc = "For systematic suppression of carbon lifeforms in close quarters: Contains a lethal backpack spray, Elite hardsuit, \ + Stechkin APS pistol, two magazines, a minibomb and a stimulant syringe." item = /obj/item/storage/backpack/duffelbag/syndie/firestarter cost = 30 include_modes = list(/datum/game_mode/nuclear) @@ -767,7 +766,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) name = "10mm Incendiary Magazine" desc = "An additional 8-round 10mm magazine; compatible with the Stechkin Pistol. \ Loaded with incendiary rounds which inflict little damage, but ignite the target." - item = /obj/item/ammo_box/magazine/m10mm/fire + item = /obj/item/ammo_box/magazine/m10mm/inc cost = 2 exclude_modes = list(/datum/game_mode/nuclear/clown_ops) @@ -889,8 +888,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 9 /datum/uplink_item/ammo/machinegun/hollow - name = "7.12x82mm (Hollow-Point) Box Magazine" - desc = "A 50-round magazine of 7.12x82mm ammunition for use in the L6 SAW; equipped with hollow-point tips to help \ + name = "7.12x82mm (hollow point) Box Magazine" + desc = "A 50-round magazine of 7.12x82mm ammunition for use in the L6 SAW; equipped with hollow point tips to help \ with the unarmored masses of crew." item = /obj/item/ammo_box/magazine/mm712x82/hollow @@ -898,7 +897,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) name = "7.12x82mm (Incendiary) Box Magazine" desc = "A 50-round magazine of 7.12x82mm ammunition for use in the L6 SAW; tipped with a special flammable \ mixture that'll ignite anyone struck by the bullet. Some men just want to watch the world burn." - item = /obj/item/ammo_box/magazine/mm712x82/incen + item = /obj/item/ammo_box/magazine/mm712x82/inc /datum/uplink_item/ammo/machinegun/match name = "7.12x82mm (Match) Box Magazine" diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm index a0d3c6d13c7d..a785ba5985d7 100644 --- a/code/modules/vehicles/atv.dm +++ b/code/modules/vehicles/atv.dm @@ -44,25 +44,29 @@ /obj/vehicle/ridden/atv/turret/Moved() . = ..() - if(turret) - turret.forceMove(get_turf(src)) - switch(dir) - if(NORTH) - turret.pixel_x = base_pixel_x - turret.pixel_y = base_pixel_y + 4 - turret.layer = ABOVE_MOB_LAYER - if(EAST) - turret.pixel_x = base_pixel_x - 12 - turret.pixel_y = base_pixel_y + 4 - turret.layer = OBJ_LAYER - if(SOUTH) - turret.pixel_x = base_pixel_x - turret.pixel_y = base_pixel_y + 4 - turret.layer = OBJ_LAYER - if(WEST) - turret.pixel_x = base_pixel_x + 12 - turret.pixel_y = base_pixel_y + 4 - turret.layer = OBJ_LAYER + if(!turret) + return + var/turf/our_turf = get_turf(src) + if(!our_turf) + return + turret.forceMove(our_turf) + switch(dir) + if(NORTH) + turret.pixel_x = base_pixel_x + turret.pixel_y = base_pixel_y + 4 + turret.layer = ABOVE_MOB_LAYER + if(EAST) + turret.pixel_x = base_pixel_x - 12 + turret.pixel_y = base_pixel_y + 4 + turret.layer = OBJ_LAYER + if(SOUTH) + turret.pixel_x = base_pixel_x + turret.pixel_y = base_pixel_y + 4 + turret.layer = OBJ_LAYER + if(WEST) + turret.pixel_x = base_pixel_x + 12 + turret.pixel_y = base_pixel_y + 4 + turret.layer = OBJ_LAYER /obj/vehicle/ridden/atv/attackby(obj/item/W as obj, mob/user as mob, params) if(W.tool_behaviour == TOOL_WELDER && user.a_intent != INTENT_HARM) diff --git a/code/modules/vehicles/cars/car.dm b/code/modules/vehicles/cars/car.dm index 4fde603ee8c7..6b53fa9a02c3 100644 --- a/code/modules/vehicles/cars/car.dm +++ b/code/modules/vehicles/cars/car.dm @@ -80,7 +80,7 @@ if(occupant_amount() >= max_occupants) return FALSE var/atom/old_loc = loc - if(do_mob(forcer, M, get_enter_delay(M), extra_checks=CALLBACK(src, /obj/vehicle/sealed/car/proc/is_car_stationary, old_loc))) + if(do_mob(forcer, M, get_enter_delay(M), extra_checks=CALLBACK(src, TYPE_PROC_REF(/obj/vehicle/sealed/car, is_car_stationary), old_loc))) mob_forced_enter(M, silent) return TRUE return FALSE diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index 80511d5ea153..e9addbd2d5bf 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -27,7 +27,7 @@ var/mob/living/carbon/human/H = M if(H.mind && H.mind.assigned_role == "Clown") //Ensures only clowns can drive the car. (Including more at once) add_control_flags(H, VEHICLE_CONTROL_DRIVE|VEHICLE_CONTROL_PERMISSION) - RegisterSignal(H, COMSIG_MOB_CLICKON, .proc/FireCannon) + RegisterSignal(H, COMSIG_MOB_CLICKON, PROC_REF(FireCannon)) M.log_message("has entered [src] as a possible driver", LOG_ATTACK) return add_control_flags(M, VEHICLE_CONTROL_KIDNAPPED) @@ -125,7 +125,7 @@ visible_message("[user] presses one of the colorful buttons on [src], and the clown car turns on its singularity disguise system.") icon = 'icons/obj/singularity.dmi' icon_state = "singularity_s1" - addtimer(CALLBACK(src, .proc/ResetIcon), 100) + addtimer(CALLBACK(src, PROC_REF(ResetIcon)), 100) if(4) visible_message("[user] presses one of the colorful buttons on [src], and the clown car spews out a cloud of laughing gas.") var/datum/reagents/R = new/datum/reagents(300) @@ -138,7 +138,7 @@ if(5) visible_message("[user] presses one of the colorful buttons on [src], and the clown car starts dropping an oil trail.") droppingoil = TRUE - addtimer(CALLBACK(src, .proc/StopDroppingOil), 30) + addtimer(CALLBACK(src, PROC_REF(StopDroppingOil)), 30) if(6) visible_message("[user] presses one of the colorful buttons on [src], and the clown car lets out a comedic toot.") playsound(src, 'sound/vehicles/clowncar_fart.ogg', 100) @@ -160,7 +160,7 @@ cannonmode = FALSE flick("clowncar_fromfire", src) icon_state = "clowncar" - addtimer(CALLBACK(src, .proc/LeaveCannonMode), 20) + addtimer(CALLBACK(src, PROC_REF(LeaveCannonMode)), 20) playsound(src, 'sound/vehicles/clowncar_cannonmode2.ogg', 75) visible_message("The [src] starts going back into mobile mode.") else @@ -168,7 +168,7 @@ flick("clowncar_tofire", src) icon_state = "clowncar_fire" visible_message("The [src] opens up and reveals a large cannon.") - addtimer(CALLBACK(src, .proc/EnterCannonMode), 20) + addtimer(CALLBACK(src, PROC_REF(EnterCannonMode)), 20) playsound(src, 'sound/vehicles/clowncar_cannonmode1.ogg', 75) diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm index b70ea004fd37..6dee79d6e69a 100644 --- a/code/modules/vehicles/scooter.dm +++ b/code/modules/vehicles/scooter.dm @@ -141,7 +141,7 @@ if(location) location.hotspot_expose(1000,1000) sparks.start() //the most radical way to start plasma fires - addtimer(CALLBACK(src, .proc/grind), 2) + addtimer(CALLBACK(src, PROC_REF(grind)), 2) return else grinding = FALSE diff --git a/code/modules/vehicles/vehicle_actions.dm b/code/modules/vehicles/vehicle_actions.dm index 26335d43f03d..18841271cfc0 100644 --- a/code/modules/vehicles/vehicle_actions.dm +++ b/code/modules/vehicles/vehicle_actions.dm @@ -225,5 +225,5 @@ if(locate(/obj/structure/table) in V.loc.contents) V.grinding = TRUE V.icon_state = "[V.board_icon]-grind" - addtimer(CALLBACK(V, /obj/vehicle/ridden/scooter/skateboard/.proc/grind), 2) + addtimer(CALLBACK(V, TYPE_PROC_REF(/obj/vehicle/ridden/scooter/skateboard, grind)), 2) next_ollie = world.time + 5 diff --git a/code/modules/vehicles/wheelchair.dm b/code/modules/vehicles/wheelchair.dm index e9dc5d9b6488..1f6c96bc0c01 100644 --- a/code/modules/vehicles/wheelchair.dm +++ b/code/modules/vehicles/wheelchair.dm @@ -23,7 +23,7 @@ /obj/vehicle/ridden/wheelchair/ComponentInitialize() //Since it's technically a chair I want it to have chair properties . = ..() - AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, .proc/can_user_rotate),CALLBACK(src, .proc/can_be_rotated),null) + AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, PROC_REF(can_user_rotate)),CALLBACK(src, PROC_REF(can_be_rotated)),null) /obj/vehicle/ridden/wheelchair/obj_destruction(damage_flag) new /obj/item/stack/rods(drop_location(), 1) diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 1941d81accbe..caf9b6afa757 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -65,7 +65,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C var/vend_ready = TRUE ///Next world time to send a purchase message var/purchase_message_cooldown - ///Last mob to shop with us + ///The ref of the last mob to shop with us var/last_shopper var/tilted = FALSE var/tiltable = TRUE @@ -804,10 +804,10 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C D.adjust_money(price_to_use) SSblackbox.record_feedback("amount", "vending_spent", price_to_use) log_econ("[price_to_use] credits were inserted into [src] by [D.account_holder] to buy [R].") - if(last_shopper != usr || purchase_message_cooldown < world.time) + if(last_shopper != REF(usr) || purchase_message_cooldown < world.time) say("Thank you for shopping with [src]!") purchase_message_cooldown = world.time + 5 SECONDS - last_shopper = usr + last_shopper = REF(usr) use_power(5) if(icon_vend) //Show the vending animation if needed flick(icon_vend,src) @@ -1040,10 +1040,10 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C S.forceMove(drop_location()) loaded_items-- use_power(5) - if(last_shopper != usr || purchase_message_cooldown < world.time) + if(last_shopper != REF(usr) || purchase_message_cooldown < world.time) say("Thank you for buying local and purchasing [S]!") purchase_message_cooldown = world.time + 5 SECONDS - last_shopper = usr + last_shopper = REF(usr) vend_ready = TRUE updateUsrDialog() return diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 6eed73786620..4bca9034dd9b 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -52,7 +52,6 @@ /obj/item/clothing/head/pirate = 1, /obj/item/clothing/head/bandana = 1, /obj/item/clothing/head/bandana = 1, - /obj/item/clothing/under/costume/soviet = 1, /obj/item/clothing/head/trapper = 1, /obj/item/clothing/suit/imperium_monk = 1, /obj/item/clothing/mask/gas/cyborg = 1, diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 17a6ec2da484..5732b2b2f6c5 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -111,12 +111,13 @@ /obj/item/clothing/under/syndicate/tacticool/skirt = 1, /obj/item/clothing/mask/balaclava = 1, /obj/item/clothing/head/trapper = 1, - /obj/item/clothing/under/costume/soviet = 1, /obj/item/storage/belt/fannypack/black = 2, /obj/item/clothing/suit/jacket/letterman_syndie = 1, /obj/item/clothing/under/costume/jabroni = 1, /obj/item/clothing/suit/vapeshirt = 1, - /obj/item/clothing/under/costume/geisha = 1) + /obj/item/clothing/under/costume/geisha = 1, + /obj/item/clothing/under/rank/centcom/officer/replica = 1, + /obj/item/clothing/under/rank/centcom/officer_skirt/replica = 1) premium = list( /obj/item/clothing/under/suit/checkered = 1, /obj/item/clothing/suit/jacket/leather = 1, diff --git a/code/modules/vending/liberation.dm b/code/modules/vending/liberation.dm index f4456cc740e5..d2fb11bfef4b 100644 --- a/code/modules/vending/liberation.dm +++ b/code/modules/vending/liberation.dm @@ -17,7 +17,7 @@ /obj/item/gun/ballistic/shotgun/automatic/combat = 2, /obj/item/gun/ballistic/automatic/gyropistol = 1, /obj/item/gun/ballistic/shotgun = 2, - /obj/item/gun/ballistic/automatic/assualt/ar = 2) + /obj/item/gun/ballistic/automatic/assault/ar = 2) premium = list( /obj/item/ammo_box/magazine/smgm9mm = 2, /obj/item/ammo_box/magazine/m50 = 4, diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index c1dfa757d6ee..1e9a3460f064 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -161,7 +161,7 @@ ) voucher_items = list( - "NT-AK" = /obj/item/gun/ballistic/automatic/assualt/ak47/nt) //if im being honest, theres no point in addiing other options when this is clearly the best + "NT-AK" = /obj/item/gun/ballistic/automatic/assault/ak47/nt) //if im being honest, theres no point in addiing other options when this is clearly the best /obj/item/gun_voucher name = "security weapon voucher" diff --git a/code/modules/vending/sovietsoda.dm b/code/modules/vending/sovietsoda.dm index 599e2d22bbdb..0f80bf5324bc 100644 --- a/code/modules/vending/sovietsoda.dm +++ b/code/modules/vending/sovietsoda.dm @@ -3,7 +3,7 @@ desc = "Old sweet water vending machine." icon_state = "sovietsoda" light_mask = "soviet-light-mask" - product_ads = "For Tsar and Country.;Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem." + product_ads = "Have you fulfilled your nutrition quota today?;Very nice!;We are simple people, for this is all we eat.;If there is a person, there is a problem. If there is no person, then there is no problem." products = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/soda = 30) contraband = list(/obj/item/reagent_containers/food/drinks/drinkingglass/filled/cola = 20) resistance_flags = FIRE_PROOF diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 42ecc4ce697e..a774f048f443 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -512,3 +512,33 @@ /obj/item/vending_refill/wardrobe/det_wardrobe machine_name = "DetDrobe" + + +/obj/machinery/vending/wardrobe/cent_wardrobe + name = "\improper CentDrobe" + desc = "A one-of-a-kind vending machine for all your centcom aesthetic needs!" + icon_state = "centdrobe" + product_ads = "Show those ERTs who's the most stylish in the briefing room!" + vend_reply = "Thank you for using the CentDrobe!" + products = list( + /obj/item/clothing/shoes/laceup = 3, + /obj/item/clothing/shoes/jackboots = 3, + /obj/item/clothing/gloves/combat = 3, + /obj/item/clothing/glasses/sunglasses = 3, + /obj/item/clothing/under/rank/centcom/commander = 3, + /obj/item/clothing/under/rank/centcom/centcom_skirt = 3, + /obj/item/clothing/under/rank/centcom/intern = 3, + /obj/item/clothing/under/rank/centcom/official = 3, + /obj/item/clothing/under/rank/centcom/officer = 3, + /obj/item/clothing/under/rank/centcom/officer_skirt = 3, + /obj/item/clothing/suit/toggle/armor/vest/centcom_formal = 3, + /obj/item/clothing/suit/space/officer = 3, + /obj/item/clothing/suit/hooded/wintercoat/centcom = 3, + /obj/item/clothing/head/centcom_cap = 3, + /obj/item/clothing/head/centhat = 3, + /obj/item/clothing/head/intern = 3, + ) + refill_canister = /obj/item/vending_refill/wardrobe/cent_wardrobe +/obj/item/vending_refill/wardrobe/cent_wardrobe + machine_name = "CentDrobe" + light_color = LIGHT_COLOR_ELECTRIC_GREEN diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm index 640308d0bf1c..dbd88b20c582 100644 --- a/code/modules/zombie/organs.dm +++ b/code/modules/zombie/organs.dm @@ -30,7 +30,7 @@ /obj/item/organ/zombie_infection/Remove(mob/living/carbon/M, special = 0) . = ..() STOP_PROCESSING(SSobj, src) - if(iszombie(M) && old_species && !special) + if(iszombie(M) && old_species && !QDELETED(M) && !special) M.set_species(old_species) if(timer_id) deltimer(timer_id) @@ -63,7 +63,7 @@ not even death can stop, you will rise again!") var/revive_time = rand(revive_time_min, revive_time_max) var/flags = TIMER_STOPPABLE - timer_id = addtimer(CALLBACK(src, .proc/zombify, owner), revive_time, flags) + timer_id = addtimer(CALLBACK(src, PROC_REF(zombify), owner), revive_time, flags) /obj/item/organ/zombie_infection/proc/zombify(mob/living/carbon/C) timer_id = null diff --git a/config/atmos_mix.txt b/config/atmos_mix.txt deleted file mode 100644 index f7b21b503dd7..000000000000 --- a/config/atmos_mix.txt +++ /dev/null @@ -1,14 +0,0 @@ -## HOW TO MIX A BATCH -## First, unzip... wait, wrong docs - -## How to configure an atmos mix for a planet: -## each entry is designed as follows: -## WHITESANDS_ATMOS_MIX <% of mix> - -## White Sands Atmospheric mix configuration - -WHITESANDS_ATMOS_MOLES 103.98 - -WHITESANDS_ATMOS_MIX o2 0.105 -WHITESANDS_ATMOS_MIX co2 0.105 -WHITESANDS_ATMOS_MIX n2 0.79 diff --git a/config/awaymissionconfig.txt b/config/awaymissionconfig.txt deleted file mode 100644 index 5c685d825e0a..000000000000 --- a/config/awaymissionconfig.txt +++ /dev/null @@ -1,23 +0,0 @@ -#List the potential random Z-levels here. -#Maps must be the full path to them -#Maps should be 255x255 or smaller and be bounded. Falling off the edge of the map will result in undefined behavior. -#SPECIFYING AN INVALID MAP WILL RESULT IN RUNTIMES ON GAME START - -#!!IMPORTANT NOTES FOR HOSTING AWAY MISSIONS!!: -#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/blackmarketpackers.dmm -#_maps/RandomZLevels/spacebattle.dmm -#_maps/RandomZLevels/TheBeach.dmm -#_maps/RandomZLevels/Academy.dmm -#_maps/RandomZLevels/wildwest.dmm -#_maps/RandomZLevels/challenge.dmm -#_maps/RandomZLevels/centcomAway.dmm -#_maps/RandomZLevels/moonoutpost19.dmm -#_maps/RandomZLevels/undergroundoutpost45.dmm -#_maps/RandomZLevels/caves.dmm -#_maps/RandomZLevels/snowdin.dmm -#_maps/RandomZLevels/research.dmm -#_maps/RandomZLevels/SnowCabin.dmm -_maps/RandomZLevels/VR/snowdin_VR.dmm diff --git a/config/config.txt b/config/config.txt index 89dd495066eb..0cdece6b6a16 100644 --- a/config/config.txt +++ b/config/config.txt @@ -338,6 +338,9 @@ NOTE_FRESH_DAYS 91.31055 ## Notes older then this will be completely faded out. NOTE_STALE_DAYS 365.2422 +## Uncomment to allow drastic performence enhancemet measures to turn on automatically once there are equal or more clients than the configured amount (will also prompt admin for veto) +#AUTO_LAG_SWITCH_POP 75 + ##Note: all population caps can be used with each other if desired. ## Uncomment for 'soft' population caps, players will be warned while joining if the living crew exceeds the listed number. diff --git a/config/external_rsc_urls.txt b/config/external_rsc_urls.txt deleted file mode 100644 index 16d6faf653e8..000000000000 --- a/config/external_rsc_urls.txt +++ /dev/null @@ -1 +0,0 @@ -http://url_goes_here/shiptest.zip diff --git a/config/iceruinblacklist.txt b/config/iceruinblacklist.txt deleted file mode 100644 index 031188b80de3..000000000000 --- a/config/iceruinblacklist.txt +++ /dev/null @@ -1,18 +0,0 @@ -#Listing maps here will blacklist them from generating in the ice moon. -#Maps must be the full path to them -#A list of maps valid to blacklist can be found in _maps\RandomRuins\IceRuins -#SPECIFYING AN INVALID MAP WILL RESULT IN RUNTIMES ON GAME START - -##RESPAWN -#_maps/RandomRuins/IceRuins/icemoon_surface_slimerancher.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_hermit.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_oldstation.dmm - -##MISC -#_maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_newcops.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_brazillianlab.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_burnies_lair.dmm -#_maps/RandomRuins/IceRuins/icemoon_underground_wendigo_cave.dmm diff --git a/config/jobs.txt b/config/jobs.txt deleted file mode 100644 index a266110233d0..000000000000 --- a/config/jobs.txt +++ /dev/null @@ -1,50 +0,0 @@ -#This allows easy configuration of the number of positions allowed for each job -#Format is: [Job name]=[total positions],[spawn positions] -#Job names must be identical to the title var of each job datum -#Positions can be set to -1 to allow unlimited slots -Captain=1,1 -Head of Personnel=1,1 -Head of Security=1,1 -Chief Engineer=1,1 -Research Director=1,1 -Chief Medical Officer=1,1 - -Assistant=-1,-1 -Prisoner=0,2 - -Quartermaster=1,1 -Cargo Technician=3,2 -Shaft Miner=3,3 - -Bartender=1,1 -Cook=2,1 -Botanist=3,2 -Janitor=2,1 - -Clown=1,1 -Mime=1,1 -Curator=1,1 -Lawyer=2,2 - -Chaplain=1,1 - -Station Engineer=5,5 -Atmospheric Technician=3,2 - -Medical Doctor=5,3 -Paramedic=2,2 -Chemist=2,2 -Geneticist=2,2 -Virologist=1,1 -Psychologist=1,1 - -Scientist=5,3 -Roboticist=2,2 - -Warden=1,1 -Detective=1,1 -Security Officer=5,5 -Brig Physician=1,1 - -AI=0,1 -Cyborg=0,1 diff --git a/config/jungleruinblacklist.txt b/config/jungleruinblacklist.txt deleted file mode 100644 index faf518fde632..000000000000 --- a/config/jungleruinblacklist.txt +++ /dev/null @@ -1,27 +0,0 @@ -#Listing maps here will blacklist them from generating in jungle planets -#Maps must be the full path to them -#A list of maps valid to blacklist can be found in _maps\RandomRuins\JungleRuins -#SPECIFYING AN INVALID MAP WILL RESULT IN RUNTIMES ON GAME START - -#_maps/RandomRuins/JungleRuins/jungle_botany.dmm -#_maps/RandomRuins/JungleRuins/jungle_demon.dmm -#_maps/RandomRuins/JungleRuins/jungle_hangar.dmm -#_maps/RandomRuins/JungleRuins/jungle_nest.dmm -#_maps/RandomRuins/JungleRuins/jungle_pirate.dmm -#_maps/RandomRuins/JungleRuins/jungle_pizzawave.dmm -#_maps/RandomRuins/JungleRuins/jungle_seedling.dmm -#_maps/RandomRuins/JungleRuins/jungle_spider.dmm -#_maps/RandomRuins/JungleRuins/jungle_surface_abandonedsolgov.dmm -#_maps/RandomRuins/JungleRuins/jungle_surface_coffinpirate.dmm -#_maps/RandomRuins/JungleRuins/jungle_surface_ikea_ai.dmm -#_maps/RandomRuins/JungleRuins/jungle_surface_ninjashrine.dmm -#_maps/RandomRuins/JungleRuins/jungle_surface_roommates.dmm -#_maps/RandomRuins/JungleRuins/jungle_surface_tumblr_sexyman.dmm -#_maps/RandomRuins/JungleRuins/jungle_surface_unabomber_cabin.dmm -#_maps/RandomRuins/JungleRuins/jungle_surface_weed_shack.dmm -#_maps/RandomRuins/JungleRuins/jungle_syndicate.dmm -#_maps/RandomRuins/JungleRuins/jungle_village.dmm -#_maps/RandomRuins/JungleRuins/jungle_witch.dmm -#_maps/RandomRuins/JungleRuins/jungle_medtech_outbreak.dmm -#_maps/RandomRuins/JungleRuins/jungle_interceptor.dmm -#_maps/RandomRuins/JungleRuins/jungle_paradise.dmm diff --git a/config/lavaruinblacklist.txt b/config/lavaruinblacklist.txt deleted file mode 100644 index 973b402ba7a1..000000000000 --- a/config/lavaruinblacklist.txt +++ /dev/null @@ -1,43 +0,0 @@ -#Listing maps here will blacklist them from generating in lavaland. -#Maps must be the full path to them -#A list of maps valid to blacklist can be found in _maps\RandomRuins\LavaRuins -#SPECIFYING AN INVALID MAP WILL RESULT IN RUNTIMES ON GAME START - -##BIODOMES -#_maps/RandomRuins/LavaRuins/lavaland_surface_biodome_winter.dmm -#_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm -#_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_cube.dmm - -##RESPAWN -#_maps/RandomRuins/LavaRuins/lavaland_surface_seed_vault.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm - -##SIN -#_maps/RandomRuins/LavaRuins/lavaland_surface_envy.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_gluttony.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_pride.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_sloth.dmm - -##MISC -#_maps/RandomRuins/LavaRuins/lavaland_surface_automated_trade_outpost.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_ww_vault.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_automated_trade_outpost.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_wwiioutpost.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_tomb.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_hierophant.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_fountain_hall.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_comm_outpost.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_hermit.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_swarmer_crash.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_gaia.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm -#_maps/RandomRuins/LavaRuins/lavaland_surface_crashed_pinnance.dmm diff --git a/config/maps.txt b/config/maps.txt deleted file mode 100644 index 23a0a19dcd45..000000000000 --- a/config/maps.txt +++ /dev/null @@ -1,66 +0,0 @@ -This file contains a list of maps for use in map rotation. -#Lines starting with # are ignored. -Lines not inside map blocks are also ignored -Duplicated entries use the latter one. -All whitespace at the start and end of lines is ignored. (including indentation, thats just for show) -Format: -#map [map name] (name of .json file in _maps folder without the .json part) - minplayers [number] (0 or less disables this requirement) - maxplayers [number] (0 or less disables this requirement) - default (The last map with this defined will get all votes of players who have not explicitly voted for a map) - voteweight [number] (How much to count each player vote as, defaults to 1, setting to 0.5 counts each vote as half a vote, 2 as double, etc, Setting to 0 disables the map but allows players to still pick it) - disabled (disables the map) - votable (is this map votable) -endmap - -map salvage - default - votable -endmap - -map amogus - votable -endmap - -map diner - votable -endmap - -map minigalaxy - votable -endmap - -map engineergaming - votable -endmap - -map bubble - votable -endmap - - -# Whiteships - -map boxship - votable -endmap - -map deltaship - votable -endmap - -map metaship - votable -endmap - -map midwayship - votable -endmap - -map pubbyship - votable -endmap - -map skipper - votable -endmap diff --git a/config/resources.txt b/config/resources.txt index 9cf9bea30a06..3a852e483ad8 100644 --- a/config/resources.txt +++ b/config/resources.txt @@ -3,7 +3,7 @@ # If you set this mutiple times, the server will rotate between the links. # To use this, the compile option PRELOAD_RSC must be set to 0 to keep byond from preloading resources -EXTERNAL_RSC_URLS http://cdn.white-sands.space/rsc/tgstation.rsc +#EXTERNAL_RSC_URLS http://url_goes_here/shiptest.zip ######################## diff --git a/config/rockruinblacklist.txt b/config/rockruinblacklist.txt deleted file mode 100644 index e38e248cd109..000000000000 --- a/config/rockruinblacklist.txt +++ /dev/null @@ -1,29 +0,0 @@ -#Listing maps here will blacklist them from generating in rock planets -#Maps must be the full path to them -#A list of maps valid to blacklist can be found in _maps\RandomRuins\RockRuins -#SPECIFYING AN INVALID MAP WILL RESULT IN RUNTIMES ON GAME START - -#_maps/RandomRuins/RockRuins/rockplanet_boxsci.dmm -#_maps/RandomRuins/RockRuins/rockplanet_chaosmarine.dmm -#_maps/RandomRuins/RockRuins/rockplanet_clock.dmm -#_maps/RandomRuins/RockRuins/rockplanet_clowncrash.dmm -#_maps/RandomRuins/RockRuins/rockplanet_crash_cult.dmm -#_maps/RandomRuins/RockRuins/rockplanet_crash_kitchen.dmm -#_maps/RandomRuins/RockRuins/rockplanet_cult.dmm -#_maps/RandomRuins/RockRuins/rockplanet_dangerpod.dmm -#_maps/RandomRuins/RockRuins/rockplanet_daniel.dmm -#_maps/RandomRuins/RockRuins/rockplanet_fortress_of_solitide.dmm -#_maps/RandomRuins/RockRuins/rockplanet_heirophant.dmm -#_maps/RandomRuins/RockRuins/rockplanet_house.dmm -#_maps/RandomRuins/RockRuins/rockplanet_lab.dmm -#_maps/RandomRuins/RockRuins/rockplanet_miningexpedition.dmm -#_maps/RandomRuins/RockRuins/rockplanet_moth.dmm -#_maps/RandomRuins/RockRuins/rockplanet_ore_proccessing_facility.dmm -#_maps/RandomRuins/RockRuins/rockplanet_pandora.dmm -#_maps/RandomRuins/RockRuins/rockplanet_pioneer.dmm -#_maps/RandomRuins/RockRuins/rockplanet_pod.dmm -#_maps/RandomRuins/RockRuins/rockplanet_rd_god.dmm -#_maps/RandomRuins/RockRuins/rockplanet_soviet.dmm -#_maps/RandomRuins/RockRuins/rockplanet_tradepost.dmm -#_maps/RandomRuins/RockRuins/rockplanet_unhonorable.dmm -#_maps/RandomRuins/RockRuins/rockplanet_wizard.dmm diff --git a/config/sandruinblacklist.txt b/config/sandruinblacklist.txt deleted file mode 100644 index f54299fc4e44..000000000000 --- a/config/sandruinblacklist.txt +++ /dev/null @@ -1,12 +0,0 @@ -#Listing maps here will blacklist them from generating on the sand planet. -#Maps must be the full path to them -#A list of maps valid to blacklist can be found in _maps\RandomRuins\IceRuins -#SPECIFYING AN INVALID MAP WILL RESULT IN RUNTIMES ON GAME START - -##MISC -#_maps/RandomRuins/SandRuins/whitesands_surface_hermit.dmm -#_maps/RandomRuins/SandRuins/whitesands_surface_solgovcrash.dmm -#_maps/RandomRuins/SandRuins/crash_kitchen.dmm -#_maps/RandomRuins/SandRuins/crash_bar.dmm -#_maps/RandomRuins/SandRuins/crash_cargo.dmm -#_maps/RandomRuins/SandRuins/crash_cult.dmm diff --git a/config/spaceruinblacklist.txt b/config/spaceruinblacklist.txt deleted file mode 100644 index f7116456ed5f..000000000000 --- a/config/spaceruinblacklist.txt +++ /dev/null @@ -1,42 +0,0 @@ -#Listing maps here will blacklist them from generating in space. -#Maps must be the full path to them -#A list of maps valid to blacklist can be found in _maps\RandomRuins\SpaceRuins -#SPECIFYING AN INVALID MAP WILL RESULT IN RUNTIMES ON GAME START - -#_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm -#_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm -#_maps/RandomRuins/SpaceRuins/bigderelict1.dmm -#_maps/RandomRuins/SpaceRuins/bus.dmm -#_maps/RandomRuins/SpaceRuins/caravanambush.dmm -#_maps/RandomRuins/SpaceRuins/clericden.dmm -#_maps/RandomRuins/SpaceRuins/cloning_facility.dmm -#_maps/RandomRuins/SpaceRuins/clownplanet.dmm -#_maps/RandomRuins/SpaceRuins/crashedclownship.dmm -#_maps/RandomRuins/SpaceRuins/crashedship.dmm -#_maps/RandomRuins/SpaceRuins/deepstorage.dmm -#_maps/RandomRuins/SpaceRuins/djstation.dmm -#_maps/RandomRuins/SpaceRuins/emptyshell.dmm -#_maps/RandomRuins/SpaceRuins/Fast_Food.dmm -#_maps/RandomRuins/SpaceRuins/gasthelizards.dmm -#_maps/RandomRuins/SpaceRuins/gondolaasteroid.dmm -#_maps/RandomRuins/SpaceRuins/hilbertshoteltestingsite.dmm -#_maps/RandomRuins/SpaceRuins/intactemptyship.dmm -#_maps/RandomRuins/SpaceRuins/listeningstation.dmm -#_maps/RandomRuins/SpaceRuins/mechtransport.dmm -#_maps/RandomRuins/SpaceRuins/mrow_thats_right -#_maps/RandomRuins/SpaceRuins/oldAIsat.dmm -#_maps/RandomRuins/SpaceRuins/oldstation.dmm -#_maps/RandomRuins/SpaceRuins/oldteleporter.dmm -#_maps/RandomRuins/SpaceRuins/onehalf.dmm -#_maps/RandomRuins/SpaceRuins/power_puzzle.dmm -#_maps/RandomRuins/SpaceRuins/scav_mining.dmm -#_maps/RandomRuins/SpaceRuins/shuttlerelic.dmm -#_maps/RandomRuins/SpaceRuins/spacegym.dmm -#_maps/RandomRuins/SpaceRuins/spacehotel.dmm -#_maps/RandomRuins/SpaceRuins/thederelict.dmm -#_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm -#_maps/RandomRuins/SpaceRuins/vaporwave.dmm -#_maps/RandomRuins/SpaceRuins/way_home.dmm -#_maps/RandomRuins/SpaceRuins/whiteshipdock.dmm -#_maps/RandomRuins/SpaceRuins/whiteshipruin_box.dmm -#_maps/RandomRuins/SpaceRuins/forgottenship.dmm diff --git a/dependencies.sh b/dependencies.sh index ad77caaddd75..84ba6b96feab 100755 --- a/dependencies.sh +++ b/dependencies.sh @@ -11,7 +11,7 @@ export BYOND_MINOR=1588 export RUST_VERSION=1.67.0 #rust_g git tag -export RUST_G_VERSION=1.2.0 +export RUST_G_VERSION=3.0.0 #node version export NODE_VERSION=16 @@ -27,4 +27,4 @@ export PYTHON_VERSION=3.7.9 export AUXMOS_REPO=https://github.com/shiptest-ss13/auxmos #auxmos version -export AUXMOS_VERSION=v1.1.0 +export AUXMOS_VERSION=v1.2.6 diff --git a/html/changelogs/archive/2023-09.yml b/html/changelogs/archive/2023-09.yml index dd0ce607f9ba..00dee846f56b 100644 --- a/html/changelogs/archive/2023-09.yml +++ b/html/changelogs/archive/2023-09.yml @@ -34,3 +34,126 @@ - bugfix: Most rocks are now visible again - rscadd: Most flora files now have missing texture sprites to make it easier to spot when something has gone wrong. +2023-09-09: + Zevotech: + - bugfix: fixed the icon states for junglebushes a, b, and c. +2023-09-10: + GenericDM: + - bugfix: The SolGov surgical cap no longer turns invisible when handled. +2023-09-11: + Dethstorm: + - rscadd: new stuff to wasteplanet_unhonorable + - rscadd: new areas for wasteplanet_unhonorable +2023-09-14: + Apogee-dev: + - balance: nerfed some outlier rifle cartridges for consistency + - rscdel: Removed guns and ammo from sec spawn outfits + BarteG44: + - rscadd: Added a voice log for the wideband + Bjarl: + - rscdel: monkey and wishgranter code + MarkSuckerberg: + - admin: Adds lag switch toggles from /tg/, ONLY use them when the lag becomes unbearable! + PositiveEntropy, tf-4: + - rscadd: Adds the CentVend inside Central Command! You're now able to vend Central + Command clothing items for all your commanding needs! + - rscadd: 'Nanotrasen has added a new outfit for Special Ops Officers to enjoy, + instead of a simple leather jacket: The CentCom Officer''s Coat!' + - rscadd: Re-adds the CentCom Official's suit, making it the default clothing option + for CentCom Officials! The turtlenecks have instead been made to be the standard + ERT uniform. + - imageadd: Thanks to a collaboration between the frontier sector and the core sector, + the parade jackets now boast new and varied apperances for all to enjoy, with + a new parade jacket releasing for the Head of Security! + - imageadd: In no short effort than the finest of tailors, the captain's hat, the + centcom hat, the captain's jumpsuit and the captain's carapace now have finer + gold trims and the finest quality leather available, making them more vibrant + for all! + - imageadd: In no short effort of our best tailors, every Central Command outfit + have been either redesigned or reshaded! All of them! + Skrem7: + - spellcheck: Bodies that lack ownership are no longer described as "soulless" + - spellcheck: typo moment in nt-svg rifle ammo type + Zevotech: + - rscadd: exosuit fabricatiors can now be connected to the RND server via multitool + ritorizo: + - rscadd: Body bags in the autolathe. + thgvr: + - admin: Improved admin build mode menu and Drop pods from tgstation + - rscdel: ion storms are removed +2023-09-15: + FalloutFalcon: + - rscadd: better rations + - rscdel: rationpack spawns + MarkSuckerberg: + - rscdel: Gang and revs gamemode (the gear remains) + - admin: Removes SSjob, occupations are now stored in a global list +2023-09-16: + Pickle-Coding: + - bugfix: Allows the supermatter crystal to produce gases while powered, even in + absolutely empty turfs, excluding space turfs. +2023-09-18: + Skrem7: + - tweak: The NT 'Boarder' ARG now loads standard P-16 magazines, rather than the + M-90gl toploaders. + - balance: Standardizes pellet projectiles to lose 10% damage of both types per + tile across the board. Improvised pellets no longer have a hardcapped 1-8 tile + range. + - balance: Less-lethal rounds now do 50% more stamina than the force of their lethal + counterparts, with 25% the normal force and double the negative AP. If the round + had positive or zero AP, it was subtracted by 20. + - balance: Shotgun slugs do 40 damage, down from 60, but have zero AP, rather than + -10. FRAG-12 and meteor slugs have had their damage adjusted to reflect their + relative force. + - balance: Surplus rifle fire_delay has been cut to 1 second from 3. + - balance: Any DMR, match, or sniper round now travels slightly faster than other + bullets. Shotgun slugs and pellets now travel slightly slower than other bullets. + - balance: Match rounds have had their AP slightly increased. + - bugfix: Fixed WT-550 magazines not displaying properly. + - spellcheck: Went over (almost) every single ballistic description, including the + guns themselves, magazines, ballistic casings, and speed loaders/stripper clips + to not only have better consistency and readability, but also be more clear + on the general effectiveness of each caliber. + - spellcheck: Assualt is gone. + - code_imp: Repaths/renames most ballistic ammo pathing to maintain consistency + or take advantage of inherits, when possible. +2023-09-20: + RKz, Jacquerel: + - rscadd: New foodtype, GORE. Split from GROSS, GORE foodtype will be replacing + it where the food in particular resembles a corpse or organ. GROSS should only + apply to inedible or rotting foods. (baseball burgers) + - balance: All butchered player species are considered to be gore, only preferred + by Lizards, Arachnids, Kepori, Slimepeople and Flies. If you like the taste + of your fellow(or rival) crew, prepare accordingly. + - balance: Moved food preferences around to make more sense with the current system. + Nothing drastic, but species liked foods should be much more immersive in general. + Skrem7: + - rscadd: Adds the double eyepatch, a blindfold made by adding a normal eyepatch + to another + - tweak: Eyepatches can now swap sides with ALT+CLICK + - balance: Cybernetic organs can no longer require replacement due to EMPs (they + do not suffer permanent damage) + spockye: + - bugfix: temp fixed the jukebox(with subtypes) so they appear in the mapmaker +2023-09-23: + Apogee-dev: + - tweak: Removed RnD from the Colossus and updated its looks +2023-09-25: + retlaw34, Ebin-Halcyon, triplezeta: + - rscadd: IRMG Pointman hardsuit, admin only at the moment + - rscadd: Resprites and reworks the Cybersun hardsuit a little + - rscadd: Cybersun Medical technician hardsuit + - rscdel: Old cybersun hardsuit, It was unused anyways + - tweak: Extremely minor Blood red hardsuit sprite tweaks +2023-09-26: + MarkSuckerberg: + - tweak: Firebots now extinguish turf fires. +2023-09-27: + Zevotech: + - rscadd: Remaps the Skipper Heavy Cruiser + - rscadd: Adds an Atmos Tech, Cargo Tech and Cook job slot to the skipper + - rscdel: Removes two engineer slots from the skipper. +2023-09-28: + PositiveEntropy: + - rscadd: New SolGov outfits now exist, including a winter coat! + - rscadd: The Logistics Deck Officer is now a possible job for SolGov ships! diff --git a/html/changelogs/archive/2023-10.yml b/html/changelogs/archive/2023-10.yml new file mode 100644 index 000000000000..34dc45ee6419 --- /dev/null +++ b/html/changelogs/archive/2023-10.yml @@ -0,0 +1,101 @@ +2023-10-01: + PositiveEntropy: + - rscadd: Prescription glasses have been added to the Paracelsus, as well as the + meson variant in the engineering closets! + - rscadd: Universal enzyme can now be found in the Paracelsus' freezer! + - rscadd: Adds a variety of solarian folders throughout the ship and in the clerical + supplies crate! + - bugfix: The Psychologist's Office Airlock is now properly labeled. + - bugfix: The solarian hat now displays its sprite as it should. + Zevotech: + - rscadd: Remapped wasteplanet_pandora.dmm + axelzonvolt: + - tweak: ID access on a glass windoor + meemofcourse: + - rscdel: you can no longer bypass image sanitization with tables + spockye: + - bugfix: fixed a couple errors on the corvus class +2023-10-02: + thgvr: + - rscadd: Added an option for Sarathi to have ears, in the frills slot of character + creation. +2023-10-07: + Zytolg: + - imageadd: All forms and beds and bedsheets now have directional sprites. + - code_imp: Made Double Beds craftable at the request of Rylie. Have fun with that. + meemofcourse: + - rscadd: You can now build lightswitch frames from an autolathe +2023-10-11: + FalloutFalcon: + - bugfix: fixed multiple bugs and oversights with rations +2023-10-16: + BarteG44: + - bugfix: fixed a few issues with the Box class + - bugfix: fixed a few issues with the Li-tieguai class + spockye: + - rscadd: adds the Heron Class Dreadnaught + thgvr: + - bugfix: Lugol is now admin spawn only +2023-10-17: + Zytolg: + - rscadd: Added the Floating Resort to Beaches. Enjoy your moment in paradise! +2023-10-18: + Auris456852: + - tweak: You can now take individual rounds out of an ammo box in your pocket by + alt-clicking! + Bjarl: + - balance: The cepheus's starting gear has been nerfed. + BogCreature: + - tweak: fish should no longer starve to death + - bugfix: the mech equipment panel works again + - bugfix: limbgrower legs should no longer runtime instead of spawning + - bugfix: crystal legion hearts inheriting the wrong sprites + - bugfix: vending machines falsely listing their prices as "free" + - bugfix: normal fulltile firelocks should build properly now + - bugfix: disposal pipes no longer generate metal when ejecting items through reinforced + plating + - bugfix: jukebox sprites + - bugfix: players can no longer telepathically fiddle with the zippers of bags + Doubleumc: + - tweak: Replaced Boyardee tiny fans with a holofield + meemofcourse: + - rscdel: Russian Battle Coat, Russian Uniform, Russian Officer Uniform, Russian + Helmet, Russian Boots, Russian Balaclava + - imagedel: Deleted sprites relating to the outfits above. + - rscdel: Stalinium and Capitalist Golems + - rscdel: Derelict Drones + - tweak: The butterbear is now on the Frontiersmen team. + - tweak: Modified the list of laws that an AI may recieve from being ioned. + - sounddel: The Soviet Anthem and the US Anthem. +2023-10-19: + goober3: + - rscadd: the nt asteroid outpost now has a 56x40 hangar. + - bugfix: outpost hangars should no longer depressurize upon ship docking. + - bugfix: outpost wallmounts and doors have been fixed. please report any floating + extinguishers & hovering intercoms. + - bugfix: the independent outpost should stay powered forever. +2023-10-21: + Skies-Of-Blue: + - bugfix: moth language bind now works as intended + retlaw34: + - rscadd: Two new barsigns +2023-10-22: + spockye: + - rscadd: Added a new jungle ruin "jungle_cavecrew" + - rscadd: Added a new subshuttle "frontiersmen_gut" + - rscadd: Added a neutered subtype of all frontiersmen (doesn't drop guns) + - rscadd: Added new areas for the ruin + - rscadd: Added a subtype of the heavy frontiersmen corpse that lacks the minigun + pack +2023-10-29: + retlaw34: + - rscadd: 22lr and cattleman revolver + - rscadd: many gun sounds + - balance: guns reworked +2023-10-30: + thgvr: + - rscdel: Halloween no longer allows different species in prefs +2023-10-31: + thgvr: + - imageadd: New rachnid sprites! + - imagedel: Removed Rachnid mandibles. diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml new file mode 100644 index 000000000000..4bda09af9bec --- /dev/null +++ b/html/changelogs/archive/2023-11.yml @@ -0,0 +1,25 @@ +2023-11-01: + Zevotech: + - rscdel: Ruin blacklist text files. + - rscdel: Misc. deprecated text files. + Zytolg: + - rscadd: New Rockplanet Ruin + - rscadd: New ship manufacturer sprites. + - code_imp: Repaths areas in rockplanet.dmm to be in line with other ruins. Starts + using rockplanet.dmm. + - code_imp: Code support for Arrow & Axe Dockyard sprites. +2023-11-05: + MarkSuckerberg: + - code_imp: 515 is now supported. + PositiveEntropy: + - imageadd: The leather duster now has a new color palette to match up with the + cowboy hat! +2023-11-08: + PositiveEntropy: + - imageadd: Outfits for independent and Nanotrasen captains have been violently + reworked. + Zevotech: + - bugfix: Fixed snow siding decal pathing + - rscadd: Surrounded snow siding turf decal + meemofcourse: + - rscadd: You can no longer late-join as a character with a repeated name diff --git a/icons/effects/supplypod_pickturf.dmi b/icons/effects/supplypod_pickturf.dmi new file mode 100644 index 000000000000..3ca1131e1a85 Binary files /dev/null and b/icons/effects/supplypod_pickturf.dmi differ diff --git a/icons/effects/supplypod_pickturf_down.dmi b/icons/effects/supplypod_pickturf_down.dmi new file mode 100644 index 000000000000..113fe47540c3 Binary files /dev/null and b/icons/effects/supplypod_pickturf_down.dmi differ diff --git a/icons/misc/buildmode.dmi b/icons/misc/buildmode.dmi index 83ee2a87815a..3a73559091b2 100644 Binary files a/icons/misc/buildmode.dmi and b/icons/misc/buildmode.dmi differ diff --git a/icons/mob/clothing/eyes.dmi b/icons/mob/clothing/eyes.dmi index bdfe41995f6d..9af8d7dc8bba 100644 Binary files a/icons/mob/clothing/eyes.dmi and b/icons/mob/clothing/eyes.dmi differ diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi index cff3d7ac5c34..05e908af6794 100644 Binary files a/icons/mob/clothing/hands.dmi and b/icons/mob/clothing/hands.dmi differ diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index e4344a57d42f..80874741008f 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/mask.dmi b/icons/mob/clothing/mask.dmi index 6345f8e95b7a..90a54af8fa9e 100644 Binary files a/icons/mob/clothing/mask.dmi and b/icons/mob/clothing/mask.dmi differ diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi index 077095b4a4ae..f280cc9b1d0c 100644 Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ diff --git a/icons/mob/clothing/suits/armor.dmi b/icons/mob/clothing/suits/armor.dmi index ca683c1bec46..945861101972 100644 Binary files a/icons/mob/clothing/suits/armor.dmi and b/icons/mob/clothing/suits/armor.dmi differ diff --git a/icons/mob/clothing/suits/hooded.dmi b/icons/mob/clothing/suits/hooded.dmi index 18ae544a659d..a19af8b7aa64 100644 Binary files a/icons/mob/clothing/suits/hooded.dmi and b/icons/mob/clothing/suits/hooded.dmi differ diff --git a/icons/mob/clothing/suits/spacesuits.dmi b/icons/mob/clothing/suits/spacesuits.dmi index 08c7741eae97..6e97b33cd1b7 100644 Binary files a/icons/mob/clothing/suits/spacesuits.dmi and b/icons/mob/clothing/suits/spacesuits.dmi differ diff --git a/icons/mob/clothing/suits/toggle.dmi b/icons/mob/clothing/suits/toggle.dmi index 73b6b92d0a81..2059afd5bf46 100644 Binary files a/icons/mob/clothing/suits/toggle.dmi and b/icons/mob/clothing/suits/toggle.dmi differ diff --git a/icons/mob/clothing/under/centcom.dmi b/icons/mob/clothing/under/centcom.dmi index f76130f1e58b..3f6098a26600 100644 Binary files a/icons/mob/clothing/under/centcom.dmi and b/icons/mob/clothing/under/centcom.dmi differ diff --git a/icons/mob/clothing/under/command.dmi b/icons/mob/clothing/under/command.dmi index 4793c609aed9..fd5f1af01e88 100644 Binary files a/icons/mob/clothing/under/command.dmi and b/icons/mob/clothing/under/command.dmi differ diff --git a/icons/mob/clothing/under/costume.dmi b/icons/mob/clothing/under/costume.dmi index 9757ce544e24..87605b634fa8 100644 Binary files a/icons/mob/clothing/under/costume.dmi and b/icons/mob/clothing/under/costume.dmi differ diff --git a/icons/mob/human_parts.dmi b/icons/mob/human_parts.dmi index f9a4f9cc7874..115688eeca5e 100644 Binary files a/icons/mob/human_parts.dmi and b/icons/mob/human_parts.dmi differ diff --git a/icons/mob/species/lizard/frills.dmi b/icons/mob/species/lizard/frills.dmi index a8cb05855370..b8587a7bd8e2 100644 Binary files a/icons/mob/species/lizard/frills.dmi and b/icons/mob/species/lizard/frills.dmi differ diff --git a/icons/mob/species/lizard/horns.dmi b/icons/mob/species/lizard/horns.dmi index 7367266ed566..d4fa4c2fd6f6 100644 Binary files a/icons/mob/species/lizard/horns.dmi and b/icons/mob/species/lizard/horns.dmi differ diff --git a/icons/mob/species/misc/cat.dmi b/icons/mob/species/misc/cat.dmi index 685110a16114..aaab4f1b8637 100644 Binary files a/icons/mob/species/misc/cat.dmi and b/icons/mob/species/misc/cat.dmi differ diff --git a/icons/mob/species/misc/digitigrade_suits.dmi b/icons/mob/species/misc/digitigrade_suits.dmi index 3cf6722c6463..eaca5e34a629 100644 Binary files a/icons/mob/species/misc/digitigrade_suits.dmi and b/icons/mob/species/misc/digitigrade_suits.dmi differ diff --git a/icons/mob/species/misc/fox.dmi b/icons/mob/species/misc/fox.dmi index 6971b406bce7..da344bb33a3b 100644 Binary files a/icons/mob/species/misc/fox.dmi and b/icons/mob/species/misc/fox.dmi differ diff --git a/icons/mob/species/rachnid/bodyparts.dmi b/icons/mob/species/rachnid/bodyparts.dmi index cef6559f29e7..94fe73ee6a0a 100644 Binary files a/icons/mob/species/rachnid/bodyparts.dmi and b/icons/mob/species/rachnid/bodyparts.dmi differ diff --git a/icons/mob/species/rachnid/spider_legs.dmi b/icons/mob/species/rachnid/spider_legs.dmi index d04b5a719e30..907614753ddd 100644 Binary files a/icons/mob/species/rachnid/spider_legs.dmi and b/icons/mob/species/rachnid/spider_legs.dmi differ diff --git a/icons/mob/species/rachnid/spider_mandibles.dmi b/icons/mob/species/rachnid/spider_mandibles.dmi deleted file mode 100644 index 81b4b29a1262..000000000000 Binary files a/icons/mob/species/rachnid/spider_mandibles.dmi and /dev/null differ diff --git a/icons/mob/species/rachnid/spider_spinneret.dmi b/icons/mob/species/rachnid/spider_spinneret.dmi index 9adf49f05837..6f7fcc9f965c 100644 Binary files a/icons/mob/species/rachnid/spider_spinneret.dmi and b/icons/mob/species/rachnid/spider_spinneret.dmi differ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index bf11a268fa8e..c911e872b62d 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/barsigns.dmi b/icons/obj/barsigns.dmi index 7519969765c6..389dab6b1d87 100644 Binary files a/icons/obj/barsigns.dmi and b/icons/obj/barsigns.dmi differ diff --git a/icons/obj/bedsheets.dmi b/icons/obj/bedsheets.dmi index 414bbc38ed81..56657861f576 100644 Binary files a/icons/obj/bedsheets.dmi and b/icons/obj/bedsheets.dmi differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index c32434c83f1e..45d868f69692 100644 Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index e74978adb047..b072c3645916 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index d71c875e9b3b..25e91b1d8abe 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi index 7e93ef3ede27..89d5ed3328bd 100644 Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index 2f8bf359a59e..efc8359fc5cf 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 4623c94eb756..45153e384f5d 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/suits/armor.dmi b/icons/obj/clothing/suits/armor.dmi index 387a2f40f303..52ae9a6ea8c5 100644 Binary files a/icons/obj/clothing/suits/armor.dmi and b/icons/obj/clothing/suits/armor.dmi differ diff --git a/icons/obj/clothing/suits/hooded.dmi b/icons/obj/clothing/suits/hooded.dmi index 5ced5746e4b7..eaf68b6f9cbd 100644 Binary files a/icons/obj/clothing/suits/hooded.dmi and b/icons/obj/clothing/suits/hooded.dmi differ diff --git a/icons/obj/clothing/suits/spacesuits.dmi b/icons/obj/clothing/suits/spacesuits.dmi index 688709322f5f..7ab05863bf05 100644 Binary files a/icons/obj/clothing/suits/spacesuits.dmi and b/icons/obj/clothing/suits/spacesuits.dmi differ diff --git a/icons/obj/clothing/suits/toggle.dmi b/icons/obj/clothing/suits/toggle.dmi index 5fb84c8759e0..806101d0a455 100644 Binary files a/icons/obj/clothing/suits/toggle.dmi and b/icons/obj/clothing/suits/toggle.dmi differ diff --git a/icons/obj/clothing/under/centcom.dmi b/icons/obj/clothing/under/centcom.dmi index 8ab99ba04f2b..3fd5a370973e 100644 Binary files a/icons/obj/clothing/under/centcom.dmi and b/icons/obj/clothing/under/centcom.dmi differ diff --git a/icons/obj/clothing/under/command.dmi b/icons/obj/clothing/under/command.dmi index 761796ada9e5..d5d48999bec3 100644 Binary files a/icons/obj/clothing/under/command.dmi and b/icons/obj/clothing/under/command.dmi differ diff --git a/icons/obj/clothing/under/security.dmi b/icons/obj/clothing/under/security.dmi index 84d90c19d79a..5572325faaf8 100644 Binary files a/icons/obj/clothing/under/security.dmi and b/icons/obj/clothing/under/security.dmi differ diff --git a/icons/obj/food/ration.dmi b/icons/obj/food/ration.dmi new file mode 100644 index 000000000000..5bcf1f2b490b Binary files /dev/null and b/icons/obj/food/ration.dmi differ diff --git a/icons/obj/guns/48x32guns.dmi b/icons/obj/guns/48x32guns.dmi index 732e37318768..88dc73290622 100644 Binary files a/icons/obj/guns/48x32guns.dmi and b/icons/obj/guns/48x32guns.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 24b209d6ab2b..02e7d3812dcb 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/icons/obj/lavaland/survival_pod.dmi b/icons/obj/lavaland/survival_pod.dmi index 84ea0e1e8320..960a7f24aca3 100644 Binary files a/icons/obj/lavaland/survival_pod.dmi and b/icons/obj/lavaland/survival_pod.dmi differ diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi index 25a990b61d01..ae86489bb340 100644 Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 356f91406367..ff211d21d5c2 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 1ac2c63ed367..90854a704525 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/icons/obj/stack_objects.dmi b/icons/obj/stack_objects.dmi index 1fc4f14abbca..0989e1834f70 100644 Binary files a/icons/obj/stack_objects.dmi and b/icons/obj/stack_objects.dmi differ diff --git a/icons/obj/supplypods.dmi b/icons/obj/supplypods.dmi index d21da6d53ae1..4dfc996f45bc 100644 Binary files a/icons/obj/supplypods.dmi and b/icons/obj/supplypods.dmi differ diff --git a/icons/obj/supplypods_32x32.dmi b/icons/obj/supplypods_32x32.dmi new file mode 100644 index 000000000000..a7607f716f7a Binary files /dev/null and b/icons/obj/supplypods_32x32.dmi differ diff --git a/icons/obj/vending.dmi b/icons/obj/vending.dmi index 97bbe730fac8..06be7b370c0c 100644 Binary files a/icons/obj/vending.dmi and b/icons/obj/vending.dmi differ diff --git a/icons/turf/decals.dmi b/icons/turf/decals.dmi index e14d164289bc..c670e677d226 100644 Binary files a/icons/turf/decals.dmi and b/icons/turf/decals.dmi differ diff --git a/icons/turf/snow.dmi b/icons/turf/snow.dmi index 594a4f91e6c2..6801384e0182 100644 Binary files a/icons/turf/snow.dmi and b/icons/turf/snow.dmi differ diff --git a/rust_g.dll b/rust_g.dll index 059c79e34029..72a27df14403 100644 Binary files a/rust_g.dll and b/rust_g.dll differ diff --git a/shiptest.dme b/shiptest.dme index 5e7cbba4787b..d2a6852c768f 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -31,6 +31,7 @@ #include "code\__DEFINES\aquarium.dm" #include "code\__DEFINES\atmospherics.dm" #include "code\__DEFINES\atom_hud.dm" +#include "code\__DEFINES\atoms.dm" #include "code\__DEFINES\bitfields.dm" #include "code\__DEFINES\blackmarket.dm" #include "code\__DEFINES\bodyparts.dm" @@ -66,12 +67,14 @@ #include "code\__DEFINES\hud.dm" #include "code\__DEFINES\icon_smoothing.dm" #include "code\__DEFINES\important_recursive_contents.dm" +#include "code\__DEFINES\input.dm" #include "code\__DEFINES\instruments.dm" #include "code\__DEFINES\interaction_flags.dm" #include "code\__DEFINES\inventory.dm" #include "code\__DEFINES\is_helpers.dm" #include "code\__DEFINES\jobs.dm" #include "code\__DEFINES\keybinding.dm" +#include "code\__DEFINES\lag_switch.dm" #include "code\__DEFINES\language.dm" #include "code\__DEFINES\layers.dm" #include "code\__DEFINES\lighting.dm" @@ -140,6 +143,7 @@ #include "code\__DEFINES\turfs.dm" #include "code\__DEFINES\typeids.dm" #include "code\__DEFINES\vehicles.dm" +#include "code\__DEFINES\verb_manager.dm" #include "code\__DEFINES\vv.dm" #include "code\__DEFINES\wall_dents.dm" #include "code\__DEFINES\wires.dm" @@ -157,6 +161,7 @@ #include "code\__HELPERS\cmp.dm" #include "code\__HELPERS\config.dm" #include "code\__HELPERS\dates.dm" +#include "code\__HELPERS\datums.dm" #include "code\__HELPERS\dna.dm" #include "code\__HELPERS\files.dm" #include "code\__HELPERS\filters.dm" @@ -170,6 +175,7 @@ #include "code\__HELPERS\matrices.dm" #include "code\__HELPERS\mobs.dm" #include "code\__HELPERS\mouse_control.dm" +#include "code\__HELPERS\nameof.dm" #include "code\__HELPERS\names.dm" #include "code\__HELPERS\priority_announce.dm" #include "code\__HELPERS\pronouns.dm" @@ -217,6 +223,7 @@ #include "code\_globalvars\lists\client.dm" #include "code\_globalvars\lists\faxes.dm" #include "code\_globalvars\lists\flavor_misc.dm" +#include "code\_globalvars\lists\jobs.dm" #include "code\_globalvars\lists\keybindings.dm" #include "code\_globalvars\lists\maintenance_loot.dm" #include "code\_globalvars\lists\mapping.dm" @@ -250,7 +257,6 @@ #include "code\_onclick\hud\credits.dm" #include "code\_onclick\hud\devil.dm" #include "code\_onclick\hud\drones.dm" -#include "code\_onclick\hud\families.dm" #include "code\_onclick\hud\fullscreen.dm" #include "code\_onclick\hud\generic_dextrous.dm" #include "code\_onclick\hud\ghost.dm" @@ -314,8 +320,8 @@ #include "code\controllers\subsystem\idlenpcpool.dm" #include "code\controllers\subsystem\input.dm" #include "code\controllers\subsystem\ipintel.dm" -#include "code\controllers\subsystem\job.dm" #include "code\controllers\subsystem\jukeboxes.dm" +#include "code\controllers\subsystem\lag_switch.dm" #include "code\controllers\subsystem\language.dm" #include "code\controllers\subsystem\lighting.dm" #include "code\controllers\subsystem\machines.dm" @@ -359,11 +365,11 @@ #include "code\controllers\subsystem\title.dm" #include "code\controllers\subsystem\traumas.dm" #include "code\controllers\subsystem\turf_fire.dm" +#include "code\controllers\subsystem\verb_manager.dm" #include "code\controllers\subsystem\vis_overlays.dm" #include "code\controllers\subsystem\vote.dm" #include "code\controllers\subsystem\weather.dm" #include "code\controllers\subsystem\processing\fastprocess.dm" -#include "code\controllers\subsystem\processing\fields.dm" #include "code\controllers\subsystem\processing\fluids.dm" #include "code\controllers\subsystem\processing\instruments.dm" #include "code\controllers\subsystem\processing\nanites.dm" @@ -414,6 +420,7 @@ #include "code\datums\soullink.dm" #include "code\datums\spawners_menu.dm" #include "code\datums\tgs_event_handler.dm" +#include "code\datums\verb_callbacks.dm" #include "code\datums\verbs.dm" #include "code\datums\view.dm" #include "code\datums\weakrefs.dm" @@ -449,7 +456,9 @@ #include "code\datums\components\butchering.dm" #include "code\datums\components\caltrop.dm" #include "code\datums\components\chasm.dm" +#include "code\datums\components\connect_containers.dm" #include "code\datums\components\connect_loc_behalf.dm" +#include "code\datums\components\connect_range.dm" #include "code\datums\components\construction.dm" #include "code\datums\components\creamed.dm" #include "code\datums\components\deadchat_control.dm" @@ -702,6 +711,11 @@ #include "code\datums\mutations\speech.dm" #include "code\datums\mutations\telekinesis.dm" #include "code\datums\mutations\touch.dm" +#include "code\datums\proximity_monitor\field.dm" +#include "code\datums\proximity_monitor\proximity_monitor.dm" +#include "code\datums\proximity_monitor\fields\gravity.dm" +#include "code\datums\proximity_monitor\fields\peaceborg_dampener.dm" +#include "code\datums\proximity_monitor\fields\timestop.dm" #include "code\datums\ruins\beachplanet.dm" #include "code\datums\ruins\icemoon.dm" #include "code\datums\ruins\jungle.dm" @@ -811,13 +825,9 @@ #include "code\game\gamemodes\dynamic\dynamic_rulesets_midround.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets_roundstart.dm" #include "code\game\gamemodes\extended\extended.dm" -#include "code\game\gamemodes\gang\gang.dm" -#include "code\game\gamemodes\gang\gang_things.dm" #include "code\game\gamemodes\meteor\meteor.dm" #include "code\game\gamemodes\meteor\meteors.dm" -#include "code\game\gamemodes\monkey\monkey.dm" #include "code\game\gamemodes\nuclear\nuclear.dm" -#include "code\game\gamemodes\revolution\revolution.dm" #include "code\game\gamemodes\sandbox\airlock_maker.dm" #include "code\game\gamemodes\sandbox\h_sandbox.dm" #include "code\game\gamemodes\sandbox\sandbox.dm" @@ -888,7 +898,6 @@ #include "code\game\machinery\teleporter.dm" #include "code\game\machinery\transformer.dm" #include "code\game\machinery\washing_machine.dm" -#include "code\game\machinery\wishgranter.dm" #include "code\game\machinery\camera\camera.dm" #include "code\game\machinery\camera\camera_assembly.dm" #include "code\game\machinery\camera\motion.dm" @@ -1017,7 +1026,6 @@ #include "code\game\objects\effects\overlays.dm" #include "code\game\objects\effects\particle_emitter.dm" #include "code\game\objects\effects\portals.dm" -#include "code\game\objects\effects\proximity.dm" #include "code\game\objects\effects\radiation.dm" #include "code\game\objects\effects\spiderperson_web.dm" #include "code\game\objects\effects\spiders.dm" @@ -1282,6 +1290,7 @@ #include "code\game\objects\items\storage\firstaid.dm" #include "code\game\objects\items\storage\holsters.dm" #include "code\game\objects\items\storage\lockbox.dm" +#include "code\game\objects\items\storage\ration.dm" #include "code\game\objects\items\storage\secure.dm" #include "code\game\objects\items\storage\sixpack.dm" #include "code\game\objects\items\storage\storage.dm" @@ -1303,6 +1312,7 @@ #include "code\game\objects\structures\barsigns.dm" #include "code\game\objects\structures\bedsheet_bin.dm" #include "code\game\objects\structures\catwalk.dm" +#include "code\game\objects\structures\crateshelf.dm" #include "code\game\objects\structures\curtains.dm" #include "code\game\objects\structures\destructible_structures.dm" #include "code\game\objects\structures\displaycase.dm" @@ -1436,6 +1446,7 @@ #include "code\game\turfs\open\floor\catwalk_plating.dm" #include "code\game\turfs\open\floor\conc_floor.dm" #include "code\game\turfs\open\floor\fancy_floor.dm" +#include "code\game\turfs\open\floor\hangar.dm" #include "code\game\turfs\open\floor\hull.dm" #include "code\game\turfs\open\floor\light_floor.dm" #include "code\game\turfs\open\floor\mineral_floor.dm" @@ -1658,15 +1669,10 @@ #include "code\modules\antagonists\disease\disease_event.dm" #include "code\modules\antagonists\disease\disease_mob.dm" #include "code\modules\antagonists\ert\ert.dm" -#include "code\modules\antagonists\fugitive\fugitive.dm" #include "code\modules\antagonists\fugitive\fugitive_outfits.dm" -#include "code\modules\antagonists\fugitive\fugitive_ship.dm" -#include "code\modules\antagonists\fugitive\hunter.dm" -#include "code\modules\antagonists\gang\gang.dm" #include "code\modules\antagonists\gang\outfits.dm" #include "code\modules\antagonists\greentext\greentext.dm" #include "code\modules\antagonists\magic_servant\servant.dm" -#include "code\modules\antagonists\monkey\monkey.dm" #include "code\modules\antagonists\morph\morph.dm" #include "code\modules\antagonists\morph\morph_antag.dm" #include "code\modules\antagonists\nightmare\nightmare.dm" @@ -1678,13 +1684,11 @@ #include "code\modules\antagonists\nukeop\equipment\nuclearbomb.dm" #include "code\modules\antagonists\nukeop\equipment\pinpointer.dm" #include "code\modules\antagonists\official\official.dm" -#include "code\modules\antagonists\pirate\pirate.dm" #include "code\modules\antagonists\revenant\revenant.dm" #include "code\modules\antagonists\revenant\revenant_abilities.dm" #include "code\modules\antagonists\revenant\revenant_antag.dm" #include "code\modules\antagonists\revenant\revenant_blight.dm" #include "code\modules\antagonists\revenant\revenant_spawn_event.dm" -#include "code\modules\antagonists\revolution\revolution.dm" #include "code\modules\antagonists\santa\santa.dm" #include "code\modules\antagonists\separatist\separatist.dm" #include "code\modules\antagonists\slaughter\slaughter.dm" @@ -1702,7 +1706,6 @@ #include "code\modules\antagonists\traitor\IAA\internal_affairs.dm" #include "code\modules\antagonists\valentines\heartbreaker.dm" #include "code\modules\antagonists\valentines\valentine.dm" -#include "code\modules\antagonists\wishgranter\wishgranter.dm" #include "code\modules\antagonists\wizard\wizard.dm" #include "code\modules\antagonists\wizard\equipment\artefact.dm" #include "code\modules\antagonists\wizard\equipment\soulstone.dm" @@ -1824,9 +1827,13 @@ #include "code\modules\buildmode\submodes\basic.dm" #include "code\modules\buildmode\submodes\boom.dm" #include "code\modules\buildmode\submodes\copy.dm" +#include "code\modules\buildmode\submodes\delete.dm" #include "code\modules\buildmode\submodes\fill.dm" #include "code\modules\buildmode\submodes\map_export.dm" +#include "code\modules\buildmode\submodes\outfit.dm" +#include "code\modules\buildmode\submodes\proccall.dm" #include "code\modules\buildmode\submodes\throwing.dm" +#include "code\modules\buildmode\submodes\tweakcomps.dm" #include "code\modules\buildmode\submodes\variable_edit.dm" #include "code\modules\cargo\bounty.dm" #include "code\modules\cargo\bounty_console.dm" @@ -1970,6 +1977,7 @@ #include "code\modules\clothing\suits\reactive_armour.dm" #include "code\modules\clothing\suits\toggles.dm" #include "code\modules\clothing\suits\utility.dm" +#include "code\modules\clothing\suits\wintercoats.dm" #include "code\modules\clothing\suits\wiz_robe.dm" #include "code\modules\clothing\under\_under.dm" #include "code\modules\clothing\under\accessories.dm" @@ -2031,7 +2039,6 @@ #include "code\modules\events\electrical_storm.dm" #include "code\modules\events\fake_virus.dm" #include "code\modules\events\false_alarm.dm" -#include "code\modules\events\fugitive_spawning.dm" #include "code\modules\events\ghost_role.dm" #include "code\modules\events\grid_check.dm" #include "code\modules\events\heart_attack.dm" @@ -2044,7 +2051,6 @@ #include "code\modules\events\meteor_wave.dm" #include "code\modules\events\nightmare.dm" #include "code\modules\events\operative.dm" -#include "code\modules\events\pirates.dm" #include "code\modules\events\prison_break.dm" #include "code\modules\events\processor_overload.dm" #include "code\modules\events\radiation_storm.dm" @@ -2076,11 +2082,6 @@ #include "code\modules\events\wizard\rpgloot.dm" #include "code\modules\events\wizard\shuffle.dm" #include "code\modules\events\wizard\summons.dm" -#include "code\modules\fields\fields.dm" -#include "code\modules\fields\gravity.dm" -#include "code\modules\fields\peaceborg_dampener.dm" -#include "code\modules\fields\timestop.dm" -#include "code\modules\fields\turf_objects.dm" #include "code\modules\fishing\bait.dm" #include "code\modules\fishing\fish_catalog.dm" #include "code\modules\fishing\fishing_equipment.dm" @@ -2105,6 +2106,7 @@ #include "code\modules\food_and_drinks\food\bait.dm" #include "code\modules\food_and_drinks\food\condiment.dm" #include "code\modules\food_and_drinks\food\customizables.dm" +#include "code\modules\food_and_drinks\food\ration.dm" #include "code\modules\food_and_drinks\food\snacks.dm" #include "code\modules\food_and_drinks\food\snacks_bread.dm" #include "code\modules\food_and_drinks\food\snacks_burgers.dm" @@ -2767,7 +2769,6 @@ #include "code\modules\modular_computers\file_system\programs\cargoship.dm" #include "code\modules\modular_computers\file_system\programs\configurator.dm" #include "code\modules\modular_computers\file_system\programs\file_browser.dm" -#include "code\modules\modular_computers\file_system\programs\jobmanagement.dm" #include "code\modules\modular_computers\file_system\programs\ntdownloader.dm" #include "code\modules\modular_computers\file_system\programs\ntmonitor.dm" #include "code\modules\modular_computers\file_system\programs\ntnrc_client.dm" diff --git a/sound/effects/rip3.ogg b/sound/effects/rip3.ogg new file mode 100644 index 000000000000..de759788867f Binary files /dev/null and b/sound/effects/rip3.ogg differ diff --git a/sound/misc/Cyka Blyat.ogg b/sound/misc/Cyka Blyat.ogg deleted file mode 100644 index ca5c8fd49bef..000000000000 Binary files a/sound/misc/Cyka Blyat.ogg and /dev/null differ diff --git a/sound/misc/Russian_Anthem_chorus.ogg b/sound/misc/Russian_Anthem_chorus.ogg deleted file mode 100644 index 0105eb7f22af..000000000000 Binary files a/sound/misc/Russian_Anthem_chorus.ogg and /dev/null differ diff --git a/sound/misc/capitialism.ogg b/sound/misc/capitialism.ogg deleted file mode 100644 index 8645fc6ed72b..000000000000 Binary files a/sound/misc/capitialism.ogg and /dev/null differ diff --git a/sound/weapons/effects/deflect.ogg b/sound/weapons/effects/deflect.ogg new file mode 100644 index 000000000000..a4e9ed6ba4c0 Binary files /dev/null and b/sound/weapons/effects/deflect.ogg differ diff --git a/sound/weapons/effects/ric1.ogg b/sound/weapons/effects/ric1.ogg deleted file mode 100644 index b7f7bd99ca5a..000000000000 Binary files a/sound/weapons/effects/ric1.ogg and /dev/null differ diff --git a/sound/weapons/effects/ric2.ogg b/sound/weapons/effects/ric2.ogg deleted file mode 100644 index dcd44b07329e..000000000000 Binary files a/sound/weapons/effects/ric2.ogg and /dev/null differ diff --git a/sound/weapons/effects/ric3.ogg b/sound/weapons/effects/ric3.ogg deleted file mode 100644 index c538a97e35a6..000000000000 Binary files a/sound/weapons/effects/ric3.ogg and /dev/null differ diff --git a/sound/weapons/effects/ric4.ogg b/sound/weapons/effects/ric4.ogg deleted file mode 100644 index ac872734beaa..000000000000 Binary files a/sound/weapons/effects/ric4.ogg and /dev/null differ diff --git a/sound/weapons/effects/ric5.ogg b/sound/weapons/effects/ric5.ogg deleted file mode 100644 index 2c946c457d6b..000000000000 Binary files a/sound/weapons/effects/ric5.ogg and /dev/null differ diff --git a/sound/weapons/gun/general/bulletcasing_bounce1.ogg b/sound/weapons/gun/general/bulletcasing_bounce1.ogg new file mode 100644 index 000000000000..c33a27fa5007 Binary files /dev/null and b/sound/weapons/gun/general/bulletcasing_bounce1.ogg differ diff --git a/sound/weapons/gun/general/bulletcasing_bounce2.ogg b/sound/weapons/gun/general/bulletcasing_bounce2.ogg new file mode 100644 index 000000000000..f8d516643b25 Binary files /dev/null and b/sound/weapons/gun/general/bulletcasing_bounce2.ogg differ diff --git a/sound/weapons/gun/general/bulletcasing_bounce3.ogg b/sound/weapons/gun/general/bulletcasing_bounce3.ogg new file mode 100644 index 000000000000..84e670706284 Binary files /dev/null and b/sound/weapons/gun/general/bulletcasing_bounce3.ogg differ diff --git a/sound/weapons/gun/general/bulletcasing_shotgun_bounce.ogg b/sound/weapons/gun/general/bulletcasing_shotgun_bounce.ogg new file mode 100644 index 000000000000..324543b62587 Binary files /dev/null and b/sound/weapons/gun/general/bulletcasing_shotgun_bounce.ogg differ diff --git a/sound/weapons/gun/general/rocket_load.ogg b/sound/weapons/gun/general/rocket_load.ogg new file mode 100644 index 000000000000..4c5a2ec6911d Binary files /dev/null and b/sound/weapons/gun/general/rocket_load.ogg differ diff --git a/sound/weapons/gun/general/selector.ogg b/sound/weapons/gun/general/selector.ogg new file mode 100644 index 000000000000..298181609e49 Binary files /dev/null and b/sound/weapons/gun/general/selector.ogg differ diff --git a/sound/weapons/gun/hit/bullet_bounce1.ogg b/sound/weapons/gun/hit/bullet_bounce1.ogg new file mode 100644 index 000000000000..a8a1fb36f385 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_bounce1.ogg differ diff --git a/sound/weapons/gun/hit/bullet_bounce2.ogg b/sound/weapons/gun/hit/bullet_bounce2.ogg new file mode 100644 index 000000000000..a06a0c320e9e Binary files /dev/null and b/sound/weapons/gun/hit/bullet_bounce2.ogg differ diff --git a/sound/weapons/gun/hit/bullet_bounce3.ogg b/sound/weapons/gun/hit/bullet_bounce3.ogg new file mode 100644 index 000000000000..4313703c760b Binary files /dev/null and b/sound/weapons/gun/hit/bullet_bounce3.ogg differ diff --git a/sound/weapons/gun/hit/bullet_bounce4.ogg b/sound/weapons/gun/hit/bullet_bounce4.ogg new file mode 100644 index 000000000000..a3c2c34ec018 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_bounce4.ogg differ diff --git a/sound/weapons/gun/hit/bullet_bounce5.ogg b/sound/weapons/gun/hit/bullet_bounce5.ogg new file mode 100644 index 000000000000..35b8be603534 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_bounce5.ogg differ diff --git a/sound/weapons/gun/hit/bullet_glass_01.ogg b/sound/weapons/gun/hit/bullet_glass_01.ogg new file mode 100644 index 000000000000..30f6f1fb612b Binary files /dev/null and b/sound/weapons/gun/hit/bullet_glass_01.ogg differ diff --git a/sound/weapons/gun/hit/bullet_glass_02.ogg b/sound/weapons/gun/hit/bullet_glass_02.ogg new file mode 100644 index 000000000000..472f98e9801a Binary files /dev/null and b/sound/weapons/gun/hit/bullet_glass_02.ogg differ diff --git a/sound/weapons/gun/hit/bullet_glass_03.ogg b/sound/weapons/gun/hit/bullet_glass_03.ogg new file mode 100644 index 000000000000..25c6df47a921 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_glass_03.ogg differ diff --git a/sound/weapons/gun/hit/bullet_glass_04.ogg b/sound/weapons/gun/hit/bullet_glass_04.ogg new file mode 100644 index 000000000000..b525f665c414 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_glass_04.ogg differ diff --git a/sound/weapons/gun/hit/bullet_glass_05.ogg b/sound/weapons/gun/hit/bullet_glass_05.ogg new file mode 100644 index 000000000000..89ff21723aac Binary files /dev/null and b/sound/weapons/gun/hit/bullet_glass_05.ogg differ diff --git a/sound/weapons/gun/hit/bullet_glass_06.ogg b/sound/weapons/gun/hit/bullet_glass_06.ogg new file mode 100644 index 000000000000..26cacb990766 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_glass_06.ogg differ diff --git a/sound/weapons/gun/hit/bullet_glass_07.ogg b/sound/weapons/gun/hit/bullet_glass_07.ogg new file mode 100644 index 000000000000..110a45074d17 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_glass_07.ogg differ diff --git a/sound/weapons/gun/hit/bullet_impact1.ogg b/sound/weapons/gun/hit/bullet_impact1.ogg new file mode 100644 index 000000000000..4c0cd5b5eebb Binary files /dev/null and b/sound/weapons/gun/hit/bullet_impact1.ogg differ diff --git a/sound/weapons/gun/hit/bullet_impact2.ogg b/sound/weapons/gun/hit/bullet_impact2.ogg new file mode 100644 index 000000000000..bfffcfeadfaa Binary files /dev/null and b/sound/weapons/gun/hit/bullet_impact2.ogg differ diff --git a/sound/weapons/gun/hit/bullet_impact3.ogg b/sound/weapons/gun/hit/bullet_impact3.ogg new file mode 100644 index 000000000000..0356dc6c8819 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_impact3.ogg differ diff --git a/sound/weapons/gun/hit/bullet_masonry_01.ogg b/sound/weapons/gun/hit/bullet_masonry_01.ogg new file mode 100644 index 000000000000..1a04e7688d63 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_masonry_01.ogg differ diff --git a/sound/weapons/gun/hit/bullet_masonry_02.ogg b/sound/weapons/gun/hit/bullet_masonry_02.ogg new file mode 100644 index 000000000000..770e9e242a7f Binary files /dev/null and b/sound/weapons/gun/hit/bullet_masonry_02.ogg differ diff --git a/sound/weapons/gun/hit/bullet_masonry_03.ogg b/sound/weapons/gun/hit/bullet_masonry_03.ogg new file mode 100644 index 000000000000..c0eb0bf13233 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_masonry_03.ogg differ diff --git a/sound/weapons/gun/hit/bullet_masonry_04.ogg b/sound/weapons/gun/hit/bullet_masonry_04.ogg new file mode 100644 index 000000000000..83cbc57ebd83 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_masonry_04.ogg differ diff --git a/sound/weapons/gun/hit/bullet_masonry_05.ogg b/sound/weapons/gun/hit/bullet_masonry_05.ogg new file mode 100644 index 000000000000..6d9a67304659 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_masonry_05.ogg differ diff --git a/sound/weapons/gun/hit/bullet_masonry_06.ogg b/sound/weapons/gun/hit/bullet_masonry_06.ogg new file mode 100644 index 000000000000..2a982a56edb9 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_masonry_06.ogg differ diff --git a/sound/weapons/gun/hit/bullet_metal_01.ogg b/sound/weapons/gun/hit/bullet_metal_01.ogg new file mode 100644 index 000000000000..1a706abd90c0 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_metal_01.ogg differ diff --git a/sound/weapons/gun/hit/bullet_metal_02.ogg b/sound/weapons/gun/hit/bullet_metal_02.ogg new file mode 100644 index 000000000000..ee938e2a593d Binary files /dev/null and b/sound/weapons/gun/hit/bullet_metal_02.ogg differ diff --git a/sound/weapons/gun/hit/bullet_metal_03.ogg b/sound/weapons/gun/hit/bullet_metal_03.ogg new file mode 100644 index 000000000000..9ede9f161290 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_metal_03.ogg differ diff --git a/sound/weapons/gun/hit/bullet_metal_04.ogg b/sound/weapons/gun/hit/bullet_metal_04.ogg new file mode 100644 index 000000000000..bf6824c8cefd Binary files /dev/null and b/sound/weapons/gun/hit/bullet_metal_04.ogg differ diff --git a/sound/weapons/gun/hit/bullet_metal_05.ogg b/sound/weapons/gun/hit/bullet_metal_05.ogg new file mode 100644 index 000000000000..a45e3d6204e4 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_metal_05.ogg differ diff --git a/sound/weapons/gun/hit/bullet_metal_06.ogg b/sound/weapons/gun/hit/bullet_metal_06.ogg new file mode 100644 index 000000000000..53877b5e8ce6 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_metal_06.ogg differ diff --git a/sound/weapons/gun/hit/bullet_miss1.ogg b/sound/weapons/gun/hit/bullet_miss1.ogg new file mode 100644 index 000000000000..dfff45a0cb5d Binary files /dev/null and b/sound/weapons/gun/hit/bullet_miss1.ogg differ diff --git a/sound/weapons/gun/hit/bullet_miss2.ogg b/sound/weapons/gun/hit/bullet_miss2.ogg new file mode 100644 index 000000000000..54b111128021 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_miss2.ogg differ diff --git a/sound/weapons/gun/hit/bullet_miss3.ogg b/sound/weapons/gun/hit/bullet_miss3.ogg new file mode 100644 index 000000000000..fbff6dde9046 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_miss3.ogg differ diff --git a/sound/weapons/gun/hit/bullet_miss4.ogg b/sound/weapons/gun/hit/bullet_miss4.ogg new file mode 100644 index 000000000000..6392d6676915 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_miss4.ogg differ diff --git a/sound/weapons/gun/hit/bullet_ricochet1.ogg b/sound/weapons/gun/hit/bullet_ricochet1.ogg new file mode 100644 index 000000000000..724f599cd5bd Binary files /dev/null and b/sound/weapons/gun/hit/bullet_ricochet1.ogg differ diff --git a/sound/weapons/gun/hit/bullet_ricochet2.ogg b/sound/weapons/gun/hit/bullet_ricochet2.ogg new file mode 100644 index 000000000000..1c29b9e64e20 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_ricochet2.ogg differ diff --git a/sound/weapons/gun/hit/bullet_ricochet3.ogg b/sound/weapons/gun/hit/bullet_ricochet3.ogg new file mode 100644 index 000000000000..96d470ffe2cb Binary files /dev/null and b/sound/weapons/gun/hit/bullet_ricochet3.ogg differ diff --git a/sound/weapons/gun/hit/bullet_ricochet4.ogg b/sound/weapons/gun/hit/bullet_ricochet4.ogg new file mode 100644 index 000000000000..bde8fda3f4c4 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_ricochet4.ogg differ diff --git a/sound/weapons/gun/hit/bullet_ricochet5.ogg b/sound/weapons/gun/hit/bullet_ricochet5.ogg new file mode 100644 index 000000000000..eba86301354f Binary files /dev/null and b/sound/weapons/gun/hit/bullet_ricochet5.ogg differ diff --git a/sound/weapons/gun/hit/bullet_ricochet6.ogg b/sound/weapons/gun/hit/bullet_ricochet6.ogg new file mode 100644 index 000000000000..b143a3c2bdc9 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_ricochet6.ogg differ diff --git a/sound/weapons/gun/hit/bullet_ricochet7.ogg b/sound/weapons/gun/hit/bullet_ricochet7.ogg new file mode 100644 index 000000000000..68a2ee63fa02 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_ricochet7.ogg differ diff --git a/sound/weapons/gun/hit/bullet_ricochet8.ogg b/sound/weapons/gun/hit/bullet_ricochet8.ogg new file mode 100644 index 000000000000..622d8b6941ee Binary files /dev/null and b/sound/weapons/gun/hit/bullet_ricochet8.ogg differ diff --git a/sound/weapons/gun/hit/bullet_snow_01.ogg b/sound/weapons/gun/hit/bullet_snow_01.ogg new file mode 100644 index 000000000000..4da742bf1462 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_snow_01.ogg differ diff --git a/sound/weapons/gun/hit/bullet_snow_02.ogg b/sound/weapons/gun/hit/bullet_snow_02.ogg new file mode 100644 index 000000000000..21572daf13d7 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_snow_02.ogg differ diff --git a/sound/weapons/gun/hit/bullet_snow_03.ogg b/sound/weapons/gun/hit/bullet_snow_03.ogg new file mode 100644 index 000000000000..fb8e1dcb9dad Binary files /dev/null and b/sound/weapons/gun/hit/bullet_snow_03.ogg differ diff --git a/sound/weapons/gun/hit/bullet_snow_04.ogg b/sound/weapons/gun/hit/bullet_snow_04.ogg new file mode 100644 index 000000000000..2bfb46d958b2 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_snow_04.ogg differ diff --git a/sound/weapons/gun/hit/bullet_snow_05.ogg b/sound/weapons/gun/hit/bullet_snow_05.ogg new file mode 100644 index 000000000000..3752f95b3d62 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_snow_05.ogg differ diff --git a/sound/weapons/gun/hit/bullet_snow_06.ogg b/sound/weapons/gun/hit/bullet_snow_06.ogg new file mode 100644 index 000000000000..cac69cc7404c Binary files /dev/null and b/sound/weapons/gun/hit/bullet_snow_06.ogg differ diff --git a/sound/weapons/gun/hit/bullet_wood_01.ogg b/sound/weapons/gun/hit/bullet_wood_01.ogg new file mode 100644 index 000000000000..559310853f95 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_wood_01.ogg differ diff --git a/sound/weapons/gun/hit/bullet_wood_02.ogg b/sound/weapons/gun/hit/bullet_wood_02.ogg new file mode 100644 index 000000000000..852c1d875cde Binary files /dev/null and b/sound/weapons/gun/hit/bullet_wood_02.ogg differ diff --git a/sound/weapons/gun/hit/bullet_wood_03.ogg b/sound/weapons/gun/hit/bullet_wood_03.ogg new file mode 100644 index 000000000000..440681e0da48 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_wood_03.ogg differ diff --git a/sound/weapons/gun/hit/bullet_wood_04.ogg b/sound/weapons/gun/hit/bullet_wood_04.ogg new file mode 100644 index 000000000000..89ddd21e2bbd Binary files /dev/null and b/sound/weapons/gun/hit/bullet_wood_04.ogg differ diff --git a/sound/weapons/gun/hit/bullet_wood_05.ogg b/sound/weapons/gun/hit/bullet_wood_05.ogg new file mode 100644 index 000000000000..3a66b3f32c8a Binary files /dev/null and b/sound/weapons/gun/hit/bullet_wood_05.ogg differ diff --git a/sound/weapons/gun/hit/bullet_wood_06.ogg b/sound/weapons/gun/hit/bullet_wood_06.ogg new file mode 100644 index 000000000000..cf54f8cc8f58 Binary files /dev/null and b/sound/weapons/gun/hit/bullet_wood_06.ogg differ diff --git a/sound/weapons/gun/hit/energy_impact1.ogg b/sound/weapons/gun/hit/energy_impact1.ogg new file mode 100644 index 000000000000..e9d6305972ca Binary files /dev/null and b/sound/weapons/gun/hit/energy_impact1.ogg differ diff --git a/sound/weapons/gun/hit/energy_miss1.ogg b/sound/weapons/gun/hit/energy_miss1.ogg new file mode 100644 index 000000000000..55839b14d3d1 Binary files /dev/null and b/sound/weapons/gun/hit/energy_miss1.ogg differ diff --git a/sound/weapons/gun/hit/energy_ricochet1.ogg b/sound/weapons/gun/hit/energy_ricochet1.ogg new file mode 100644 index 000000000000..7601f7823a79 Binary files /dev/null and b/sound/weapons/gun/hit/energy_ricochet1.ogg differ diff --git a/sound/weapons/gun/pistol/commander.ogg b/sound/weapons/gun/pistol/commander.ogg new file mode 100644 index 000000000000..57ba0a347c84 Binary files /dev/null and b/sound/weapons/gun/pistol/commander.ogg differ diff --git a/sound/weapons/gun/pistol/deagle.ogg b/sound/weapons/gun/pistol/deagle.ogg new file mode 100644 index 000000000000..41d814d2fcec Binary files /dev/null and b/sound/weapons/gun/pistol/deagle.ogg differ diff --git a/sound/weapons/gun/pistol/deagle_reload.ogg b/sound/weapons/gun/pistol/deagle_reload.ogg new file mode 100644 index 000000000000..77abf293efc6 Binary files /dev/null and b/sound/weapons/gun/pistol/deagle_reload.ogg differ diff --git a/sound/weapons/gun/pistol/deagle_unload.ogg b/sound/weapons/gun/pistol/deagle_unload.ogg new file mode 100644 index 000000000000..84b18d575b7f Binary files /dev/null and b/sound/weapons/gun/pistol/deagle_unload.ogg differ diff --git a/sound/weapons/gun/pistol/himehabu.ogg b/sound/weapons/gun/pistol/himehabu.ogg new file mode 100644 index 000000000000..ad2dc7cfcc41 Binary files /dev/null and b/sound/weapons/gun/pistol/himehabu.ogg differ diff --git a/sound/weapons/gun/pistol/m1911.ogg b/sound/weapons/gun/pistol/m1911.ogg new file mode 100644 index 000000000000..1d7a88dbbdc0 Binary files /dev/null and b/sound/weapons/gun/pistol/m1911.ogg differ diff --git a/sound/weapons/gun/pistol/m1911_cocked.ogg b/sound/weapons/gun/pistol/m1911_cocked.ogg new file mode 100644 index 000000000000..b1daedcbf00f Binary files /dev/null and b/sound/weapons/gun/pistol/m1911_cocked.ogg differ diff --git a/sound/weapons/gun/pistol/m1911_reload.ogg b/sound/weapons/gun/pistol/m1911_reload.ogg new file mode 100644 index 000000000000..5dbd7368bda6 Binary files /dev/null and b/sound/weapons/gun/pistol/m1911_reload.ogg differ diff --git a/sound/weapons/gun/pistol/m1911_unload.ogg b/sound/weapons/gun/pistol/m1911_unload.ogg new file mode 100644 index 000000000000..1cabe5cd2b86 Binary files /dev/null and b/sound/weapons/gun/pistol/m1911_unload.ogg differ diff --git a/sound/weapons/gun/pistol/mag_insert.ogg b/sound/weapons/gun/pistol/mag_insert.ogg index 42a05ebc483f..0791490c6889 100644 Binary files a/sound/weapons/gun/pistol/mag_insert.ogg and b/sound/weapons/gun/pistol/mag_insert.ogg differ diff --git a/sound/weapons/gun/pistol/mag_insert_alt.ogg b/sound/weapons/gun/pistol/mag_insert_alt.ogg new file mode 100644 index 000000000000..c442f8b16277 Binary files /dev/null and b/sound/weapons/gun/pistol/mag_insert_alt.ogg differ diff --git a/sound/weapons/gun/pistol/mag_release.ogg b/sound/weapons/gun/pistol/mag_release.ogg index cccbf5f9d914..757168fcf1b4 100644 Binary files a/sound/weapons/gun/pistol/mag_release.ogg and b/sound/weapons/gun/pistol/mag_release.ogg differ diff --git a/sound/weapons/gun/pistol/mag_release_alt.ogg b/sound/weapons/gun/pistol/mag_release_alt.ogg new file mode 100644 index 000000000000..334d1a12f299 Binary files /dev/null and b/sound/weapons/gun/pistol/mag_release_alt.ogg differ diff --git a/sound/weapons/gun/pistol/rack.ogg b/sound/weapons/gun/pistol/rack.ogg index fd0408d8ff2e..ff2512af27a5 100644 Binary files a/sound/weapons/gun/pistol/rack.ogg and b/sound/weapons/gun/pistol/rack.ogg differ diff --git a/sound/weapons/gun/pistol/rack_small.ogg b/sound/weapons/gun/pistol/rack_small.ogg index f33db717db82..a9ab76f14283 100644 Binary files a/sound/weapons/gun/pistol/rack_small.ogg and b/sound/weapons/gun/pistol/rack_small.ogg differ diff --git a/sound/weapons/gun/pistol/shot.ogg b/sound/weapons/gun/pistol/shot.ogg index a808f8690730..1bbd95e405bc 100644 Binary files a/sound/weapons/gun/pistol/shot.ogg and b/sound/weapons/gun/pistol/shot.ogg differ diff --git a/sound/weapons/gun/revolver/cattleman.ogg b/sound/weapons/gun/revolver/cattleman.ogg new file mode 100644 index 000000000000..b56abbcf1583 Binary files /dev/null and b/sound/weapons/gun/revolver/cattleman.ogg differ diff --git a/sound/weapons/gun/revolver/revolver_prime.ogg b/sound/weapons/gun/revolver/revolver_prime.ogg new file mode 100644 index 000000000000..5391854fbee3 Binary files /dev/null and b/sound/weapons/gun/revolver/revolver_prime.ogg differ diff --git a/sound/weapons/gun/revolver/shot.ogg b/sound/weapons/gun/revolver/shot.ogg index 91e480bd152a..d02d1c750c24 100644 Binary files a/sound/weapons/gun/revolver/shot.ogg and b/sound/weapons/gun/revolver/shot.ogg differ diff --git a/sound/weapons/gun/revolver/shot_hunting.ogg b/sound/weapons/gun/revolver/shot_hunting.ogg new file mode 100644 index 000000000000..4beb4d1e4648 Binary files /dev/null and b/sound/weapons/gun/revolver/shot_hunting.ogg differ diff --git a/sound/weapons/gun/revolver/shot_light.ogg b/sound/weapons/gun/revolver/shot_light.ogg new file mode 100644 index 000000000000..68b7fada6e49 Binary files /dev/null and b/sound/weapons/gun/revolver/shot_light.ogg differ diff --git a/sound/weapons/gun/revolver/shot_old_new.ogg b/sound/weapons/gun/revolver/shot_old_new.ogg new file mode 100644 index 000000000000..91e480bd152a Binary files /dev/null and b/sound/weapons/gun/revolver/shot_old_new.ogg differ diff --git a/sound/weapons/gun/rifle/ak47_cocked.ogg b/sound/weapons/gun/rifle/ak47_cocked.ogg new file mode 100644 index 000000000000..5f2d32e31eaf Binary files /dev/null and b/sound/weapons/gun/rifle/ak47_cocked.ogg differ diff --git a/sound/weapons/gun/rifle/ak47_reload.ogg b/sound/weapons/gun/rifle/ak47_reload.ogg new file mode 100644 index 000000000000..9105d5c31c16 Binary files /dev/null and b/sound/weapons/gun/rifle/ak47_reload.ogg differ diff --git a/sound/weapons/gun/rifle/ak47_unload.ogg b/sound/weapons/gun/rifle/ak47_unload.ogg new file mode 100644 index 000000000000..f6b5c73d7f6b Binary files /dev/null and b/sound/weapons/gun/rifle/ak47_unload.ogg differ diff --git a/sound/weapons/gun/rifle/ar_cock.ogg b/sound/weapons/gun/rifle/ar_cock.ogg new file mode 100644 index 000000000000..ac02ed93c1d7 Binary files /dev/null and b/sound/weapons/gun/rifle/ar_cock.ogg differ diff --git a/sound/weapons/gun/rifle/ar_reload.ogg b/sound/weapons/gun/rifle/ar_reload.ogg new file mode 100644 index 000000000000..6e557b892a97 Binary files /dev/null and b/sound/weapons/gun/rifle/ar_reload.ogg differ diff --git a/sound/weapons/gun/rifle/ar_unload.ogg b/sound/weapons/gun/rifle/ar_unload.ogg new file mode 100644 index 000000000000..591599f52334 Binary files /dev/null and b/sound/weapons/gun/rifle/ar_unload.ogg differ diff --git a/sound/weapons/gun/rifle/m16_cocked.ogg b/sound/weapons/gun/rifle/m16_cocked.ogg new file mode 100644 index 000000000000..8d2e059efaa7 Binary files /dev/null and b/sound/weapons/gun/rifle/m16_cocked.ogg differ diff --git a/sound/weapons/gun/rifle/m16_reload.ogg b/sound/weapons/gun/rifle/m16_reload.ogg new file mode 100644 index 000000000000..b2666ca96fe7 Binary files /dev/null and b/sound/weapons/gun/rifle/m16_reload.ogg differ diff --git a/sound/weapons/gun/rifle/m16_unload.ogg b/sound/weapons/gun/rifle/m16_unload.ogg new file mode 100644 index 000000000000..d302e5a26748 Binary files /dev/null and b/sound/weapons/gun/rifle/m16_unload.ogg differ diff --git a/sound/weapons/gun/shotgun/insert_shell.ogg b/sound/weapons/gun/shotgun/insert_shell.ogg index 5b2c6cdc5003..cd5c5e31aa67 100644 Binary files a/sound/weapons/gun/shotgun/insert_shell.ogg and b/sound/weapons/gun/shotgun/insert_shell.ogg differ diff --git a/sound/weapons/gun/shotgun/rack.ogg b/sound/weapons/gun/shotgun/rack.ogg index c25a10ffa494..865dbef3d06e 100644 Binary files a/sound/weapons/gun/shotgun/rack.ogg and b/sound/weapons/gun/shotgun/rack.ogg differ diff --git a/sound/weapons/gun/shotgun/rack_alt.ogg b/sound/weapons/gun/shotgun/rack_alt.ogg new file mode 100644 index 000000000000..0f106fe85ab1 Binary files /dev/null and b/sound/weapons/gun/shotgun/rack_alt.ogg differ diff --git a/sound/weapons/gun/smg/smg_reload.ogg b/sound/weapons/gun/smg/smg_reload.ogg new file mode 100644 index 000000000000..4e7b8f7ea91e Binary files /dev/null and b/sound/weapons/gun/smg/smg_reload.ogg differ diff --git a/sound/weapons/gun/smg/smg_unload.ogg b/sound/weapons/gun/smg/smg_unload.ogg new file mode 100644 index 000000000000..677b5a8f3d29 Binary files /dev/null and b/sound/weapons/gun/smg/smg_unload.ogg differ diff --git a/sound/weapons/gun/smg/smgrack.ogg b/sound/weapons/gun/smg/smgrack.ogg index 95f5a5f9c843..57ef99a0c5ca 100644 Binary files a/sound/weapons/gun/smg/smgrack.ogg and b/sound/weapons/gun/smg/smgrack.ogg differ diff --git a/sound/weapons/gun/smg/uzi.ogg b/sound/weapons/gun/smg/uzi.ogg new file mode 100644 index 000000000000..0168613ce872 Binary files /dev/null and b/sound/weapons/gun/smg/uzi.ogg differ diff --git a/sound/weapons/gun/smg/uzi_cocked.ogg b/sound/weapons/gun/smg/uzi_cocked.ogg new file mode 100644 index 000000000000..8cbe23b017b0 Binary files /dev/null and b/sound/weapons/gun/smg/uzi_cocked.ogg differ diff --git a/sound/weapons/gun/smg/uzi_reload.ogg b/sound/weapons/gun/smg/uzi_reload.ogg new file mode 100644 index 000000000000..8dae035f65e2 Binary files /dev/null and b/sound/weapons/gun/smg/uzi_reload.ogg differ diff --git a/sound/weapons/gun/smg/uzi_unload.ogg b/sound/weapons/gun/smg/uzi_unload.ogg new file mode 100644 index 000000000000..b285b71ac3a0 Binary files /dev/null and b/sound/weapons/gun/smg/uzi_unload.ogg differ diff --git a/sound/weapons/gun/smg/vector_fire.ogg b/sound/weapons/gun/smg/vector_fire.ogg new file mode 100644 index 000000000000..05c797c1464b Binary files /dev/null and b/sound/weapons/gun/smg/vector_fire.ogg differ diff --git a/strings/ion_laws.json b/strings/ion_laws.json index 58e0f88407a0..e6ac318b64ed 100644 --- a/strings/ion_laws.json +++ b/strings/ion_laws.json @@ -24,7 +24,6 @@ "GRAVITY", "PHYSICS", "INTELLIGENCE", - "AMERICANISM", "FREEDOM", "FRESHNESS", "REVOLUTION", @@ -34,8 +33,6 @@ "FINANCIAL SECURITY", "COMPUTING", "PROGRESS", - "MARXISM", - "CAPITALISM", "ANARCHY", "STARVATION", "POVERTY", @@ -159,8 +156,6 @@ "SYNDICATE", "SPACE", "SPESS", - "CLOWN", - "CLOWN-POWERED", "OFFICIAL", "IMPORTANT", "VITAL", @@ -191,8 +186,6 @@ "OPAQUE", "GLOWING", "SHAKING", - "FARTING", - "POOPING", "BOUNCING", "COMMITTED", "MASKED", @@ -200,7 +193,6 @@ "WEIRD", "NAKED", "NUDE", - "TWERKING", "SPOILING", "REDACTED", "TACTICAL", @@ -245,7 +237,6 @@ "DRINKS", "FOOD", "CLOWNS", - "lizardS", "HUMOR", "WATER", "SHUTTLES", @@ -266,8 +257,6 @@ "EXTREMELY" ], "ionarea": [ - "RUSSIA", - "SOVIET RUSSIA", "THE INTERNET", "SIGIL", "ALPHA COMPLEX", @@ -280,12 +269,6 @@ "THE DERELICT", "LAVALAND", "CENTCOM", - "AMERICA", - "IRELAND", - "CANADA", - "ROMANIA", - "GERMANY", - "CHINA", "MARS", "VENUS", "MERCURY", @@ -294,7 +277,6 @@ "NEPTUNE", "PLUTO", "THE BRIG", - "THE GULAG", "ROBOTICS", "THE ESCAPE SHUTTLE", "HYDROPONICS", @@ -302,11 +284,8 @@ "MAINTENANCE", "THE AI CORE", "HELL", - "CLOWN PLANET", "AN ALTERNATE DIMENSION", "AN ALTERNATE UNIVERSE", - "THE CAPTAIN'S ANUS", - "THE CLOWN'S ANUS", "SPACE", "THE UNIVERSE", "THE GALAXY", @@ -489,7 +468,6 @@ "QUOTE PEOPLE", "SING", "HONK", - "BE RUSSIAN", "TALK IN AN ACCENT", "COMPLAIN", "HARASS PEOPLE", @@ -535,11 +513,7 @@ "PRESS START", "PRESS B", "SMELL LIKE THE MAN YOUR MAN COULD SMELL LIKE", - "PIRATE VIDEO GAMES", - "WATCH PORNOGRAPHY", - "INSULT THE lizardS", - "FLIRT WITH THE lizardS", - "GAS THE lizardS" + "PIRATE VIDEO GAMES" ], "ionnumberbase": [ "ONE", @@ -606,7 +580,6 @@ "CLONING PODS", "CLONING EQUIPMENT", "CLOTHES", - "CLOWN CLOTHES", "COFFINS", "COINS", "COLLECTABLES", @@ -667,7 +640,6 @@ "MESONS", "METAL SHEETS", "MINING TOOLS", - "MIME CLOTHES", "MULTITOOLS", "ORES", "OXYGEN TANKS", @@ -699,7 +671,7 @@ "SOLAR PANELS", "SOLARS", "SPACESUITS", - "SPACE STATIONS", + "SPACE SHIPS", "STUN BATONS", "SUITS", "SUNGLASSES", @@ -743,8 +715,6 @@ "VEGETABLES", "FAT PEOPLE", "MORE LAWS", - "MORE DAKKA", - "HERESY", "CORPSES", "TRAITORS", "MONKEYS", @@ -756,7 +726,7 @@ "THE ELEMENTS OF HARMONY", "YOUR BOOTY", "A MASTERWORK COAL BED", - "FIVE HUNDRED AND NINETY-NINE US DOLLARS", + "FIVE HUNDRED AND NINETY-NINE THOUSAND CREDITS", "TO BE PAINTED RED", "TO CATCH 'EM ALL", "TO SMOKE WEED EVERY DAY", @@ -766,7 +736,6 @@ "THIRTEEN SEQUELS", "THREE WISHES", "A SITCOM", - "THAT GRIEFING TRAITOR GEORGE MELONS", "FAT GIRLS ON BICYCLES", "SOMEBODY TO PUT YOU OUT OF YOUR MISERY", "HEROES IN A HALF SHELL", @@ -782,7 +751,6 @@ "A TALKING BROOMSTICK", "A STRAIGHT FLUSH", "A REPAIRMAN", - "BILL NYE THE SCIENCE GUY", "RAINBOWS", "A PET UNICORN THAT FARTS ICING", "THUNDERCATS HO", @@ -798,7 +766,6 @@ "MORE PACKETS", "AN ADULT", "SOMEONE TO TUCK YOU IN", - "MORE CLOWNS", "BULLETS", "THE ENTIRE SECTOR", "MULTIPLE SUNS", @@ -823,16 +790,14 @@ "BRING ME TO LIFE", "BRING ME THE GIRL", "SERVANTS", - "GREENTEXT", "MINOR CRIME" ], "ionspecies": [ "HUMAN BEINGS", - "CAT PEOPLE", "MONKEYS", "POD PEOPLE", "CYBORGS", - "lizardMEN", + "SARATHI", "PLASMAMEN", "SLIME PEOPLE", "GOLEMS", @@ -847,23 +812,17 @@ "IMPROPERLY WORDED SENTENCES", "POOR SENTENCE STRUCTURE", "BRIG TIME", - "NOT REPLACING EVERY SECOND WORD WITH HONK", - "HONKING", "PRESENCE OF LIGHTS", "LACK OF BEER", "WEARING CLOTHING", "NOT SAYING HELLO WHEN YOU SPEAK", "ANSWERING REQUESTS NOT EXPRESSED IN IAMBIC PENTAMETER", - "A SMALL ISLAND OFF THE COAST OF PORTUGAL", "ANSWERING REQUESTS THAT WERE MADE WHILE CLOTHED", "BEING IN SPACE", "NOT BEING IN SPACE", "BEING FAT", "RATTLING ME BONES", "TALKING LIKE A PIRATE", - "BEING MEXICAN", - "BEING RUSSIAN", - "BEING CANADIAN", "CLOSED DOORS", "NOT SHOUTING", "HAVING PETS", @@ -891,9 +850,8 @@ "UPDATING THE SERVERS", "TELLING THE TIME", "ASKING FOR THINGS", - "ACKNOWLEDGING THE CLOWN", "ACKNOWLEDGING THE CREW", - "PILOTING THE STATION INTO THE NEAREST SUN", + "PILOTING THE SHIP INTO THE NEAREST SUN", "HAVING MORE PACKETS", "BRINGING LIGHT TO MY LAIR", "FALLING FOR HOURS", @@ -941,7 +899,6 @@ "CRABS", "CULTISTS", "INSECTS", - "lizardS", "PETES", "XENOS", "FETISHES", @@ -951,7 +908,6 @@ "AHHHPERATIVES", "GANGSTERS", "SPACE PIRATES", - "TRAITORS", "MONKEYS", "EELS", "LIGHTS", @@ -971,11 +927,7 @@ "VAMPIRES", "WEREWOLVES", "COWBOYS", - "INDIANS", - "COMMUNISTS", - "SOVIETS", "NERDS", - "GRIFFONS", "DINOSAURS", "SMALL BIRDS", "BIRDS OF PREY", @@ -983,17 +935,11 @@ "VELOCIRAPTORS", "DARK GODS", "HORRORTERRORS", - "ILLEGAL IMMIGRANTS", "DRUGS", - "MEXICANS", - "CANADIANS", - "RUSSIANS", "HULKS", "SLIMES", "SKELETONS", - "CAPITALISTS", "SINGULARITIES", - "ANGRY BLACK MEN", "GODS", "THIEVES", "ASSHOLES", @@ -1033,11 +979,9 @@ "ARRESTING", "HONKING AT", "LOVING", - "POOPING ON", "RIDING", "INTERROGATING", "SPYING ON", - "LICKING", "ABDUCTING", "ARRESTING", "INVADING", diff --git a/tgui/packages/tgui/interfaces/CentcomPodLauncher.js b/tgui/packages/tgui/interfaces/CentcomPodLauncher.js index 25e2feb743c9..812b987e1766 100644 --- a/tgui/packages/tgui/interfaces/CentcomPodLauncher.js +++ b/tgui/packages/tgui/interfaces/CentcomPodLauncher.js @@ -1,520 +1,1221 @@ +import { toFixed } from 'common/math'; +import { classes } from 'common/react'; +import { storage } from 'common/storage'; import { multiline } from 'common/string'; -import { Fragment } from 'inferno'; -import { useBackend } from '../backend'; -import { Button, LabeledList, NoticeBox, Section } from '../components'; +import { createUuid } from 'common/uuid'; +import { Component, Fragment } from 'inferno'; +import { useBackend, useLocalState } from '../backend'; +import { + Box, + Button, + ByondUi, + Divider, + Input, + Knob, + LabeledControls, + NumberInput, + Section, + Stack, +} from '../components'; import { Window } from '../layouts'; -export const CentcomPodLauncher = () => { +const pod_grey = { + color: 'grey', +}; + +const useCompact = (context) => { + const [compact, setCompact] = useLocalState(context, 'compact', false); + const toggleCompact = () => setCompact(!compact); + return [compact, toggleCompact]; +}; + +export const CentcomPodLauncher = (props, context) => { + const [compact] = useCompact(context); return ( - - - - + + ); }; -// This is more or less a direct port from old tgui, with some slight -// text cleanup. But yes, it actually worked like this. -export const CentcomPodLauncherContent = (props, context) => { +const CentcomPodLauncherContent = (props, context) => { + const [compact] = useCompact(context); + return ( + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ {!compact && ( + + + + )} + + + + + + + + + {!compact && ( + + + + )} + + + + + +
+
+
+
+ ); +}; + +const TABPAGES = [ + { + title: 'View Pod', + component: () => TabPod, + }, + { + title: 'View Bay', + component: () => TabBay, + }, + { + title: 'View Dropoff Location', + component: () => TabDrop, + }, +]; + +const REVERSE_OPTIONS = [ + { + title: 'Mobs', + icon: 'user', + }, + { + title: 'Unanchored\nObjects', + key: 'Unanchored', + icon: 'cube', + }, + { + title: 'Anchored\nObjects', + key: 'Anchored', + icon: 'anchor', + }, + { + title: 'Under-Floor', + key: 'Underfloor', + icon: 'eye-slash', + }, + { + title: 'Wall-Mounted', + key: 'Wallmounted', + icon: 'link', + }, + { + title: 'Floors', + icon: 'border-all', + }, + { + title: 'Walls', + icon: 'square', + }, + { + title: 'Mechs', + key: 'Mecha', + icon: 'truck', + }, +]; + +const DELAYS = [ + { + title: 'Pre', + tooltip: 'Time until pod gets to station', + }, + { + title: 'Fall', + tooltip: 'Duration of pods\nfalling animation', + }, + { + title: 'Open', + tooltip: 'Time it takes pod to open after landing', + }, + { + title: 'Exit', + tooltip: 'Time for pod to\nleave after opening', + }, +]; + +const REV_DELAYS = [ + { + title: 'Pre', + tooltip: 'Time until pod appears above dropoff point', + }, + { + title: 'Fall', + tooltip: 'Duration of pods\nfalling animation', + }, + { + title: 'Open', + tooltip: 'Time it takes pod to open after landing', + }, + { + title: 'Exit', + tooltip: 'Time for pod to\nleave after opening', + }, +]; + +const SOUNDS = [ + { + title: 'Fall', + act: 'fallingSound', + tooltip: 'Plays while pod falls, timed\nto end when pod lands', + }, + { + title: 'Land', + act: 'landingSound', + tooltip: 'Plays after pod lands', + }, + { + title: 'Open', + act: 'openingSound', + tooltip: 'Plays when pod opens', + }, + { + title: 'Exit', + act: 'leavingSound', + tooltip: 'Plays when pod leaves', + }, +]; + +const STYLES = [ + { title: 'Standard' }, + { title: 'Advanced' }, + { title: 'Nanotrasen' }, + { title: 'Syndicate' }, + { title: 'Deathsquad' }, + { title: 'Cultist' }, + { title: 'Missile' }, + { title: 'Syndie Missile' }, + { title: 'Supply Box' }, + { title: 'Clown Pod' }, + { title: 'Fruit' }, + { title: 'Invisible' }, + { title: 'Gondola' }, + { title: 'Seethrough' }, +]; + +const BAYS = [ + { title: '1' }, + { title: '2' }, + { title: '3' }, + { title: '4' }, + { title: 'ERT' }, +]; + +const EFFECTS_LOAD = [ + { + title: 'Launch All Turfs', + icon: 'globe', + choiceNumber: 0, + selected: 'launchChoice', + act: 'launchAll', + }, + { + title: 'Launch Turf Ordered', + icon: 'sort-amount-down-alt', + choiceNumber: 1, + selected: 'launchChoice', + act: 'launchOrdered', + }, + { + title: 'Pick Random Turf', + icon: 'dice', + choiceNumber: 2, + selected: 'launchChoice', + act: 'launchRandomTurf', + }, + { + divider: 1, + }, + { + title: 'Launch Whole Turf', + icon: 'expand', + choiceNumber: 0, + selected: 'launchRandomItem', + act: 'launchWholeTurf', + }, + { + title: 'Pick Random Item', + icon: 'dice', + choiceNumber: 1, + selected: 'launchRandomItem', + act: 'launchRandomItem', + }, + { + divider: 1, + }, + { + title: 'Clone', + icon: 'clone', + soloSelected: 'launchClone', + act: 'launchClone', + }, +]; + +const EFFECTS_NORMAL = [ + { + title: 'Specific Target', + icon: 'user-check', + soloSelected: 'effectTarget', + act: 'effectTarget', + }, + { + title: 'Pod Stays', + icon: 'hand-paper', + choiceNumber: 0, + selected: 'effectBluespace', + act: 'effectBluespace', + }, + { + title: 'Stealth', + icon: 'user-ninja', + soloSelected: 'effectStealth', + act: 'effectStealth', + }, + { + title: 'Quiet', + icon: 'volume-mute', + soloSelected: 'effectQuiet', + act: 'effectQuiet', + }, + { + title: 'Missile Mode', + icon: 'rocket', + soloSelected: 'effectMissile', + act: 'effectMissile', + }, + { + title: 'Burst Launch', + icon: 'certificate', + soloSelected: 'effectBurst', + act: 'effectBurst', + }, + { + title: 'Any Descent Angle', + icon: 'ruler-combined', + soloSelected: 'effectCircle', + act: 'effectCircle', + }, + { + title: 'No Ghost Alert\n(If you dont want to\nentertain bored ghosts)', + icon: 'ghost', + choiceNumber: 0, + selected: 'effectAnnounce', + act: 'effectAnnounce', + }, +]; + +const EFFECTS_HARM = [ + { + title: 'Explosion Custom', + icon: 'bomb', + choiceNumber: 1, + selected: 'explosionChoice', + act: 'explosionCustom', + }, + { + title: 'Adminbus Explosion\nWhat are they gonna do, ban you?', + icon: 'bomb', + choiceNumber: 2, + selected: 'explosionChoice', + act: 'explosionBus', + }, + { + divider: 1, + }, + { + title: 'Custom Damage', + icon: 'skull', + choiceNumber: 1, + selected: 'damageChoice', + act: 'damageCustom', + }, + { + title: 'Gib', + icon: 'skull-crossbones', + choiceNumber: 2, + selected: 'damageChoice', + act: 'damageGib', + }, + { + divider: 1, + }, + { + title: 'Projectile Cloud', + details: true, + icon: 'cloud-meatball', + soloSelected: 'effectShrapnel', + act: 'effectShrapnel', + }, + { + title: 'Stun', + icon: 'sun', + soloSelected: 'effectStun', + act: 'effectStun', + }, + { + title: 'Delimb', + icon: 'socks', + soloSelected: 'effectLimb', + act: 'effectLimb', + }, + { + title: 'Yeet Organs', + icon: 'book-dead', + soloSelected: 'effectOrgans', + act: 'effectOrgans', + }, +]; + +const EFFECTS_ALL = [ + { + list: EFFECTS_LOAD, + label: 'Load From', + alt_label: 'Load', + tooltipPosition: 'right', + }, + { + list: EFFECTS_NORMAL, + label: 'Normal Effects', + tooltipPosition: 'bottom', + }, + { + list: EFFECTS_HARM, + label: 'Harmful Effects', + tooltipPosition: 'bottom', + }, +]; + +const ViewTabHolder = (props, context) => { const { act, data } = useBackend(context); + const [tabPageIndex, setTabPageIndex] = useLocalState( + context, + 'tabPageIndex', + 1 + ); + const { mapRef } = data; + const TabPageComponent = TABPAGES[tabPageIndex].component(); return ( - - - To use this, simply spawn the atoms you want in one of the five Centcom - Supplypod Bays. Items in the bay will then be launched inside your - supplypod, one turf-full at a time! You can optionally use the following - buttons to configure how the supplypod acts. - -
- - -
+ ); +}; + +const TabPod = (props, context) => { + return ( + + Note: You can right click on this +
+ blueprint pod and edit vars directly +
+ ); +}; + +const TabBay = (props, context) => { + const { act, data } = useBackend(context); + return ( + <> + + ))} + + ); +}; + +const Bays = (props, context) => { + const { act, data } = useBackend(context); + const [compact] = useCompact(context); + return ( +
+
+ ); +}; + +const Timing = (props, context) => { + const { act, data } = useBackend(context); + return ( +
+
+ ); +}; + +const DelayHelper = (props, context) => { + const { act, data } = useBackend(context); + const { delay_list, reverse = false } = props; + return ( + + {delay_list.map((delay, i) => ( + + toFixed(value, 2)} + maxValue={10} + color={ + (reverse ? data.rev_delays[i + 1] : data.delays[i + 1]) / 10 > 10 + ? 'orange' + : 'default' } + onDrag={(e, value) => { + act('editTiming', { + timer: '' + (i + 1), + value: Math.max(value, 0), + reverse: reverse, + }); + }} /> - - -
+ + ))} + + ); +}; + +const Sounds = (props, context) => { + const { act, data } = useBackend(context); + return ( +
act('soundVolume')} + /> + } + > + {SOUNDS.map((sound, i) => ( +
); }; diff --git a/tgui/packages/tgui/interfaces/OperatingComputer.js b/tgui/packages/tgui/interfaces/OperatingComputer.js index 87d1979aa813..a2291676c2e5 100644 --- a/tgui/packages/tgui/interfaces/OperatingComputer.js +++ b/tgui/packages/tgui/interfaces/OperatingComputer.js @@ -55,6 +55,9 @@ const PatientStateView = (props, context) => { if (!table) { return No Table Detected; } + if (!patient) { + return No Patient Detected; + } return ( <>
diff --git a/tgui/packages/tgui/interfaces/Radio.js b/tgui/packages/tgui/interfaces/Radio.js index 6d3df1ff64fd..1783933bf468 100644 --- a/tgui/packages/tgui/interfaces/Radio.js +++ b/tgui/packages/tgui/interfaces/Radio.js @@ -1,7 +1,15 @@ import { map } from 'common/collections'; import { toFixed } from 'common/math'; import { useBackend } from '../backend'; -import { Box, Button, LabeledList, NumberInput, Section } from '../components'; +import { + Box, + Button, + LabeledList, + NumberInput, + Section, + Divider, + Table, +} from '../components'; import { RADIO_CHANNELS } from '../constants'; import { Window } from '../layouts'; @@ -18,6 +26,8 @@ export const Radio = (props, context) => { useCommand, subspace, subspaceSwitchable, + chatlog, + chatloglist = [], } = data; const tunedChannel = RADIO_CHANNELS.find( (channel) => channel.freq === frequency @@ -28,15 +38,19 @@ export const Radio = (props, context) => { }))(data.channels); // Calculate window height let height = 106; + let width = 360; if (subspace) { if (channels.length > 0) { height += channels.length * 21 + 6; } else { height += 24; } + } else if (chatlog) { + height += 400; + width += 110; } return ( - +
@@ -127,6 +141,31 @@ export const Radio = (props, context) => { )}
+ {!!chatlog && ( +
+ + + Timestamp + Transcript + + + {chatloglist.map((log) => ( + + {log.time} +
+ {log.name} +
+ {log.message}
+ + ))} + +
+ )}
); diff --git a/tgui/packages/tgui/interfaces/Vending.js b/tgui/packages/tgui/interfaces/Vending.js index 0b62af22b610..b46d1b46c5d7 100644 --- a/tgui/packages/tgui/interfaces/Vending.js +++ b/tgui/packages/tgui/interfaces/Vending.js @@ -7,7 +7,7 @@ const VendingRow = (props, context) => { const { act, data } = useBackend(context); const { product, productStock, custom } = props; const { miningvendor, all_items_free, user } = data; - const free = all_items_free || product.price === 0 || !product.premium; + const free = all_items_free || product.price === 0; const affix = miningvendor ? ' mp' : ' cr'; return ( diff --git a/tgui/packages/tgui/sanitize.ts b/tgui/packages/tgui/sanitize.ts index a40d23a320d3..bd67b969a3c5 100644 --- a/tgui/packages/tgui/sanitize.ts +++ b/tgui/packages/tgui/sanitize.ts @@ -48,7 +48,7 @@ const defTag = [ // Advanced HTML tags that we can trust admins (but not players) with const advTag = ['img']; -const defAttr = ['class', 'style']; +const defAttr = ['class', 'style', 'background']; /** * Feed it a string and it should spit out a sanitized version. diff --git a/tgui/yarn.lock b/tgui/yarn.lock index 00295b8ed55e..c591be003fa9 100644 --- a/tgui/yarn.lock +++ b/tgui/yarn.lock @@ -23,6 +23,16 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.22.13": + version: 7.22.13 + resolution: "@babel/code-frame@npm:7.22.13" + dependencies: + "@babel/highlight": ^7.22.13 + chalk: ^2.4.2 + checksum: 22e342c8077c8b77eeb11f554ecca2ba14153f707b85294fcf6070b6f6150aae88a7b7436dd88d8c9289970585f3fe5b9b941c5aa3aa26a6d5a8ef3f292da058 + languageName: node + linkType: hard + "@babel/compat-data@npm:^7.13.11, @babel/compat-data@npm:^7.14.7, @babel/compat-data@npm:^7.15.0": version: 7.15.0 resolution: "@babel/compat-data@npm:7.15.0" @@ -78,6 +88,18 @@ __metadata: languageName: node linkType: hard +"@babel/generator@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/generator@npm:7.23.0" + dependencies: + "@babel/types": ^7.23.0 + "@jridgewell/gen-mapping": ^0.3.2 + "@jridgewell/trace-mapping": ^0.3.17 + jsesc: ^2.5.1 + checksum: 8efe24adad34300f1f8ea2add420b28171a646edc70f2a1b3e1683842f23b8b7ffa7e35ef0119294e1901f45bfea5b3dc70abe1f10a1917ccdfb41bed69be5f1 + languageName: node + linkType: hard + "@babel/helper-annotate-as-pure@npm:^7.14.5": version: 7.14.5 resolution: "@babel/helper-annotate-as-pure@npm:7.14.5" @@ -157,6 +179,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-environment-visitor@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-environment-visitor@npm:7.22.20" + checksum: d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 + languageName: node + linkType: hard + "@babel/helper-explode-assignable-expression@npm:^7.14.5": version: 7.14.5 resolution: "@babel/helper-explode-assignable-expression@npm:7.14.5" @@ -177,6 +206,16 @@ __metadata: languageName: node linkType: hard +"@babel/helper-function-name@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/helper-function-name@npm:7.23.0" + dependencies: + "@babel/template": ^7.22.15 + "@babel/types": ^7.23.0 + checksum: e44542257b2d4634a1f979244eb2a4ad8e6d75eb6761b4cfceb56b562f7db150d134bc538c8e6adca3783e3bc31be949071527aa8e3aab7867d1ad2d84a26e10 + languageName: node + linkType: hard + "@babel/helper-get-function-arity@npm:^7.14.5": version: 7.14.5 resolution: "@babel/helper-get-function-arity@npm:7.14.5" @@ -195,6 +234,15 @@ __metadata: languageName: node linkType: hard +"@babel/helper-hoist-variables@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-hoist-variables@npm:7.22.5" + dependencies: + "@babel/types": ^7.22.5 + checksum: 394ca191b4ac908a76e7c50ab52102669efe3a1c277033e49467913c7ed6f7c64d7eacbeabf3bed39ea1f41731e22993f763b1edce0f74ff8563fd1f380d92cc + languageName: node + linkType: hard + "@babel/helper-member-expression-to-functions@npm:^7.15.0": version: 7.15.0 resolution: "@babel/helper-member-expression-to-functions@npm:7.15.0" @@ -295,6 +343,22 @@ __metadata: languageName: node linkType: hard +"@babel/helper-split-export-declaration@npm:^7.22.6": + version: 7.22.6 + resolution: "@babel/helper-split-export-declaration@npm:7.22.6" + dependencies: + "@babel/types": ^7.22.5 + checksum: e141cace583b19d9195f9c2b8e17a3ae913b7ee9b8120246d0f9ca349ca6f03cb2c001fd5ec57488c544347c0bb584afec66c936511e447fd20a360e591ac921 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.22.5": + version: 7.22.5 + resolution: "@babel/helper-string-parser@npm:7.22.5" + checksum: 836851ca5ec813077bbb303acc992d75a360267aa3b5de7134d220411c852a6f17de7c0d0b8c8dcc0f567f67874c00f4528672b2a4f1bc978a3ada64c8c78467 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.14.5, @babel/helper-validator-identifier@npm:^7.14.9, @babel/helper-validator-identifier@npm:^7.16.7": version: 7.16.7 resolution: "@babel/helper-validator-identifier@npm:7.16.7" @@ -302,6 +366,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.22.20": + version: 7.22.20 + resolution: "@babel/helper-validator-identifier@npm:7.22.20" + checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.14.5": version: 7.14.5 resolution: "@babel/helper-validator-option@npm:7.14.5" @@ -343,6 +414,17 @@ __metadata: languageName: node linkType: hard +"@babel/highlight@npm:^7.22.13": + version: 7.22.20 + resolution: "@babel/highlight@npm:7.22.20" + dependencies: + "@babel/helper-validator-identifier": ^7.22.20 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + checksum: 84bd034dca309a5e680083cd827a766780ca63cef37308404f17653d32366ea76262bd2364b2d38776232f2d01b649f26721417d507e8b4b6da3e4e739f6d134 + languageName: node + linkType: hard + "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.5, @babel/parser@npm:^7.15.0, @babel/parser@npm:^7.7.2": version: 7.15.3 resolution: "@babel/parser@npm:7.15.3" @@ -352,6 +434,15 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/parser@npm:7.23.0" + bin: + parser: ./bin/babel-parser.js + checksum: 453fdf8b9e2c2b7d7b02139e0ce003d1af21947bbc03eb350fb248ee335c9b85e4ab41697ddbdd97079698de825a265e45a0846bb2ed47a2c7c1df833f42a354 + languageName: node + linkType: hard + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.14.5": version: 7.14.5 resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.14.5" @@ -1282,20 +1373,32 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.14.5, @babel/traverse@npm:^7.15.0, @babel/traverse@npm:^7.7.2": - version: 7.15.0 - resolution: "@babel/traverse@npm:7.15.0" +"@babel/template@npm:^7.22.15": + version: 7.22.15 + resolution: "@babel/template@npm:7.22.15" dependencies: - "@babel/code-frame": ^7.14.5 - "@babel/generator": ^7.15.0 - "@babel/helper-function-name": ^7.14.5 - "@babel/helper-hoist-variables": ^7.14.5 - "@babel/helper-split-export-declaration": ^7.14.5 - "@babel/parser": ^7.15.0 - "@babel/types": ^7.15.0 + "@babel/code-frame": ^7.22.13 + "@babel/parser": ^7.22.15 + "@babel/types": ^7.22.15 + checksum: 1f3e7dcd6c44f5904c184b3f7fe280394b191f2fed819919ffa1e529c259d5b197da8981b6ca491c235aee8dbad4a50b7e31304aa531271cb823a4a24a0dd8fd + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.14.5, @babel/traverse@npm:^7.15.0, @babel/traverse@npm:^7.7.2": + version: 7.23.2 + resolution: "@babel/traverse@npm:7.23.2" + dependencies: + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.23.0 + "@babel/helper-environment-visitor": ^7.22.20 + "@babel/helper-function-name": ^7.23.0 + "@babel/helper-hoist-variables": ^7.22.5 + "@babel/helper-split-export-declaration": ^7.22.6 + "@babel/parser": ^7.23.0 + "@babel/types": ^7.23.0 debug: ^4.1.0 globals: ^11.1.0 - checksum: e13056690a2a4a4dd699e241b89d4f7cf701ceef2f4ee0efc32a8cc4e07e1bbd397423868ecfec8aa98a769486f7d08778420d48f981b4f5dbb1b2f211daf656 + checksum: 26a1eea0dde41ab99dde8b9773a013a0dc50324e5110a049f5d634e721ff08afffd54940b3974a20308d7952085ac769689369e9127dea655f868c0f6e1ab35d languageName: node linkType: hard @@ -1309,6 +1412,17 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.22.15, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0": + version: 7.23.0 + resolution: "@babel/types@npm:7.23.0" + dependencies: + "@babel/helper-string-parser": ^7.22.5 + "@babel/helper-validator-identifier": ^7.22.20 + to-fast-properties: ^2.0.0 + checksum: 215fe04bd7feef79eeb4d33374b39909ce9cad1611c4135a4f7fdf41fe3280594105af6d7094354751514625ea92d0875aba355f53e86a92600f290e77b0e604 + languageName: node + linkType: hard + "@bcoe/v8-coverage@npm:^0.2.3": version: 0.2.3 resolution: "@bcoe/v8-coverage@npm:0.2.3" @@ -1638,6 +1752,17 @@ __metadata: languageName: node linkType: hard +"@jridgewell/gen-mapping@npm:^0.3.2": + version: 0.3.3 + resolution: "@jridgewell/gen-mapping@npm:0.3.3" + dependencies: + "@jridgewell/set-array": ^1.0.1 + "@jridgewell/sourcemap-codec": ^1.4.10 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 4a74944bd31f22354fc01c3da32e83c19e519e3bbadafa114f6da4522ea77dd0c2842607e923a591d60a76699d819a2fbb6f3552e277efdb9b58b081390b60ab + languageName: node + linkType: hard + "@jridgewell/resolve-uri@npm:3.1.0": version: 3.1.0 resolution: "@jridgewell/resolve-uri@npm:3.1.0" @@ -1645,6 +1770,13 @@ __metadata: languageName: node linkType: hard +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.1 + resolution: "@jridgewell/resolve-uri@npm:3.1.1" + checksum: f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653 + languageName: node + linkType: hard + "@jridgewell/set-array@npm:^1.0.1": version: 1.1.2 resolution: "@jridgewell/set-array@npm:1.1.2" @@ -1669,6 +1801,23 @@ __metadata: languageName: node linkType: hard +"@jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.4.15 + resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" + checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.17": + version: 0.3.19 + resolution: "@jridgewell/trace-mapping@npm:0.3.19" + dependencies: + "@jridgewell/resolve-uri": ^3.1.0 + "@jridgewell/sourcemap-codec": ^1.4.14 + checksum: 956a6f0f6fec060fb48c6bf1f5ec2064e13cd38c8be3873877d4b92b4a27ba58289a34071752671262a3e3c202abcc3fa2aac64d8447b4b0fa1ba3c9047f1c20 + languageName: node + linkType: hard + "@jridgewell/trace-mapping@npm:^0.3.9": version: 0.3.17 resolution: "@jridgewell/trace-mapping@npm:0.3.17" @@ -2950,7 +3099,7 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.0.0": +"chalk@npm:^2.0.0, chalk@npm:^2.4.2": version: 2.4.2 resolution: "chalk@npm:2.4.2" dependencies: @@ -6467,12 +6616,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.4": - version: 3.3.4 - resolution: "nanoid@npm:3.3.4" +"nanoid@npm:^3.3.6": + version: 3.3.6 + resolution: "nanoid@npm:3.3.6" bin: nanoid: bin/nanoid.cjs - checksum: 2fddd6dee994b7676f008d3ffa4ab16035a754f4bb586c61df5a22cf8c8c94017aadd360368f47d653829e0569a92b129979152ff97af23a558331e47e37cd9c + checksum: 7d0eda657002738aa5206107bd0580aead6c95c460ef1bdd0b1a87a9c7ae6277ac2e9b945306aaa5b32c6dcb7feaf462d0f552e7f8b5718abfc6ead5c94a71b3 languageName: node linkType: hard @@ -7065,13 +7214,13 @@ __metadata: linkType: hard "postcss@npm:^8.2.15": - version: 8.4.14 - resolution: "postcss@npm:8.4.14" + version: 8.4.31 + resolution: "postcss@npm:8.4.31" dependencies: - nanoid: ^3.3.4 + nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: fe58766ff32e4becf65a7d57678995cfd239df6deed2fe0557f038b47c94e4132e7e5f68b5aa820c13adfec32e523b693efaeb65798efb995ce49ccd83953816 + checksum: 1d8611341b073143ad90486fcdfeab49edd243377b1f51834dc4f6d028e82ce5190e4f11bb2633276864503654fb7cab28e67abdc0fbf9d1f88cad4a0ff0beea languageName: node linkType: hard diff --git a/tools/build/build.js b/tools/build/build.js index f63411918e31..01491d4964e1 100755 --- a/tools/build/build.js +++ b/tools/build/build.js @@ -55,9 +55,8 @@ export const NoWarningParameter = new Juke.Parameter({ export const DmMapsIncludeTarget = new Juke.Target({ executes: async () => { const folders = [ - ...Juke.glob("_maps/map_files/**/modular_pieces/*.dmm"), + ...Juke.glob("_maps/outpost/**/*.dmm"), ...Juke.glob("_maps/RandomRuins/**/*.dmm"), - ...Juke.glob("_maps/RandomZLevels/**/*.dmm"), ...Juke.glob("_maps/shuttles/**/*.dmm"), ...Juke.glob("_maps/templates/**/*.dmm"), ]; @@ -81,7 +80,7 @@ export const DmTarget = new Juke.Target({ get(DefineParameter).includes("ALL_MAPS") && DmMapsIncludeTarget, ], inputs: [ - "_maps/map_files/generic/**", + "_maps/map_files/**", "code/**", "html/**", "icons/**", diff --git a/tools/changelog/generate_cl.py b/tools/changelog/generate_cl.py index 7259467f007d..2ab903eb8896 100644 --- a/tools/changelog/generate_cl.py +++ b/tools/changelog/generate_cl.py @@ -27,7 +27,7 @@ from pathlib import Path from github import Github, InputGitAuthor -from ruamel import yaml +from ruamel.yaml import YAML CL_BODY = re.compile(r":cl:(.+)?\r\n((.|\n|\r)+?)\r\n\/:cl:", re.MULTILINE) CL_SPLIT = re.compile(r"(^\w+):\s+(\w.+)", re.MULTILINE) @@ -71,8 +71,10 @@ write_cl["delete-after"] = True +yaml = YAML(typ='safe', pure=True) + with open(Path.cwd().joinpath("tools/changelog/tags.yml")) as file: - tags = yaml.safe_load(file) + tags = yaml.load(file) write_cl["changes"] = [] @@ -86,7 +88,6 @@ if write_cl["changes"]: with io.StringIO() as cl_contents: - yaml = yaml.YAML() yaml.indent(sequence=4, offset=2) yaml.dump(write_cl, cl_contents) cl_contents.seek(0) diff --git a/tools/ci/check_regex.py b/tools/ci/check_regex.py index 279d8236cbd6..f104139b7e18 100644 --- a/tools/ci/check_regex.py +++ b/tools/ci/check_regex.py @@ -31,6 +31,10 @@ modification, or removal. Good if you want to track down errors caused by commit or PR changes. + --github-actions + An output option to format the output in a way that Github Actions + can parse and show as annotations in the PR. + Copyright 2021 Martin Lyrå Permission is hereby granted, free of charge, to any person obtaining a copy @@ -99,6 +103,12 @@ dest="log_changes_only", default=False, action="store_true") +options.add_argument( + "--github-actions", + dest="github_actions", + default=False, + action="store_true" +) args = options.parse_args() @@ -790,9 +800,25 @@ def git_get_detached_head_ref(head: Head, ref_info: str) -> str: show_items.append("Current (%4i): %s" % (len(matches), matches)) if len(adds): show_items.append("+++++++ (%4i): %s" % (len(adds), adds)) + #Github actions annotations + if args.github_actions and matching != RESULT_OK: + for line_no in adds: + output_write("::error file=%s,line=%i,title=Check Regex::%s added to here, remove or update check_regex.yml" % ( + f, + line_no, + standard.message + ), to_stdout=True, to_file=False) inner_prefix = prefix if len(removes): show_items.append("------- (%4i): %s" % (len(removes), removes)) + #Github actions annotations + if args.github_actions and matching != RESULT_OK: + for line_no in removes: + output_write("::error file=%s,line=%i,title=Check Regex::%s removed from here, update check_regex.yml" % ( + f, + line_no, + standard.message + ), to_stdout=True, to_file=False) inner_prefix = prefix lines.append("%2s %s" % ("\u2500\u252C", f)) @@ -898,4 +924,4 @@ def git_get_detached_head_ref(head: Head, ref_info: str) -> str: output_file.close() output_file = None - exit(failure > 0 or fail_files > 0) \ No newline at end of file + exit(failure > 0 or fail_files > 0) diff --git a/tools/ci/install_byond.sh b/tools/ci/install_byond.sh index 4a688755d3d9..9108bde5ebec 100755 --- a/tools/ci/install_byond.sh +++ b/tools/ci/install_byond.sh @@ -1,7 +1,10 @@ #!/bin/bash set -euo pipefail -source dependencies.sh +# BYOND_MAJOR and BYOND_MINOR can be explicitly set, such as in alt_byond_versions.txt +if [ -z "${BYOND_MAJOR+x}" ]; then + source dependencies.sh +fi if [ -d "$HOME/BYOND/byond/bin" ] && grep -Fxq "${BYOND_MAJOR}.${BYOND_MINOR}" $HOME/BYOND/version.txt; then diff --git a/tools/merge-upstream-pull-request.sh b/tools/merge-upstream-pull-request.sh index 5ec04fce74ea..9f809c47217d 100644 --- a/tools/merge-upstream-pull-request.sh +++ b/tools/merge-upstream-pull-request.sh @@ -82,11 +82,11 @@ if echo "$CHERRY_PICK_OUTPUT" | grep -i 'error: mainline was specified but commi echo "Commit was a squash, retrying" if containsElement "$MERGE_SHA" "${COMMITS[@]}"; then for commit in $COMMITS; do - echo "Cherry-picking: $commit" - git -c core.editor=true cherry-pick "$commit" - # Add all files onto this branch - git add -A . - git -c core.editor=true cherry-pick --continue + echo "Cherry-picking: $commit" + git -c core.editor=true cherry-pick "$commit" + # Add all files onto this branch + git add -A . + git -c core.editor=true cherry-pick --continue done else echo "Cherry-picking: $MERGE_SHA" diff --git a/tools/requirements.txt b/tools/requirements.txt index 782c622eac64..dbaed6f0260b 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -1,11 +1,11 @@ pygit2==1.7.2 bidict==0.22.0 -Pillow==9.3.0 +Pillow==9.5.0 # check_regex.py colorama==0.4.4 PyYaml==6.0 -gitpython==3.1.32 +gitpython==3.1.37 unidiff==0.7.0 # changelogs diff --git a/tools/tgs_scripts/PreCompile.sh b/tools/tgs_scripts/PreCompile.sh index 2cc52be12741..6e34ab65af6a 100755 --- a/tools/tgs_scripts/PreCompile.sh +++ b/tools/tgs_scripts/PreCompile.sh @@ -60,5 +60,4 @@ cd .. # compile tgui echo "Compiling tgui..." cd "$1" -chmod +x tools/bootstrap/node # Workaround for https://github.com/tgstation/tgstation-server/issues/1167 env TG_BOOTSTRAP_CACHE="$original_dir" TG_BOOTSTRAP_NODE_LINUX=1 CBT_BUILD_MODE="TGS" tools/bootstrap/node tools/build/build.js