diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b5cac72b780..b60d02c79d2 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -26,3 +26,8 @@ _build_dependencies.sh @AffectedArc07 dreamchecker.exe @AffectedArc07 rust_g.dll @AffectedArc07 librust_g.so @AffectedArc07 + +### S34NW + +# TGUI stuff +/tgui/bin @S34NW diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index c3eb80df962..ae777746daf 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -157,7 +157,7 @@ if(thing == TRUE) return "bleh" var/other_thing = pick(TRUE, FALSE) if(other_thing == FALSE) - return "meh" + return "meh" // Good var/thing = pick(TRUE, FALSE) @@ -165,7 +165,7 @@ if(thing) return "bleh" var/other_thing = pick(TRUE, FALSE) if(!other_thing) - return "meh" + return "meh" ``` ### Use `pick(x, y, z)`, not `pick(list(x, y, z))` @@ -452,6 +452,32 @@ Look for code examples on how to properly use it. addtimer(CALLBACK(target, PROC_REF(dothing), arg1, arg2, arg3), 5 SECONDS) ``` +### Signals + +Signals are a slightly more advanced topic, but are often useful for attaching external behavior to objects that should be triggered when a specific event occurs. + +When defining procs that should be called by signals, you must include `SIGNAL_HANDLER` after the proc header. This ensures that no sleeping code can be called from within a signal handler, as that can cause problems with the signal system. + +Since callbacks can be connected to many signals with `RegisterSignal`, it can be difficult to pin down the source that a callback is invoked from. Any new `SIGNAL_HANDLER` should be followed by a comment listing the signals that the proc is expected to be invoked for. If there are multiple signals to be handled, separate them with a `+`. + +```dm +/atom/movable/proc/when_moved(atom/movable/A) + SIGNAL_HANDLER // COMSIG_MOVABLE_MOVED + do_something() + +/datum/component/foo/proc/on_enter(datum/source, atom/enterer) + SIGNAL_HANDLER // COMSIG_ATOM_ENTERED + COMSIG_ATOM_INITIALIZED_ON + do_something_else() +``` + +If your proc does have something that needs to sleep (such as a `do_after()`), do not simply omit the `SIGNAL_HANDLER`. Instead, call the sleeping code with `INVOKE_ASYNC` from within the signal handling function. + +```dm +/atom/movable/proc/when_moved(atom/movable/A) + SIGNAL_HANDLER // COMSIG_MOVABLE_MOVED + INVOKE_ASYNC(src, PROC_REF(thing_that_sleeps), arg1) +``` + ### Operators #### Spacing of operators @@ -834,8 +860,10 @@ Each role inherits the lower role's responsibilities (IE: Headcoders also have c `Commit Access` members have write access to the repository and can merge your PRs. People included in this role are: - [AffectedArc07](https://github.com/AffectedArc07) +- [Burzah](https://github.com/Burzah) - [Charliminator](https://github.com/hal9000PR) - [Contrabang](https://github.com/Contrabang) +- [DGamerL](https://github.com/DGamerL) - [lewcc](https://github.com/lewcc) --- @@ -846,6 +874,7 @@ Each role inherits the lower role's responsibilities (IE: Headcoders also have c - [Charliminator](https://github.com/hal9000PR) - [Contrabang](https://github.com/Contrabang) - [DGamerL](https://github.com/DGamerL) +- [FunnyMan3595](https://github.com/FunnyMan3595) - [Henri215](https://github.com/Henri215) - [lewcc](https://github.com/lewcc) - [Sirryan2002](https://github.com/Sirryan2002) diff --git a/.github/assets/book-dark.png b/.github/assets/book-dark.png new file mode 100644 index 00000000000..983e35880f8 Binary files /dev/null and b/.github/assets/book-dark.png differ diff --git a/.github/assets/book-light.png b/.github/assets/book-light.png new file mode 100644 index 00000000000..2568426a80c Binary files /dev/null and b/.github/assets/book-light.png differ diff --git a/.github/assets/compiles-sometimes.svg b/.github/assets/compiles-sometimes.svg new file mode 100644 index 00000000000..8232884ef84 --- /dev/null +++ b/.github/assets/compiles-sometimes.svg @@ -0,0 +1 @@ +COMPILESSOMETIMES \ No newline at end of file diff --git a/.github/assets/discord-dark.png b/.github/assets/discord-dark.png new file mode 100644 index 00000000000..ecddfb9d12a Binary files /dev/null and b/.github/assets/discord-dark.png differ diff --git a/.github/assets/discord-light.png b/.github/assets/discord-light.png new file mode 100644 index 00000000000..bf235384388 Binary files /dev/null and b/.github/assets/discord-light.png differ diff --git a/.github/assets/light-dark template.psd b/.github/assets/light-dark template.psd new file mode 100644 index 00000000000..b1c8eb0dfe8 Binary files /dev/null and b/.github/assets/light-dark template.psd differ diff --git a/.github/assets/made-in-byond.gif b/.github/assets/made-in-byond.gif new file mode 100644 index 00000000000..aed1b7ca243 Binary files /dev/null and b/.github/assets/made-in-byond.gif differ diff --git a/.github/assets/made-with-crayons.svg b/.github/assets/made-with-crayons.svg new file mode 100644 index 00000000000..3b727ea8bd9 --- /dev/null +++ b/.github/assets/made-with-crayons.svg @@ -0,0 +1,31 @@ + + made-with-crayons + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.github/assets/paradise.png b/.github/assets/paradise.png new file mode 100644 index 00000000000..859a3f4f635 Binary files /dev/null and b/.github/assets/paradise.png differ diff --git a/.github/assets/web-dark.png b/.github/assets/web-dark.png new file mode 100644 index 00000000000..d304acdcc30 Binary files /dev/null and b/.github/assets/web-dark.png differ diff --git a/.github/assets/web-light.png b/.github/assets/web-light.png new file mode 100644 index 00000000000..5c61978f8a7 Binary files /dev/null and b/.github/assets/web-light.png differ diff --git a/.github/assets/wiki-dark.png b/.github/assets/wiki-dark.png new file mode 100644 index 00000000000..26e0806faac Binary files /dev/null and b/.github/assets/wiki-dark.png differ diff --git a/.github/assets/wiki-light.png b/.github/assets/wiki-light.png new file mode 100644 index 00000000000..0b321777957 Binary files /dev/null and b/.github/assets/wiki-light.png differ diff --git a/.github/workflows/merge_upstream_master.yml b/.github/workflows/merge_upstream_master.yml index fc03ad8cc53..c5032c411a8 100644 --- a/.github/workflows/merge_upstream_master.yml +++ b/.github/workflows/merge_upstream_master.yml @@ -101,7 +101,7 @@ jobs: # Check if a workflow file would be modified by the merge (permissions prevent pushes if so) latest_workflow_commit=$(git log -n 1 --pretty=format:"%H" upstream/$BASE_BRANCH -- .github/workflows) if ! git branch --contains $latest_workflow_commit | grep -q "$(git rev-parse --abbrev-ref HEAD)"; then - gh pr comment ${{ github.event.issue.html_url }} --body "GitHub Actions can not push to this branch as workflow files have been changed since your branch was last updated. Please update your branch past https://github.com/ParadiseSS13/Paradise/commit/$latest_workflow_commit before using this command again."# + gh pr comment ${{ github.event.issue.html_url }} --body "GitHub Actions can not push to this branch as workflow files have been changed since your branch was last updated. Please update your branch past https://github.com/ParadiseSS13/Paradise/commit/$latest_workflow_commit before using this command again." echo "FAIL_NOTIFIED=true" >> "$GITHUB_ENV" exit 1 fi diff --git a/.github/workflows/render_nanomaps.yml b/.github/workflows/render_nanomaps.yml index 7ba495b3540..c9449cc382d 100644 --- a/.github/workflows/render_nanomaps.yml +++ b/.github/workflows/render_nanomaps.yml @@ -43,4 +43,7 @@ jobs: git pull origin master git commit -m "NanoMap Auto-Update (`date`)" -a || true git push -f -u origin nanomap-render - gh pr create -t "Automatic NanoMap Update" -b "This pull request updates the server NanoMaps. Please review the diff images before merging." -l "NanoMaps" -H "nanomap-render" -B "master" + result=$(gh pr create -t "Automatic NanoMap Update" -b "This pull request updates the server NanoMaps. Please review the diff images before merging." -l "NanoMaps" -H "nanomap-render" -B "master") + if echo "$result" | grep -q "No commits between master and nanomap-render" + echo "No NanoMaps update required, skipping." + exit 78 diff --git a/.tgs.yml b/.tgs.yml index 6970078ff70..43d320cca90 100644 --- a/.tgs.yml +++ b/.tgs.yml @@ -3,7 +3,7 @@ version: 1 # The BYOND version to use # Must be interpreted as a string, keep quoted -byond: "515.1620" +byond: '515.1633' # Folders to create in "/Configuration/GameStaticFiles/" static_files: # Config directory should be static diff --git a/COPYING b/COPYING deleted file mode 100644 index a4192d74542..00000000000 --- a/COPYING +++ /dev/null @@ -1,19 +0,0 @@ -Paradise -Copyright (C) 2010-2016 Paradise, Baystation12, Goonstation and tgstation13. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - - - -Any files located in the Paradise/goon, Paradise/icons/goonstation, or Paradise/sound/goonstation directories, or any subdirectories of mentioned directories are licensed under the Creative Commons 3.0 BY-NC-SA license (https://creativecommons.org/licenses/by-nc-sa/3.0) from Goonstation. diff --git a/LICENSE-AGPL3.txt b/LICENSE-AGPLv3.txt similarity index 100% rename from LICENSE-AGPL3.txt rename to LICENSE-AGPLv3.txt diff --git a/LICENSE-CC-BY-NC-SA-3.0.txt b/LICENSE-CC-BY-NC-SA-3.0.txt new file mode 100644 index 00000000000..46c8191674e --- /dev/null +++ b/LICENSE-CC-BY-NC-SA-3.0.txt @@ -0,0 +1,361 @@ +Creative Commons Legal Code + +Attribution-NonCommercial-ShareAlike 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(g) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined above) for the purposes of this + License. + c. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + d. "License Elements" means the following high-level license attributes + as selected by Licensor and indicated in the title of this License: + Attribution, Noncommercial, ShareAlike. + e. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + f. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + g. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + h. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + i. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + j. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved, including but not limited to the +rights described in Section 4(e). + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(d), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(d), as requested. + b. You may Distribute or Publicly Perform an Adaptation only under: (i) + the terms of this License; (ii) a later version of this License with + the same License Elements as this License; (iii) a Creative Commons + jurisdiction license (either this or a later license version) that + contains the same License Elements as this License (e.g., + Attribution-NonCommercial-ShareAlike 3.0 US) ("Applicable License"). + You must include a copy of, or the URI, for Applicable License with + every copy of each Adaptation You Distribute or Publicly Perform. You + may not offer or impose any terms on the Adaptation that restrict the + terms of the Applicable License or the ability of the recipient of the + Adaptation to exercise the rights granted to that recipient under the + terms of the Applicable License. You must keep intact all notices that + refer to the Applicable License and to the disclaimer of warranties + with every copy of the Work as included in the Adaptation You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Adaptation, You may not impose any effective technological + measures on the Adaptation that restrict the ability of a recipient of + the Adaptation from You to exercise the rights granted to that + recipient under the terms of the Applicable License. This Section 4(b) + applies to the Adaptation as incorporated in a Collection, but this + does not require the Collection apart from the Adaptation itself to be + made subject to the terms of the Applicable License. + c. You may not exercise any of the rights granted to You in Section 3 + above in any manner that is primarily intended for or directed toward + commercial advantage or private monetary compensation. The exchange of + the Work for other copyrighted works by means of digital file-sharing + or otherwise shall not be considered to be intended for or directed + toward commercial advantage or private monetary compensation, provided + there is no payment of any monetary compensation in con-nection with + the exchange of copyrighted works. + d. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and, (iv) consistent with Section 3(b), in the case of an Adaptation, + a credit identifying the use of the Work in the Adaptation (e.g., + "French translation of the Work by Original Author," or "Screenplay + based on original Work by Original Author"). The credit required by + this Section 4(d) may be implemented in any reasonable manner; + provided, however, that in the case of a Adaptation or Collection, at + a minimum such credit will appear, if a credit for all contributing + authors of the Adaptation or Collection appears, then as part of these + credits and in a manner at least as prominent as the credits for the + other contributing authors. For the avoidance of doubt, You may only + use the credit required by this Section for the purpose of attribution + in the manner set out above and, by exercising Your rights under this + License, You may not implicitly or explicitly assert or imply any + connection with, sponsorship or endorsement by the Original Author, + Licensor and/or Attribution Parties, as appropriate, of You or Your + use of the Work, without the separate, express prior written + permission of the Original Author, Licensor and/or Attribution + Parties. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor reserves + the exclusive right to collect such royalties for any exercise by + You of the rights granted under this License if Your exercise of + such rights is for a purpose or use which is otherwise than + noncommercial as permitted under Section 4(c) and otherwise waives + the right to collect royalties through any statutory or compulsory + licensing scheme; and, + iii. Voluntary License Schemes. The Licensor reserves the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License that is for a + purpose or use which is otherwise than noncommercial as permitted + under Section 4(c). + f. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE +FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS +AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE +WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT +LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, +ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT +DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED +WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of this License. + + Creative Commons may be contacted at https://creativecommons.org/. + diff --git a/LICENSE-CC-BY-NC-SA.txt b/LICENSE-CC-BY-NC-SA.txt deleted file mode 100644 index 860915c5c0e..00000000000 --- a/LICENSE-CC-BY-NC-SA.txt +++ /dev/null @@ -1,60 +0,0 @@ -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - - "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. - "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(g) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. - "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership. - "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, Noncommercial, ShareAlike. - "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. - "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. - "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. - "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. - "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - - to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; - to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified."; - to Distribute and Publicly Perform the Work including as incorporated in Collections; and, - to Distribute and Publicly Perform Adaptations. - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights described in Section 4(e). - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - - You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(d), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(d), as requested. - You may Distribute or Publicly Perform an Adaptation only under: (i) the terms of this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-NonCommercial-ShareAlike 3.0 US) ("Applicable License"). You must include a copy of, or the URI, for Applicable License with every copy of each Adaptation You Distribute or Publicly Perform. You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License. You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License. - You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensation, provided there is no payment of any monetary compensation in con-nection with the exchange of copyrighted works. - If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and, (iv) consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(d) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. - - For the avoidance of doubt: - Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; - Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License if Your exercise of such rights is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(c) and otherwise waives the right to collect royalties through any statutory or compulsory licensing scheme; and, - Voluntary License Schemes. The Licensor reserves the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License that is for a purpose or use which is otherwise than noncommercial as permitted under Section 4(c). - Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - - Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. - If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. - This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. - The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. diff --git a/LICENSE-CC-BY-SA-3.0.txt b/LICENSE-CC-BY-SA-3.0.txt new file mode 100644 index 00000000000..604209a8046 --- /dev/null +++ b/LICENSE-CC-BY-SA-3.0.txt @@ -0,0 +1,359 @@ +Creative Commons Legal Code + +Attribution-ShareAlike 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(f) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined below) for the purposes of this + License. + c. "Creative Commons Compatible License" means a license that is listed + at https://creativecommons.org/compatiblelicenses that has been + approved by Creative Commons as being essentially equivalent to this + License, including, at a minimum, because that license: (i) contains + terms that have the same purpose, meaning and effect as the License + Elements of this License; and, (ii) explicitly permits the relicensing + of adaptations of works made available under that license under this + License or a Creative Commons jurisdiction license with the same + License Elements as this License. + d. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + e. "License Elements" means the following high-level license attributes + as selected by Licensor and indicated in the title of this License: + Attribution, ShareAlike. + f. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + g. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + h. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + i. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + j. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + k. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; and, + iii. Voluntary License Schemes. The Licensor waives the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(c), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(c), as requested. + b. You may Distribute or Publicly Perform an Adaptation only under the + terms of: (i) this License; (ii) a later version of this License with + the same License Elements as this License; (iii) a Creative Commons + jurisdiction license (either this or a later license version) that + contains the same License Elements as this License (e.g., + Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible + License. If you license the Adaptation under one of the licenses + mentioned in (iv), you must comply with the terms of that license. If + you license the Adaptation under the terms of any of the licenses + mentioned in (i), (ii) or (iii) (the "Applicable License"), you must + comply with the terms of the Applicable License generally and the + following provisions: (I) You must include a copy of, or the URI for, + the Applicable License with every copy of each Adaptation You + Distribute or Publicly Perform; (II) You may not offer or impose any + terms on the Adaptation that restrict the terms of the Applicable + License or the ability of the recipient of the Adaptation to exercise + the rights granted to that recipient under the terms of the Applicable + License; (III) You must keep intact all notices that refer to the + Applicable License and to the disclaimer of warranties with every copy + of the Work as included in the Adaptation You Distribute or Publicly + Perform; (IV) when You Distribute or Publicly Perform the Adaptation, + You may not impose any effective technological measures on the + Adaptation that restrict the ability of a recipient of the Adaptation + from You to exercise the rights granted to that recipient under the + terms of the Applicable License. This Section 4(b) applies to the + Adaptation as incorporated in a Collection, but this does not require + the Collection apart from the Adaptation itself to be made subject to + the terms of the Applicable License. + c. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and (iv) , consistent with Ssection 3(b), in the case of an + Adaptation, a credit identifying the use of the Work in the Adaptation + (e.g., "French translation of the Work by Original Author," or + "Screenplay based on original Work by Original Author"). The credit + required by this Section 4(c) may be implemented in any reasonable + manner; provided, however, that in the case of a Adaptation or + Collection, at a minimum such credit will appear, if a credit for all + contributing authors of the Adaptation or Collection appears, then as + part of these credits and in a manner at least as prominent as the + credits for the other contributing authors. For the avoidance of + doubt, You may only use the credit required by this Section for the + purpose of attribution in the manner set out above and, by exercising + Your rights under this License, You may not implicitly or explicitly + assert or imply any connection with, sponsorship or endorsement by the + Original Author, Licensor and/or Attribution Parties, as appropriate, + of You or Your use of the Work, without the separate, express prior + written permission of the Original Author, Licensor and/or Attribution + Parties. + d. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR +OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY +KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, +INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, +FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF +LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, +WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION +OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of the License. + + Creative Commons may be contacted at https://creativecommons.org/. diff --git a/LICENSE-GPL3.txt b/LICENSE-GPLv3.txt similarity index 99% rename from LICENSE-GPL3.txt rename to LICENSE-GPLv3.txt index e4ca08d4b0d..94a9ed024d3 100644 --- a/LICENSE-GPL3.txt +++ b/LICENSE-GPLv3.txt @@ -1,7 +1,3 @@ -Note: New submissions as of 5th January 2015 now fall under AGPL v3, prior code is -still licensed GPL v3, see README.md for details. - - GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 diff --git a/README.md b/README.md index 196fb7376a2..4976414fc67 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,146 @@ -# Paradise -[![CI](https://github.com/ParadiseSS13/Paradise/workflows/CI/badge.svg)](https://github.com/ParadiseSS13/Paradise/actions?query=workflow%3ACI) -[![Render Nanomaps](https://github.com/ParadiseSS13/Paradise/workflows/Render%20Nanomaps/badge.svg)](https://github.com/ParadiseSS13/Paradise/actions?query=workflow%3A%22Render+Nanomaps%22) -[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/paradisess13/paradise.svg)](http://isitmaintained.com/project/paradisess13/paradise "Average time to resolve an issue") -[![Percentage of issues still open](http://isitmaintained.com/badge/open/paradisess13/paradise.svg)](http://isitmaintained.com/project/paradisess13/paradise "Percentage of issues still open") +Paradise Station -[![forthebadge](http://forthebadge.com/images/badges/60-percent-of-the-time-works-every-time.svg)](http://forthebadge.com) -[![forthebadge](http://forthebadge.com/images/badges/contains-technical-debt.svg)](http://forthebadge.com) -[![forthebadge](http://forthebadge.com/images/badges/fuck-it-ship-it.svg)](http://forthebadge.com) +##

Welcome to the main repository for the Paradise Station version of [Space Station 13](https://spacestation13.com/).

-# Useful Links +

+ CI + Render Nanomaps + Average time to resolve an issue + Percentage of issues still open +

-- [Discord](https://discordapp.com/invite/YJDsXFE) -- [Documentation](https://codedocs.paradisestation.org) -- [Website](https://www.paradisestation.org/) -# Useful Documents +

+ Compiles sometimes + Made in BYOND + Made with crayons +

-- [Autodocumentation Guide](.github/AUTODOC_GUIDE.md) -- [Code of Conduct](./CODE_OF_CONDUCT.md) -- [Contribution Guide](.github/CONTRIBUTING.md) -- [Installation Guide](.github/DOWNLOADING.md) + + + +

+ + + + + Discord + + + + + + + Code docs + + + + + + + Website + + + + + + + Game Wiki + + +

+ + + + +> [!TIP] +> Want to contribute for the first time but unsure where to start?
+> Join our Discord and check out the [#coding_chat](https://discord.com/channels/145533722026967040/145700319819464704) channel for helpful links and advice!
+> Alternatively, have a look at our community maintained [Guide to Contributing](https://paradisestation.org/wiki/index.php?title=Guide_to_Contributing) + +# Useful Documents and Links + +- ### [Dream Maker (DM) Reference](https://www.byond.com/docs/ref/) + +This reference site by the creators of BYOND details information on the DM language, the syntax used, functionality of native procs, and a lot more. This is always useful to have on hand when contributing. + +- ### [Autodocumentation Guide](.github/AUTODOC_GUIDE.md) + +This guide shows you how to leave code comments that comply with "autodocumentation", a system designed to make everyone's lives easier when reading or reviewing code! + +- ### [Code of Conduct](./CODE_OF_CONDUCT.md) + +All contributors are expected to read our Code of Conduct before they take part in our community. + +- ### [Contribution Guide](.github/CONTRIBUTING.md) + +Not sure how to take part and contribute? This guide gives an overview of how to make comments, pull requests, and open issues. + +This guide also sets out our code standards that we expect all submitted code to adhere to. + +- ### [Community Maintained Guide to Contributing](https://paradisestation.org/wiki/index.php?title=Guide_to_Contributing) + +This community maintained guide covers how to set yourself up for success when attempting to contribute to Paracode. + +> [!IMPORTANT] +> Paradise does not provide precompiled binaries, requiring you to build from source to host a local server.
+> Building Paradise is quick and simple, all you need to install is [BYOND](https://www.byond.com/download/).
+> You can learn more in our [Installation Guide](.github/DOWNLOADING.md). + +- ### [Paradise Station Development Team Structure](https://www.paradisestation.org/dev/policy/) + +A detailed policy document that governs how the Paradise Station Development Team functions, from the various roles that help keep things running to the process each PR goes through depending on the content. + +- ### [TGUI Tutorial](tgui/docs/tutorial-and-examples.md) + +TGUI is a user interface framework, built on InfernoJS, for all new player-facing UIs. + +TGUI is very different to most other BYOND user interfaces as it is written entirely in JavaScript with some data passed to and from DreamMaker. If you are looking to get to grips with TGUI, this tutorial is a good starting point. Additional information can also be found [here.](tgui) + +- ### [Mapping Guide](https://hackmd.io/@tgstation/SyVma0dS5#san7890s-A-Z-Guide-to-Mapping) + +Mapping for Paradise station can be daunting to new contributors. Here's a comprehensive quick-start put together by a community member that takes you from A-Z. --- -### LICENSE +# LICENSES -Paradise is licensed under the GNU Affero General Public License version 3. -As of 5th January 2015 any new contributions are licensed under the AGPL as well, -if you wish to submit code under the GPL v3 then commits and files must be marked as such -in comments. If you wish to use our code in a closed source manner you may use anything -before commit 445615b8439bf606ff204a42c8e7b6b69d983255, -which is licensed under GPL v3. -The major change here is that if you host a server using any code licensed under AGPL you -are required to provide full source code for your servers users as well, -including addons and modifications you have made. +> [!CAUTION] +> If you wish to use our code in a closed source manner (i.e. not make it available to the public and/or those who connect to services you offer using this code) you must **only** use code prior to commit [1af3ddef2af85937251e24384c2173c4b6c3222b on 2015/01/05 22:04 GMT](https://github.com/ParadiseSS13/Paradise/commit/1af3ddef2af85937251e24384c2173c4b6c3222b), which is licenced under GPLv3. -See [this](https://www.gnu.org/licenses/why-affero-gpl.html) for more information. +### Click each banner for further information -Any files located in the -`Paradise/goon`, -`Paradise/icons/goonstation`, or -`Paradise/sound/goonstation` -directories, or any subdirectories of mentioned directories are licensed under the -Creative Commons 3.0 BY-NC-SA license -(https://creativecommons.org/licenses/by-nc-sa/3.0) +--- -All other assets including icons and sound files are licensed under the -Creative Commons 3.0 BY-SA license (https://creativecommons.org/licenses/by-sa/3.0/), -unless otherwise indicated. +
+AGPLv3 license + +>All code after and including commit [1af3ddef2af85937251e24384c2173c4b6c3222b on 2015/01/05 22:04 GMT](https://github.com/ParadiseSS13/Paradise/commit/1af3ddef2af85937251e24384c2173c4b6c3222b) is licensed under the [GNU Affero General Public License version 3](https://www.gnu.org/licenses/agpl-3.0.en.html) unless otherwise specified within the folder or file. +
+ +
+GPLv3 license + +>All code prior to commit [1af3ddef2af85937251e24384c2173c4b6c3222b on 2015/01/05 22:04 GMT](https://github.com/ParadiseSS13/Paradise/commit/1af3ddef2af85937251e24384c2173c4b6c3222b) is licensed under the [GPL General Public License version 3](https://www.gnu.org/licenses/gpl-3.0.en.html) +
+ +
+MIT license + +>Some files are licenced under the [MIT license](https://opensource.org/license/MIT), these files will clearly specify this licence at the head of each file. +
+ +
+Creative Commons 3.0 BY-NC-SA + +>Any files with the ancestor directories [`Paradise/icons/goonstation`](icons/goonstation) or [`Paradise/sound/goonstation`](sound/goonstation) are licensed under the [Creative Commons 3.0 BY-NC-SA license](https://creativecommons.org/licenses/by-nc-sa/3.0). +> +>Further files or folders may also fall under this licence, and any such instances will be specified within the folder or file. +
+ +
+Creative Commons 3.0 BY-SA + +>All other non-code assets, including icons and sound files, are licensed under the [Creative Commons 3.0 BY-SA license](https://creativecommons.org/licenses/by-sa/3.0/), unless otherwise specified within the folder or file. +
diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql index 60c0dc25dc0..c472e55eb21 100644 --- a/SQL/paradise_schema.sql +++ b/SQL/paradise_schema.sql @@ -27,6 +27,7 @@ CREATE TABLE `characters` ( `real_name` varchar(55) COLLATE utf8mb4_unicode_ci NOT NULL, `name_is_always_random` tinyint(1) NOT NULL, `gender` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL, + `body_type` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL, `age` smallint(4) NOT NULL, `species` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL, `language` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL, diff --git a/SQL/updates/53-54.sql b/SQL/updates/53-54.sql index 303de0b32be..c2fb1988a29 100644 --- a/SQL/updates/53-54.sql +++ b/SQL/updates/53-54.sql @@ -2,4 +2,4 @@ #Add a choice for what type of brain borgs want to have ALTER TABLE `characters` - ADD COLUMN `cyborg_brain_type` VARCHAR(11) NOT NULL DEFAULT 'MMI' AFTER `height`; + ADD COLUMN `cyborg_brain_type` ENUM('MMI', 'Robobrain', 'Positronic') NOT NULL DEFAULT 'MMI' AFTER `height`; diff --git a/SQL/updates/54-55.sql b/SQL/updates/54-55.sql new file mode 100644 index 00000000000..8b388b65f0c --- /dev/null +++ b/SQL/updates/54-55.sql @@ -0,0 +1,9 @@ +# Updating DB from 54-55 - lewc +# Adds a new `body_type` (gender sprite) column to the `characters` table + +# Add the new column next to the existing `gender` one +ALTER TABLE `characters` + ADD COLUMN `body_type` varchar(11) COLLATE utf8mb4_unicode_ci NOT NULL AFTER `gender`; + +# Set the `body_type` column to whatever's already in `gender`, so that it doesn't change existing characters +UPDATE `characters` SET `body_type` = `gender` WHERE `gender` IS NOT NULL diff --git a/_maps/map_files/RandomRuins/SpaceRuins/intactemptyship.dmm b/_maps/map_files/RandomRuins/SpaceRuins/intactemptyship.dmm index a00c71b1e94..82378d884f4 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/intactemptyship.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/intactemptyship.dmm @@ -126,6 +126,11 @@ /obj/structure/bed, /turf/simulated/floor/mineral/titanium/purple, /area/ruin/space/powered) +"Z" = ( +/obj/structure/table/wood, +/obj/item/blank_tarot_card, +/turf/simulated/floor/mineral/titanium/purple, +/area/ruin/space/powered) (1,1,1) = {" a @@ -277,7 +282,7 @@ b j r w -n +Z j b a diff --git a/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm b/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm index cd0277ea77c..ce511619893 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm @@ -551,7 +551,6 @@ info = "Nothing of interest to report."; name = "november report" }, -/obj/item/pen, /obj/item/tape, /obj/item/radio/intercom{ freerange = 1; @@ -559,7 +558,7 @@ name = "intercom" }, /obj/item/paper_bin, -/obj/item/pen, +/obj/item/pen/multi/syndicate, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel/dark, /area/ruin/space/syndicate_listening_station) diff --git a/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm b/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm index 52cb532a602..b38b995bef2 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/mechtransport.dmm @@ -523,7 +523,7 @@ /obj/item/paper_bin{ pixel_x = -6 }, -/obj/item/pen, +/obj/item/pen/multi/syndicate, /turf/simulated/floor/mineral/plastitanium, /area/ruin/space/mech_transport) "MA" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm b/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm index 7fcf54e36ba..349e4181c28 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/moonoutpost19.dmm @@ -5200,6 +5200,7 @@ }, /obj/item/coin/antagtoken/syndicate, /obj/structure/table, +/obj/item/pen/multi/syndicate, /turf/simulated/floor/plating/asteroid/ancient, /area/ruin/space/moonbase19) "rk" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm index 9cca10a3239..da0e0f1d570 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm @@ -259,7 +259,6 @@ /area/ruin/space/onehalf/hallway) "aM" = ( /obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment, /obj/machinery/door/poddoor{ id_tag = "bayint1"; name = "mining drone bay blast door" @@ -636,9 +635,6 @@ /area/ruin/space/onehalf/hallway) "bA" = ( /obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -653,15 +649,6 @@ }, /turf/simulated/floor/plasteel, /area/ruin/space/onehalf/drone_bay) -"bC" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plasteel, -/area/ruin/space/onehalf/drone_bay) "bD" = ( /obj/structure/disposalpipe/junction{ dir = 8 @@ -1643,7 +1630,7 @@ aD aq aX bm -bC +bn bT aa cn diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndicatedruglab.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndicatedruglab.dmm index 83a335cc9b1..643d69228c3 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndicatedruglab.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndicatedruglab.dmm @@ -98,11 +98,11 @@ pixel_x = 4 }, /obj/item/paper/syndicate_druglab, -/obj/item/pen, /obj/item/flashlight/lamp/green/off{ pixel_y = 12; pixel_x = -6 }, +/obj/item/pen/multi/syndicate, /turf/simulated/floor/carpet/black, /area/ruin/space/syndicate_druglab) "qa" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm index 9c2fcf54cdc..51db92f2ef4 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndie_space_base.dmm @@ -2985,7 +2985,7 @@ dir = 8 }, /obj/item/hand_labeler, -/obj/item/pen, +/obj/item/pen/multi/syndicate, /turf/simulated/floor/plasteel{ dir = 9; icon_state = "darkgreen" @@ -3423,7 +3423,7 @@ "th" = ( /obj/structure/table, /obj/item/paper_bin, -/obj/item/pen, +/obj/item/pen/multi/syndicate, /obj/structure/extinguisher_cabinet{ name = "north bump"; pixel_y = 30 @@ -3760,7 +3760,7 @@ /area/ruin/unpowered/syndicate_space_base/service) "vd" = ( /obj/structure/table, -/obj/item/pen, +/obj/item/pen/multi/syndicate, /obj/item/paper_bin, /obj/item/stamp/syndicate, /obj/machinery/light_switch{ @@ -8462,7 +8462,7 @@ dir = 8 }, /obj/item/hand_labeler, -/obj/item/pen, +/obj/item/pen/multi/syndicate, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkgreen" diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm index eebd64133f9..c8c725c60a6 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm @@ -498,6 +498,7 @@ /obj/machinery/light/small{ dir = 4 }, +/obj/item/pen/multi/syndicate, /turf/simulated/floor/engine, /area/ruin/space/unpowered) "tX" = ( diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm index fc3e95325ab..5164e88c329 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/syndiedepot.dmm @@ -665,7 +665,7 @@ "bV" = ( /obj/structure/table, /obj/item/folder/syndicate/yellow, -/obj/item/pen, +/obj/item/pen/multi/syndicate, /turf/simulated/floor/plasteel{ icon_state = "dark" }, diff --git a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm index f6febf65964..5fd81140ae0 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm @@ -3133,10 +3133,6 @@ icon_state = "stage_stairs" }, /area/ruin/space/derelict/crew_quarters) -"hF" = ( -/obj/structure/sign/barsign, -/turf/simulated/wall/mineral/titanium/nodecon, -/area/ruin/space/derelict/crew_quarters) "hH" = ( /obj/machinery/door/airlock/public/glass{ name = "Eastern Annex" @@ -7572,6 +7568,13 @@ }, /turf/simulated/wall/mineral/titanium/nodecon/nodiagonal, /area/ruin/space/derelict/crew_quarters) +"Qq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/barsign{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel/dark, +/area/ruin/space/derelict/crew_quarters) "QN" = ( /turf/simulated/wall/mineral/titanium/nodecon/nosmooth, /area/ruin/space/derelict/arrival) @@ -13520,8 +13523,8 @@ gn gG gG gG -hF -hT +aV +Qq in iK je diff --git a/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm b/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm index d1f0175e1f4..8434558c253 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm @@ -167,6 +167,7 @@ /area/ruin/space/unpowered) "aF" = ( /obj/structure/table/wood, +/obj/item/blank_tarot_card, /turf/simulated/floor/wood{ icon_state = "wood-broken6" }, diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm index 816b7af9022..0d929eee69c 100644 --- a/_maps/map_files/generic/centcomm.dmm +++ b/_maps/map_files/generic/centcomm.dmm @@ -234,6 +234,10 @@ icon_state = "red" }, /area/holodeck/source_emptycourt) +"aS" = ( +/obj/effect/landmark/spawner/tradergearmajor, +/turf/simulated/floor/mineral/titanium, +/area/shuttle/trade/sol) "aT" = ( /obj/structure/sign/poster/official/random, /turf/simulated/wall/indestructible/riveted, @@ -2878,12 +2882,12 @@ "kf" = ( /obj/docking_port/stationary{ area_type = /area/syndicate_mothership; - dwidth = 15; + dwidth = 16; height = 21; id = "emergency_syndicate"; name = "404 Not Found"; turf_type = /turf/simulated/floor/plating/asteroid/snow/airless; - width = 33 + width = 41 }, /turf/simulated/floor/plating/asteroid/snow/airless, /area/syndicate_mothership) @@ -3174,6 +3178,15 @@ }, /turf/simulated/floor/plasteel/dark, /area/syndicate_mothership) +"lc" = ( +/obj/machinery/barsign{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "green" + }, +/area/centcom/evac) "le" = ( /obj/effect/landmark/spawner/syndieprisonwarp, /turf/simulated/floor/plasteel/dark, @@ -4489,11 +4502,11 @@ "pf" = ( /obj/docking_port/stationary/transit{ dir = 4; - dwidth = 15; + dwidth = 16; height = 21; id = "emergency_transit"; name = "emergency in transit"; - width = 33 + width = 41 }, /turf/space/transit, /area/space/centcomm) @@ -5371,10 +5384,6 @@ /obj/effect/landmark/spawner/syndie, /turf/simulated/floor/wood, /area/syndicate_mothership) -"sd" = ( -/obj/structure/sign/barsign, -/turf/simulated/wall/indestructible/riveted, -/area/ghost_bar) "se" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -5804,6 +5813,12 @@ }, /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate) +"tP" = ( +/obj/machinery/barsign/ghost_bar{ + pixel_y = 32 + }, +/turf/simulated/floor/wood, +/area/ghost_bar) "tQ" = ( /obj/machinery/mech_bay_recharge_port/upgraded/unsimulated{ dir = 8; @@ -6181,7 +6196,7 @@ /turf/simulated/floor/carpet/green, /area/ghost_bar) "vf" = ( -/obj/effect/landmark/spawner/soltrader, +/obj/effect/landmark/spawner/trader, /obj/structure/chair/comfy/brown, /turf/simulated/floor/wood, /area/trader_station/sol) @@ -6281,7 +6296,7 @@ /area/centcom/control) "vu" = ( /obj/structure/railing, -/obj/effect/landmark/spawner/soltrader, +/obj/effect/landmark/spawner/trader, /obj/structure/chair/comfy/brown{ dir = 4 }, @@ -6331,7 +6346,7 @@ /area/trader_station/sol) "vD" = ( /obj/structure/railing, -/obj/effect/landmark/spawner/soltrader, +/obj/effect/landmark/spawner/trader, /obj/structure/chair/comfy/brown{ dir = 8 }, @@ -7981,7 +7996,7 @@ /turf/simulated/wall/indestructible/syndicate, /area/admin) "Cv" = ( -/obj/structure/sign/barsign{ +/obj/machinery/barsign{ pixel_y = -32 }, /obj/machinery/icemachine, @@ -9234,7 +9249,7 @@ /area/centcom/specops) "GT" = ( /obj/structure/chair, -/obj/structure/sign/barsign{ +/obj/machinery/barsign{ pixel_y = 32 }, /obj/effect/landmark/spawner/tdomeobserve, @@ -11981,6 +11996,10 @@ /obj/item/lighter, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) +"PT" = ( +/obj/effect/landmark/spawner/tradergearminor, +/turf/simulated/floor/mineral/titanium, +/area/shuttle/trade/sol) "PU" = ( /obj/effect/turf_decal/delivery, /turf/simulated/floor/plasteel/dark, @@ -12184,11 +12203,11 @@ }, /obj/docking_port/stationary{ dir = 4; - dwidth = 15; + dwidth = 16; height = 21; id = "emergency_away"; name = "emergency centcom"; - width = 33 + width = 41 }, /turf/simulated/floor/plating, /area/shuttle/escape) @@ -12922,7 +12941,7 @@ pixel_y = 5 }, /obj/structure/table/wood, -/obj/structure/sign/barsign{ +/obj/machinery/barsign{ pixel_y = -32 }, /turf/simulated/floor/plasteel{ @@ -13923,11 +13942,6 @@ }, /turf/simulated/wall/indestructible/fakeglass, /area/centcom/specops) -"Xi" = ( -/obj/effect/spawner/window, -/obj/structure/sign/barsign, -/turf/simulated/floor/plating, -/area/centcom/evac) "Xj" = ( /turf/simulated/floor/transparent/glass, /area/centcom/specops) @@ -46015,8 +46029,8 @@ Ng Ng So Vs -Xi -Xx +Qe +lc YO ZZ gI @@ -48808,9 +48822,9 @@ vG of oI pc -rK +PT pc -uP +aS pc vY of @@ -49322,9 +49336,9 @@ vG of oS pc -pa +rK pc -pa +uP pc wa of @@ -49336,11 +49350,11 @@ aN aN aN aN -aN Db aN aN aN +aN Db aN aN @@ -49375,10 +49389,10 @@ Db aN aN aN +Db aN aN -aN -aN +Db aN aN aN @@ -50621,12 +50635,12 @@ aN aN aN aN -aN Db aN aN aN aN +aN od od vy @@ -50656,6 +50670,13 @@ XB od ux ux +aN +aN +aN +aN +aN +aN +aN Db aN aN @@ -50746,13 +50767,6 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN "} (141,1,1) = {" aN @@ -51906,12 +51920,12 @@ aN aN aN aN -aN Db aN aN aN aN +aN vy Ez Fq @@ -51941,6 +51955,13 @@ Pb vy Iv Zp +aN +aN +aN +aN +aN +aN +aN Db aN aN @@ -52031,13 +52052,6 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN "} (146,1,1) = {" aN @@ -52420,12 +52434,12 @@ aN aN aN aN -aN Db aN aN aN aN +aN vy EE Fo @@ -52455,6 +52469,13 @@ JC vy Iv Zp +aN +aN +aN +aN +aN +aN +aN Db aN aN @@ -52545,13 +52566,6 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN "} (148,1,1) = {" aN @@ -53705,7 +53719,6 @@ aN aN aN aN -aN Db aN aN @@ -53716,6 +53729,7 @@ aN aN aN aN +aN od JC Mc @@ -53740,6 +53754,13 @@ qF od Iv Zp +aN +aN +aN +aN +aN +aN +aN Db aN aN @@ -53830,13 +53851,6 @@ aN aN aN aN -aN -aN -aN -aN -aN -aN -aN "} (153,1,1) = {" aN @@ -54990,11 +55004,11 @@ aN aN aN aN -aN Db aN aN aN +aN Db aN aN @@ -55029,10 +55043,10 @@ Db aN aN aN +Db aN aN -aN -aN +Db aN aN aN @@ -73022,8 +73036,8 @@ vd Ml vd xy -sd -Jy +Me +tP Jy Jy Jy diff --git a/_maps/map_files/shuttles/emergency_shadow.dmm b/_maps/map_files/shuttles/emergency_shadow.dmm new file mode 100644 index 00000000000..3b4a0de97d8 --- /dev/null +++ b/_maps/map_files/shuttles/emergency_shadow.dmm @@ -0,0 +1,1871 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"af" = ( +/obj/structure/bed/dogbed, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"ao" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/obj/effect/turf_decal/delivery/blue/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"aK" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -1; + pixel_y = -3 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow" + }, +/area/shuttle/escape) +"aZ" = ( +/obj/effect/turf_decal/stripes/red/corner, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"bh" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10 + }, +/obj/structure/window/plasmareinforced, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"bD" = ( +/obj/effect/turf_decal/caution/stand_clear, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/shuttle/escape) +"bH" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/restraints/handcuffs, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"bT" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"cv" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/table/glass/reinforced/plastitanium, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/hyper, +/turf/simulated/floor/plasteel{ + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/shuttle/escape) +"cF" = ( +/obj/structure/chair/comfy/shuttle, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"cH" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow" + }, +/area/shuttle/escape) +"cV" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"cX" = ( +/obj/structure/window/full/plasmareinforced, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"dw" = ( +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkbluecorners" + }, +/area/shuttle/escape) +"ee" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Escape Shuttle Infirmary" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/shuttle/escape) +"eJ" = ( +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/delivery, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"fb" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9 + }, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"fi" = ( +/obj/machinery/recharger, +/obj/structure/table/glass/reinforced/plastitanium, +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"fE" = ( +/obj/structure/window/plasmareinforced{ + dir = 4 + }, +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/machinery/igniter/on, +/obj/machinery/atmospherics/unary/passive_vent/high_volume/shadow{ + dir = 4; + invisibility = 99 + }, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"fV" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, +/turf/simulated/floor/engine/plasma, +/area/shuttle/escape) +"ge" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/storage/fancy/donut_box, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/shuttle/escape) +"gs" = ( +/obj/structure/window/full/plasmareinforced, +/obj/machinery/atmospherics/trinary/filter/shadow{ + invisibility = 99 + }, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"gF" = ( +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"gG" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkbluecorners" + }, +/area/shuttle/escape) +"gV" = ( +/obj/structure/marker_beacon/dock_marker/collision, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"hm" = ( +/obj/structure/window/plasmareinforced{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + name = "east bump"; + pixel_x = 24 + }, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"hz" = ( +/obj/effect/turf_decal/delivery, +/obj/structure/dispenser, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"ix" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"jl" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"jB" = ( +/obj/structure/railing{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/catwalk, +/area/shuttle/escape) +"jR" = ( +/turf/simulated/floor/engine/o2, +/area/shuttle/escape) +"kx" = ( +/obj/structure/chair/comfy/shuttle, +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"kU" = ( +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"kY" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/storage/surgical_tray, +/obj/item/stack/nanopaste, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"ll" = ( +/obj/machinery/computer/security, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"lo" = ( +/obj/effect/turf_decal/delivery/blue/partial{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"lw" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/storage/fancy/donut_box, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"lD" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/shuttle/escape) +"mp" = ( +/obj/effect/turf_decal/delivery/blue/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"mw" = ( +/obj/machinery/sleeper, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"my" = ( +/obj/structure/window/plasmareinforced{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9 + }, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"nq" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"nL" = ( +/obj/machinery/computer/crew{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"nQ" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"ow" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/catwalk, +/area/shuttle/escape) +"oK" = ( +/mob/living/simple_animal/bot/medbot, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/shuttle/escape) +"oQ" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4 + }, +/turf/simulated/floor/engine/plasma, +/area/shuttle/escape) +"pi" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/item/kirbyplants, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"qk" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"qo" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/flash, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkbluecorners" + }, +/area/shuttle/escape) +"rg" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"rm" = ( +/obj/machinery/computer/emergency_shuttle{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"rS" = ( +/obj/structure/chair/comfy/shuttle, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkbluecorners" + }, +/area/shuttle/escape) +"sh" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"sE" = ( +/obj/machinery/computer/secure_data{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"tb" = ( +/obj/structure/window/full/plasmareinforced, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"uu" = ( +/obj/structure/window/full/plasmareinforced, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4 + }, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"uA" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkbluecorners" + }, +/area/shuttle/escape) +"uF" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/machinery/light, +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"uL" = ( +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/obj/machinery/door/airlock/command/glass{ + name = "Cockpit" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"uW" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/catwalk, +/area/shuttle/escape) +"vv" = ( +/obj/machinery/atmospherics/portable/canister/air, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"vw" = ( +/obj/structure/window/plasmareinforced{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4 + }, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"vx" = ( +/obj/item/defibrillator/loaded, +/obj/structure/table/glass/reinforced/plastitanium, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"vU" = ( +/turf/simulated/wall/mineral/plastitanium, +/area/shuttle/escape) +"wb" = ( +/obj/structure/window/full/plastitanium, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/grille, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"wj" = ( +/obj/machinery/space_heater, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow" + }, +/area/shuttle/escape) +"wz" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"wF" = ( +/obj/structure/window/plasmareinforced{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"xy" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/item/kirbyplants, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"yg" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"yQ" = ( +/obj/effect/turf_decal/delivery/blue/partial{ + dir = 8 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"yU" = ( +/obj/machinery/computer/atmos_alert{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/shuttle/escape) +"zj" = ( +/turf/simulated/floor/engine/plasma, +/area/shuttle/escape) +"zs" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow"; + dir = 1 + }, +/area/shuttle/escape) +"zu" = ( +/obj/structure/window/full/plasmareinforced, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9 + }, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"zI" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"Ah" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow"; + dir = 1 + }, +/area/shuttle/escape) +"AA" = ( +/obj/effect/turf_decal/arrows, +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/shuttle/escape) +"AS" = ( +/obj/effect/turf_decal/stripes/white/line, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Bm" = ( +/obj/machinery/sleeper, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"Bu" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/structure/window/plasmareinforced, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"BB" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/machinery/recharger, +/obj/item/gun/energy/gun/mini, +/obj/machinery/firealarm{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"BJ" = ( +/mob/living/simple_animal/bot/secbot, +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"Cw" = ( +/turf/template_noop, +/area/template_noop) +"CD" = ( +/obj/machinery/igniter/shadow, +/turf/simulated/floor/engine/plasma, +/area/shuttle/escape) +"CK" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"Dl" = ( +/obj/structure/window/full/plastitanium, +/obj/structure/grille, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"Dq" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Dz" = ( +/obj/item/storage/box/cups, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/table/glass/reinforced/plastitanium, +/turf/simulated/floor/plasteel{ + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/shuttle/escape) +"DN" = ( +/obj/structure/window/full/plastitanium, +/obj/machinery/door/firedoor/heavy, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/shuttle/escape) +"DY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/universal, +/turf/simulated/floor/engine/plasma, +/area/shuttle/escape) +"DZ" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"EM" = ( +/obj/structure/window/plasmareinforced{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"Fn" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkbluecorners" + }, +/area/shuttle/escape) +"Fu" = ( +/obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/delivery, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Fz" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkbluecorners" + }, +/area/shuttle/escape) +"FT" = ( +/obj/structure/closet/crate/freezer/iv_storage, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/shuttle/escape) +"FW" = ( +/obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/delivery/red, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Gp" = ( +/obj/effect/turf_decal/stripes/white/line, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Gs" = ( +/obj/machinery/atmospherics/unary/passive_vent/high_volume/shadow{ + dir = 4; + invisibility = 99 + }, +/turf/simulated/floor/engine/plasma, +/area/shuttle/escape) +"Gx" = ( +/obj/structure/extinguisher_cabinet{ + name = "south bump"; + pixel_y = -30 + }, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/shuttle/escape) +"GB" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/storage/firstaid/doctor, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkbluecorners" + }, +/area/shuttle/escape) +"GC" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + name = "south bump"; + pixel_y = -30 + }, +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"GI" = ( +/obj/machinery/computer/station_alert{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"GK" = ( +/obj/structure/chair/comfy/shuttle, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/shuttle/escape) +"GR" = ( +/obj/machinery/recharge_station, +/obj/effect/turf_decal/delivery, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Hh" = ( +/obj/structure/rack, +/obj/item/soap/nanotrasen, +/obj/item/grenade/chem_grenade/metalfoam, +/obj/item/grenade/chem_grenade/metalfoam, +/obj/machinery/alarm/directional/north, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow"; + dir = 1 + }, +/area/shuttle/escape) +"Hu" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/storage/fancy/donut_box, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/shuttle/escape) +"HB" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 8 + }, +/obj/effect/turf_decal/delivery/blue/partial{ + dir = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"IG" = ( +/obj/structure/chair/comfy/shuttle, +/obj/structure/extinguisher_cabinet{ + name = "north bump"; + pixel_y = 30 + }, +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"IR" = ( +/obj/effect/turf_decal/stripes/white/line, +/obj/structure/extinguisher_cabinet{ + name = "north bump"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Jh" = ( +/obj/structure/extinguisher_cabinet{ + name = "north bump"; + pixel_y = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"Jw" = ( +/obj/structure/chair/comfy/shuttle, +/turf/simulated/floor/plasteel{ + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/shuttle/escape) +"JM" = ( +/obj/machinery/door/airlock/hatch, +/obj/docking_port/mobile/emergency{ + dir = 2; + name = "NTSS Shadow emergency shuttle"; + dwidth = 16; + width = 41; + timid = 1; + height = 13; + shuttle_speed_factor = 2 + }, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"Kf" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/structure/decorative_structures/flammable/lava_land_display{ + pixel_x = 12 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Lv" = ( +/obj/structure/closet/emcloset, +/obj/effect/turf_decal/delivery, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"LA" = ( +/obj/structure/window/plasmareinforced{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 4 + }, +/obj/machinery/atmospherics/meter, +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 8 + }, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"LI" = ( +/obj/effect/turf_decal/stripes/white/line, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"LJ" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/megaphone, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"MP" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/shuttle/escape) +"MT" = ( +/obj/effect/turf_decal/stripes/red/corner, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10 + }, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"Nd" = ( +/obj/machinery/hologram/holopad, +/obj/effect/turf_decal/box/white, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"NI" = ( +/obj/structure/window/full/plasmareinforced, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"NO" = ( +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/door/airlock/security/glass{ + name = "Escape Shuttle Brig" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"Oe" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/item/kirbyplants, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"OL" = ( +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow"; + dir = 1 + }, +/area/shuttle/escape) +"OU" = ( +/obj/machinery/space_heater, +/turf/simulated/floor/plasteel{ + icon_state = "darkyellow" + }, +/area/shuttle/escape) +"OX" = ( +/obj/structure/closet/firecloset, +/turf/simulated/floor/plasteel{ + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/shuttle/escape) +"PX" = ( +/obj/machinery/door/airlock/hatch, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"Qj" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/plasteel{ + icon_regular_floor = "yellowsiding"; + icon_state = "tranquillite" + }, +/area/shuttle/escape) +"Qz" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkbluecorners" + }, +/area/shuttle/escape) +"QM" = ( +/obj/effect/turf_decal/stripes/white/corner, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Rk" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"RL" = ( +/obj/effect/turf_decal/stripes/red/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"RS" = ( +/obj/structure/chair/comfy/shuttle, +/turf/simulated/floor/plasteel{ + icon_state = "darkbluecorners" + }, +/area/shuttle/escape) +"RV" = ( +/obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/caution/stand_clear, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Sb" = ( +/obj/item/clothing/suit/apron/surgical, +/obj/item/clothing/mask/surgical, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/reagent_containers/glass/bottle/reagent/hydrocodone, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"Sn" = ( +/obj/effect/turf_decal/stripes/red/line, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/obj/structure/window/plasmareinforced, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"So" = ( +/obj/item/lazarus_injector, +/obj/item/healthanalyzer, +/obj/machinery/light, +/obj/structure/table/glass/reinforced/plastitanium, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/shuttle/escape) +"Tl" = ( +/obj/structure/table/glass/reinforced/plastitanium, +/obj/item/reagent_containers/drinks/bottle/wine, +/obj/item/reagent_containers/drinks/drinkingglass, +/obj/item/reagent_containers/drinks/drinkingglass, +/obj/item/reagent_containers/drinks/drinkingglass{ + pixel_x = -5 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"TW" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"Ux" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + name = "south bump"; + pixel_y = -30 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"US" = ( +/obj/structure/window/full/plastitanium, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/shuttle/escape) +"Vg" = ( +/obj/structure/rack, +/obj/item/storage/firstaid/toxin, +/obj/item/storage/firstaid/fire, +/obj/item/storage/firstaid/brute, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"VD" = ( +/obj/machinery/computer/communications{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"VR" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + name = "west bump"; + pixel_x = -27 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Wv" = ( +/obj/structure/window/full/plasmareinforced, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10 + }, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"Wy" = ( +/obj/machinery/door/airlock/engineering{ + name = "Engine Room" + }, +/obj/machinery/door/firedoor/heavy, +/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"WQ" = ( +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/shuttle/escape) +"WW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/meter, +/turf/simulated/floor/engine/plasma, +/area/shuttle/escape) +"Xp" = ( +/obj/structure/marker_beacon/dock_marker/collision, +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 1; + invisibility = 99 + }, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"XA" = ( +/turf/simulated/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/escape) +"XW" = ( +/obj/effect/turf_decal/stripes/red/line{ + dir = 8 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Yb" = ( +/obj/structure/window/full/plasmareinforced, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/engine/airless, +/area/shuttle/escape) +"Yc" = ( +/obj/machinery/light, +/turf/simulated/floor/plasteel{ + icon_state = "darkblue" + }, +/area/shuttle/escape) +"Yq" = ( +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/obj/machinery/door/airlock/command/glass{ + name = "Cockpit" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plating, +/area/shuttle/escape) +"YD" = ( +/obj/machinery/economy/vending/medical, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"YP" = ( +/obj/effect/turf_decal/delivery/blue/partial{ + dir = 4 + }, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) +"Zc" = ( +/obj/item/surgical_drapes, +/obj/machinery/optable, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkblue" + }, +/area/shuttle/escape) +"Zk" = ( +/obj/item/storage/box/handcuffs, +/obj/structure/table/glass/reinforced/plastitanium, +/turf/simulated/floor/mineral/plastitanium/red/brig, +/area/shuttle/escape) +"Zq" = ( +/obj/structure/window/plasmareinforced{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/red/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 6 + }, +/turf/simulated/floor/pod/dark, +/area/shuttle/escape) +"ZN" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/simulated/floor/plasteel/dark, +/area/shuttle/escape) + +(1,1,1) = {" +Cw +Cw +Cw +CK +CK +CK +vU +CK +CK +CK +Cw +Cw +Cw +"} +(2,1,1) = {" +Cw +Cw +vU +fE +fE +fE +vU +fE +fE +fE +vU +Cw +Cw +"} +(3,1,1) = {" +Cw +Cw +vU +uW +uW +jB +vv +ow +uW +uW +vU +Cw +Cw +"} +(4,1,1) = {" +Cw +vU +XA +MT +vw +vw +LA +vw +vw +fb +XA +vU +Cw +"} +(5,1,1) = {" +gV +Dl +zs +Bu +NI +Yb +zu +cX +cX +Zq +wj +wb +Xp +"} +(6,1,1) = {" +Cw +vU +Ah +Sn +uu +fV +zj +Gs +cX +wF +OU +vU +Cw +"} +(7,1,1) = {" +vU +XA +Hh +bh +gs +oQ +DY +WW +cX +wF +aK +XA +vU +"} +(8,1,1) = {" +US +Lv +OL +Bu +tb +jR +CD +jR +cX +wF +cH +Lv +US +"} +(9,1,1) = {" +vU +hz +OL +Bu +Wv +Yb +Yb +Yb +Yb +my +cH +GR +vU +"} +(10,1,1) = {" +US +eJ +OL +wz +EM +EM +hm +EM +EM +nQ +cH +eJ +US +"} +(11,1,1) = {" +vU +vU +Wy +vU +DN +DN +vU +DN +DN +vU +Wy +vU +vU +"} +(12,1,1) = {" +US +xy +Dq +VR +cV +cV +cV +cV +cV +VR +QM +Oe +US +"} +(13,1,1) = {" +US +Jw +Rk +aZ +nq +nq +nq +nq +nq +DZ +AS +MP +US +"} +(14,1,1) = {" +vU +GK +Rk +XA +US +US +US +US +US +XA +AS +lD +vU +"} +(15,1,1) = {" +US +Jw +Rk +vU +kx +gF +Zk +gF +zI +vU +AS +MP +vU +"} +(16,1,1) = {" +US +Jw +Rk +vU +kx +gF +fi +gF +zI +vU +AS +MP +US +"} +(17,1,1) = {" +PX +AA +Rk +vU +cF +gF +BJ +gF +uF +vU +AS +MP +vU +"} +(18,1,1) = {" +vU +bD +Rk +vU +IG +gF +gF +gF +GC +vU +AS +MP +vU +"} +(19,1,1) = {" +PX +AA +Ux +vU +kx +gF +gF +gF +zI +vU +IR +MP +US +"} +(20,1,1) = {" +US +Qj +Rk +XA +US +US +NO +US +US +XA +AS +lD +vU +"} +(21,1,1) = {" +US +Hu +jl +RL +XW +XW +bT +XW +XW +yg +Gp +Dz +US +"} +(22,1,1) = {" +vU +FW +Fu +FW +Fu +FW +RV +FW +Fu +FW +Fu +FW +vU +"} +(23,1,1) = {" +US +ge +ZN +cV +yQ +yQ +lo +yQ +yQ +cV +LI +cv +US +"} +(24,1,1) = {" +US +OX +Rk +XA +US +US +ee +US +US +XA +AS +lD +vU +"} +(25,1,1) = {" +JM +AA +Rk +vU +vx +Fz +WQ +dw +Vg +vU +AS +MP +US +"} +(26,1,1) = {" +vU +bD +Rk +vU +qk +WQ +WQ +WQ +FT +vU +AS +MP +US +"} +(27,1,1) = {" +PX +AA +Rk +vU +Sb +WQ +oK +WQ +So +vU +AS +MP +vU +"} +(28,1,1) = {" +US +Jw +Rk +vU +Jh +WQ +WQ +WQ +Gx +vU +AS +MP +US +"} +(29,1,1) = {" +US +Jw +Ux +vU +Zc +kY +mw +YD +Bm +vU +IR +MP +US +"} +(30,1,1) = {" +vU +GK +Rk +XA +US +US +US +US +US +XA +AS +lD +vU +"} +(31,1,1) = {" +US +Jw +Rk +kU +YP +YP +YP +YP +YP +kU +AS +MP +US +"} +(32,1,1) = {" +US +pi +ao +mp +mp +mp +mp +mp +mp +mp +HB +pi +US +"} +(33,1,1) = {" +vU +vU +US +US +uL +vU +vU +vU +Yq +US +US +vU +vU +"} +(34,1,1) = {" +Cw +vU +lw +uA +kU +qo +BB +GB +kU +rS +bH +vU +Cw +"} +(35,1,1) = {" +Cw +vU +Tl +Qz +kU +sh +kU +sh +kU +RS +LJ +vU +Cw +"} +(36,1,1) = {" +Cw +vU +XA +TW +kU +kU +Nd +kU +kU +Yc +XA +vU +Cw +"} +(37,1,1) = {" +Cw +Cw +US +af +gG +kU +kU +kU +Fn +ix +US +Cw +Cw +"} +(38,1,1) = {" +Cw +Cw +US +US +sE +kU +Kf +kU +yU +US +US +Cw +Cw +"} +(39,1,1) = {" +Cw +Cw +Cw +US +ll +gG +rg +Fn +GI +US +Cw +Cw +Cw +"} +(40,1,1) = {" +Cw +Cw +Cw +US +US +VD +rm +nL +US +US +Cw +Cw +Cw +"} +(41,1,1) = {" +Cw +Cw +Cw +Cw +US +US +US +US +US +Cw +Cw +Cw +Cw +"} diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index 57c028ebbfc..5d9fe7bc8d1 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -22947,11 +22947,11 @@ "brK" = ( /obj/docking_port/stationary{ dir = 4; - dwidth = 15; + dwidth = 16; height = 21; id = "emergency_home"; name = "emergency evac bay"; - width = 33 + width = 41 }, /turf/space, /area/space) @@ -23086,7 +23086,7 @@ /area/station/maintenance/port) "bsg" = ( /obj/structure/table, -/obj/item/clothing/head/soft/grey{ +/obj/item/clothing/head/soft{ pixel_x = -2; pixel_y = 3 }, @@ -24963,10 +24963,6 @@ "bzd" = ( /turf/simulated/floor/plasteel/goonplaque/memorial, /area/station/hallway/secondary/exit) -"bze" = ( -/obj/structure/sign/barsign, -/turf/simulated/wall, -/area/station/service/bar) "bzf" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -40410,6 +40406,7 @@ d2 = 4; icon_state = "1-4" }, +/obj/structure/closet/emcloset, /turf/simulated/floor/plating/airless, /area/station/science/toxins/test) "cDL" = ( @@ -52972,7 +52969,6 @@ icon_state = "1-2" }, /obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment, /obj/structure/sign/securearea{ pixel_x = -32 }, @@ -63680,6 +63676,12 @@ }, /turf/simulated/floor/engine, /area/station/science/xenobiology) +"iYj" = ( +/obj/machinery/barsign{ + pixel_y = 32 + }, +/turf/simulated/floor/plasteel, +/area/station/hallway/primary/starboard/west) "iYo" = ( /obj/item/taperecorder, /obj/structure/table, @@ -67423,13 +67425,6 @@ icon_state = "darkyellow" }, /area/station/science/robotics/chargebay) -"kOa" = ( -/obj/structure/closet/emcloset, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/plating/airless, -/area/station/science/toxins/test) "kOt" = ( /obj/machinery/hologram/holopad, /turf/simulated/floor/plasteel, @@ -71305,9 +71300,9 @@ "mIA" = ( /obj/structure/table, /obj/item/stamp/granted, -/obj/item/clothing/head/soft, +/obj/item/clothing/head/soft/cargo, /obj/item/hand_labeler, -/obj/item/clothing/head/soft, +/obj/item/clothing/head/soft/cargo, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "brown" @@ -72200,6 +72195,15 @@ icon_state = "whitepurple" }, /area/station/science/toxins/mixing) +"nhM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel/airless, +/area/station/science/toxins/test) "nhZ" = ( /obj/structure/cable{ d2 = 4; @@ -74887,7 +74891,6 @@ /area/station/maintenance/apmaint) "owP" = ( /obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating/airless, /area/station/maintenance/asmaint) "oxe" = ( @@ -87545,6 +87548,11 @@ }, /turf/simulated/floor/wood, /area/station/security/permabrig) +"uGP" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plasteel/airless, +/area/station/science/toxins/test) "uHC" = ( /obj/machinery/computer/communications{ dir = 4 @@ -93748,6 +93756,13 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) +"xQI" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/plasteel/airless, +/area/station/science/toxins/test) "xQL" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical, @@ -130556,8 +130571,8 @@ bmq bmq bmq bzo -bze -bAk +aUS +iYj bHy bDb bEy @@ -152679,9 +152694,9 @@ aaa aaa aaa aaa -doE -doE -doE +aaa +aaa +aaa aaa aaa aab @@ -152934,15 +152949,15 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa +aaa +aaa aab -gnU -ldS -clB -cnk -cid -cie -cie cie +cij cvs cie cie @@ -153191,18 +153206,18 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa +aaa +aab aab -ldS -cjZ -cjZ -cjZ cie -cie -ckb -cdK +xQI cjZ -udq -ckb +nhM +cie cie cie clA @@ -153448,19 +153463,19 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aaa aab -ldS -cjZ -cjZ -cjZ -clB -ckb -ckb +aab +cie +cie cdK cjZ udq ckb -ckb +cie cie jgm cjZ @@ -153705,13 +153720,13 @@ aaa aaa aaa aaa +aaa +aaa +aaa +aab aab -ldS -clA -kOa -jgm cie -ckb +cie ckb cdK cjZ @@ -153963,9 +153978,9 @@ aaa aaa aaa aaa -cid -cid -cie +aaa +aab +aab cie cie ckb @@ -154220,13 +154235,13 @@ aaa aaa aaa aaa -cid +aab +aab cie cie ckb ckb ckb -ckb cdK cjZ udq @@ -154476,10 +154491,10 @@ aaa aaa aaa aaa -aaa -cij +aab +aab +cie cie -ckb ckb ckb ckb @@ -154733,9 +154748,9 @@ aaa aaa aaa aaa -aaa +aab +cie cie -ckb ckb ckb ckb @@ -155249,7 +155264,7 @@ aaa aaa aab cie -ckb +uGP ckb ckb ckb diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index ccc69336a86..74cd9d342b9 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -159,6 +159,9 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "abd" = ( @@ -306,6 +309,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -779,6 +785,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -961,6 +970,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/secondary/entry/north) "afY" = ( @@ -2849,6 +2859,13 @@ /obj/effect/landmark/spawner/xeno, /turf/simulated/floor/plating, /area/station/maintenance/disposal/northeast) +"arP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/starboard) "arS" = ( /obj/structure/disposalpipe/trunk{ dir = 2 @@ -3225,6 +3242,16 @@ icon_state = "darkredcorners" }, /area/station/security/brig) +"auo" = ( +/obj/machinery/optable, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkpurple" + }, +/area/station/science/robotics) "aup" = ( /obj/structure/cable/orange{ d1 = 4; @@ -3610,7 +3637,6 @@ icon_state = "4-8" }, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "green" }, /area/station/public/quantum/service) @@ -4967,6 +4993,15 @@ /obj/effect/turf_decal/stripes/red, /turf/simulated/floor/engine, /area/station/engineering/control) +"aFQ" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Aft Asteroid Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/spawner/random_spawners/dirt_frequent, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/station/maintenance/asmaint) "aGc" = ( /obj/machinery/camera{ c_tag = "Arcade East"; @@ -6609,6 +6644,7 @@ /area/station/security/permabrig) "aQR" = ( /obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) "aQS" = ( @@ -8856,6 +8892,9 @@ /obj/item/stack/cable_coil{ amount = 5 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) "bcQ" = ( @@ -9682,6 +9721,14 @@ }, /turf/simulated/floor/plasteel, /area/station/public/locker) +"bgJ" = ( +/obj/structure/table/reinforced, +/obj/item/storage/surgical_tray, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "darkpurple" + }, +/area/station/science/robotics) "bgM" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 @@ -12237,24 +12284,6 @@ /obj/effect/spawner/window/reinforced/plasma, /turf/simulated/floor/plating, /area/station/engineering/engine/supermatter) -"bty" = ( -/obj/structure/window/reinforced/polarized, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/mecha_parts/core, -/obj/item/stock_parts/cell/high/plus, -/obj/item/stock_parts/cell/high/plus, -/obj/item/stock_parts/cell/high/plus, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/science/robotics) "btz" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14515,6 +14544,15 @@ icon_state = "whiteyellow" }, /area/station/medical/chemistry) +"bDk" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/starboard) "bDq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -14849,6 +14887,7 @@ dir = 8 }, /obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint2) "bEP" = ( @@ -16885,6 +16924,7 @@ /area/station/command/bridge) "bMX" = ( /obj/structure/closet/wardrobe/mixed, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "bMY" = ( @@ -16893,6 +16933,17 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/port) +"bNc" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/asmaint) "bNf" = ( /obj/structure/chair/office/dark, /obj/effect/landmark/start/librarian, @@ -17059,6 +17110,9 @@ /turf/simulated/wall/r_wall, /area/station/engineering/smes) "bNE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) "bNL" = ( @@ -17079,6 +17133,9 @@ d2 = 2; icon_state = "1-2" }, +/obj/structure/disposalpipe/segment/corner{ + dir = 4 + }, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -17189,6 +17246,7 @@ dir = 4 }, /obj/structure/closet/emcloset, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -18515,6 +18573,18 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/fpmaint) +"bTM" = ( +/obj/structure/cable/orange{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/asmaint) "bTN" = ( /obj/machinery/light_switch{ pixel_y = 24; @@ -18732,6 +18802,9 @@ icon_state = "4-8" }, /obj/machinery/alarm/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/engine{ slowdown = -0.3 }, @@ -19083,7 +19156,6 @@ pixel_x = 24; name = "east bump" }, -/obj/structure/disposalpipe/segment, /obj/effect/spawner/random_spawners/dirt_often, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" @@ -19255,6 +19327,7 @@ }, /obj/effect/decal/cleanable/cobweb, /obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "bWl" = ( @@ -19526,6 +19599,7 @@ "bXu" = ( /obj/structure/rack, /obj/item/pickaxe/emergency, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "bXv" = ( @@ -21044,33 +21118,10 @@ /obj/effect/turf_decal/delivery/hollow, /turf/simulated/floor/plating, /area/station/maintenance/disposal/external/southeast) -"chX" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "purplecorner" - }, -/area/station/hallway/primary/aft/east) "chY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/camera{ - c_tag = "Research Asteroid Hallway 4" - }, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -21079,6 +21130,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/disposalpipe/segment/corner{ + dir = 1 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -21110,8 +21164,14 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + color = "#954535" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /turf/simulated/floor/plasteel{ dir = 1; @@ -21976,10 +22036,10 @@ d2 = 8; icon_state = "4-8" }, -/obj/structure/disposalpipe/sortjunction{ - dir = 2; - name = "disposal pipe - Chemistry"; - sort_type_txt = "11" +/obj/structure/disposalpipe/sortjunction/reversed{ + name = "disposal pipe - Medbay"; + sort_type_txt = "9"; + dir = 8 }, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" @@ -22079,6 +22139,7 @@ /obj/structure/closet/emcloset, /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "coO" = ( @@ -22304,6 +22365,12 @@ }, /turf/simulated/floor/plating, /area/station/turret_protected/aisat/interior) +"cpT" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/science/robotics) "cpU" = ( /obj/structure/cable/orange{ d1 = 2; @@ -23110,7 +23177,7 @@ "cvm" = ( /obj/structure/table, /obj/item/clothing/gloves/fingerless, -/obj/item/clothing/head/soft, +/obj/item/clothing/head/soft/cargo, /turf/simulated/floor/plasteel{ icon_state = "darkbrown" }, @@ -23138,6 +23205,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -23749,6 +23817,7 @@ "czP" = ( /obj/structure/closet/crate, /obj/item/pickaxe, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/apmaint) "czQ" = ( @@ -23962,6 +24031,9 @@ d2 = 4; icon_state = "2-4" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "cAW" = ( @@ -24438,6 +24510,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/disposalpipe/segment/corner{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -25683,6 +25758,7 @@ /obj/machinery/light{ dir = 4 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -26106,10 +26182,6 @@ "cMz" = ( /turf/simulated/wall/r_wall, /area/station/maintenance/fore) -"cMA" = ( -/obj/structure/sign/barsign, -/turf/simulated/wall, -/area/station/maintenance/gambling_den) "cME" = ( /obj/structure/cable/orange{ d1 = 2; @@ -29080,6 +29152,11 @@ icon_state = "dark" }, /area/station/turret_protected/ai_upload) +"daz" = ( +/obj/structure/closet/emcloset, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/port) "daA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -30964,6 +31041,9 @@ /area/station/hallway/primary/fore/north) "dnc" = ( /obj/effect/spawner/random_spawners/dirt_often, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "neutralfull" }, @@ -31090,6 +31170,7 @@ /area/station/maintenance/disposal/west) "doo" = ( /obj/structure/closet/emcloset, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fpmaint) "dos" = ( @@ -33698,6 +33779,11 @@ icon_state = "whitepurple" }, /area/station/science/hallway) +"dCm" = ( +/obj/effect/spawner/window/reinforced/polarized, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/station/science/robotics) "dCt" = ( /obj/structure/cable/orange{ d1 = 4; @@ -33825,6 +33911,7 @@ /area/station/maintenance/starboard) "dCU" = ( /obj/structure/closet/emcloset, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/starboard) "dCV" = ( @@ -34562,6 +34649,15 @@ icon_state = "neutralfull" }, /area/station/hallway/primary/fore/west) +"dOh" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/station/maintenance/starboard) "dOk" = ( /obj/machinery/atmospherics/meter, /obj/machinery/atmospherics/pipe/simple/visible/green, @@ -34773,6 +34869,9 @@ icon_state = "4-8" }, /obj/effect/spawner/random_spawners/dirt_frequent, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "dQT" = ( @@ -35010,6 +35109,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -35156,6 +35258,13 @@ icon_state = "neutralfull" }, /area/station/hallway/primary/aft/west) +"dWR" = ( +/obj/machinery/computer/operating, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "darkpurple" + }, +/area/station/science/robotics) "dXo" = ( /obj/machinery/light/small{ dir = 4 @@ -35376,6 +35485,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -35470,6 +35582,7 @@ "eeZ" = ( /obj/structure/closet/crate, /obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/fore2) "efa" = ( @@ -35699,7 +35812,8 @@ dir = 4 }, /obj/machinery/disposal/deliveryChute{ - dir = 8 + dir = 8; + name = "cadaver delivery chute" }, /turf/simulated/floor/plating/airless, /area/station/maintenance/disposal/west) @@ -35983,6 +36097,7 @@ /area/station/hallway/primary/central/west) "eot" = ( /obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) "eoz" = ( @@ -36240,6 +36355,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/simulated/floor/plating, /area/station/maintenance/storage) "etG" = ( @@ -36307,6 +36423,7 @@ /area/station/service/clown) "eux" = ( /obj/structure/closet/emcloset, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/maintcentral) "euL" = ( @@ -36395,6 +36512,9 @@ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "evL" = ( @@ -36637,6 +36757,7 @@ /obj/structure/closet/crate{ name = "top secret mime supplies" }, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -36716,6 +36837,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -36809,16 +36933,6 @@ icon_state = "asteroidplating" }, /area/station/maintenance/port) -"eDf" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel/white, -/area/station/science/robotics) "eDi" = ( /obj/structure/cable/orange{ d1 = 2; @@ -36852,6 +36966,9 @@ /obj/machinery/light/small{ dir = 4 }, +/obj/structure/disposalpipe/segment/corner{ + dir = 8 + }, /turf/simulated/floor/plating, /area/station/hallway/secondary/entry/north) "eEd" = ( @@ -37539,6 +37656,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/engine{ slowdown = -0.3 }, @@ -37621,7 +37741,8 @@ dir = 4 }, /obj/machinery/disposal/deliveryChute{ - dir = 8 + dir = 8; + name = "cadaver delivery chute" }, /turf/simulated/floor/plating/airless, /area/station/maintenance/disposal/south) @@ -37646,6 +37767,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "eTc" = ( @@ -38029,6 +38153,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -38204,6 +38331,7 @@ /obj/structure/disposalpipe/segment/corner{ dir = 8 }, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -38492,6 +38620,7 @@ }, /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance, +/obj/structure/disposalpipe/segment/corner, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "fkc" = ( @@ -39320,17 +39449,6 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/central/north) -"fyR" = ( -/obj/structure/closet/secure_closet/roboticist, -/obj/item/radio/intercom{ - pixel_x = 28; - name = "custom placement" - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkpurple" - }, -/area/station/science/robotics) "fyS" = ( /obj/structure/cable/orange{ d1 = 1; @@ -39811,6 +39929,7 @@ /area/station/service/library) "fIL" = ( /obj/effect/turf_decal/stripes/corner, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -39912,11 +40031,6 @@ }, /area/station/hallway/primary/aft/west) "fLp" = ( -/obj/structure/disposalpipe/sortjunction{ - dir = 2; - name = "disposal pipe - CMO Office"; - sort_type_txt = "10" - }, /obj/effect/spawner/random_spawners/dirt_often, /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -40732,10 +40846,6 @@ icon_state = "whitegreen" }, /area/station/public/sleep) -"fYD" = ( -/obj/structure/rack, -/turf/simulated/floor/plating/asteroid/ancient, -/area/station/maintenance/apmaint) "fYG" = ( /obj/machinery/door/airlock/public/glass{ name = "Walkway" @@ -41465,9 +41575,6 @@ name = "Port Asteroid Maintenance" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -41549,14 +41656,6 @@ icon_state = "wood-broken7" }, /area/station/maintenance/asmaint) -"gqG" = ( -/obj/structure/disposalpipe/segment/corner{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/station/medical/break_room) "gqH" = ( /obj/structure/cable/orange{ d1 = 1; @@ -41725,6 +41824,13 @@ }, /turf/simulated/floor/engine, /area/station/engineering/control) +"gus" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment/corner, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/starboard) "gux" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'KEEP CLEAR OF PAD WHEN IN USE'."; @@ -42570,14 +42676,6 @@ icon_state = "purplefull" }, /area/station/hallway/primary/aft/west) -"gIk" = ( -/obj/structure/disposalpipe/segment{ - color = "#954535" - }, -/turf/simulated/floor/plasteel{ - icon_state = "neutralfull" - }, -/area/station/hallway/primary/aft/east) "gIm" = ( /obj/effect/spawner/window/reinforced, /obj/structure/sign/chemistry, @@ -43133,6 +43231,9 @@ d2 = 4; icon_state = "1-4" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -43227,6 +43328,9 @@ /obj/effect/turf_decal/caution/red{ dir = 8 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -43282,6 +43386,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -43786,6 +43893,7 @@ "hcK" = ( /obj/effect/decal/cleanable/cobweb, /obj/structure/closet/wardrobe/black, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/port) "hcT" = ( @@ -44108,6 +44216,7 @@ "hjb" = ( /obj/structure/girder, /obj/structure/grille, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/asmaint) "hjp" = ( @@ -44526,6 +44635,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/engine{ slowdown = -0.3 }, @@ -44628,6 +44740,7 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment/corner, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "hsS" = ( @@ -44813,6 +44926,7 @@ /area/mine/unexplored/cere/cargo) "huF" = ( /obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/west) "huM" = ( @@ -44923,6 +45037,7 @@ /area/station/maintenance/disposal/west) "hxc" = ( /obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -45896,10 +46011,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/plasteel/white, @@ -45931,6 +46046,12 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/disposal/westalt) +"hNt" = ( +/obj/structure/disposalpipe/segment/corner{ + dir = 1 + }, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/starboard) "hOa" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -46035,6 +46156,11 @@ /obj/item/roller, /turf/simulated/floor/plating, /area/station/maintenance/starboard) +"hPI" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/two, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/fore2) "hPX" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -46240,6 +46366,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/engine{ slowdown = -0.3 }, @@ -46388,6 +46517,18 @@ }, /turf/simulated/floor/wood, /area/station/command/office/blueshield) +"hUh" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/asmaint) "hUs" = ( /turf/space, /area/station/security/armory/secure) @@ -46588,7 +46729,6 @@ /obj/structure/chair/sofa/corp/right{ dir = 8 }, -/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -46778,6 +46918,7 @@ /area/station/command/office/ntrep) "ibf" = ( /obj/structure/closet/emcloset, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) "ibH" = ( @@ -47120,6 +47261,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -47540,16 +47684,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/west) -"imU" = ( -/obj/structure/cable/orange{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/plating{ - icon_state = "asteroidplating" - }, -/area/station/maintenance/starboard) "inn" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -47627,6 +47761,11 @@ icon_state = "dark" }, /area/station/security/checkpoint/secondary) +"ioH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating, +/area/station/maintenance/starboard) "ioJ" = ( /obj/effect/spawner/random_spawners/wall_rusted_always, /turf/simulated/wall, @@ -48016,10 +48155,10 @@ d2 = 8; icon_state = "4-8" }, -/obj/structure/disposalpipe/segment/corner{ - dir = 1 - }, /obj/effect/spawner/random_spawners/dirt_frequent, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -48088,6 +48227,20 @@ /obj/effect/spawner/random_spawners/dirt_often, /turf/simulated/floor/plating, /area/station/maintenance/disposal/external/north) +"iun" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/starboard) "iuy" = ( /obj/machinery/light/small{ dir = 4 @@ -48179,6 +48332,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/secondary/entry/north) "ivK" = ( @@ -48227,10 +48381,6 @@ }, /turf/simulated/floor/plating, /area/station/hallway/spacebridge/serveng) -"iwJ" = ( -/obj/structure/sign/barsign, -/turf/simulated/wall, -/area/station/service/bar) "iwU" = ( /obj/structure/sign/directions/evac{ dir = 4; @@ -48248,6 +48398,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -48389,6 +48542,9 @@ dir = 8 }, /obj/machinery/economy/vending/tool, +/obj/structure/disposalpipe/segment/corner{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) "iyP" = ( @@ -48867,6 +49023,10 @@ icon_state = "dark" }, /area/station/medical/morgue) +"iIc" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/starboard) "iIj" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -49289,6 +49449,7 @@ /area/station/maintenance/fore) "iOU" = ( /obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/wood, /area/station/maintenance/starboard) "iPa" = ( @@ -49628,6 +49789,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/engine{ slowdown = -0.3 }, @@ -49913,6 +50077,7 @@ /area/station/science/xenobiology) "iXm" = ( /obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fsmaint) "iXt" = ( @@ -50016,6 +50181,7 @@ /area/mine/unexplored/cere/orbiting) "iZd" = ( /obj/structure/closet/emcloset, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/hallway/primary/fore/west) "iZr" = ( @@ -50454,6 +50620,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "jgF" = ( @@ -50488,7 +50657,6 @@ dir = 4; pixel_x = 11 }, -/obj/structure/disposalpipe/segment/corner, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" }, @@ -50504,18 +50672,6 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/apmaint) -"jhA" = ( -/obj/structure/window/reinforced/polarized{ - dir = 8 - }, -/obj/structure/sink{ - dir = 8; - pixel_x = -6 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/science/robotics) "jhX" = ( /obj/machinery/ai_status_display, /turf/simulated/wall, @@ -50616,21 +50772,12 @@ /obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/plating, /area/station/maintenance/disposal/southwest) -"jkh" = ( -/obj/machinery/camera{ - c_tag = "Robotics Surgery"; - dir = 8; - network = list("SS13","RD") - }, -/obj/machinery/optable, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkpurple" - }, -/area/station/science/robotics) "jkk" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 }, /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -50790,6 +50937,7 @@ pixel_x = 24; name = "custom placement" }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -50927,6 +51075,7 @@ /obj/structure/disposalpipe/segment/corner{ dir = 4 }, +/obj/effect/spawner/lootdrop/maintenance/two, /turf/simulated/floor/plating, /area/station/maintenance/disposal/east) "jpP" = ( @@ -50989,6 +51138,26 @@ icon_state = "whitepurple" }, /area/station/science/xenobiology) +"jqN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purplecorner" + }, +/area/station/hallway/primary/aft/east) "jqP" = ( /obj/structure/table, /obj/item/storage/box/lights/mixed, @@ -51012,6 +51181,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -51025,6 +51197,17 @@ icon_state = "neutralfull" }, /area/station/hallway/secondary/exit) +"jrk" = ( +/obj/machinery/button/windowtint{ + dir = 8; + id = "surg1"; + pixel_x = 24 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkpurple" + }, +/area/station/science/robotics) "jrw" = ( /obj/structure/cable{ d1 = 1; @@ -51872,6 +52055,7 @@ /obj/structure/railing{ dir = 4 }, +/obj/structure/disposalpipe/segment, /turf/space, /area/station/hallway/spacebridge/dockmed) "jCN" = ( @@ -52121,6 +52305,11 @@ icon_state = "purple" }, /area/station/hallway/primary/aft/west) +"jGE" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/port) "jGH" = ( /obj/machinery/computer/crew{ dir = 1 @@ -52644,16 +52833,6 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) -"jOU" = ( -/obj/structure/disposalpipe/sortjunction{ - dir = 2; - name = "disposal pipe - Genetics"; - sort_type_txt = "23" - }, -/turf/simulated/floor/plasteel{ - icon_state = "cafeteria" - }, -/area/station/medical/break_room) "jPa" = ( /obj/structure/grille, /turf/simulated/floor/plating{ @@ -53662,6 +53841,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -53705,6 +53885,7 @@ /area/shuttle/arrival/station) "kis" = ( /obj/machinery/alarm/directional/east, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -54508,7 +54689,6 @@ icon_state = "0-8" }, /turf/simulated/floor/plasteel{ - dir = 2; icon_state = "green" }, /area/station/public/quantum/service) @@ -54701,6 +54881,9 @@ "kwQ" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance, +/obj/structure/disposalpipe/segment/corner{ + dir = 4 + }, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/asmaint) "kwS" = ( @@ -55139,7 +55322,7 @@ /turf/simulated/floor/plating, /area/station/turret_protected/ai) "kDJ" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel/white, /area/station/science/robotics/chargebay) "kDN" = ( @@ -55307,6 +55490,7 @@ "kIn" = ( /obj/structure/table, /obj/item/storage/fancy/cigarettes, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/south) "kIo" = ( @@ -55590,19 +55774,6 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/port/south) -"kMa" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/storage/firstaid/machine, -/obj/item/storage/firstaid/machine, -/obj/item/robotanalyzer, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "darkpurple" - }, -/area/station/science/robotics) "kMh" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -55622,7 +55793,7 @@ }, /area/station/security/lobby) "kMq" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ +/obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 }, /turf/simulated/floor/plasteel/white, @@ -56432,10 +56603,6 @@ icon_state = "redcorner" }, /area/station/hallway/secondary/entry/north) -"kYJ" = ( -/obj/structure/closet/crate, -/turf/simulated/floor/plating, -/area/station/maintenance/storage) "kYN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -56546,6 +56713,7 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/spawner/random_spawners/dirt_often, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/secondary/entry/north) "lbg" = ( @@ -56755,6 +56923,10 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) +"ldB" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating/asteroid/ancient, +/area/station/maintenance/asmaint) "ldH" = ( /obj/structure/cable{ d1 = 2; @@ -57464,6 +57636,9 @@ name = "External Airlock Access" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/hallway/secondary/entry/north) "lmO" = ( @@ -58617,6 +58792,19 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/disposal/east) +"lDd" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/asmaint) "lDm" = ( /obj/structure/disposalpipe/segment{ color = "#954535" @@ -59046,6 +59234,7 @@ /obj/structure/railing{ dir = 4 }, +/obj/structure/disposalpipe/segment, /turf/space, /area/station/hallway/spacebridge/dockmed) "lLO" = ( @@ -59321,16 +59510,6 @@ icon_state = "cafeteria" }, /area/station/service/kitchen) -"lQy" = ( -/obj/structure/disposalpipe/junction{ - dir = 8; - color = "#954535" - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "purplecorner" - }, -/area/station/hallway/primary/aft/east) "lQB" = ( /obj/machinery/light{ dir = 8 @@ -59393,6 +59572,7 @@ icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) "lRb" = ( @@ -60288,14 +60468,23 @@ /obj/structure/dispenser/oxygen, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/north) +"mfZ" = ( +/obj/structure/disposalpipe/segment/corner{ + dir = 4 + }, +/obj/effect/turf_decal/delivery/red, +/turf/simulated/floor/plasteel{ + icon_state = "darkpurple" + }, +/area/station/science/robotics) "mgu" = ( /obj/docking_port/stationary{ dir = 4; - dwidth = 15; + dwidth = 16; height = 21; id = "emergency_home"; name = "emergency evac bay"; - width = 33 + width = 41 }, /turf/space, /area/space) @@ -60579,6 +60768,7 @@ dir = 4 }, /obj/structure/closet/crate, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/station/maintenance/disposal/east) "mlM" = ( @@ -60599,13 +60789,12 @@ }, /area/station/service/barber) "mml" = ( -/obj/structure/window/reinforced/polarized, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 10 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -61878,6 +62067,9 @@ /obj/structure/chair/sofa/corp{ dir = 1 }, +/obj/machinery/barsign{ + pixel_y = -32 + }, /turf/simulated/floor/carpet, /area/station/hallway/primary/port/east) "mJX" = ( @@ -62113,6 +62305,9 @@ /area/station/hallway/spacebridge/cargocom) "mOb" = ( /obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) "mOf" = ( @@ -62181,6 +62376,10 @@ /area/station/maintenance/electrical_shop) "mPu" = ( /obj/structure/table/wood/poker, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/barsign{ + pixel_y = 32 + }, /turf/simulated/floor/wood{ icon_state = "wood-broken" }, @@ -62335,6 +62534,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) "mSq" = ( @@ -62518,6 +62718,7 @@ pixel_x = -32 }, /obj/effect/spawner/random_spawners/dirt_often, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/secondary/entry/north) "mUe" = ( @@ -62942,6 +63143,14 @@ icon_state = "redyellowfull" }, /area/station/service/bar) +"nbj" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/science/robotics) "nbn" = ( /obj/machinery/alarm/directional/east, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -63160,10 +63369,6 @@ }, /turf/simulated/floor/plating, /area/station/hallway/secondary/entry/north) -"neV" = ( -/obj/structure/closet/crate, -/turf/simulated/floor/plating/asteroid/ancient, -/area/station/maintenance/port) "nfb" = ( /obj/structure/table/glass, /obj/item/storage/box/syringes, @@ -63465,6 +63670,9 @@ }, /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -63484,6 +63692,9 @@ icon_state = "0-2" }, /obj/effect/turf_decal/stripes/end, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/medical/chemistry) "nkv" = ( @@ -63932,6 +64143,7 @@ d2 = 8; icon_state = "4-8" }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, /turf/simulated/floor/plating, /area/station/engineering/tech_storage) "nta" = ( @@ -64104,6 +64316,15 @@ icon_state = "whiteblue" }, /area/station/medical/storage/secondary) +"nvu" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/science/robotics) "nvv" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -64244,6 +64465,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -64948,6 +65172,9 @@ }, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "nKC" = ( @@ -65198,10 +65425,12 @@ /area/station/hallway/primary/central/east) "nOM" = ( /obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/plasteel/white, /area/station/science/robotics) "nON" = ( @@ -65217,7 +65446,6 @@ /turf/simulated/wall, /area/station/hallway/primary/aft/west) "nOU" = ( -/obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/maintenance/external{ name = "External Airlock Access" }, @@ -65237,6 +65465,14 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/port2) +"nOX" = ( +/obj/structure/disposalpipe/segment/corner{ + dir = 1 + }, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/two, +/turf/simulated/floor/plating, +/area/station/maintenance/starboard) "nPo" = ( /turf/simulated/floor/plasteel{ dir = 5; @@ -65464,21 +65700,16 @@ /area/station/maintenance/port2) "nTV" = ( /obj/structure/table, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/electrical{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/multitool, -/obj/item/multitool, -/obj/item/flash/synthetic, -/obj/item/flash/synthetic, -/obj/item/flash/synthetic, -/obj/item/flash/synthetic, -/obj/item/flash/synthetic, -/obj/item/flash/synthetic, -/obj/item/flash/synthetic, /obj/machinery/light, +/obj/item/radio/intercom{ + name = "custom placement"; + pixel_y = -28 + }, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stock_parts/cell/high/plus, +/obj/item/mecha_parts/core, /turf/simulated/floor/plasteel{ dir = 10; icon_state = "darkpurple" @@ -66457,6 +66688,9 @@ icon_state = "4-8" }, /obj/machinery/camera/autoname, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/engine{ slowdown = -0.3 }, @@ -67098,13 +67332,6 @@ slowdown = -0.3 }, /area/station/hallway/spacebridge/engmed) -"ouB" = ( -/obj/structure/chair/office/dark, -/obj/effect/landmark/start/roboticist, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/science/robotics) "ouF" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -67489,6 +67716,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) "oBr" = ( @@ -67548,6 +67776,12 @@ slowdown = -0.3 }, /area/station/hallway/spacebridge/sercom) +"oCL" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/asmaint) "oCT" = ( /obj/structure/mineral_door/wood, /turf/simulated/floor/plating{ @@ -69383,12 +69617,19 @@ /turf/simulated/floor/grass, /area/station/service/hydroponics) "phx" = ( -/obj/machinery/computer/operating{ +/obj/effect/mapping_helpers/airlock/polarized, +/obj/effect/mapping_helpers/airlock/access/all/science/robotics, +/obj/machinery/door/airlock/research/glass{ + name = "Robotics Surgery" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkpurple" + icon_state = "dark" }, /area/station/science/robotics) "phM" = ( @@ -69918,16 +70159,6 @@ icon_state = "white" }, /area/station/science/misc_lab) -"pqq" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/public/quantum/security) "pqr" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 @@ -70135,6 +70366,14 @@ }, /turf/simulated/floor/plasteel, /area/station/hallway/primary/fore/east) +"ptL" = ( +/obj/structure/disposalpipe/junction/reversed{ + dir = 8 + }, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/starboard) "ptP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -70426,6 +70665,7 @@ }, /obj/structure/rack, /obj/item/stack/rods, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/starboard) "pxV" = ( @@ -70512,6 +70752,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -71427,6 +71670,7 @@ /area/station/command/office/hos) "pOf" = ( /obj/structure/closet/firecloset/full, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/fsmaint2) "pOk" = ( @@ -71655,8 +71899,8 @@ /turf/simulated/floor/plating, /area/station/maintenance/maintcentral) "pRd" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; +/obj/structure/disposalpipe/junction{ + dir = 8; color = "#954535" }, /obj/effect/spawner/random_spawners/dirt_often, @@ -72006,6 +72250,9 @@ d2 = 4; icon_state = "1-4" }, +/obj/structure/disposalpipe/segment/corner{ + dir = 1 + }, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "pXh" = ( @@ -72551,7 +72798,10 @@ }, /area/station/hallway/primary/central/north) "qeq" = ( -/turf/simulated/mineral/ancient/outer, +/obj/item/kirbyplants/plant21, +/turf/simulated/floor/plasteel{ + icon_state = "darkpurple" + }, /area/station/science/robotics) "qet" = ( /obj/structure/plasticflaps{ @@ -72693,6 +72943,9 @@ d2 = 4; icon_state = "2-4" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/engine{ slowdown = -0.3 }, @@ -73357,6 +73610,27 @@ icon_state = "darkred" }, /area/station/security/permabrig) +"qpt" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/newscaster{ + pixel_y = 28; + name = "north bump" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purplecorner" + }, +/area/station/hallway/primary/aft/east) "qpu" = ( /obj/structure/cable/orange{ d1 = 1; @@ -74660,6 +74934,17 @@ }, /turf/simulated/floor/carpet/green, /area/station/service/library) +"qKH" = ( +/obj/machinery/camera{ + c_tag = "Robotics Surgery"; + dir = 8; + network = list("SS13","RD") + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkpurple" + }, +/area/station/science/robotics) "qKK" = ( /obj/machinery/door/airlock/maintenance{ name = "Fore Asteroid Maintenance Access" @@ -75135,6 +75420,18 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) +"qSB" = ( +/obj/structure/table/reinforced, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath/medical, +/obj/item/reagent_containers/spray/cleaner{ + desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; + name = "Surgery Cleaner" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/science/robotics) "qSK" = ( /turf/simulated/floor/plasteel, /area/station/public/locker) @@ -75194,6 +75491,7 @@ /obj/machinery/light/small{ dir = 8 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/secondary/entry/north) "qUt" = ( @@ -75402,6 +75700,15 @@ icon_state = "redcorner" }, /area/station/security/main) +"qYo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plating{ + icon_state = "asteroidplating" + }, +/area/station/maintenance/starboard) "qYD" = ( /obj/item/pen, /obj/item/storage/firstaid/regular, @@ -75672,6 +75979,7 @@ /obj/machinery/atmospherics/pipe/simple/visible{ dir = 6 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) "rez" = ( @@ -75704,6 +76012,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/secondary/entry/north) "rfv" = ( @@ -75903,6 +76212,9 @@ dir = 4; pixel_y = 40 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -76374,6 +76686,9 @@ pixel_y = 28; name = "custom placement" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -76558,6 +76873,7 @@ /area/station/public/quantum/cargo) "rxg" = ( /obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/apmaint) "rxi" = ( @@ -76740,16 +77056,7 @@ /turf/simulated/floor/carpet/black, /area/station/command/office/captain) "rAM" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/bodybags{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/storage/box/masks, -/obj/item/storage/box/gloves{ - pixel_x = 4; - pixel_y = 4 - }, +/obj/structure/closet/secure_closet/roboticist, /turf/simulated/floor/plasteel{ icon_state = "darkpurple" }, @@ -77488,6 +77795,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -78367,6 +78677,9 @@ "sde" = ( /obj/structure/grille/broken, /obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "sdo" = ( @@ -78478,6 +78791,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -78498,6 +78814,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/engine{ slowdown = -0.3 }, @@ -78645,20 +78964,31 @@ }, /area/station/turret_protected/aisat/interior) "shk" = ( -/obj/item/clothing/mask/breath/medical, -/obj/item/tank/internals/anesthetic, -/obj/item/reagent_containers/spray/cleaner{ - desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; - name = "Surgery Cleaner" +/obj/structure/table, +/obj/item/storage/firstaid{ + name = "first-aid kit (empty)" }, -/obj/machinery/button/windowtint{ +/obj/item/storage/firstaid{ + name = "first-aid kit (empty)" + }, +/obj/item/storage/firstaid{ + name = "first-aid kit (empty)" + }, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/reagent_containers/glass/bucket, +/obj/item/reagent_containers/glass/bucket, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/obj/machinery/firealarm{ dir = 1; - pixel_y = -24 + pixel_y = -24; + name = "south bump" }, -/obj/structure/window/reinforced/polarized{ - dir = 8 - }, -/obj/structure/table/reinforced, /turf/simulated/floor/plasteel{ icon_state = "darkpurple" }, @@ -78779,6 +79109,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/starboard) "siJ" = ( @@ -79146,6 +79479,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/power/apc/directional/west, /obj/structure/cable, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/secondary/entry/north) "sqX" = ( @@ -80425,13 +80759,6 @@ slowdown = -0.3 }, /area/station/hallway/spacebridge/sercom) -"sLj" = ( -/obj/structure/table/reinforced, -/obj/item/storage/surgical_tray, -/turf/simulated/floor/plasteel{ - icon_state = "darkpurple" - }, -/area/station/science/robotics) "sLD" = ( /obj/structure/cable/orange{ d1 = 1; @@ -80441,6 +80768,18 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, /area/station/maintenance/fsmaint) +"sLE" = ( +/obj/structure/cable/orange{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/station/maintenance/starboard) "sLH" = ( /obj/machinery/mech_bay_recharge_port{ dir = 2 @@ -80622,11 +80961,11 @@ /area/station/service/kitchen) "sOk" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/effect/spawner/random_spawners/dirt_frequent, /obj/structure/disposalpipe/segment{ dir = 4; color = "#954535" }, -/obj/effect/spawner/random_spawners/dirt_frequent, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "purplecorner" @@ -81492,6 +81831,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -81712,6 +82054,9 @@ d2 = 4; icon_state = "2-4" }, +/obj/structure/disposalpipe/segment/corner{ + dir = 8 + }, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -81817,15 +82162,6 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/port/east) -"tiG" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "darkpurple" - }, -/area/station/science/robotics) "tiI" = ( /obj/structure/disposalpipe/segment/corner, /turf/simulated/floor/plasteel{ @@ -82142,6 +82478,9 @@ /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/engine{ slowdown = -0.3 }, @@ -82995,6 +83334,18 @@ /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/station/engineering/break_room/secondary) +"tBO" = ( +/obj/effect/landmark/start/roboticist, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/science/robotics) "tBR" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -83059,6 +83410,13 @@ /obj/machinery/atmospherics/portable/canister/air, /turf/simulated/floor/plating, /area/station/maintenance/port2) +"tCF" = ( +/obj/structure/disposalpipe/segment, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "neutralcorner" + }, +/area/station/hallway/secondary/entry/north) "tCV" = ( /obj/item/kirbyplants/plant22, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -83246,6 +83604,7 @@ /obj/structure/railing{ dir = 4 }, +/obj/structure/disposalpipe/segment, /turf/space, /area/station/hallway/spacebridge/dockmed) "tFK" = ( @@ -83648,6 +84007,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -84118,38 +84480,6 @@ icon_state = "neutralcorner" }, /area/station/hallway/primary/fore/north) -"tXf" = ( -/obj/structure/window/reinforced/polarized, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24; - name = "east bump" - }, -/obj/structure/table, -/obj/item/storage/firstaid{ - name = "first-aid kit (empty)" - }, -/obj/item/reagent_containers/glass/bucket, -/obj/item/reagent_containers/glass/bucket, -/obj/item/healthanalyzer, -/obj/item/healthanalyzer, -/obj/item/storage/firstaid{ - name = "first-aid kit (empty)" - }, -/obj/item/storage/firstaid{ - name = "first-aid kit (empty)" - }, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/obj/item/assembly/prox_sensor, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "darkpurple" - }, -/area/station/science/robotics) "tXA" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance, @@ -84331,6 +84661,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment/corner{ + dir = 8 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -85326,8 +85659,8 @@ }, /area/station/hallway/spacebridge/dockmed) "upM" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 +/obj/structure/disposalpipe/segment{ + color = "#954535" }, /obj/effect/spawner/random_spawners/dirt_often, /turf/simulated/floor/plasteel{ @@ -85427,9 +85760,6 @@ name = "Engine Room" }, /obj/effect/mapping_helpers/airlock/access/all/engineering/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/structure/cable{ d1 = 4; d2 = 8; @@ -85505,9 +85835,7 @@ }, /area/station/maintenance/port) "uso" = ( -/obj/structure/disposalpipe/junction{ - dir = 1 - }, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ icon_state = "cafeteria" @@ -85719,6 +86047,9 @@ d2 = 8; icon_state = "1-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "uwc" = ( @@ -86224,7 +86555,8 @@ /area/station/engineering/control) "uCU" = ( /obj/machinery/disposal/deliveryChute{ - dir = 8 + dir = 8; + name = "cadaver delivery chute" }, /obj/structure/disposalpipe/trunk{ dir = 4 @@ -86516,7 +86848,10 @@ dir = 4 }, /obj/structure/disposalpipe/segment{ - color = "#954535" + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Research Asteroid Hallway 4" }, /turf/simulated/floor/plasteel{ dir = 1; @@ -86574,6 +86909,16 @@ /obj/structure/falsewall/rock_ancient, /turf/simulated/floor/plasteel, /area/station/public/locker) +"uJJ" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkpurple" + }, +/area/station/science/robotics) "uJT" = ( /turf/simulated/wall, /area/station/maintenance/gambling_den) @@ -87203,10 +87548,8 @@ /turf/simulated/floor/plating, /area/station/command/bridge) "uSc" = ( +/obj/structure/disposalpipe/segment, /obj/structure/chair/stool, -/obj/structure/disposalpipe/junction{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 }, @@ -87878,10 +88221,6 @@ /obj/structure/disposalpipe/junction/reversed, /turf/simulated/floor/plating, /area/station/maintenance/starboard) -"vbu" = ( -/obj/structure/closet, -/turf/simulated/floor/plating/asteroid/ancient, -/area/station/maintenance/fpmaint) "vbD" = ( /obj/machinery/atmospherics/pipe/manifold/hidden, /turf/simulated/floor/plasteel{ @@ -88115,6 +88454,14 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/port) +"veR" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "neutralfull" + }, +/area/station/hallway/primary/aft/east) "vfc" = ( /obj/machinery/door/airlock/maintenance{ name = "Security Maintenance"; @@ -88227,6 +88574,7 @@ }, /obj/effect/turf_decal/stripes/line, /obj/effect/spawner/random_spawners/dirt_often, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel{ dir = 4; icon_state = "neutralcorner" @@ -88796,6 +89144,11 @@ icon_state = "whitegreenfull" }, /area/station/public/quantum/docking) +"vqM" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/grille, +/turf/simulated/floor/plating, +/area/station/maintenance/starboard) "vqN" = ( /obj/machinery/door/airlock/glass{ id_tag = "magistrateofficedoor" @@ -89228,10 +89581,21 @@ /turf/simulated/floor/plating, /area/station/maintenance/fore2) "vwo" = ( -/obj/item/kirbyplants/plant21, -/obj/machinery/light{ - dir = 1 +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/electrical{ + pixel_x = 1; + pixel_y = 5 }, +/obj/item/multitool, +/obj/item/multitool, +/obj/item/flash/synthetic, +/obj/item/flash/synthetic, +/obj/item/flash/synthetic, +/obj/item/flash/synthetic, +/obj/item/flash/synthetic, +/obj/item/flash/synthetic, +/obj/item/flash/synthetic, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "darkpurple" @@ -89319,13 +89683,6 @@ }, /turf/simulated/floor/plating, /area/station/hallway/primary/aft/west) -"vxS" = ( -/obj/structure/closet/secure_closet/roboticist, -/turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "darkpurple" - }, -/area/station/science/robotics) "vxY" = ( /obj/structure/chair/barber{ dir = 8 @@ -90906,6 +91263,9 @@ /obj/effect/turf_decal/caution/red{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -91123,6 +91483,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -91510,6 +91873,15 @@ }, /turf/simulated/floor/plasteel, /area/station/science/storage) +"whZ" = ( +/obj/structure/table/reinforced, +/obj/item/storage/firstaid/machine, +/obj/item/storage/firstaid/machine, +/obj/item/robotanalyzer, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/science/robotics) "wig" = ( /obj/structure/cable/orange{ d1 = 1; @@ -91846,6 +92218,9 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/spawner/random_spawners/dirt_frequent, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "neutralcorner" @@ -92092,6 +92467,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) "wpN" = ( @@ -92378,10 +92754,10 @@ /area/station/medical/reception) "wtx" = ( /obj/machinery/hologram/holopad, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, /turf/simulated/floor/plasteel{ @@ -92488,11 +92864,11 @@ /turf/simulated/floor/engine, /area/station/science/xenobiology) "wuC" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, /obj/structure/chair/office/dark{ dir = 1 }, /obj/effect/landmark/start/roboticist, -/obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -92555,6 +92931,26 @@ /obj/machinery/door/firedoor, /turf/simulated/floor/plating, /area/station/security/brig) +"wvm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "purplecorner" + }, +/area/station/hallway/primary/aft/east) "wvp" = ( /turf/simulated/floor/plasteel{ icon_state = "white" @@ -92696,6 +93092,25 @@ /obj/effect/spawner/random_spawners/dirt_frequent, /turf/simulated/floor/plasteel, /area/station/security/permabrig) +"wwr" = ( +/obj/item/storage/box/bodybags{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/structure/table/reinforced, +/obj/item/storage/box/masks, +/obj/item/storage/box/gloves{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "darkpurple" + }, +/area/station/science/robotics) "wwy" = ( /obj/structure/cable{ d1 = 4; @@ -93027,6 +93442,31 @@ icon_state = "redcorner" }, /area/station/hallway/primary/fore/west) +"wAm" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/deliveryChute{ + dir = 8; + name = "cadaver delivery chute" + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/mapping_helpers/airlock/windoor/access/all/science/robotics{ + dir = 8 + }, +/obj/machinery/door/window/classic/normal{ + dir = 8; + name = "cadaver delivery chute" + }, +/obj/effect/turf_decal/delivery/red, +/turf/simulated/floor/plasteel{ + dir = 6; + icon_state = "darkpurple" + }, +/area/station/science/robotics) "wAo" = ( /obj/structure/disposalpipe/segment/corner{ dir = 4 @@ -93217,6 +93657,7 @@ /obj/machinery/light/small{ dir = 8 }, +/obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, /area/station/hallway/primary/starboard/south) "wCU" = ( @@ -93450,7 +93891,7 @@ /turf/simulated/floor/plating, /area/station/maintenance/port) "wGS" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel/white, /area/station/science/robotics/chargebay) "wGW" = ( @@ -93603,6 +94044,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating, /area/station/maintenance/asmaint) "wJe" = ( @@ -93746,6 +94190,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "purplecorner" @@ -94085,12 +94532,6 @@ temperature = 80 }, /area/station/science/xenobiology) -"wRa" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/science/robotics) "wRo" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -94519,6 +94960,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/plating{ icon_state = "asteroidplating" }, @@ -95118,6 +95562,7 @@ "xiV" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/cobweb, +/obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/port) "xja" = ( @@ -95277,18 +95722,6 @@ "xla" = ( /turf/simulated/wall/r_wall, /area/station/security/prison/cell_block/A) -"xlF" = ( -/obj/structure/window/reinforced/polarized, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/science/robotics) "xlM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/light{ @@ -95847,10 +96280,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/plating/asteroid/ancient, /area/station/maintenance/starboard) -"xxC" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/turf/simulated/floor/plasteel/white, -/area/station/science/robotics) "xxK" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 4 @@ -96071,6 +96500,12 @@ icon_state = "dark" }, /area/station/security/warden) +"xzU" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/science/robotics) "xAk" = ( /obj/machinery/light{ dir = 1 @@ -96086,6 +96521,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/simulated/floor/engine{ slowdown = -0.3 }, @@ -96109,10 +96547,10 @@ /turf/simulated/floor/engine, /area/station/science/misc_lab) "xAR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, /turf/simulated/floor/plasteel/white, @@ -96918,22 +97356,6 @@ }, /turf/simulated/floor/carpet/royalblack, /area/station/command/office/captain) -"xNF" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/polarized, -/obj/machinery/door/window/classic/normal{ - dir = 8; - name = "Robotics Surgery" - }, -/obj/effect/mapping_helpers/airlock/windoor/access/any/science/robotics{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/station/science/robotics) "xNT" = ( /obj/machinery/alarm/directional/north, /turf/simulated/floor/plasteel{ @@ -97140,6 +97562,17 @@ icon_state = "arrival" }, /area/station/hallway/secondary/entry/east) +"xRf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/station/science/robotics) "xRh" = ( /obj/machinery/economy/vending/cola, /turf/simulated/floor/plasteel{ @@ -98348,7 +98781,8 @@ /area/station/public/locker) "ylX" = ( /obj/machinery/disposal/deliveryChute{ - dir = 8 + dir = 8; + name = "cadaver delivery chute" }, /obj/structure/disposalpipe/trunk{ dir = 1 @@ -108722,7 +109156,7 @@ xJa xJa rUo nxA -vbu +bzh xJa cRv rNK @@ -108820,7 +109254,7 @@ vtY uCK vtY uCK -uCK +jGE vtY ccW ccW @@ -110879,7 +111313,7 @@ uCK uCK uCK uCK -uCK +bWG vtY vtY ccW @@ -111574,7 +112008,7 @@ rNK rNK pXy pXy -ccx +daz eCI aue uaW @@ -111654,7 +112088,7 @@ vtY vtY uCK uCK -neV +taQ vtY ccW rWw @@ -116440,7 +116874,7 @@ xla sZf aWA iEe -pqq +bNX ibX jzf hPy @@ -118281,7 +118715,7 @@ pkc iqL rZl mJT -iwJ +aZZ iox bjr rRc @@ -119621,9 +120055,9 @@ ccW ccW vFW jIO -xxC +oUw nOM -tiG +qWS xFn oJz jRs @@ -119879,7 +120313,7 @@ ccW jJc sOt oUw -eDf +nOM qWS heU wOH @@ -120650,11 +121084,11 @@ ccW jJc uRn wuC -aZU -uCo +nvu +nbj fXR nTV -epr +npb bXp uuV iOG @@ -120907,9 +121341,9 @@ ccW jJc vgV uCo -xlF -xNF -jhA +aZU +uCo +uCo shk npb lnY @@ -121164,11 +121598,11 @@ ccW jJc vtz uCo -bty +xRf uCo uCo rAM -hVS +epr cia ciG gPL @@ -121420,13 +121854,13 @@ ccW ccW jJc vwo -wRa +uCo mml jkk -ouB -sLj -hVS -cia +uCo +rAM +npb +qpt sWc gPL pQN @@ -121653,7 +122087,7 @@ bhO hUU sbn sbn -cMA +uJT mPu mER oWa @@ -121676,13 +122110,13 @@ ccW ccW ccW jJc -vxS -fyR -tXf -phx -jkh -kMa hVS +hVS +hVS +phx +hVS +hVS +npb cia ciG vlI @@ -121932,19 +122366,19 @@ rWw ccW ccW ccW +jJc +bgJ +qSB +whZ +xRf +uCo qeq -qeq -qeq -qeq -qeq -qeq -qeq -npb -chX +hVS +cia ciG -gPL +iOG pQN -sKh +wQl nta cGd dzs @@ -122189,14 +122623,14 @@ rWw ccW ccW ccW -ccW -ccW -ccW -ccW -ccW -dXV -dXV -dXV +jJc +auo +xzU +cpT +tBO +nbj +mfZ +dCm chY ciG fIE @@ -122446,17 +122880,17 @@ rWw ccW ccW ccW -ccW -ccW -ccW -ccW -ccW -dXV -iky -dtv +jJc +dWR +uJJ +jrk +qKH +wwr +wAm +npb uIC -gIk -lQy +ciG +gPL pQN sKh nta @@ -122703,14 +123137,14 @@ rWw ccW ccW ccW -ccW -ccW -ccW -ccW -ccW -dXV -dXV -kJM +jJc +jJc +jJc +jJc +jJc +vFW +vFW +vFW nxX irU sOk @@ -122965,9 +123399,9 @@ ccW ccW ccW ccW -ccW -ccW -fpn +izC +iky +dtv cib upM pRd @@ -123222,11 +123656,11 @@ ful ful ful ful -ccW -ccW -fpn -cia -ciG +izC +izC +kJM +jqN +veR gPL dXD pQN @@ -124257,7 +124691,7 @@ njR ciG gPL pQN -fYD +tnj clq cGd xPU @@ -125148,7 +125582,7 @@ uEU abW abW wDs -bbc +hPI rVx qLN aJp @@ -125281,7 +125715,7 @@ ful ccW ccW izC -cia +wvm ciG nWY pQN @@ -126308,7 +126742,7 @@ ccW ccW ccW ccW -izC +fpn rMW ciG gPL @@ -126565,7 +126999,7 @@ ccW ccW ccW ccW -izC +fpn iwU sWc vlI @@ -126817,11 +127251,11 @@ eLb ftr ccW ccW -ccW -ccW -ccW -ccW -ccW +rWw +rWw +rWw +rWw +rWw pQN rjL ciG @@ -130134,7 +130568,7 @@ bWU bXA bYe bDR -kYJ +kyo oqB cRo kzf @@ -137871,9 +138305,9 @@ kOL fJd kwQ hjb -imG -vRX -oxO +ldB +oCL +aFQ tZs dbg sFj @@ -138640,7 +139074,7 @@ aXn aXn aXn aXn -yep +bNc imG gge vWF @@ -138897,7 +139331,7 @@ aXn aXn aXn aXn -yep +bNc jfo wLr vWF @@ -139154,7 +139588,7 @@ wLr mpB mpB ceK -oga +hUh cfH vWF vWF @@ -139411,7 +139845,7 @@ cdF wVD mpB foP -yep +bNc vWF tWC tWC @@ -139668,7 +140102,7 @@ wGZ xZK wLr imG -oga +hUh dYD tWC pSE @@ -140182,7 +140616,7 @@ ftG ldH olg jrw -lhz +bTM wcl tWC ghv @@ -140439,7 +140873,7 @@ mpB mCg mpB jsa -jrw +lDd fFx tWC jZQ @@ -143771,15 +144205,15 @@ dSV cEi jnH kis -dxM -dxM +tCF +tCF fIL khH khH cvq -dxM +tCF cJW -dxM +tCF vgU tgU vVP @@ -145536,7 +145970,7 @@ uKR xTL bIK bCg -vHH +mqf ifq aZN aZM @@ -146050,7 +146484,7 @@ xTL xTL adV bCg -wyL +arP bMA kps ukC @@ -146058,9 +146492,9 @@ nZf rKw rKw rkl -gjb -aZM -aZM +jeX +jeX +nOX aZM aZM fMl @@ -146307,19 +146741,19 @@ dBL fSH bIM bCg -vHH -wyL -vHH -utF -wyL -bwX -gSQ -gSQ +ovW +ioH +jeX +dOh +ioH +iIc +iIc +iIc +gjb +gFg xAV aZM aZM -aZM -aZM fMl fMl aZu @@ -146572,9 +147006,9 @@ gFg gFg gFg gSQ -ovW -jeX -fXv +xAV +gFg +gus fXv eQu aZM @@ -146830,9 +147264,9 @@ jVQ jVQ jVQ hsJ -gSQ -gSQ -gSQ +iIc +iIc +hNt xAV aZM aZM @@ -146851,7 +147285,7 @@ iJa imG imG imG -imG +gge aXn imG vRX @@ -147089,7 +147523,7 @@ yfZ yfZ yfZ yfZ -gSQ +xuJ xAV aZM aZM @@ -147346,7 +147780,7 @@ yfZ xNt cGL yfZ -gSQ +xuJ xAV aZM aZM @@ -147603,7 +148037,7 @@ yfZ vrs moY yfZ -wyL +arP xAV aZM aZM @@ -147860,7 +148294,7 @@ dRx eNa azO yfZ -gFg +xAV mqf aZM aZM @@ -148117,7 +148551,7 @@ xWf wvp rki yfZ -gSQ +xuJ tvJ aZN aZM @@ -148631,7 +149065,7 @@ rTQ wvp iIM yfZ -vHH +mqf xAV iSn aZM @@ -148876,8 +149310,8 @@ xeq cdI uhF owY -gqG -jOU +tKE +tKE fLp cnW gxB @@ -148888,7 +149322,7 @@ wKw oJu jrX yfZ -gSQ +xuJ xAV aZN aZM @@ -149145,7 +149579,7 @@ hoX qMZ yfZ yfZ -gSQ +xuJ vTI aZM aZM @@ -149402,7 +149836,7 @@ jDW jyU yfZ xIU -gSQ +xuJ tvJ aZM aZM @@ -149659,7 +150093,7 @@ qwe hUF yfZ gFg -gSQ +xuJ tzN iSn aZM @@ -150687,7 +151121,7 @@ jBh vHH kKp itf -ivK +sLE mqf aZN aZM @@ -151201,7 +151635,7 @@ vHH swV bbw itf -dCS +sWr xAV gFg gFg @@ -151458,10 +151892,10 @@ itf itf itf itf -dCS +sWr xAV ozK -gFg +aUU wyL jeB hpB @@ -151710,12 +152144,12 @@ mqf aFh jkT bNP -vFQ -vFQ -vFQ -vFQ -vFQ -imU +bJb +bJb +bJb +bJb +bJb +lWu xAV aLH aZM @@ -151966,7 +152400,7 @@ bNL tvJ xjx vbn -lux +bDk lux lux uAi @@ -152223,7 +152657,7 @@ itf mqf bPZ amG -gFg +xAV gSQ itf itf @@ -152480,8 +152914,8 @@ cQy tvJ trc iOw -itf -gFg +xAV +aUU itf gFg gSQ @@ -152737,7 +153171,7 @@ mOC frg lWu gSQ -gSQ +xuJ itf itf gSQ @@ -152987,14 +153421,14 @@ gGb biN ivK gFg -jOE +ptL lye bZq fXv iOw gSQ gFg -gSQ +xuJ itf gSQ gFg @@ -153244,14 +153678,14 @@ bkH biN bcV itf -itf -qIV -xAV -itf -gSQ -gSQ -gFg -gFg +jOE +iun +qYo +vqM +iIc +iIc +lux +egq gSQ rtW itf diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index e890932b2be..d03d95c5585 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -2819,7 +2819,7 @@ /area/station/maintenance/fore) "aqv" = ( /obj/structure/table/wood, -/obj/structure/sign/barsign{ +/obj/machinery/barsign{ pixel_y = 32 }, /obj/item/wrench, @@ -4880,7 +4880,7 @@ /turf/simulated/floor/engine, /area/station/engineering/controlroom) "avL" = ( -/obj/structure/sign/barsign{ +/obj/machinery/barsign{ pixel_y = 32 }, /turf/simulated/floor/plasteel{ @@ -9070,7 +9070,7 @@ /area/station/service/bar) "aGA" = ( /obj/structure/table/wood, -/obj/structure/sign/barsign{ +/obj/machinery/barsign{ pixel_y = 32 }, /obj/machinery/chem_dispenser/soda{ @@ -10845,7 +10845,6 @@ /area/station/maintenance/incinerator) "aLk" = ( /obj/structure/disposalpipe/segment, -/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -11828,7 +11827,6 @@ }, /area/station/service/bar) "aOd" = ( -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/visible{ dir = 10 }, @@ -54205,7 +54203,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/structure/sign/barsign{ +/obj/machinery/barsign{ pixel_y = 32 }, /turf/simulated/floor/plating, @@ -62697,17 +62695,6 @@ }, /turf/simulated/floor/carpet/blue, /area/station/command/office/blueshield) -"dNS" = ( -/obj/docking_port/stationary{ - dir = 4; - dwidth = 15; - height = 21; - id = "emergency_home"; - name = "emergency evac bay"; - width = 33 - }, -/turf/space, -/area/space) "dNZ" = ( /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plasteel{ @@ -64687,12 +64674,6 @@ icon_state = "neutralfull" }, /area/station/hallway/primary/central) -"dUY" = ( -/obj/machinery/light, -/obj/machinery/alarm/directional/south, -/obj/effect/turf_decal/stripes/line, -/turf/simulated/floor/plasteel, -/area/station/hallway/secondary/exit) "dUZ" = ( /obj/machinery/light, /obj/machinery/status_display{ @@ -66935,6 +66916,17 @@ icon_state = "vault" }, /area/station/turret_protected/ai) +"eKm" = ( +/obj/docking_port/stationary{ + dir = 4; + dwidth = 16; + height = 21; + id = "emergency_home"; + name = "emergency evac bay"; + width = 41 + }, +/turf/space, +/area/space) "eKu" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -70042,9 +70034,6 @@ /area/station/command/office/hop) "gFa" = ( /obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, /obj/effect/turf_decal/delivery, /obj/structure/disposalpipe/segment{ dir = 4 @@ -73775,10 +73764,6 @@ icon_state = "bar" }, /area/station/service/kitchen) -"iVe" = ( -/obj/effect/spawner/airlock, -/turf/simulated/wall, -/area/station/service/chapel/office) "iVg" = ( /obj/machinery/economy/atm/directional/west, /turf/simulated/floor/plasteel{ @@ -76873,6 +76858,10 @@ icon_state = "neutralfull" }, /area/station/engineering/atmos) +"kQP" = ( +/obj/effect/spawner/airlock, +/turf/simulated/wall, +/area/station/hallway/secondary/exit) "kRp" = ( /obj/structure/cable{ d1 = 1; @@ -82625,15 +82614,6 @@ }, /area/station/security/prison/cell_block) "ont" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -84289,6 +84269,12 @@ icon_state = "darkred" }, /area/station/security/main) +"pib" = ( +/obj/machinery/light, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/alarm/directional/south, +/turf/simulated/floor/plasteel, +/area/station/hallway/secondary/exit) "pjk" = ( /turf/simulated/floor/engine, /area/station/science/test_chamber) @@ -136445,7 +136431,7 @@ dUQ dYU dIx abj -aaa +abj aaa aaa aaa @@ -136700,7 +136686,8 @@ dIx dIx dIx dIx -iVe +dIx +kQP abj aaa aaa @@ -136744,7 +136731,6 @@ aaa aaa aaa aaa -aaa "} (145,1,1) = {" aaa @@ -136945,6 +136931,7 @@ dLA dMo dKP dKP +dKP dOv dPb eBl @@ -137001,7 +136988,6 @@ aaa aaa aaa aaa -aaa "} (146,1,1) = {" aaa @@ -137203,6 +137189,7 @@ sZI dPM dPM dPM +dPM rCw dPM dPM @@ -137258,7 +137245,6 @@ aaa aaa aaa aaa -aaa "} (147,1,1) = {" aaa @@ -137460,6 +137446,7 @@ hVf dKo dKo dKo +dKo rvx dKo dKo @@ -137515,7 +137502,6 @@ aaa aaa aaa aaa -aaa "} (148,1,1) = {" aaa @@ -137714,6 +137700,7 @@ cYk cYk cYk dbR +cYk dbV ddw dNa @@ -137772,7 +137759,6 @@ aaa aaa aaa aaa -aaa "} (149,1,1) = {" aaa @@ -137971,6 +137957,7 @@ dKo dKo dKo hVf +dKo dNb dNN dOw @@ -138029,7 +138016,6 @@ aaa aaa aaa aaa -aaa "} (150,1,1) = {" aaa @@ -138228,6 +138214,7 @@ dKo gkk dKo hVf +dKo dNc dNO dXF @@ -138286,7 +138273,6 @@ aaa aaa aaa aaa -aaa "} (151,1,1) = {" aaa @@ -138485,6 +138471,7 @@ dKo dKo dKo hVf +dKo dNb dNP dOw @@ -138543,7 +138530,6 @@ aaa aaa aaa aaa -aaa "} (152,1,1) = {" aaa @@ -138742,6 +138728,7 @@ dKp dKp dKp dIh +dKo dOu dNQ dOx @@ -138755,7 +138742,7 @@ joI dNc dNQ dOw -dUY +pib dIH abj aaa @@ -138800,7 +138787,6 @@ aaa aaa aaa aaa -aaa "} (153,1,1) = {" aaa @@ -138999,6 +138985,7 @@ wgY rIb rIb pJE +dKo dNb bGr dOw @@ -139057,7 +139044,6 @@ aaa aaa aaa aaa -aaa "} (154,1,1) = {" aaa @@ -139259,6 +139245,7 @@ iFB iqq iqq iqq +iqq uFa sbt sDb @@ -139282,7 +139269,6 @@ aaa aaa aaa aaa -aaa aaZ aaa aaa @@ -139515,6 +139501,7 @@ nIs ngE kuJ kuJ +kuJ tJT dXn dXn @@ -139571,7 +139558,6 @@ aaa aaa aaa aaa -aaa "} (156,1,1) = {" aaa @@ -139772,6 +139758,7 @@ dTJ dMs jac jac +jac vSW scA ajq @@ -139828,7 +139815,6 @@ aaa aaa aaa aaa -aaa "} (157,1,1) = {" aaa @@ -140030,6 +140016,7 @@ dVp dKp dKp dKp +dKp pGr rev vJu @@ -140085,7 +140072,6 @@ aaa aaa aaa aaa -aaa "} (158,1,1) = {" aaa @@ -140287,6 +140273,7 @@ ulH dTy dTy dTy +dTy rmq msT dKP @@ -140342,7 +140329,6 @@ aaa aaa aaa aaa -aaa "} (159,1,1) = {" aaa @@ -140543,6 +140529,7 @@ kpd dHO evE evE +evE tJT dKQ jpk @@ -140599,7 +140586,6 @@ aaa aaa aaa aaa -aaa "} (160,1,1) = {" aaa @@ -140800,6 +140786,7 @@ abj abj abj abj +abj pjC dKP pjC @@ -140856,7 +140843,6 @@ aaa aaa aaa aaa -aaa "} (161,1,1) = {" aaa @@ -141057,6 +141043,7 @@ aaa aaa aaa aaa +aaa pjC dKQ pjC @@ -141113,7 +141100,6 @@ aaa aaa aaa aaa -aaa "} (162,1,1) = {" aaa @@ -141317,8 +141303,8 @@ aaa aaa aaa aaa -dNS aaa +eKm aaa aaa aaa diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index e45238c442c..2297a0302b6 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -6218,10 +6218,6 @@ }, /turf/simulated/floor/plasteel, /area/station/engineering/control) -"aHe" = ( -/obj/structure/sign/barsign, -/turf/simulated/wall, -/area/station/service/bar) "aHg" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -10928,7 +10924,7 @@ /area/station/public/locker) "aVT" = ( /obj/structure/table, -/obj/item/clothing/head/soft/grey{ +/obj/item/clothing/head/soft{ pixel_x = -2; pixel_y = 3 }, @@ -42602,11 +42598,11 @@ "cZp" = ( /obj/docking_port/stationary{ dir = 2; - dwidth = 15; + dwidth = 16; height = 21; id = "emergency_home"; name = "emergency evac bay"; - width = 33 + width = 41 }, /turf/space, /area/space) @@ -71465,20 +71461,6 @@ /obj/effect/landmark/damageturf, /turf/simulated/floor/plating, /area/station/maintenance/apmaint) -"oDZ" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/station/maintenance/port) "oEe" = ( /obj/machinery/atmospherics/trinary/filter{ dir = 4; @@ -86653,6 +86635,14 @@ }, /turf/simulated/floor/plating, /area/station/maintenance/xenobio_south) +"uXN" = ( +/obj/machinery/barsign{ + pixel_y = -32 + }, +/turf/simulated/floor/plasteel{ + icon_state = "redcorner" + }, +/area/station/hallway/primary/starboard) "uYf" = ( /obj/machinery/light{ dir = 8 @@ -115249,7 +115239,7 @@ nBj cgt cdT wfa -oDZ +bqQ cCj cdT kNJ @@ -127048,8 +127038,8 @@ bjp bez vtx boY -bqA -aHe +uXN +bsp ded bEv bEv diff --git a/_maps/map_files/templates/biodome_beach.dmm b/_maps/map_files/templates/biodome_beach.dmm index 8fcff913987..51eea2b9413 100644 --- a/_maps/map_files/templates/biodome_beach.dmm +++ b/_maps/map_files/templates/biodome_beach.dmm @@ -491,10 +491,6 @@ }, /turf/simulated/floor/beach/sand, /area/ruin/powered/beach) -"Ds" = ( -/obj/structure/sign/barsign, -/turf/simulated/wall/mineral/sandstone, -/area/ruin/powered/beach) "Ec" = ( /obj/machinery/door/airlock/sandstone{ name = "Beach Access" @@ -566,6 +562,12 @@ }, /turf/simulated/floor/pod, /area/ruin/powered/beach) +"Yz" = ( +/obj/machinery/barsign{ + pixel_y = 32 + }, +/turf/simulated/floor/beach/sand, +/area/ruin/powered/beach) (1,1,1) = {" aa @@ -1087,8 +1089,8 @@ aC aC aC JF -Ds -bE +aj +Yz bE bE bE diff --git a/code/__DEFINES/antag_defines.dm b/code/__DEFINES/antag_defines.dm index fe136abd200..24cfb19d97e 100644 --- a/code/__DEFINES/antag_defines.dm +++ b/code/__DEFINES/antag_defines.dm @@ -47,7 +47,7 @@ GLOBAL_LIST(contractors) /// Denotes that this power can not be obtained normally. Primarily used for base types such as [/datum/action/changeling/weapon]. #define CHANGELING_UNOBTAINABLE_POWER 3 -#define CHANGELING_FAKEDEATH_TIME 50 SECONDS +#define CHANGELING_FAKEDEATH_TIME 50 SECONDS #define CHANGELING_ABSORB_RECENT_SPEECH 8 //The amount of recent spoken lines to gain on absorbing a mob /** @@ -62,9 +62,6 @@ GLOBAL_LIST(contractors) */ #define PULSEDEMON_SOURCE_DRAIN_INVALID (-1) -/proc/ischangeling(mob/M) // TODO: Someone please convert these to proper defines some day. - return M.mind?.has_antag_datum(/datum/antagonist/changeling) +#define IS_CHANGELING(mob) (isliving(mob) && mob?:mind?:has_antag_datum(/datum/antagonist/changeling)) -// Helper proc that determines if a mob is a mindslave. -/proc/ismindslave(mob/living/carbon/human/H) - return istype(H) && H.mind.has_antag_datum(/datum/antagonist/mindslave, FALSE) +#define IS_MINDSLAVE(mob) (ishuman(mob) && mob?:mind?:has_antag_datum(/datum/antagonist/mindslave, FALSE)) diff --git a/code/__DEFINES/clothing_defines.dm b/code/__DEFINES/clothing_defines.dm index ed5a97ea16c..d0380ede710 100644 --- a/code/__DEFINES/clothing_defines.dm +++ b/code/__DEFINES/clothing_defines.dm @@ -37,6 +37,10 @@ #define SLOT_HUD_COLLAR 23 #define SLOT_HUD_AMOUNT 23 +// Boolean defines for hands +#define HAND_BOOL_RIGHT 0 +#define HAND_BOOL_LEFT 1 + // accessory slots #define ACCESSORY_SLOT_DECOR 1 #define ACCESSORY_SLOT_UTILITY 2 diff --git a/code/__DEFINES/combat_defines.dm b/code/__DEFINES/combat_defines.dm index ee2ec5345af..01e0c8990c7 100644 --- a/code/__DEFINES/combat_defines.dm +++ b/code/__DEFINES/combat_defines.dm @@ -157,3 +157,10 @@ #define STATUS_EFFECT_CONSTANT * 20 #define IS_HORIZONTAL(x) x.body_position + +/// Compatible firemode is in the gun. Wait until it's held in the user hands. +#define AUTOFIRE_STAT_IDLE (1<<0) +/// Gun is active and in the user hands. Wait until user does a valid click. +#define AUTOFIRE_STAT_ALERT (1<<1) +/// Gun is shooting. +#define AUTOFIRE_STAT_FIRING (1<<2) diff --git a/code/__DEFINES/dcs/dcs_helpers.dm b/code/__DEFINES/dcs/dcs_helpers.dm index ba2b9a704a3..c5c7e3c42dd 100644 --- a/code/__DEFINES/dcs/dcs_helpers.dm +++ b/code/__DEFINES/dcs/dcs_helpers.dm @@ -10,10 +10,6 @@ /// Every proc you pass to RegisterSignal must have this. #define SIGNAL_HANDLER SHOULD_NOT_SLEEP(TRUE) -/// Signifies that this proc is used to handle signals, but also sleeps. -/// Do not use this for new work. -#define SIGNAL_HANDLER_DOES_SLEEP - /// A wrapper for _AddElement that allows us to pretend we're using normal named arguments #define AddElement(arguments...) _AddElement(list(##arguments)) /// A wrapper for _RemoveElement that allows us to pretend we're using normal named arguments diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 05150f92552..1d4d33ac264 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -219,8 +219,17 @@ ///////////////// -///from base of client/Click(): (atom/target, atom/location, control, params, mob/user) +// /client signals + +/// from base of client/Click(): (atom/target, atom/location, control, params, mob/user) #define COMSIG_CLIENT_CLICK "atom_client_click" +/// from base of client/MouseDown(): (/client, object, location, control, params) +#define COMSIG_CLIENT_MOUSEDOWN "client_mousedown" +/// from base of client/MouseUp(): (/client, object, location, control, params) +#define COMSIG_CLIENT_MOUSEUP "client_mouseup" + #define COMPONENT_CLIENT_MOUSEUP_INTERCEPT (1<<0) +/// from base of client/MouseUp(): (/client, object, location, control, params) +#define COMSIG_CLIENT_MOUSEDRAG "client_mousedrag" ///from base of area/Entered(): (/area) #define COMSIG_ENTER_AREA "enter_area" @@ -708,11 +717,16 @@ // /obj/item/gun signals -///called in /obj/item/gun/process_fire (user, target, params, zone_override) +/// called in /obj/item/gun/process_fire (user, target, params, zone_override) #define COMSIG_MOB_FIRED_GUN "mob_fired_gun" - -///called in /obj/item/gun/process_fire (user, target) +/// called in /obj/item/gun/process_fire (user, target) #define COMSIG_GUN_FIRED "gun_fired" +/// called in /datum/component/automatic_fire/proc/on_mouse_down: (client/clicker, atom/target, turf/location, control, params) +#define COMSIG_AUTOFIRE_ONMOUSEDOWN "autofire_onmousedown" + #define COMPONENT_AUTOFIRE_ONMOUSEDOWN_BYPASS (1<<0) +/// called in /datum/component/automatic_fire/proc/process_shot(): (atom/target, mob/living/shooter, allow_akimbo, params) +#define COMSIG_AUTOFIRE_SHOT "autofire_shot" + #define COMPONENT_AUTOFIRE_SHOT_SUCCESS (1<<0) // /obj/item/grenade signals @@ -1044,3 +1058,9 @@ // Sent when a mob spawner is attacked directly or via projectile. #define COMSIG_SPAWNER_SET_TARGET "spawner_set_target" + +/// Used by admin-tooling to remove radiation +#define COMSIG_ADMIN_DECONTAMINATE "admin_decontaminate" + +/// Sent when bodies transfer between shades/shards and constructs +#define COMSIG_SHADE_TO_CONSTRUCT_TRANSFER "shade_to_construct_transfer" diff --git a/code/__DEFINES/dna.dm b/code/__DEFINES/dna.dm index c3cdf346f92..6f6b03b29ad 100644 --- a/code/__DEFINES/dna.dm +++ b/code/__DEFINES/dna.dm @@ -50,17 +50,18 @@ #define DNA_UI_EYES_G 35 #define DNA_UI_EYES_B 36 #define DNA_UI_GENDER 37 -#define DNA_UI_BEARD_STYLE 38 -#define DNA_UI_HAIR_STYLE 39 -#define DNA_UI_HACC_STYLE 40 -#define DNA_UI_BACC_STYLE 41 -#define DNA_UI_HAIR_GRADIENT_STYLE 42 -#define DNA_UI_HEAD_MARK_STYLE 43 -#define DNA_UI_BODY_MARK_STYLE 44 -#define DNA_UI_TAIL_MARK_STYLE 45 -#define DNA_UI_PHYSIQUE 46 -#define DNA_UI_HEIGHT 47 -#define DNA_UI_LENGTH 48 // Update this when you add something, or you WILL break shit. +#define DNA_UI_BODY_TYPE 38 +#define DNA_UI_BEARD_STYLE 39 +#define DNA_UI_HAIR_STYLE 40 +#define DNA_UI_HACC_STYLE 41 +#define DNA_UI_BACC_STYLE 42 +#define DNA_UI_HAIR_GRADIENT_STYLE 43 +#define DNA_UI_HEAD_MARK_STYLE 44 +#define DNA_UI_BODY_MARK_STYLE 45 +#define DNA_UI_TAIL_MARK_STYLE 46 +#define DNA_UI_PHYSIQUE 47 +#define DNA_UI_HEIGHT 48 +#define DNA_UI_LENGTH 49 // Update this when you add something, or you WILL break shit. #define DNA_SE_LENGTH 55 // Was STRUCDNASIZE, size 27. 15 new blocks added = 42, plus room to grow. diff --git a/code/__DEFINES/genetics_defines.dm b/code/__DEFINES/genetics_defines.dm index f03a2fcdfb1..d437121dbbb 100644 --- a/code/__DEFINES/genetics_defines.dm +++ b/code/__DEFINES/genetics_defines.dm @@ -42,6 +42,7 @@ #define BLOOD_VOLUME_MAXIMUM 2000 #define BLOOD_VOLUME_NORMAL 560 #define BLOOD_VOLUME_SAFE 501 +#define BLOOD_VOLUME_STABLE 357 #define BLOOD_VOLUME_OKAY 336 #define BLOOD_VOLUME_BAD 224 #define BLOOD_VOLUME_SURVIVE 122 diff --git a/code/__DEFINES/hud_locations.dm b/code/__DEFINES/hud_locations.dm index d14a51d3593..3c907ddf9b5 100644 --- a/code/__DEFINES/hud_locations.dm +++ b/code/__DEFINES/hud_locations.dm @@ -107,6 +107,7 @@ #define ui_healthdoll "EAST-1:28,CENTER-1:15" #define ui_health "EAST-1:28,CENTER:17" #define ui_internal "EAST-1:28,CENTER+1:19" +#define ui_stamina "EAST-1:28,CENTER-2:15" //borgs #define ui_borg_health "EAST-1:28,CENTER-1:15" //borgs have the health display where humans have the pressure damage indicator. diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 4f808a9ad0a..62d3df6514e 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -58,6 +58,10 @@ #define isclothing(A) (istype(A, /obj/item/clothing)) +#define isprojectile(A) (istype(A, /obj/item/projectile)) + +#define isgun(A) (istype(A, /obj/item/gun)) + #define is_pen(W) (istype(W, /obj/item/pen) || istype(W, /obj/item/flashlight/pen)) #define is_pda(W) (istype(W, /obj/item/pda)) diff --git a/code/__DEFINES/martial_arts.dm b/code/__DEFINES/martial_arts.dm index 4e8111e0573..566c7a7a714 100644 --- a/code/__DEFINES/martial_arts.dm +++ b/code/__DEFINES/martial_arts.dm @@ -14,4 +14,4 @@ #define MARTIAL_COMBO_STEP_HELP "Help" // A check used for all act types. Such as disarm_act -#define MARTIAL_ARTS_ACT_CHECK if((. = ..()) != FALSE) return . +#define MARTIAL_ARTS_ACT_CHECK if((. = ..()) != FALSE) return diff --git a/code/__DEFINES/misc_defines.dm b/code/__DEFINES/misc_defines.dm index c1ab48c1f79..17beb518b37 100644 --- a/code/__DEFINES/misc_defines.dm +++ b/code/__DEFINES/misc_defines.dm @@ -398,7 +398,7 @@ #define INVESTIGATE_BOMB "bombs" // The SQL version required by this version of the code -#define SQL_VERSION 54 +#define SQL_VERSION 55 // Vending machine stuff #define CAT_NORMAL (1<<0) diff --git a/code/__DEFINES/mob_defines.dm b/code/__DEFINES/mob_defines.dm index 1d66a0504ff..5d57157cfb4 100644 --- a/code/__DEFINES/mob_defines.dm +++ b/code/__DEFINES/mob_defines.dm @@ -263,8 +263,6 @@ #define ispathsilicon(A) (ispath(A, /mob/living/silicon)) #define ispathanimal(A) (ispath(A, /mob/living/simple_animal)) -#define isAutoAnnouncer(A) (istype((A), /mob/living/automatedannouncer)) - #define iscameramob(A) (istype((A), /mob/camera)) #define isAIEye(A) (istype((A), /mob/camera/aiEye)) #define isovermind(A) (istype((A), /mob/camera/blob)) @@ -359,3 +357,9 @@ #define TS_TIER_3 3 #define TS_TIER_4 4 #define TS_TIER_5 5 + +/* Defines used for `incorporeal_move` */ +#define NO_INCORPOREAL_MOVE 0 +#define INCORPOREAL_MOVE_NORMAL 1 +#define INCORPOREAL_MOVE_NINJA 2 +#define INCORPOREAL_MOVE_HOLY_BLOCK 3 diff --git a/code/__DEFINES/preferences_defines.dm b/code/__DEFINES/preferences_defines.dm index 61d0ef1652d..162df1bb973 100644 --- a/code/__DEFINES/preferences_defines.dm +++ b/code/__DEFINES/preferences_defines.dm @@ -17,7 +17,7 @@ #define PREFTOGGLE_CHAT_DEAD (1<<1) #define PREFTOGGLE_CHAT_GHOSTEARS (1<<2) #define PREFTOGGLE_CHAT_GHOSTSIGHT (1<<3) -#define PREFTOGGLE_CHAT_PRAYER (1<<4) +#define PREFTOGGLE_CHAT_PRAYER (1<<4) // Defunct #define PREFTOGGLE_CHAT_RADIO (1<<5) // #define PREFTOGGLE_AZERTY (1<<6) // obsolete #define PREFTOGGLE_CHAT_DEBUGLOGS (1<<7) @@ -81,6 +81,21 @@ #error toggles_2 bitflag over 16777215. Please make an issue report and postpone the feature you are working on. #endif +// This is a list index. Required to start at 1 instead of 0 so it's properly placed in the list +#define PREFTOGGLE_CATEGORY_GENERAL 1 +#define PREFTOGGLE_CATEGORY_LIVING 2 +#define PREFTOGGLE_CATEGORY_GHOST 3 +#define PREFTOGGLE_CATEGORY_ADMIN 4 + +// Preftoggle type defines +/// Special toggles, stuff that just overrides set_toggles entirely +#define PREFTOGGLE_SPECIAL 0 +/// Interacts with the sound bitflag +#define PREFTOGGLE_SOUND 1 +/// Interacts with the toggles bitflag +#define PREFTOGGLE_TOGGLE1 2 +/// Interacts with the toggles2 bitflag +#define PREFTOGGLE_TOGGLE2 3 // Admin attack logs filter system, see /proc/add_attack_logs and /proc/msg_admin_attack @@ -133,6 +148,7 @@ #define TAB_ANTAG 2 #define TAB_GEAR 3 #define TAB_KEYS 4 +#define TAB_TOGGLES 5 // Colourblind modes #define COLOURBLIND_MODE_NONE "None" diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 4f185e0f70a..d34fb486829 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -18,6 +18,8 @@ #define STATUS_EFFECT_SHADOW_MEND /datum/status_effect/shadow_mend //Quick, powerful heal that deals damage afterwards. Heals 15 brute/burn every second for 3 seconds. #define STATUS_EFFECT_VOID_PRICE /datum/status_effect/void_price //The price of healing yourself with void energy. Deals 3 brute damage every 3 seconds for 30 seconds. +#define STATUS_EFFECT_SHADOW_MEND_DEVIL /datum/status_effect/shadow_mend/devil //Tarot version, hurts others over self + #define STATUS_EFFECT_HIPPOCRATIC_OATH /datum/status_effect/hippocraticOath //Gives you an aura of healing as well as regrowing the Rod of Asclepius if lost #define STATUS_EFFECT_REGENERATIVE_CORE /datum/status_effect/regenerative_core @@ -37,6 +39,8 @@ #define STATUS_EFFECT_BLOODDRUNK /datum/status_effect/blooddrunk //Stun immunity and greatly reduced damage taken +#define STATUS_EFFECT_BLOODDRUNK_CHARIOT /datum/status_effect/blooddrunk/chariot //adds pacifism + #define STATUS_EFFECT_DASH /datum/status_effect/dash // Grants the ability to dash, expiring after a few secodns /// Rapid burn/brute/oxy/blood healing from the cling ability @@ -62,6 +66,12 @@ #define STATUS_EFFECT_BEARSERKER_RAGE /datum/status_effect/bearserker_rage +#define STATUS_EFFECT_XRAY /datum/status_effect/xray // Xray vision for 2 minutes + +#define STATUS_EFFECT_BADASS /datum/status_effect/badass // Badass trait for 2 minutes. + +#define STATUS_EFFECT_REVERSED_SUN /datum/status_effect/reversed_sun // Weaker eternal darkness, nightvision, but nearsight + ///////////// // DEBUFFS // ///////////// @@ -114,6 +124,8 @@ #define STATUS_EFFECT_PEPPERSPRAYED /datum/status_effect/pepper_spray +#define STATUS_EFFECT_REVERSED_HIGH_PRIESTESS /datum/status_effect/reversed_high_priestess //Bubblegum will chase the person hit by the effect, grabbing people at random. This can and WILL include the caster. + //#define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse //#define CURSE_BLINDING 1 //makes the edges of the target's screen obscured //#define CURSE_SPAWNING 2 //spawns creatures that attack the target only diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index c30ca477cae..59da6920026 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -242,7 +242,6 @@ continue if(is_same_root_atom(M, speaker_coverage[ear])) . |= M - return . /proc/inLineOfSight(X1,Y1,X2,Y2,Z=1,PX1=16.5,PY1=16.5,PX2=16.5,PY2=16.5) var/turf/T diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 97c9fe44971..174ecddda53 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -139,6 +139,11 @@ if(initial(D.name)) GLOB.keybindings += new path() + for(var/path in subtypesof(/datum/preference_toggle)) + var/datum/preference_toggle/pref_toggle = path + if(initial(pref_toggle.name)) + GLOB.preference_toggles += new path() + for(var/path in subtypesof(/datum/objective)) var/datum/objective/O = path if(isnull(initial(O.name))) diff --git a/code/__HELPERS/mob_helpers.dm b/code/__HELPERS/mob_helpers.dm index bebb8213919..d4e50baa361 100644 --- a/code/__HELPERS/mob_helpers.dm +++ b/code/__HELPERS/mob_helpers.dm @@ -43,8 +43,6 @@ if(hairstyle == "Bald") //Just in case. valid_hairstyles += hairstyle continue - if((gender == MALE && S.gender == FEMALE) || (gender == FEMALE && S.gender == MALE)) - continue if(species == "Machine") //If the user is a species who can have a robotic head... if(!robohead) robohead = GLOB.all_robolimbs["Morpheus Cyberkinetics"] @@ -72,8 +70,6 @@ if(facialhairstyle == "Shaved") //Just in case. valid_facial_hairstyles += facialhairstyle continue - if((gender == MALE && S.gender == FEMALE) || (gender == FEMALE && S.gender == MALE)) - continue if(species == "Machine") //If the user is a species who can have a robotic head... if(!robohead) robohead = GLOB.all_robolimbs["Morpheus Cyberkinetics"] @@ -171,10 +167,13 @@ current_species = GLOB.all_species[species] if(!current_species || current_species.name == "Human") - if(gender==FEMALE) - return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names)) - else - return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names)) + switch(gender) + if(FEMALE) + return capitalize(pick(GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names)) + if(MALE) + return capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names)) + else + return capitalize(pick(GLOB.first_names_male + GLOB.first_names_female)) + " " + capitalize(pick(GLOB.last_names)) else return current_species.get_random_name(gender) @@ -190,7 +189,6 @@ return min(max(. + rand(-25, 25), -185), 34) else if(species == "Vox") . = rand(1, 6) - return . /proc/skintone2racedescription(tone, species = "Human") if(species == "Human") @@ -610,7 +608,7 @@ GLOBAL_LIST_EMPTY(do_after_once_tracker) var/viewX var/viewY if(isnum(view)) - var/totalviewrange = 1 + 2 * view + var/totalviewrange = (view < 0 ? -1 : 1) + 2 * view viewX = totalviewrange viewY = totalviewrange else if(istext(view)) @@ -626,6 +624,12 @@ GLOBAL_LIST_EMPTY(do_after_once_tracker) return list(viewX, viewY) +/proc/in_view_range(mob/user, atom/A) + var/list/view_range = getviewsize(user.client.view) + var/turf/source = get_turf(user) + var/turf/target = get_turf(A) + return ISINRANGE(target.x, source.x - view_range[1], source.x + view_range[1]) && ISINRANGE(target.y, source.y - view_range[2], source.y + view_range[2]) + //Used in chemical_mob_spawn. Generates a random mob based on a given gold_core_spawnable value. /proc/create_random_mob(spawn_location, mob_class = HOSTILE_SPAWN) var/static/list/mob_spawn_meancritters = list() // list of possible hostile mobs diff --git a/code/__HELPERS/sanitize_values.dm b/code/__HELPERS/sanitize_values.dm index 2ba09743571..ed3c6627575 100644 --- a/code/__HELPERS/sanitize_values.dm +++ b/code/__HELPERS/sanitize_values.dm @@ -12,9 +12,12 @@ return default /proc/sanitize_inlist(value, list/List, default) - if(value in List) return value - if(default) return default - if(length(List)) return pick(List) + if(value in List) + return value + if(default) + return default + if(length(List)) + return pick(List) /proc/sanitize_json(json_input) if(length(json_input) && istext(json_input)) @@ -23,31 +26,37 @@ //more specialised stuff -/proc/sanitize_gender(gender,neuter=0,plural=0, default="male") +/proc/sanitize_gender(gender, neuter = FALSE, default = "male") switch(gender) - if(MALE, FEMALE)return gender + if(MALE, FEMALE, PLURAL) + return gender if(NEUTER) - if(neuter) return gender - else return default - if(PLURAL) - if(plural) return gender - else return default + if(neuter) + return gender + else + return default return default /proc/sanitize_hexcolor(color, default="#000000") - if(!istext(color)) return default + if(!istext(color)) + return default var/len = length(color) - if(len != 7 && len !=4) return default - if(text2ascii(color,1) != 35) return default //35 is the ascii code for "#" + if(len != 7 && len !=4) + return default + if(text2ascii(color, 1) != 35) + return default //35 is the ascii code for "#" . = "#" for(var/i=2,i<=len,i++) var/ascii = text2ascii(color,i) switch(ascii) - if(48 to 57) . += ascii2text(ascii) //numbers 0 to 9 - if(97 to 102) . += ascii2text(ascii) //letters a to f - if(65 to 70) . += ascii2text(ascii+32) //letters A to F - translates to lowercase - else return default - return . + if(48 to 57) + . += ascii2text(ascii) //numbers 0 to 9 + if(97 to 102) + . += ascii2text(ascii) //letters a to f + if(65 to 70) + . += ascii2text(ascii + 32) //letters A to F - translates to lowercase + else + return default /proc/sanitize_ooccolor(color) var/list/HSL = rgb2hsl(hex2num(copytext(color,2,4)),hex2num(copytext(color,4,6)),hex2num(copytext(color,6,8))) diff --git a/code/__HELPERS/tool_helpers.dm b/code/__HELPERS/tool_helpers.dm index 03e14b56141..c88ee7c6046 100644 --- a/code/__HELPERS/tool_helpers.dm +++ b/code/__HELPERS/tool_helpers.dm @@ -26,11 +26,6 @@ return TRUE return FALSE -/proc/iscrowbar(O) - if(istype(O, /obj/item/crowbar)) - return TRUE - return FALSE - /proc/iscoil(O) if(istype(O, /obj/item/stack/cable_coil)) return TRUE diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index f118fab395f..f883f0cec77 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -70,20 +70,14 @@ return num_list //Splits the text of a file at seperator and returns them in a list. -/proc/file2list(filename, seperator="\n") - return splittext(return_file_text(filename),seperator) - - -//Turns a direction into text - -/proc/num2dir(direction) - switch(direction) - if(1.0) return NORTH - if(2.0) return SOUTH - if(4.0) return EAST - if(8.0) return WEST - else - stack_trace("UNKNOWN DIRECTION: [direction]") +/proc/file2list(filename, separator = "\n", no_empty = TRUE) + var/list/result = list() + for(var/line in splittext(return_file_text(filename), separator)) + var/text = trim(line) + if(no_empty && !text) + continue + result += text + return result /proc/dir2text(direction) switch(direction) @@ -193,7 +187,6 @@ if(rights & R_MENTOR) . += "[seperator]+MENTOR" if(rights & R_VIEWRUNTIMES) . += "[seperator]+VIEWRUNTIMES" if(rights & R_MAINTAINER) . += "[seperator]+MAINTAINER" - return . /proc/ui_style2icon(ui_style) switch(ui_style) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 579be0eb83a..79d3208719c 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -262,40 +262,6 @@ /proc/format_frequency(f) return "[round(f / 10)].[f % 10]" -/obj/proc/atmosanalyzer_scan(datum/gas_mixture/air_contents, mob/user, obj/target = src) - var/obj/icon = target - if(isliving(user)) - user.visible_message("[user] uses the analyzer on [target].", "You use the analyzer on [target].") - var/pressure = air_contents.return_pressure() - var/total_moles = air_contents.total_moles() - var/volume = air_contents.return_volume() - - user.show_message("Results of analysis of [bicon(icon)] [target].", 1) - if(total_moles>0) - var/o2_concentration = air_contents.oxygen/total_moles - var/n2_concentration = air_contents.nitrogen/total_moles - var/co2_concentration = air_contents.carbon_dioxide/total_moles - var/plasma_concentration = air_contents.toxins/total_moles - var/n2o_concentration = air_contents.sleeping_agent/total_moles - - var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration+n2o_concentration) - - user.show_message("Pressure: [round(pressure,0.1)] kPa", 1) - user.show_message("Nitrogen: [round(n2_concentration*100)] % ([round(air_contents.nitrogen,0.01)] moles)", 1) - user.show_message("Oxygen: [round(o2_concentration*100)] % ([round(air_contents.oxygen,0.01)] moles)", 1) - user.show_message("CO2: [round(co2_concentration*100)] % ([round(air_contents.carbon_dioxide,0.01)] moles)", 1) - user.show_message("Plasma: [round(plasma_concentration*100)] % ([round(air_contents.toxins,0.01)] moles)", 1) - user.show_message("Nitrous Oxide: [round(n2o_concentration*100)] % ([round(air_contents.sleeping_agent,0.01)] moles)", 1) - if(unknown_concentration>0.01) - user.show_message("Unknown: [round(unknown_concentration*100)] % ([round(unknown_concentration*total_moles,0.01)] moles)", 1) - user.show_message("Total: [round(total_moles,0.01)] moles", 1) - user.show_message("Temperature: [round(air_contents.temperature-T0C)] °C", 1) - user.show_message("Volume: [round(volume)] Liters", 1) - else - user.show_message("[target] is empty!", 1) - user.show_message("Volume: [round(volume)] Liters", 1) - return - //Picks a string of symbols to display as the law number for hacked or ion laws /proc/ionnum() return "[pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")][pick("!","@","#","$","%","^","&","*")]" @@ -323,7 +289,6 @@ if(A.control_disabled) continue . += A - return . //Find an active ai with the least borgs. VERBOSE PROCNAME HUH! /proc/select_active_ai_with_fewest_borgs() @@ -1207,7 +1172,7 @@ GLOBAL_LIST_INIT(wall_items, typecacheof(list(/obj/machinery/power/apc, /obj/mac /obj/machinery/computer/security/telescreen, /obj/machinery/airlock_controller, /obj/item/storage/secure/safe, /obj/machinery/door_timer, /obj/machinery/flasher, /obj/machinery/keycard_auth, /obj/structure/mirror, /obj/structure/closet/fireaxecabinet, /obj/machinery/computer/security/telescreen/entertainment, - /obj/structure/sign))) + /obj/structure/sign, /obj/machinery/barsign))) /proc/gotwallitem(loc, dir) for(var/obj/O in loc) @@ -1951,6 +1916,27 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) pixel_x = initialpixelx pixel_y = initialpixely +/// Returns a turf based on text inputs, original turf and viewing client +/proc/parse_caught_click_modifiers(list/modifiers, turf/origin, client/viewing_client) + if(!modifiers) + return + + var/screen_loc = splittext(modifiers["screen-loc"], ",") + var/list/actual_view = getviewsize(viewing_client ? viewing_client.view : world.view) + var/click_turf_x = splittext(screen_loc[1], ":") + var/click_turf_y = splittext(screen_loc[2], ":") + var/click_turf_z = origin.z + + var/click_turf_px = text2num(click_turf_x[2]) + var/click_turf_py = text2num(click_turf_y[2]) + click_turf_x = origin.x + text2num(click_turf_x[1]) - round(actual_view[1] / 2) - 1 + click_turf_y = origin.y + text2num(click_turf_y[1]) - round(actual_view[2] / 2) - 1 + + var/turf/click_turf = locate(clamp(click_turf_x, 1, world.maxx), clamp(click_turf_y, 1, world.maxy), click_turf_z) + LAZYSET(modifiers, "icon-x", "[(click_turf_px - click_turf.pixel_x) + ((click_turf_x - click_turf.x) * world.icon_size)]") + LAZYSET(modifiers, "icon-y", "[(click_turf_py - click_turf.pixel_y) + ((click_turf_y - click_turf.y) * world.icon_size)]") + return click_turf + /proc/params2turf(scr_loc, turf/origin, client/C) if(!scr_loc) return null diff --git a/code/_globalvars/lists/preference_toggle_lists.dm b/code/_globalvars/lists/preference_toggle_lists.dm new file mode 100644 index 00000000000..bc708159501 --- /dev/null +++ b/code/_globalvars/lists/preference_toggle_lists.dm @@ -0,0 +1,8 @@ +GLOBAL_LIST_EMPTY(preference_toggles) + +GLOBAL_LIST_INIT(preference_toggle_groups, list( + "General Preferences" = PREFTOGGLE_CATEGORY_GENERAL, + "In-Round Preferences" = PREFTOGGLE_CATEGORY_LIVING, + "Ghost Preferences" = PREFTOGGLE_CATEGORY_GHOST, + "Admin Preferences" = PREFTOGGLE_CATEGORY_ADMIN, +)) diff --git a/code/_onclick/drag_drop.dm b/code/_onclick/drag_drop.dm index 84f87e5bfd5..9f40c657b95 100644 --- a/code/_onclick/drag_drop.dm +++ b/code/_onclick/drag_drop.dm @@ -47,4 +47,71 @@ actually if you do something in that proc like changing user location or whateve to inform the game this action was expected and its fine */ /atom/proc/MouseDrop_T(atom/dropping, mob/user, params) // return TRUE if you want to prevent us click the object after it - return + return FALSE + +/client/MouseDown(datum/object, location, control, params) + if(QDELETED(object)) // Yep, you can click on qdeleted things before they have time to nullspace. Fun. + return + SEND_SIGNAL(src, COMSIG_CLIENT_MOUSEDOWN, object, location, control, params) + if(mouse_down_icon) + mouse_pointer_icon = mouse_down_icon + var/delay = mob.CanMobAutoclick(object, location, params) + if(delay) + selected_target[1] = object + selected_target[2] = params + while(selected_target[1]) + Click(selected_target[1], location, control, selected_target[2]) + sleep(delay) + +/client/MouseUp(object, location, control, params) + if(SEND_SIGNAL(src, COMSIG_CLIENT_MOUSEUP, object, location, control, params) & COMPONENT_CLIENT_MOUSEUP_INTERCEPT) + click_intercept_time = world.time + if(mouse_up_icon) + mouse_pointer_icon = mouse_up_icon + selected_target[1] = null + +/mob/proc/CanMobAutoclick(object, location, params) + return FALSE + +/mob/living/carbon/CanMobAutoclick(atom/object, location, params) + if(!object.IsAutoclickable()) + return FALSE + var/obj/item/active_item = get_active_hand() + return active_item?.CanItemAutoclick(object, location, params) + +/obj/item/proc/CanItemAutoclick(object, location, params) + return FALSE + +/atom/proc/IsAutoclickable() + return TRUE + +/obj/screen/IsAutoclickable() + return FALSE + +/obj/screen/click_catcher/IsAutoclickable() + return TRUE + +// The actual arguments of this: +// MouseDrag(src_object as null|atom in usr.client, +// over_object as null|atom in usr.client, +// src_location as null|turf|text in usr.client, +// over_location as null|turf|text in usr.client, +// src_control as text, over_control as text, params as text) +/client/MouseDrag(src_object, atom/over_object, src_location, turf/over_location, src_control, over_control, params) + var/list/modifiers = params2list(params) + if(!drag_start) // If we're just starting to drag + drag_start = world.time + drag_details = modifiers.Copy() + mouseParams = params + mouse_location_UID = isturf(over_location) ? over_location.UID() : over_location + mouse_object_UID = over_object?.UID() + if(selected_target[1] && over_object?.IsAutoclickable()) + selected_target[1] = over_object + selected_target[2] = params + SEND_SIGNAL(src, COMSIG_CLIENT_MOUSEDRAG, src_object, over_object, src_location, over_location, src_control, over_control, params) + return ..() + +/client/MouseDrop(atom/src_object, atom/over_object, atom/src_location, atom/over_location, src_control, over_control, params) + ..() + drag_start = 0 + drag_details = null diff --git a/code/_onclick/hud/human_hud.dm b/code/_onclick/hud/human_hud.dm index 4a036cf6e85..848fd46b2b9 100644 --- a/code/_onclick/hud/human_hud.dm +++ b/code/_onclick/hud/human_hud.dm @@ -329,6 +329,9 @@ mymob.healths = new /atom/movable/screen/healths() infodisplay += mymob.healths + mymob.staminas = new /atom/movable/screen/healths/stamina() + infodisplay += mymob.staminas + mymob.healthdoll = new() infodisplay += mymob.healthdoll @@ -483,16 +486,3 @@ H.r_hand.screen_loc = null if(H.l_hand) H.l_hand.screen_loc = null - - -/mob/living/carbon/human/verb/toggle_hotkey_verbs() - set category = "OOC" - set name = "Toggle Hotkey Buttons" - set desc = "This disables or enables the user interface buttons which can be used with hotkeys." - - if(hud_used.hotkey_ui_hidden) - client.screen += hud_used.hotkeybuttons - hud_used.hotkey_ui_hidden = FALSE - else - client.screen -= hud_used.hotkeybuttons - hud_used.hotkey_ui_hidden = TRUE diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index 501de75891e..36082679a21 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -10,6 +10,7 @@ GLOBAL_LIST_EMPTY(radial_menus) var/datum/radial_menu/parent /atom/movable/screen/radial/Destroy() + parent.current_user.screen -= src parent = null return ..() @@ -245,7 +246,7 @@ GLOBAL_LIST_EMPTY(radial_menus) QDEL_LIST_CONTENTS(elements) QDEL_NULL(close_button) anchor = null - . = ..() + return ..() /* Presents radial menu to user anchored to anchor (or user if the anchor is currently in users screen) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index bb041323527..b4897cd5df7 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -486,9 +486,9 @@ var/mob/M = usr switch(name) if("right hand", "r_hand") - M.activate_hand("r") + M.activate_hand(HAND_BOOL_RIGHT) if("left hand", "l_hand") - M.activate_hand("l") + M.activate_hand(HAND_BOOL_LEFT) return TRUE /atom/movable/screen/swap_hand @@ -562,3 +562,7 @@ /atom/movable/screen/component_button/Click(params) if(parent) parent.component_click(src, params) + +/atom/movable/screen/healths/stamina + icon_state = "stamina_0" + screen_loc = ui_stamina diff --git a/code/_onclick/observer_onclick.dm b/code/_onclick/observer_onclick.dm index d0a20b1519e..b0632715a47 100644 --- a/code/_onclick/observer_onclick.dm +++ b/code/_onclick/observer_onclick.dm @@ -77,9 +77,12 @@ /mob/dead/observer/MiddleShiftControlClickOn(atom/A) return -/atom/proc/attack_ghost(mob/user) +/atom/proc/attack_ghost(mob/dead/observer/user) if(SEND_SIGNAL(src, COMSIG_ATOM_ATTACK_GHOST, user) & COMPONENT_CANCEL_ATTACK_CHAIN) return TRUE + if(user.client) + if(user.gas_scan && atmos_scan(user=user, target=src, silent=TRUE)) + return TRUE // health + machine analyzer for ghosts /mob/living/attack_ghost(mob/dead/observer/user) @@ -106,14 +109,3 @@ /obj/effect/portal/attack_ghost(mob/user as mob) if(target) user.forceMove(get_turf(target)) - -/obj/machinery/atmospherics/attack_ghost(mob/dead/observer/user) - if(!istype(user)) // Make sure user is actually an observer. Revenents also use attack_ghost, but do not have the toggle gas analyzer var. - return - if(user.gas_analyzer) - if(istype(src, /obj/machinery/atmospherics/pipe)) - var/obj/machinery/atmospherics/pipe/T = src - atmosanalyzer_scan(T.parent.air, user, T) - else if(istype(src, /obj/machinery/atmospherics/unary)) - var/obj/machinery/atmospherics/unary/T = src - atmosanalyzer_scan(T.air_contents, user, T) diff --git a/code/controllers/configuration/sections/general_configuration.dm b/code/controllers/configuration/sections/general_configuration.dm index 35477712f33..40b1729b760 100644 --- a/code/controllers/configuration/sections/general_configuration.dm +++ b/code/controllers/configuration/sections/general_configuration.dm @@ -18,7 +18,7 @@ var/allow_antag_hud = TRUE /// Forbid players from rejoining if they use AntagHUD? var/restrict_antag_hud_rejoin = TRUE - /// Enable respanws by default? + /// Enable respawns by default? var/respawn_enabled = FALSE /// Enable CID randomiser buster? var/enabled_cid_randomiser_buster = FALSE @@ -93,8 +93,8 @@ CONFIG_LOAD_BOOL(guest_ban, data["guest_ban"]) CONFIG_LOAD_BOOL(allow_antag_hud, data["allow_antag_hud"]) CONFIG_LOAD_BOOL(restrict_antag_hud_rejoin, data["restrict_antag_hud_rejoin"]) - CONFIG_LOAD_BOOL(respawn_enabled, data["respawn_enabled"]) CONFIG_LOAD_BOOL(enabled_cid_randomiser_buster, data["enable_cid_randomiser_buster"]) + CONFIG_LOAD_BOOL(respawn_enabled, data["respawn_enabled"]) CONFIG_LOAD_BOOL(forbid_singulo_possession, data["prevent_admin_singlo_possession"]) CONFIG_LOAD_BOOL(popup_admin_pm, data["popup_admin_pm"]) CONFIG_LOAD_BOOL(allow_holidays, data["allow_holidays"]) diff --git a/code/controllers/subsystem/SSradiation.dm b/code/controllers/subsystem/SSradiation.dm index 540e56ce19a..c30f40a1363 100644 --- a/code/controllers/subsystem/SSradiation.dm +++ b/code/controllers/subsystem/SSradiation.dm @@ -13,6 +13,8 @@ PROCESSING_SUBSYSTEM_DEF(radiation) var/rad_cache_update_interval = 5 SECONDS var/list/turf_rad_cache = list() var/list/prev_rad_cache = list() + /// Lazy list of all radioactive components + var/list/all_radiations /datum/controller/subsystem/processing/radiation/proc/warn(datum/component/radioactive/contamination) diff --git a/code/controllers/subsystem/SSticker.dm b/code/controllers/subsystem/SSticker.dm index 6a9bd55d688..c08699c48ee 100644 --- a/code/controllers/subsystem/SSticker.dm +++ b/code/controllers/subsystem/SSticker.dm @@ -81,9 +81,9 @@ SUBSYSTEM_DEF(ticker) switch(current_state) if(GAME_STATE_STARTUP) // This is ran as soon as the MC starts firing, and should only run ONCE, unless startup fails - round_start_time = world.time + (GLOB.configuration.general.lobby_time SECONDS) pregame_timeleft = GLOB.configuration.general.lobby_time SECONDS - to_chat(world, "Welcome to the pre-game lobby!") + round_start_time = world.time + pregame_timeleft + to_chat(world, "Welcome to the pre-game lobby!") to_chat(world, "Please, setup your character and select ready. Game will start in [GLOB.configuration.general.lobby_time] seconds") current_state = GAME_STATE_PREGAME fire() // TG says this is a good idea @@ -95,12 +95,9 @@ SUBSYSTEM_DEF(ticker) return // This is so we dont have sleeps in controllers, because that is a bad, bad thing - if(!delay_end) - pregame_timeleft = max(0, round_start_time - world.time) // Normal lobby countdown when roundstart was not delayed - else - pregame_timeleft = max(0, pregame_timeleft - wait) // If roundstart was delayed, we should resume the countdown where it left off + pregame_timeleft = max(0, round_start_time - world.time) - if(pregame_timeleft <= 600 && !tipped) // 60 seconds + if(pregame_timeleft <= 1 MINUTES && !tipped) send_tip_of_the_round() tipped = TRUE diff --git a/code/controllers/subsystem/SStimer.dm b/code/controllers/subsystem/SStimer.dm index 7e80a9c06e7..9c9bbeed24a 100644 --- a/code/controllers/subsystem/SStimer.dm +++ b/code/controllers/subsystem/SStimer.dm @@ -341,7 +341,7 @@ SUBSYSTEM_DEF(timer) return // Sort it first - var/list/sorted = sortTim(GLOB.timers_by_type, GLOBAL_PROC_REF(cmp_numeric_dsc), TRUE) + var/list/sorted = sortTim(GLOB.timers_by_proc, GLOBAL_PROC_REF(cmp_numeric_dsc), TRUE) // DOOMP EET var/timer_json_file = file("[GLOB.log_directory]/timers.json") @@ -571,14 +571,14 @@ SUBSYSTEM_DEF(timer) CRASH("this timer is attached to no object, the attempted proc to call was [callBack.delegate]") . = "[callBack.object.type]" -GLOBAL_LIST_EMPTY(timers_by_type) +GLOBAL_LIST_EMPTY(timers_by_proc) // Allows us to track what types generate the most timers. Just invokes the global addtimer /datum/proc/addtimer(datum/callback/callback, wait = 0, flags = 0) - var/tt = "[type]" - if(tt in GLOB.timers_by_type) - GLOB.timers_by_type[tt]++ + var/timer_function = "[type][callback.delegate]" + if(timer_function in GLOB.timers_by_proc) + GLOB.timers_by_proc[timer_function]++ else - GLOB.timers_by_type[tt] = 1 + GLOB.timers_by_proc[timer_function] = 1 return global.addtimer(callback, wait, flags) /** @@ -594,7 +594,7 @@ GLOBAL_LIST_EMPTY(timers_by_type) if(!check_rights(R_DEBUG | R_VIEWRUNTIMES)) return - var/list/sorted = sortTim(GLOB.timers_by_type, GLOBAL_PROC_REF(cmp_numeric_dsc), TRUE) + var/list/sorted = sortTim(GLOB.timers_by_proc, GLOBAL_PROC_REF(cmp_numeric_dsc), TRUE) var/list/text = list("

Timer Log

", "