Squashed commit of the following:

commit 19e44efef1
Author: Changelogs <action@github.com>
Date:   Mon Jun 21 00:24:03 2021 +0000

    Automatic changelog compile [ci skip]

commit bd1344b4b2
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 20 18:26:23 2021 -0500

    Automatic changelog generation for PR #14872 [ci skip]

commit 3a914072b5
Merge: 8a81fa7d79 29604b939c
Author: Lin <linzolle@gmail.com>
Date:   Sun Jun 20 16:26:21 2021 -0700

    Merge pull request #14872 from Citadel-Station-13/silicons-patch-40

    it turns out i accidentally buffed glowshrooms by a factor of 21. this should probably be fixed.

commit 8a81fa7d79
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 20 18:25:25 2021 -0500

    Automatic changelog generation for PR #14873 [ci skip]

commit 9117cc6a5c
Merge: 0a1f0d3e66 0113412190
Author: Lin <linzolle@gmail.com>
Date:   Sun Jun 20 16:25:23 2021 -0700

    Merge pull request #14873 from timothyteakettle/vore

    vore href exploit fix

commit 29604b939c
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 20 13:18:54 2021 -0700

    Update glowshroom.dm

commit 0a1f0d3e66
Author: Changelogs <action@github.com>
Date:   Sun Jun 20 00:24:26 2021 +0000

    Automatic changelog compile [ci skip]

commit 0113412190
Author: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com>
Date:   Sat Jun 19 16:28:52 2021 +0100

    Update vorepanel.dm

commit ab9a776690
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sat Jun 19 09:04:51 2021 -0500

    Automatic changelog generation for PR #14863 [ci skip]

commit 0cfe2ec4ca
Merge: 0067cc2b6e cf0d7f704a
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sat Jun 19 07:04:48 2021 -0700

    Merge pull request #14863 from miniusAreas/fdmm-patch-28485128-miniusAreas

    Various Fixes (freelance)

commit 8f3c1fe03a
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sat Jun 19 07:02:51 2021 -0700

    Update glowshroom.dm

commit c0e3af55bc
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sat Jun 19 06:59:26 2021 -0700

    Update glowshroom.dm

commit 0067cc2b6e
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Fri Jun 18 22:03:46 2021 -0500

    Automatic changelog generation for PR #14734 [ci skip]

commit 3c7786dafd
Merge: de26ea4a20 538efd2d8f
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri Jun 18 20:03:43 2021 -0700

    Merge pull request #14734 from keronshb/SpaceDragon

    (READY) Ports Space Dragon Midround Event.

commit de26ea4a20
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Fri Jun 18 22:02:25 2021 -0500

    Automatic changelog generation for PR #14867 [ci skip]

commit fd0afa209f
Merge: ae6a648c4b 20bc2f2f59
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri Jun 18 20:02:23 2021 -0700

    Merge pull request #14867 from kiwedespars/wheelyheely

    wheely heelies finally have that downside people have been telling me about

commit ae6a648c4b
Merge: 2fa8136e6a fb9cc6fe45
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri Jun 18 20:02:07 2021 -0700

    Merge pull request #14869 from bunny232/21/79-the-finale

    21/79 the finale now with less map merge issues woops

commit 2fa8136e6a
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Fri Jun 18 22:01:08 2021 -0500

    Automatic changelog generation for PR #14860 [ci skip]

commit 4768b23398
Merge: 0e7760fb09 5619b73e6b
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri Jun 18 20:01:05 2021 -0700

    Merge pull request #14860 from Arturlang/nanite_updates

    Updates our nanite stuff to TG's, mostly

commit 0e7760fb09
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Fri Jun 18 21:58:29 2021 -0500

    Automatic changelog generation for PR #14831 [ci skip]

commit bc4773b728
Merge: ec2548949b a64d94a7cc
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri Jun 18 19:58:27 2021 -0700

    Merge pull request #14831 from zeroisthebiggay/beltsprites

    TG Resprite Compendium Atomization Project | Episode Six: Beltslot Sprites & Telebaton Resprite

commit ec2548949b
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Fri Jun 18 21:58:09 2021 -0500

    Automatic changelog generation for PR #14864 [ci skip]

commit 30d5a72688
Merge: 5d3384d649 d823c5b168
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri Jun 18 19:58:06 2021 -0700

    Merge pull request #14864 from EmeraldSundisk/moresnax

    Smaller but more important changes to Snaxi.

commit 5d3384d649
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Fri Jun 18 20:52:39 2021 -0500

    Automatic changelog generation for PR #14847 [ci skip]

commit f6b3bce2f3
Merge: 84068b467a 03b921a121
Author: Putnam3145 <putnam3145@gmail.com>
Date:   Fri Jun 18 18:52:37 2021 -0700

    Merge pull request #14847 from bunny232/21/79-the-revengence

    21/79 not 20/80 the revenge

commit 84068b467a
Merge: 1400c8deb9 687d0adf23
Author: Putnam3145 <putnam3145@gmail.com>
Date:   Fri Jun 18 17:23:35 2021 -0700

    Merge pull request #14658 from silicons/backend_sync

    Updates tgui and build backend, fixes the build.bat for those with latest eslint (?)

commit 1400c8deb9
Author: Changelogs <action@github.com>
Date:   Sat Jun 19 00:23:19 2021 +0000

    Automatic changelog compile [ci skip]

commit adc6b7d76a
Merge: eab6579cce a8b7c07f00
Author: Lin <linzolle@gmail.com>
Date:   Fri Jun 18 13:53:23 2021 -0700

    Merge pull request #14865 from Citadel-Station-13/silicons-patch-39

    when sprint is disabled, people jogging can still slip :)

commit eab6579cce
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Fri Jun 18 12:22:50 2021 -0500

    Automatic changelog generation for PR #14862 [ci skip]

commit a192757843
Author: keronshb <54602815+keronshb@users.noreply.github.com>
Date:   Fri Jun 18 13:22:48 2021 -0400

    BUG FIX: Changeling Bone Gauntlets work again (#14862)

    * Fixes Bone Gauntlets

    * Better fix

    * return

commit fb9cc6fe45
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Fri Jun 18 05:25:02 2021 -0400

    Update atmospherics.dm

commit 5d574acdc2
Merge: 2b89214d14 eaf36d3137
Author: Putnam3145 <putnam3145@gmail.com>
Date:   Fri Jun 18 00:47:07 2021 -0700

    Merge pull request #14794 from Citadel-Station-13/silicons-patch-35

    updates GLOB.flags to the new byond limit of 24 flags in one variable, up from 16.

commit 2b89214d14
Author: Changelogs <action@github.com>
Date:   Fri Jun 18 00:22:21 2021 +0000

    Automatic changelog compile [ci skip]

commit 20bc2f2f59
Author: 123 <aeromireleks@gmail.com>
Date:   Thu Jun 17 16:16:21 2021 -0700

    Update scooter.dm

commit 04debb2c20
Author: Changelogs <action@github.com>
Date:   Sun Mar 14 00:27:26 2021 +0000

    Automatic changelog compile [ci skip]

commit a8b7c07f00
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Thu Jun 17 07:07:49 2021 -0700

    Update open.dm

commit d823c5b168
Author: EmeraldSundisk <thachazman@hotmail.com>
Date:   Wed Jun 16 21:58:32 2021 -0700

    Update Snaxi.dmm

commit 507b1f43c0
Merge: a121153f0f 21845e0618
Author: EmeraldSundisk <51142887+EmeraldSundisk@users.noreply.github.com>
Date:   Wed Jun 16 21:17:32 2021 -0700

    Merge pull request #82 from EmeraldSundisk/Citadel-Station-13-master

    Citadel station 13 master

commit 21845e0618
Merge: a121153f0f 64f762f59b
Author: EmeraldSundisk <51142887+EmeraldSundisk@users.noreply.github.com>
Date:   Wed Jun 16 21:16:14 2021 -0700

    Merge pull request #81 from Citadel-Station-13/master

    6/16

commit cf0d7f704a
Author: miniusAreas <39163353+miniusAreas@users.noreply.github.com>
Date:   Wed Jun 16 22:20:52 2021 -0400

    AAAAAAAAAAA

commit 04b67e3584
Author: miniusAreas <39163353+miniusAreas@users.noreply.github.com>
Date:   Wed Jun 16 22:14:57 2021 -0400

    metapubbydelta

commit 687d0adf23
Merge: b734c28370 64f762f59b
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 16 19:04:07 2021 -0700

    Merge remote-tracking branch 'citadel/master' into backend_sync

commit 64f762f59b
Author: Changelogs <action@github.com>
Date:   Thu Jun 17 00:22:08 2021 +0000

    Automatic changelog compile [ci skip]

commit 0a3aa1e94d
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 16 13:30:04 2021 -0500

    Automatic changelog generation for PR #14851 [ci skip]

commit 1e66357706
Merge: dc6b686ac5 df72710cae
Author: Lin <linzolle@gmail.com>
Date:   Wed Jun 16 11:30:01 2021 -0700

    Merge pull request #14851 from Vynzill/spritinghell

    Extended Armwraps

commit dc6b686ac5
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 16 12:27:22 2021 -0500

    Automatic changelog generation for PR #14854 [ci skip]

commit e12380cc40
Author: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com>
Date:   Wed Jun 16 18:27:19 2021 +0100

    Update embedded.dm (#14854)

commit 3864baaf76
Author: Changelogs <action@github.com>
Date:   Wed Jun 16 00:23:43 2021 +0000

    Automatic changelog compile [ci skip]

commit 5619b73e6b
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 02:02:28 2021 +0300

    Makes it actually, actually work

commit ad0c3d477e
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 01:48:54 2021 +0300

    Makes it work proper, hopefully

commit 795ab3f835
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 01:32:24 2021 +0300

    https://github.com/tgstation/tgstation/pull/49798

commit 096e7d4d67
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 01:31:53 2021 +0300

    https://github.com/tgstation/tgstation/pull/49927

commit fbcd1a3026
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 01:26:02 2021 +0300

    https://github.com/tgstation/tgstation/pull/55883

    With a minor tweak so humans don't benefit

commit ab82766757
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 01:19:48 2021 +0300

    https://github.com/tgstation/tgstation/pull/59169

commit f33343c6db
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 01:17:13 2021 +0300

    https://github.com/tgstation/tgstation/pull/56739

commit 74c186d871
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 01:16:39 2021 +0300

    https://github.com/tgstation/tgstation/pull/56516

commit a430dc4d4d
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 01:16:08 2021 +0300

    https://github.com/tgstation/tgstation/pull/56542

commit f3e16b298b
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 01:15:21 2021 +0300

    https://github.com/tgstation/tgstation/pull/56588

commit b0d7482f04
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 01:09:30 2021 +0300

    https://github.com/tgstation/tgstation/pull/55902

commit e2eb9d52d0
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 01:03:51 2021 +0300

    https://github.com/tgstation/tgstation/pull/55164

commit 18aee24231
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 01:01:41 2021 +0300

    https://github.com/tgstation/tgstation/pull/54902

commit 337998e99a
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 00:46:05 2021 +0300

    https://github.com/tgstation/tgstation/pull/54793

commit 724b34f55d
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 16 00:44:32 2021 +0300

    https://github.com/tgstation/tgstation/pull/54710

commit 70de0547ab
Merge: 9277e685e9 0d206742fa
Author: Lin <linzolle@gmail.com>
Date:   Mon Jun 14 20:17:05 2021 -0700

    Merge pull request #14713 from silicons/json_interface

    adds json topic api for manifest, players, revision, and status.

commit 9277e685e9
Merge: e22ea7de59 bc56f74229
Author: Lin <linzolle@gmail.com>
Date:   Mon Jun 14 20:15:52 2021 -0700

    Merge pull request #14797 from Citadel-Station-13/silicons-patch-36-1

    Delete docker_publish.yml

commit e22ea7de59
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Mon Jun 14 22:15:45 2021 -0500

    Automatic changelog generation for PR #14834 [ci skip]

commit 4ae09baa63
Merge: 84a6467fc9 8feb473e65
Author: Lin <linzolle@gmail.com>
Date:   Mon Jun 14 20:15:42 2021 -0700

    Merge pull request #14834 from silicons/on_found

    Fixes on_found triggering on storage

commit 84a6467fc9
Merge: a1db7518e2 2c61a48860
Author: Lin <linzolle@gmail.com>
Date:   Mon Jun 14 20:14:05 2021 -0700

    Merge pull request #14835 from Citadel-Station-13/silicons-patch-37

    Mark datum is now a global verb

commit a1db7518e2
Author: Changelogs <action@github.com>
Date:   Tue Jun 15 00:23:42 2021 +0000

    Automatic changelog compile [ci skip]

commit df72710cae
Author: Vynzill <crimsonrazoralt@gmail.com>
Date:   Mon Jun 14 17:19:05 2021 -0500

    herewego

commit c3f87c312c
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Mon Jun 14 16:30:56 2021 -0500

    Automatic changelog generation for PR #14849 [ci skip]

commit ecd3454ce5
Merge: 38d40b5892 4fec75fe87
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Mon Jun 14 14:30:53 2021 -0700

    Merge pull request #14849 from EmeraldSundisk/snaxifollowup

    Quick Snaxi fixes.

commit 4fec75fe87
Author: EmeraldSundisk <thachazman@hotmail.com>
Date:   Mon Jun 14 08:48:14 2021 -0700

    initialfix

commit 03b921a121
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Mon Jun 14 06:12:04 2021 -0400

    Update tank.dm

commit a121153f0f
Merge: 29e37b0f5e 38d40b5892
Author: EmeraldSundisk <51142887+EmeraldSundisk@users.noreply.github.com>
Date:   Sun Jun 13 22:33:35 2021 -0700

    Merge pull request #80 from Citadel-Station-13/master

    6/13

commit 38d40b5892
Author: Changelogs <action@github.com>
Date:   Mon Jun 14 00:22:34 2021 +0000

    Automatic changelog compile [ci skip]

commit b734c28370
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 16:27:38 2021 -0700

    fixes

commit 6495bbcc81
Merge: a8f17c3305 eb353c9687
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 16:13:30 2021 -0700

    Merge remote-tracking branch 'citadel/master' into backend_sync

commit a64d94a7cc
Merge: bae89fcaba eb353c9687
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Sun Jun 13 18:25:35 2021 -0400

    Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into beltsprites

commit eb353c9687
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:24:33 2021 -0500

    Automatic changelog generation for PR #14832 [ci skip]

commit 49efd115ee
Merge: cc88ebd185 319e03476b
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:24:30 2021 -0700

    Merge pull request #14832 from zeroisthebiggay/miscsprites

    TG Resprite Compendium Atomization Project | Episode Seven: Misc. Resprites & Distinctive Combat Defibs

commit cc88ebd185
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:19:48 2021 -0500

    Automatic changelog generation for PR #14818 [ci skip]

commit ddf885f42e
Merge: 744ed08466 c44750760d
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:19:46 2021 -0700

    Merge pull request #14818 from EmeraldSundisk/snaxiforrealthistime

    HEY HEY! COME ON OVER, HAVE SOME FUN WITH SNOW TAXI!!!

commit 744ed08466
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:19:39 2021 -0500

    Automatic changelog generation for PR #14837 [ci skip]

commit a91d5111c4
Merge: a88561d1aa a395fc1b52
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:19:37 2021 -0700

    Merge pull request #14837 from zeroisthebiggay/trojancoyoteskirt

    (held against my will) adds a onesleeved croptop

commit a88561d1aa
Merge: 3170d60919 ed929dda12
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:19:08 2021 -0700

    Merge pull request #14770 from keronshb/spaceadaptaura

    Changes Space Adapt to a proper animated outline so it doesn't look awful.

commit bae89fcaba
Merge: 1122135c17 3170d60919
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Sun Jun 13 18:19:01 2021 -0400

    Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into beltsprites

commit 3170d60919
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:18:48 2021 -0500

    Automatic changelog generation for PR #14824 [ci skip]

commit d6aaf5c96a
Merge: a8f7a56d41 e78929cde1
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:18:46 2021 -0700

    Merge pull request #14824 from timothyteakettle/bee

    bees can go in containers and are released upon opening the container

commit a8f7a56d41
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:17:21 2021 -0500

    Automatic changelog generation for PR #14814 [ci skip]

commit dc80bcaabb
Merge: ef5a523729 01a61b551c
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:17:18 2021 -0700

    Merge pull request #14814 from TripleShades/delda

    Delta Tweaks

commit ef5a523729
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:16:39 2021 -0500

    Automatic changelog generation for PR #14816 [ci skip]

commit d0fc422b3a
Merge: 81cd001359 3321e17c6f
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:16:37 2021 -0700

    Merge pull request #14816 from SandPoot/tablet-pen-slot

    Adds a pen slot for tablet computers

commit 319e03476b
Merge: e757f9ea2c 81cd001359
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Sun Jun 13 18:16:08 2021 -0400

    Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into miscsprites

commit 81cd001359
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:16:02 2021 -0500

    Automatic changelog generation for PR #14841 [ci skip]

commit f56e95e4e7
Merge: fe031f32c0 a324701730
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:15:59 2021 -0700

    Merge pull request #14841 from MrJWhit/revert-14762-patch-2

    Revert "adds cat meteors"

commit fe031f32c0
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:15:35 2021 -0500

    Automatic changelog generation for PR #14813 [ci skip]

commit 2dd0d014b9
Merge: 0f2bbc2a13 d70a35a48d
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:15:32 2021 -0700

    Merge pull request #14813 from SandPoot/small-issues

    Fixes some small issues with cosmetic syndicate clothing (loadout clothing)

commit 0f2bbc2a13
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:15:22 2021 -0500

    Automatic changelog generation for PR #14820 [ci skip]

commit 431acd9d5c
Merge: b2f530da5d 584dce4a80
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:15:20 2021 -0700

    Merge pull request #14820 from qweq12yt/more-cargo-stuff

    [FIX] Some cargo related fixes

commit b2f530da5d
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:15:07 2021 -0500

    Automatic changelog generation for PR #14836 [ci skip]

commit 5e1818819b
Merge: 6efe680a47 1303f4b9ae
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:15:04 2021 -0700

    Merge pull request #14836 from timothyteakettle/funny-tips

    adds 7 more round tips

commit 6efe680a47
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:14:32 2021 -0500

    Automatic changelog generation for PR #14830 [ci skip]

commit b77da2824a
Merge: f02098d1a1 4486b08bd4
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:14:30 2021 -0700

    Merge pull request #14830 from zeroisthebiggay/dishdrive

    TG Resprite Compendium Atomization Project | Episode Five: Dish Drives

commit f02098d1a1
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:14:07 2021 -0500

    Automatic changelog generation for PR #14829 [ci skip]

commit 211fed05d7
Merge: 81be45f062 8a5a5ef6cc
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:14:04 2021 -0700

    Merge pull request #14829 from zeroisthebiggay/singulohammer

    TG Resprite Compendium Atomization Project | Episode Four: Singularity Hammers

commit 81be45f062
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:13:49 2021 -0500

    Automatic changelog generation for PR #14826 [ci skip]

commit 33d8e95144
Merge: 5324544a63 39d951a4a8
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:13:46 2021 -0700

    Merge pull request #14826 from zeroisthebiggay/bankmachine

    TG Resprite Compendium Atomization Project | Episode Two: Bank Machines

commit 5324544a63
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sun Jun 13 17:13:25 2021 -0500

    Automatic changelog generation for PR #14825 [ci skip]

commit 8eff0ca5b3
Merge: 405135834e 5bf831be0f
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Jun 13 15:13:23 2021 -0700

    Merge pull request #14825 from zeroisthebiggay/watercooler

    TG Resprite Compendium Atomization Project | Episode One: Water Coolers

commit a324701730
Author: MrJWhit <48370570+MrJWhit@users.noreply.github.com>
Date:   Sun Jun 13 05:25:02 2021 -0400

    Revert "adds cat meteors"

commit c44750760d
Author: EmeraldSundisk <51142887+EmeraldSundisk@users.noreply.github.com>
Date:   Sat Jun 12 21:34:41 2021 -0700

    Add files via upload

commit 686798b789
Author: EmeraldSundisk <thachazman@hotmail.com>
Date:   Sat Jun 12 21:21:43 2021 -0700

    stronk

commit a395fc1b52
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Sat Jun 12 19:58:53 2021 -0400

    a

commit e757f9ea2c
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Sat Jun 12 17:41:09 2021 -0400

    thetwentythirdofmany

commit 1303f4b9ae
Author: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com>
Date:   Sat Jun 12 15:34:58 2021 +0100

    Update tips.txt

commit 2c61a48860
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sat Jun 12 05:09:13 2021 -0700

    Update mark_datum.dm

commit 8feb473e65
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sat Jun 12 04:49:23 2021 -0700

    fixes

commit 55e8d67521
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sat Jun 12 04:41:58 2021 -0700

    refactor a bit

commit 85b1125c83
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sat Jun 12 04:36:02 2021 -0700

    fix

commit 01a61b551c
Author: TripleShades <MegaProto@gmx.com>
Date:   Sat Jun 12 01:08:22 2021 -0400

    Update DeltaStation2.dmm

commit 3fae79f876
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Fri Jun 11 20:28:25 2021 -0400

    thetwentyfirstofmany

commit 405135834e
Author: Changelogs <action@github.com>
Date:   Sat Jun 12 00:20:05 2021 +0000

    Automatic changelog compile [ci skip]

commit 1122135c17
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Fri Jun 11 20:04:05 2021 -0400

    thetwentiethofmany

commit b7eecc315f
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Fri Jun 11 19:49:43 2021 -0400

    theeighteenthofmany

commit 53e95b7356
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Fri Jun 11 19:48:04 2021 -0400

    theseventeenthofmany

commit 4486b08bd4
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Fri Jun 11 19:33:51 2021 -0400

    thefifteenthofmany

commit 979aa04a69
Merge: c33348fe18 b188a6ea0f
Author: Putnam3145 <putnam3145@gmail.com>
Date:   Fri Jun 11 16:22:06 2021 -0700

    Merge pull request #14828 from silicons/sigh_516

    fixes the crafting menu, adds an unit test to automatically yell at people who PR untested code that ended up breaking it for me (thanks drpanis)

commit 8a5a5ef6cc
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Fri Jun 11 19:22:05 2021 -0400

    thethirteenthofmany

commit b188a6ea0f
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri Jun 11 16:15:31 2021 -0700

    why

commit a8f17c3305
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri Jun 11 15:33:55 2021 -0700

    hm

commit 39d951a4a8
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Fri Jun 11 18:24:29 2021 -0400

    thesixthofmany

commit 5bf831be0f
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Fri Jun 11 18:17:16 2021 -0400

    thefourthofmany

commit 0830181b26
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri Jun 11 15:10:29 2021 -0700

    hm

commit e78929cde1
Author: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com>
Date:   Fri Jun 11 17:55:38 2021 +0100

    typo

commit baad78e7fe
Author: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com>
Date:   Fri Jun 11 16:08:55 2021 +0100

    bee

commit 816b09bf32
Merge: 4289b8be1e c33348fe18
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Thu Jun 10 22:36:26 2021 -0700

    Merge remote-tracking branch 'citadel/master' into backend_sync

commit 7980ee2c37
Author: EmeraldSundisk <thachazman@hotmail.com>
Date:   Thu Jun 10 21:54:00 2021 -0700

    strongdmm

commit 584dce4a80
Author: qweq12yt <45515587+qweq12yt@users.noreply.github.com>
Date:   Fri Jun 11 01:34:19 2021 -0300

    updating comments

commit 78470092fc
Author: qweq12yt <45515587+qweq12yt@users.noreply.github.com>
Date:   Fri Jun 11 01:12:16 2021 -0300

    Update settings.json

commit c33348fe18
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Thu Jun 10 19:52:15 2021 -0500

    Automatic changelog generation for PR #14768 [ci skip]

commit 86881dc1af
Merge: a683754160 b1b931a7c4
Author: BlackMajor <henrydyer6@hotmail.com>
Date:   Fri Jun 11 12:52:12 2021 +1200

    Merge pull request #14768 from Citadel-Station-13/silicons-patch-33

    makes xenos immune to stamina damage, with something that might be potentially horrifically abusable but isn't really fixable in a clean way yet

commit a683754160
Author: Changelogs <action@github.com>
Date:   Fri Jun 11 00:23:59 2021 +0000

    Automatic changelog compile [ci skip]

commit 0ca61af62a
Author: qweq12yt <45515587+qweq12yt@users.noreply.github.com>
Date:   Thu Jun 10 16:50:44 2021 -0300

    fixed combo lockers

commit ebb4ab1f07
Author: EmeraldSundisk <thachazman@hotmail.com>
Date:   Wed Jun 9 21:21:24 2021 -0700

    to finish

commit 29e37b0f5e
Merge: 375da54dc2 9376ec0d04
Author: EmeraldSundisk <51142887+EmeraldSundisk@users.noreply.github.com>
Date:   Wed Jun 9 21:19:25 2021 -0700

    Merge pull request #79 from Citadel-Station-13/master

    6/9

commit 3321e17c6f
Author: SandPoot <43283559+SandPoot@users.noreply.github.com>
Date:   Wed Jun 9 21:48:06 2021 -0300

    Update NtosWindow.js

    Delet unused stuff

commit e63eac2c57
Author: SandPoot <43283559+SandPoot@users.noreply.github.com>
Date:   Wed Jun 9 21:47:33 2021 -0300

    upload NtosWindow.js

commit 79c501a7b4
Author: SandPoot <enric_gabirel@hotmail.com>
Date:   Wed Jun 9 21:36:43 2021 -0300

    upload files

commit 9376ec0d04
Author: Changelogs <action@github.com>
Date:   Thu Jun 10 00:25:00 2021 +0000

    Automatic changelog compile [ci skip]

commit 42b8120f74
Author: TripleShades <MegaProto@gmx.com>
Date:   Wed Jun 9 15:47:33 2021 -0400

    Update DeltaStation2.dmm

commit 0ca6e983c9
Author: TripleShades <MegaProto@gmx.com>
Date:   Wed Jun 9 15:32:48 2021 -0400

    changies

    delda changies good

commit d3f1a163b1
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 14:14:39 2021 -0500

    Automatic changelog generation for PR #14683 [ci skip]

commit 5e4f3ed694
Merge: e78715d952 33affb4f10
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 12:14:37 2021 -0700

    Merge pull request #14683 from keronshb/shovedisarmgun

    Off Balance Disarms only if shoved into a wall or person.

commit 33affb4f10
Author: keronshb <keronshb@live.com>
Date:   Wed Jun 9 15:14:07 2021 -0400

    THREE SECONDS

commit ed929dda12
Author: keronshb <keronshb@live.com>
Date:   Wed Jun 9 15:12:22 2021 -0400

    Changes up the animation a bit

commit d70a35a48d
Author: SandPoot <enric_gabirel@hotmail.com>
Date:   Wed Jun 9 15:49:57 2021 -0300

    upload syndicate.dm

commit e78715d952
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:29:26 2021 -0500

    Automatic changelog generation for PR #14776 [ci skip]

commit 09d61c3bec
Merge: 13c965e5f3 7884ccf316
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:29:24 2021 -0700

    Merge pull request #14776 from WanderingFox95/WanderingFox95-CatSurgeon

    New Challenger: The Cat Surgeon has appeared! (Ready!)

commit 13c965e5f3
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:22:28 2021 -0500

    Automatic changelog generation for PR #14766 [ci skip]

commit a77aa8bd41
Merge: fa24353b16 ed86a6628a
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:22:26 2021 -0700

    Merge pull request #14766 from Linzolle/cultfix

    Fix cult area shenanigans, cult can do stuff in maint again.

commit fa24353b16
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:21:57 2021 -0500

    Automatic changelog generation for PR #14762 [ci skip]

commit 224efa0e26
Merge: 535435633e 2eeb6ede1e
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:21:55 2021 -0700

    Merge pull request #14762 from DrPainis/patch-2

    adds cat meteors

commit 535435633e
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:21:24 2021 -0500

    Automatic changelog generation for PR #14760 [ci skip]

commit eb4b4088f4
Merge: 323e2f4355 40f9941849
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:21:22 2021 -0700

    Merge pull request #14760 from keronshb/floorcluwneport

    Ports Floor Cluwnes and Cluwnes.

commit 323e2f4355
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:21:14 2021 -0500

    Automatic changelog generation for PR #14759 [ci skip]

commit 996a99b7f4
Merge: c094d771c1 71a8c08e22
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:21:12 2021 -0700

    Merge pull request #14759 from Arturlang/uplink_misc_item_rebalances

    Changes the cost of the holoparasite injector and the ricochet eyepatch

commit c094d771c1
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:20:52 2021 -0500

    Automatic changelog generation for PR #14749 [ci skip]

commit a56ac3ce07
Merge: 34b3fd1011 7dab80cbb7
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:20:49 2021 -0700

    Merge pull request #14749 from DrPainis/patch-14

    adds goliath calamari (currently untested because Forget™)

commit 34b3fd1011
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:19:42 2021 -0500

    Automatic changelog generation for PR #14771 [ci skip]

commit 30e7939e0e
Merge: 8d9cfc7b4a 25fe97e8fe
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:19:40 2021 -0700

    Merge pull request #14771 from keronshb/disposalcargo

    Lets the Cargo Shuttle use Disposal Pipes again

commit 8d9cfc7b4a
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:18:35 2021 -0500

    Automatic changelog generation for PR #14796 [ci skip]

commit 564a3aaa4b
Merge: 82a61121cd 2db540aae3
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:18:32 2021 -0700

    Merge pull request #14796 from MrJWhit/the-pr-that-gets-people-pissed

    Moves medical holodeck to restricted

commit 82a61121cd
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:18:12 2021 -0500

    Automatic changelog generation for PR #14803 [ci skip]

commit b28d4f26f3
Merge: 21e816abba 26544ddbb7
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:18:10 2021 -0700

    Merge pull request #14803 from bunny232/airmixies

    21/79 not 20/80

commit 21e816abba
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:17:54 2021 -0500

    Automatic changelog generation for PR #14806 [ci skip]

commit dcd80edf5f
Merge: 0ee2892bee 536135ec02
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:17:52 2021 -0700

    Merge pull request #14806 from zeroisthebiggay/patch-11

    cuts the amount of essence revenant objective needs in half so it is actually feasibly possible

commit 0ee2892bee
Merge: 5197b0aff3 fcd1ec83cc
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:17:39 2021 -0700

    Merge pull request #14807 from Putnam3145/make-sleeper-pref-good

    makes medihound sleeper toggle do something

commit 5197b0aff3
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:17:27 2021 -0500

    Automatic changelog generation for PR #14808 [ci skip]

commit 7af470efef
Merge: 4b675a9300 00bb96d467
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:17:25 2021 -0700

    Merge pull request #14808 from SandPoot/fixes-soulstones

    Fixes soulstones runtiming

commit 4b675a9300
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:17:20 2021 -0500

    Automatic changelog generation for PR #14810 [ci skip]

commit c7df74f452
Merge: ec63a4c62b 082ffa16f3
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:17:17 2021 -0700

    Merge pull request #14810 from zeroisthebiggay/patch-12

    Clowncar exploit fix

commit ec63a4c62b
Merge: 3d86ce9bda 84db564e0f
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:17:14 2021 -0700

    Merge pull request #14779 from Arturlang/Orbit_menu_antags

    Makes orbit menu show antags if DNR

commit 3d86ce9bda
Merge: a339d43eac 015bd3c338
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:17:06 2021 -0700

    Merge pull request #14787 from WanderingFox95/WanderingFox95-ORV-Revamp

    ORV Uniform Revamp

commit eaf36d3137
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:16:55 2021 -0700

    Update _flags.dm

commit a339d43eac
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:15:58 2021 -0500

    Automatic changelog generation for PR #14802 [ci skip]

commit a7781f77fd
Merge: 31b544dc67 7826ced174
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:15:56 2021 -0700

    Merge pull request #14802 from bunny232/atmosfoam

    Atmos resin buff? fix?

commit 31b544dc67
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:15:41 2021 -0500

    Automatic changelog generation for PR #14805 [ci skip]

commit 2402c56bfc
Merge: 460026f3bc 1a72070f5c
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:15:36 2021 -0700

    Merge pull request #14805 from bunny232/hydroslimejelly

    Hydroponics slimejelly recipe from tg

commit 460026f3bc
Merge: 5ffceb376d 5563ed1492
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:15:22 2021 -0700

    Merge pull request #14774 from Citadel-Station-13/dependabot/npm_and_yarn/tgui/ws-7.4.6

    Bump ws from 7.4.3 to 7.4.6 in /tgui

commit 5ffceb376d
Merge: 87e6b3992f 413bb15961
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:15:11 2021 -0700

    Merge pull request #14812 from Citadel-Station-13/dependabot/pip/tools/pillow-8.2.0

    Bump pillow from 8.1.1 to 8.2.0 in /tools

commit 87e6b3992f
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:15:03 2021 -0500

    Automatic changelog generation for PR #14809 [ci skip]

commit c0e3b8d5ef
Merge: 259aed7903 b0940456f5
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:15:01 2021 -0700

    Merge pull request #14809 from SandPoot/speak-nice-yes

    Centralizes borg speech and uses some of the icons for the typing indicator

commit 259aed7903
Merge: fe8323f503 b2e2c49011
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:14:48 2021 -0700

    Merge pull request #14783 from DeltaFire15/spec-species-color

    Colors species names depending on traits

commit fe8323f503
Merge: 03e71c36a5 7458909970
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:13:13 2021 -0700

    Merge pull request #14747 from keronshb/reinforcedplasmawindowsteps

    Adds more deconstruction steps to stronger windows.

commit 03e71c36a5
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:12:26 2021 -0500

    Automatic changelog generation for PR #14712 [ci skip]

commit 7963dce24e
Merge: 0a2f05b5dd f4780d4b5a
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:12:23 2021 -0700

    Merge pull request #14712 from keronshb/hereticadjustments

    Minor Heretic rework and fixes (Includes shifting realities and more)

commit 0a2f05b5dd
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 9 13:10:20 2021 -0500

    Automatic changelog generation for PR #14160 [ci skip]

commit 716c2a04e4
Merge: 103731ed05 475a7d2499
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Jun 9 11:10:17 2021 -0700

    Merge pull request #14160 from keronshb/motivation

    Adds a new traitor item, Motivation (Part 1)

commit 103731ed05
Author: Changelogs <action@github.com>
Date:   Wed Jun 9 00:26:52 2021 +0000

    Automatic changelog compile [ci skip]

commit 413bb15961
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Tue Jun 8 23:13:41 2021 +0000

    Bump pillow from 8.1.1 to 8.2.0 in /tools

    Bumps [pillow](https://github.com/python-pillow/Pillow) from 8.1.1 to 8.2.0.
    - [Release notes](https://github.com/python-pillow/Pillow/releases)
    - [Changelog](https://github.com/python-pillow/Pillow/blob/master/CHANGES.rst)
    - [Commits](https://github.com/python-pillow/Pillow/compare/8.1.1...8.2.0)

    ---
    updated-dependencies:
    - dependency-name: pillow
      dependency-type: direct:production
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

commit 082ffa16f3
Author: zeroisthebiggay <43571008+zeroisthebiggay@users.noreply.github.com>
Date:   Tue Jun 8 15:43:32 2021 -0400

    Update car.dm

commit b0940456f5
Author: SandPoot <enric_gabirel@hotmail.com>
Date:   Tue Jun 8 13:13:22 2021 -0300

    upload files

commit 00bb96d467
Author: SandPoot <enric_gabirel@hotmail.com>
Date:   Tue Jun 8 12:32:12 2021 -0300

    upload soulstone.dm

commit fcd1ec83cc
Author: Putnam <putnam3145@gmail.com>
Date:   Tue Jun 8 00:25:31 2021 -0700

    removed redundant check

commit f6e08a8d2a
Author: Putnam <putnam3145@gmail.com>
Date:   Tue Jun 8 00:24:54 2021 -0700

    include a message too

commit a236357ebe
Author: Putnam <putnam3145@gmail.com>
Date:   Tue Jun 8 00:21:19 2021 -0700

    makes medihound sleeper toggle do something

commit 536135ec02
Author: zeroisthebiggay <43571008+zeroisthebiggay@users.noreply.github.com>
Date:   Tue Jun 8 01:17:10 2021 -0400

    last bit of finetuning

commit 55075fb31b
Author: zeroisthebiggay <43571008+zeroisthebiggay@users.noreply.github.com>
Date:   Tue Jun 8 01:15:03 2021 -0400

    Update revenant.dm

commit 538f1c802d
Author: zeroisthebiggay <43571008+zeroisthebiggay@users.noreply.github.com>
Date:   Tue Jun 8 01:13:12 2021 -0400

    Update revenant.dm

commit 1a72070f5c
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Mon Jun 7 21:44:33 2021 -0400

    slimejelly

    a

commit 614c3192e5
Author: Changelogs <action@github.com>
Date:   Tue Jun 8 00:43:09 2021 +0000

    Automatic changelog compile [ci skip]

commit 26544ddbb7
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Sun Jun 6 17:24:10 2021 -0400

    21/79 not 20/80

commit 7826ced174
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Sun Jun 6 12:54:07 2021 -0400

    Update effects_foam.dm

commit e24ecea492
Author: Changelogs <action@github.com>
Date:   Sun Jun 6 00:41:17 2021 +0000

    Automatic changelog compile [ci skip]

commit 697fffd347
Merge: f3f5b0d605 e4c01b3f74
Author: Lin <linzolle@gmail.com>
Date:   Sat Jun 5 16:27:12 2021 -0500

    Merge pull request #14792 from bunny232/meta-pool

    More reasonable SUCC for the meta pool drain.

commit f3f5b0d605
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Sat Jun 5 16:26:23 2021 -0500

    Automatic changelog generation for PR #14793 [ci skip]

commit 27d7b4b564
Merge: 06bcb7c904 720966f31e
Author: Lin <linzolle@gmail.com>
Date:   Sat Jun 5 16:26:21 2021 -0500

    Merge pull request #14793 from bunny232/pool-fog

    Pools now get misty at warm insteaed of scalding

commit 06bcb7c904
Merge: 5f6cb40d16 d3f6b69a86
Author: Lin <linzolle@gmail.com>
Date:   Sat Jun 5 16:21:12 2021 -0500

    Merge pull request #14795 from MrJWhit/boxstation-touchups2

    Boxstation touchups2

commit 7884ccf316
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Sat Jun 5 14:51:59 2021 +0200

    Only 5 units are necessary, so why keep it at 10?

    I mean, this is the refining process

commit bc56f74229
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri Jun 4 20:23:02 2021 -0700

    Delete docker_publish.yml

commit 40f9941849
Author: keronshb <keronshb@live.com>
Date:   Fri Jun 4 22:52:03 2021 -0400

    Fixes invisibility when being dragged and glass table cheese

commit 5f6cb40d16
Merge: 4b3a4d99dc 0dc1163a29
Author: Lin <linzolle@gmail.com>
Date:   Fri Jun 4 21:37:42 2021 -0500

    Merge pull request #14773 from Putnam3145/fix-activity-typo

    Fixes an activity display issue

commit 2db540aae3
Author: MrJWhit <48370570+MrJWhit@users.noreply.github.com>
Date:   Fri Jun 4 20:53:34 2021 -0400

    Update holodeck.dm

commit 4b3a4d99dc
Author: Changelogs <action@github.com>
Date:   Sat Jun 5 00:48:25 2021 +0000

    Automatic changelog compile [ci skip]

commit 560ce54d59
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Fri Jun 4 17:37:59 2021 -0500

    Automatic changelog generation for PR #14763 [ci skip]

commit b757e22956
Merge: 2ec1abe71e 7dea33f6c2
Author: Putnam3145 <putnam3145@gmail.com>
Date:   Fri Jun 4 15:37:57 2021 -0700

    Merge pull request #14763 from zeroisthebiggay/dogears

    adds floppy dog ears that aren't obscenely dark

commit d3f6b69a86
Author: MrJWhit <48370570+MrJWhit@users.noreply.github.com>
Date:   Fri Jun 4 13:26:06 2021 -0400

    Update BoxStation.dmm

commit 2ec1abe71e
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Fri Jun 4 12:13:39 2021 -0500

    Automatic changelog generation for PR #14786 [ci skip]

commit a31c99e361
Merge: 9acd1ed386 f631879b88
Author: Lin <linzolle@gmail.com>
Date:   Fri Jun 4 12:13:36 2021 -0500

    Merge pull request #14786 from Arturlang/fixes_float

    Fixes float()

commit 829944640e
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri Jun 4 09:24:15 2021 -0700

    Update _flags.dm

commit 9acd1ed386
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Fri Jun 4 10:29:45 2021 -0500

    Automatic changelog generation for PR #14788 [ci skip]

commit 4b3e33bb8a
Merge: 3fccc79483 2cfbee96ea
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri Jun 4 08:29:43 2021 -0700

    Merge pull request #14788 from coderbus13/master

    Pubbystation toxins burn chamber fix

commit 3fccc79483
Author: Changelogs <action@github.com>
Date:   Fri Jun 4 01:10:04 2021 +0000

    Automatic changelog compile [ci skip]

commit 720966f31e
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Thu Jun 3 19:10:46 2021 -0400

    Misty~

commit e4c01b3f74
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Thu Jun 3 18:49:43 2021 -0400

    Woopsie, right vars are set now

commit 4b5b6a9063
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Thu Jun 3 18:38:59 2021 -0400

    Update MetaStation.dmm

commit 2cfbee96ea
Author: coderbus13 <31148848+coderbus13@users.noreply.github.com>
Date:   Thu Jun 3 01:09:41 2021 -0500

    Delete temp

commit 9df9828666
Author: coderbus13 <31148848+coderbus13@users.noreply.github.com>
Date:   Thu Jun 3 01:08:36 2021 -0500

    Add files via upload

commit 8ca433fadb
Author: coderbus13 <31148848+coderbus13@users.noreply.github.com>
Date:   Thu Jun 3 01:08:20 2021 -0500

    Create temp

commit 8dff4fa301
Author: coderbus13 <31148848+coderbus13@users.noreply.github.com>
Date:   Thu Jun 3 01:06:35 2021 -0500

    Delete _maps/map_files/PubbyStation directory

    all my homies hate webedit

commit ef4ea8b0da
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 2 21:50:36 2021 -0500

    Automatic changelog generation for PR #14772 [ci skip]

commit c2c2825027
Merge: 36284922da 9040c08698
Author: Lin <linzolle@gmail.com>
Date:   Wed Jun 2 21:50:33 2021 -0500

    Merge pull request #14772 from Putnam3145/fix-sniper-bad

    Makes sniper zooming work

commit 36284922da
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 2 20:23:09 2021 -0500

    Automatic changelog generation for PR #14785 [ci skip]

commit 24f7576b92
Merge: 8a4c6c4cf4 160882fb6c
Author: Lin <linzolle@gmail.com>
Date:   Wed Jun 2 20:23:06 2021 -0500

    Merge pull request #14785 from MrJWhit/metastation-fix

    Metastation atmos fix

commit 8a4c6c4cf4
Author: Changelogs <action@github.com>
Date:   Thu Jun 3 01:12:16 2021 +0000

    Automatic changelog compile [ci skip]

commit c869f9b53a
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 2 19:44:57 2021 -0500

    Automatic changelog generation for PR #14784 [ci skip]

commit 0ead4e0bbb
Merge: 5876399d14 e08c10e5fb
Author: Lin <linzolle@gmail.com>
Date:   Wed Jun 2 19:44:55 2021 -0500

    Merge pull request #14784 from TripleShades/sigh-pubby

    Tiny Pubby Additions

commit 5876399d14
Merge: b341c184b5 f70d6b9ea5
Author: Lin <linzolle@gmail.com>
Date:   Wed Jun 2 19:41:45 2021 -0500

    Merge pull request #14723 from bunny232/delta-ce-office-update

    Delta ce office rearrangement

commit b341c184b5
Author: CitadelStationBot <citadelstationcommunity@gmail.com>
Date:   Wed Jun 2 19:41:25 2021 -0500

    Automatic changelog generation for PR #14782 [ci skip]

commit 2b8ef762a7
Merge: 0fdfda7dc4 fe9fdf0975
Author: Lin <linzolle@gmail.com>
Date:   Wed Jun 2 19:41:23 2021 -0500

    Merge pull request #14782 from MrJWhit/xenoruin-fix

    Fixing xenoruins floor

commit 0fdfda7dc4
Merge: cb52be5dd9 0f0ad31aab
Author: Lin <linzolle@gmail.com>
Date:   Wed Jun 2 19:40:59 2021 -0500

    Merge pull request #14764 from MrJWhit/boxstation-touchups

    Touching up boxstation engineering

commit b2e2c49011
Author: DeltaFire <andreoxgrievous@gmail.com>
Date:   Wed Jun 2 17:47:57 2021 +0200

    plasmamen & golems

commit 015bd3c338
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Wed Jun 2 17:22:46 2021 +0200

    Armor for security armor and a small fix

commit d8e31af507
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Wed Jun 2 15:31:19 2021 +0200

    And the Icons themselves

commit 505dd3399f
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Wed Jun 2 15:30:13 2021 +0200

    Inventory Icons

commit 5c827d9796
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Wed Jun 2 15:28:46 2021 +0200

    Bit of that

commit 9cdc45a905
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Wed Jun 2 15:27:47 2021 +0200

    Bit of this

commit b563e6c2e0
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Wed Jun 2 15:25:50 2021 +0200

    Splits Engineering and Security ORV Suits

commit f631879b88
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed Jun 2 14:27:22 2021 +0300

    fixes_float

commit 0d206742fa
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Tue Jun 1 21:35:49 2021 -0700

    Update world_topic.dm

commit 160882fb6c
Author: MrJWhit <48370570+MrJWhit@users.noreply.github.com>
Date:   Tue Jun 1 21:48:22 2021 -0400

    Update MetaStation.dmm

commit e08c10e5fb
Author: TripleShades <MegaProto@gmx.com>
Date:   Tue Jun 1 17:00:16 2021 -0400

    fucking pubby

    this should be everything

commit 0f01a4a7da
Author: DeltaFire <andreoxgrievous@gmail.com>
Date:   Tue Jun 1 22:52:39 2021 +0200

    huh

commit dd33371a3b
Author: DeltaFire <andreoxgrievous@gmail.com>
Date:   Tue Jun 1 22:48:57 2021 +0200

    colors

commit fe9fdf0975
Author: MrJWhit <48370570+MrJWhit@users.noreply.github.com>
Date:   Tue Jun 1 11:26:46 2021 -0400

    Update lavaland_surface_alien_nest.dmm

commit 656d0545cd
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Tue Jun 1 01:32:54 2021 -0700

    Update world_topic.dm

commit f9be173f08
Author: keronshb <keronshb@live.com>
Date:   Mon May 31 22:25:32 2021 -0400

    Fixes the shoes?

    Maybe?

commit 70926f5daf
Merge: e0a1e50927 cb52be5dd9
Author: keronshb <keronshb@live.com>
Date:   Mon May 31 22:21:34 2021 -0400

    Merge remote-tracking branch 'upstream/master' into floorcluwneport

commit 84db564e0f
Author: Arturlang <arturpaavooskari.lang@gmail.com>
Date:   Tue Jun 1 02:25:06 2021 +0300

    Prettier? code

commit 4b541d3dac
Author: Arturlang <arturpaavooskari.lang@gmail.com>
Date:   Tue Jun 1 02:21:33 2021 +0300

    phonecode

commit 8687312935
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Mon May 31 18:14:06 2021 +0300

    Makes orbit menu show antags if DNR

commit e69729beb4
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Mon May 31 12:15:16 2021 +0200

    So he doesn't need sodium thiopental after all.

    Turns out Furranium has a knockdown.

commit dd6452ad5b
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Mon May 31 10:11:12 2021 +0200

    Fixes the file? Please?

commit b3851a4647
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Mon May 31 10:01:13 2021 +0200

    Adds the event to the game so it actually loads, oops

commit 249d23a6cc
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Mon May 31 09:52:31 2021 +0200

    Fixed something with the event

commit f70d6b9ea5
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Mon May 31 01:52:43 2021 -0400

    dir = 1 and adds a forgotten fire alarm.

commit ff379e41b6
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Mon May 31 01:47:49 2021 -0400

    Think map preview think!

commit 398491b584
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Mon May 31 00:42:33 2021 +0200

    It's on the nose but here's a sound for the spawn.

commit 2516afbbba
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Mon May 31 00:41:59 2021 +0200

    Cat Surgeon Event

    If I did it right, thanks Keron!

commit ae2970f318
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Sun May 30 21:17:03 2021 +0200

    Adds a special Catranq Dart

commit df0e1057d1
Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com>
Date:   Sun May 30 21:15:44 2021 +0200

    Imagine this crazy person became a threat suddenly

commit 5563ed1492
Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date:   Sun May 30 17:06:12 2021 +0000

    Bump ws from 7.4.3 to 7.4.6 in /tgui

    Bumps [ws](https://github.com/websockets/ws) from 7.4.3 to 7.4.6.
    - [Release notes](https://github.com/websockets/ws/releases)
    - [Commits](https://github.com/websockets/ws/compare/7.4.3...7.4.6)

    Signed-off-by: dependabot[bot] <support@github.com>

commit 0dc1163a29
Author: Putnam <putnam3145@gmail.com>
Date:   Sun May 30 00:44:02 2021 -0700

    adds a sorely needed line break

commit 9040c08698
Author: Putnam <putnam3145@gmail.com>
Date:   Sun May 30 00:38:07 2021 -0700

    whoops i forgot the var

commit 2ab05d1247
Author: Putnam <putnam3145@gmail.com>
Date:   Sun May 30 00:31:20 2021 -0700

    makes sniper zooming work

commit 25fe97e8fe
Author: keronshb <keronshb@live.com>
Date:   Sat May 29 13:21:23 2021 -0400

    Lets Disposal pipes work on the cargo shuttle again

    Silly removal.

commit 71db9298a1
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri May 28 18:21:46 2021 -0700

    Update world_topic.dm

commit c1a9f9cfe9
Author: keronshb <keronshb@live.com>
Date:   Fri May 28 17:40:43 2021 -0400

    GLOW ANIMATION

commit 86a825bb9f
Author: keronshb <keronshb@live.com>
Date:   Fri May 28 15:57:16 2021 -0400

    Space Adapt outline

commit b1b931a7c4
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Thu May 27 22:48:24 2021 -0700

    Update _bodyparts.dm

commit ed86a6628a
Author: Linzolle <linzolle@gmail.com>
Date:   Thu May 27 19:53:55 2021 -0500

    THIS SHOULD REALLY BE THE OTHER WAY AROUND

commit 0cf7c5070d
Author: Linzolle <linzolle@gmail.com>
Date:   Thu May 27 19:45:12 2021 -0500

    parentheses

commit 46833abf0b
Author: Linzolle <linzolle@gmail.com>
Date:   Thu May 27 19:34:00 2021 -0500

    add cult_permitted area flag

commit 0f0ad31aab
Author: MrJWhit <48370570+MrJWhit@users.noreply.github.com>
Date:   Thu May 27 17:58:21 2021 -0400

    Update BoxStation.dmm

commit 7dea33f6c2
Author: zerothebigboy <cookiesvvww@gmail.com>
Date:   Thu May 27 16:08:28 2021 -0400

    doge

commit f7ca7d7afe
Merge: f4ba3aa688 bff21669e3
Author: keronshb <keronshb@live.com>
Date:   Thu May 27 13:29:08 2021 -0400

    Merge remote-tracking branch 'upstream/master'

commit e0a1e50927
Author: keronshb <keronshb@live.com>
Date:   Thu May 27 13:25:27 2021 -0400

    Fixes the linter

commit 482b679937
Author: keronshb <keronshb@live.com>
Date:   Thu May 27 12:24:16 2021 -0400

    Should fix the linter?

commit 2eeb6ede1e
Author: DrPainis <79603707+DrPainis@users.noreply.github.com>
Date:   Thu May 27 12:20:54 2021 -0400

    lowers cat meteor threat and makes them use the cat meteor sprite

commit 903ff69621
Author: DrPainis <79603707+DrPainis@users.noreply.github.com>
Date:   Thu May 27 12:19:51 2021 -0400

    adds a sprite for cat meteors (it's just a copy of the space cat sprite)

commit d42fb1ae90
Author: DrPainis <79603707+DrPainis@users.noreply.github.com>
Date:   Thu May 27 12:17:41 2021 -0400

    makes cat meteors significantly rarer than meaty ores

commit 8f1db2d5ec
Author: keronshb <keronshb@live.com>
Date:   Thu May 27 12:16:54 2021 -0400

    Fixes some stuff

    Actually ticks the spell, fixes the brain damage issue, etc.

commit 1ce8ffba11
Author: DrPainis <79603707+DrPainis@users.noreply.github.com>
Date:   Thu May 27 11:48:09 2021 -0400

    fixes the typepath for cat meteors

commit 11a6cfd99c
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Thu May 27 03:27:10 2021 -0400

    Delta station ce office, now with less microwave slaughter.

commit 1b8ef53014
Author: DrPainis <79603707+DrPainis@users.noreply.github.com>
Date:   Thu May 27 00:55:41 2021 -0400

    maybe makes this compile

commit cbb7673e79
Author: DrPainis <79603707+DrPainis@users.noreply.github.com>
Date:   Thu May 27 00:30:29 2021 -0400

    Adds the actual event.

    Yes, cat meteors have the same announcement as carp.

commit 98d5499712
Author: DrPainis <79603707+DrPainis@users.noreply.github.com>
Date:   Thu May 27 00:25:55 2021 -0400

    adds the cat wave_type

commit d199f0585a
Author: DrPainis <79603707+DrPainis@users.noreply.github.com>
Date:   Thu May 27 00:23:24 2021 -0400

    adds cat meteors

    because funny

commit 7dbab19597
Author: keronshb <keronshb@live.com>
Date:   Thu May 27 00:14:43 2021 -0400

    Fixes the linters and adds a proper async

commit 78db6bd5c2
Author: keronshb <keronshb@live.com>
Date:   Wed May 26 21:58:35 2021 -0400

    Ports Floor Cluwnes

    Oh fuck oh god

commit 71a8c08e22
Author: Arturlang <arturpaavooskari.lang@gmail.com>
Date:   Wed May 26 18:40:59 2021 +0300

    A lil more

commit 673a322cbb
Author: Artur <arturpaavooskari.lang@gmail.com>
Date:   Wed May 26 18:29:18 2021 +0300

    changes cost of two uplink items

commit 9e3c1ff860
Author: keronshb <keronshb@live.com>
Date:   Mon May 24 22:46:59 2021 -0400

    adds floor cluwnes from yog

commit 7dab80cbb7
Author: DrPainis <79603707+DrPainis@users.noreply.github.com>
Date:   Sun May 23 23:42:16 2021 -0400

    fuck

commit 51911e1f27
Author: DrPainis <79603707+DrPainis@users.noreply.github.com>
Date:   Sun May 23 23:36:11 2021 -0400

    adds the recipe for goliath calamari

commit a7add64905
Author: DrPainis <79603707+DrPainis@users.noreply.github.com>
Date:   Sun May 23 23:29:25 2021 -0400

    adds a lazily made sprite for goliath calamari

    I suck at spriting so this is the best I could do.

commit ce1b170b46
Author: DrPainis <79603707+DrPainis@users.noreply.github.com>
Date:   Sun May 23 23:27:48 2021 -0400

    adds goliath calamari

commit 7458909970
Author: keronshb <keronshb@live.com>
Date:   Sun May 23 13:36:03 2021 -0400

    Switched heated screws to solder.

commit 8787caccba
Author: keronshb <keronshb@live.com>
Date:   Sat May 22 14:12:31 2021 -0400

    Fixes the roundstart deconstruction issue

commit bd05dd29b6
Author: keronshb <keronshb@live.com>
Date:   Sat May 22 13:58:01 2021 -0400

    ReinforcedPlasmaSteps

    Adds more steps for deconning stronger windows

commit 0dd24d9de9
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri May 21 19:35:46 2021 -0700

    Update world_topic.dm

commit f07d832cad
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Fri May 21 18:20:28 2021 -0700

    Update world_topic.dm

commit 538efd2d8f
Author: keronshb <keronshb@live.com>
Date:   Wed May 19 20:01:11 2021 -0400

    Alt Click and Alt Click message

commit 88dc0821d1
Author: keronshb <keronshb@live.com>
Date:   Wed May 19 19:49:48 2021 -0400

    User gibs when being turned into a spess dragon

commit 0f7c71cfdb
Author: keronshb <keronshb@live.com>
Date:   Wed May 19 19:16:24 2021 -0400

    trailing endline

commit 1d843cc72f
Author: keronshb <keronshb@live.com>
Date:   Wed May 19 19:19:35 2021 -0400

    Part 3 - the missing stuff

commit b19fb1cfa8
Author: keronshb <keronshb@live.com>
Date:   Wed May 19 19:18:50 2021 -0400

    Part 2 with Sprites

commit a15637a929
Author: keronshb <keronshb@live.com>
Date:   Wed May 19 19:18:19 2021 -0400

    Part 1 of Health Bars for Space Dragon

commit f4780d4b5a
Author: keronshb <keronshb@live.com>
Date:   Wed May 19 11:19:12 2021 -0400

    Correct Raw Prophet recipe

commit 547b3d0a0b
Author: keronshb <keronshb@live.com>
Date:   Wed May 19 11:15:48 2021 -0400

    TP finally works

commit b8b25662ff
Author: keronshb <keronshb@live.com>
Date:   Tue May 18 22:12:02 2021 -0400

    Couple of fixes, almost ready to go

commit d2f69acaf8
Author: keronshb <keronshb@live.com>
Date:   Tue May 18 12:06:32 2021 -0400

    Space Dragon Event

    Ports the Space Dragon event

commit f802890153
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun May 16 22:17:50 2021 -0700

    Update world_topic.dm

commit 8ff0685f0d
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sat May 15 18:28:00 2021 -0700

    Update world_topic.dm

commit 3ae3caa14a
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Fri May 14 18:05:24 2021 -0400

    Update DeltaStation2.dmm

commit 94bd7308ae
Author: bunny232 <bunnyracer23@yahoo.com>
Date:   Fri May 14 17:38:55 2021 -0400

    Update DeltaStation2.dmm

commit bc35ffeaa2
Author: keronshb <keronshb@live.com>
Date:   Fri May 14 12:35:53 2021 -0400

    [READY] Space Dragon Quality Improvement Update (#57942)

     qol: Space Dragon's gust attack is now tied to right click instead of an ability button
    balance: Space Dragon has received numerous balance changes, most notably that Space Dragon will stall the shuttle until it loses or completes its objectives
    fix: Fixed numerous bugs with Space Dragon, most notably the rifts not vanishing after Space Dragon's death
    soundadd: Space Dragon now has a custom roar for dying and winning
    imagedel: Deleted now unused Space Dragon ability icon
    refactor: Space Dragon's speed changes are now controlled using movespeed modifiers instead of direct speed adjustments

    Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
    Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>

commit 0b06957dc7
Author: Ghom <42542238+Ghommie@users.noreply.github.com>
Date:   Sat Mar 6 02:13:11 2021 +0100

    Space Dragons are now actually capable of flight. (#57428)

    * Space Dragons are now actually capable of flight.

    * Gives them the tag so the flying animation doesn't apply, it looks like shit without this

commit a6ae645fc2
Author: keronshb <keronshb@live.com>
Date:   Fri May 14 12:32:48 2021 -0400

    Space Dragon Fixes (#55759)

commit 3aa72f7d31
Author: keronshb <keronshb@live.com>
Date:   Fri May 14 12:31:42 2021 -0400

    Space Dragon QOL and Additional Features (#54124)

    Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com>

commit 7e5a44cbd6
Author: keronshb <keronshb@live.com>
Date:   Fri May 14 12:28:59 2021 -0400

    Minor refactor to space dragon code to fix various bugs and issues (#53944)

commit 2eba3ae383
Author: keronshb <keronshb@live.com>
Date:   Fri May 14 12:27:03 2021 -0400

    [READY]New Side Antagonist: Space Dragon (#42551)

    * Add files via upload

    * Rename space_dragon.dm to code/modules/events/space_dragon.dm

    * Adds Space Dragon

    * Adds Space Dragon Event

    * Remove Copied File

    * Put antagonist definition in proper location for space dragon

    * Update space_dragon.dm

    * Removed passive health regen from space dragon

    * Updated Weight and Earliness for Space Dragon

    * Added Objective to Space Dragon, Updated Starting Blurb

    * Cleaned Up the Objective Determiner

    * Actually fix the space dragon objectives

    * Fix the objective display for the space dragon's target

    * Updated Space Dragon Intro Blurb

    * Updated Centcom Message When Space Dragon Spawns

    * Updated Space Dragon's description with new lore

    * Clean Up Space Dragon's OnFire()

    * Add Space Dragon Sprites

    * Sprite in wrong location

    * Properly adds Space Dragon Sprites

    * Adds Space Dragon Tiny Sprite to be Carp

    * Space Dragon Uses New Sprites, Tiny Form Updated

    * Increased Time Til' Dragon Spawn

    * Drake's Tail Sweep Now Uses Prebuilt Spell

    Thanks to Cobblestone for the head's up on this.

commit ef470a3baf
Author: keronshb <keronshb@live.com>
Date:   Thu May 13 13:37:35 2021 -0400

    Fixes Void Robes for Digi legs

commit bdd42c728d
Author: keronshb <keronshb@live.com>
Date:   Thu May 13 13:21:34 2021 -0400

    Adds a missing space

commit 55ee9a00b4
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed May 12 18:24:26 2021 -0700

    woo yeah woo yeah

commit 8e2921f3c0
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed May 12 17:36:01 2021 -0700

    woo

commit 59f160be57
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed May 12 16:59:48 2021 -0700

    woo

commit 2a3a45573f
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed May 12 16:58:17 2021 -0700

    woo

commit 6237928c4b
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed May 12 16:55:21 2021 -0700

    woo

commit 0b9d021d9b
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed May 12 16:51:28 2021 -0700

    woo

commit 482be2ee0d
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed May 12 16:37:13 2021 -0700

    okay

commit 611dca2776
Author: keronshb <keronshb@live.com>
Date:   Wed May 12 17:04:10 2021 -0400

    New Line at End of file

commit 21ca62a2e2
Author: keronshb <keronshb@live.com>
Date:   Wed May 12 14:54:44 2021 -0400

    FINALLY fixes the comma, I think

    Time to try

commit 0841cea1d5
Author: keronshb <keronshb@live.com>
Date:   Wed May 12 13:17:23 2021 -0400

    I still have no idea what's messing with this

commit 3fb84eb1d8
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed May 12 03:35:02 2021 -0700

    fix

commit aeefeb6c53
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed May 12 03:33:41 2021 -0700

    woo

commit 0185007e6c
Author: keronshb <keronshb@live.com>
Date:   Tue May 11 19:33:53 2021 -0400

    adding ; to line 25

commit 0cb6f2469b
Author: keronshb <keronshb@live.com>
Date:   Tue May 11 18:39:36 2021 -0400

    Have no idea...

commit 8c7c41bfd4
Author: keronshb <keronshb@live.com>
Date:   Tue May 11 18:17:41 2021 -0400

    Fixes the comma, I think

commit 1de8b69312
Author: keronshb <keronshb@live.com>
Date:   Tue May 11 18:10:27 2021 -0400

    Fixes the linter

    Fixes the linter

commit 79f5feea9f
Merge: 4749be2ba8 82b6443928
Author: keronshb <keronshb@live.com>
Date:   Tue May 11 17:58:41 2021 -0400

    Merge remote-tracking branch 'upstream/master' into hereticadjustments

commit 4749be2ba8
Author: keronshb <keronshb@live.com>
Date:   Tue May 11 16:52:16 2021 -0400

    Final rework

    Last part.

commit 57dfe8dc09
Author: keronshb <keronshb@live.com>
Date:   Mon May 10 21:12:45 2021 -0400

    New Reality when one disappears

    Spawns in a new reality when one disappears.

commit cda492c6ba
Author: keronshb <keronshb@live.com>
Date:   Sun May 9 20:10:38 2021 -0400

    Removes the condition if they're knocked down

commit 82e4421cde
Author: keronshb <keronshb@live.com>
Date:   Sun May 9 20:01:30 2021 -0400

    Ports Break in hand from tg

    58526

commit 11a7e118fe
Author: keronshb <keronshb@live.com>
Date:   Fri May 7 23:58:09 2021 -0400

    Puts off balance duration to 2 seconds

    Might be better at 2.

commit 7947258e51
Author: keronshb <keronshb@live.com>
Date:   Wed May 5 23:57:01 2021 -0400

    Off balance disarm

    If it hits a wall or a person while under the effect of off balance.

commit be2e962983
Author: keronshb <keronshb@live.com>
Date:   Tue May 4 00:51:16 2021 -0400

    Off Balance for Guns only again

    Was intended for guns

commit 4289b8be1e
Merge: 78a9cdc5c6 0c803e0232
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Apr 28 22:34:17 2021 -0700

    Merge remote-tracking branch 'citadel/master' into backend_sync

commit 78a9cdc5c6
Merge: 7cc6bba5ff 810eba15ed
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Apr 28 22:32:58 2021 -0700

    Merge remote-tracking branch 'citadel/master' into backend_sync

commit 7cc6bba5ff
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Apr 28 22:27:09 2021 -0700

    fixes

commit 456b55cb06
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Apr 28 22:25:39 2021 -0700

    that too

commit 80a8467e9e
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Apr 28 22:24:49 2021 -0700

    hm

commit fefb33454f
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Apr 28 16:16:55 2021 -0700

    do that too

commit c3d91f01db
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Apr 28 07:20:54 2021 -0700

    scripts

commit d06c33bd8d
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Apr 28 07:17:34 2021 -0700

    restore cit stuff

commit 3f09460b6e
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Apr 28 07:04:29 2021 -0700

    let's do that

commit 488a6a6927
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Wed Apr 28 07:02:26 2021 -0700

    woops

commit 375da54dc2
Merge: 133f3d55d2 810eba15ed
Author: EmeraldSundisk <51142887+EmeraldSundisk@users.noreply.github.com>
Date:   Tue Apr 27 10:34:29 2021 -0700

    Merge pull request #78 from Citadel-Station-13/master

    4/27

commit 50831a9c73
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Apr 25 16:40:33 2021 -0700

    fixes

commit 47bd3c6c7c
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Apr 25 16:22:46 2021 -0700

    ok

commit 7919f09160
Merge: 1dbd86499c 44c2a9eecd
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Apr 25 16:21:20 2021 -0700

    Merge remote-tracking branch 'citadel/master' into backend_sync

commit 1dbd86499c
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Apr 25 16:18:41 2021 -0700

    others

commit d017d7df66
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Apr 25 16:16:38 2021 -0700

    let's do that

commit 9e123db32a
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Apr 25 16:15:25 2021 -0700

    ok

commit 990e74179a
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Apr 25 16:09:41 2021 -0700

    other thing

commit 9933a917ac
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Apr 25 16:08:33 2021 -0700

    ?

commit fdafe0fb84
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Apr 25 15:57:32 2021 -0700

    vscode

commit 12894384ff
Author: silicons <2003111+silicons@users.noreply.github.com>
Date:   Sun Apr 25 14:17:37 2021 -0700

    okay

commit 475a7d2499
Author: keronshb <keronshb@live.com>
Date:   Wed Apr 14 18:01:17 2021 -0400

    Icon fixes

    Should fix the merge conflict

commit 20c190c17d
Merge: bb047bd57e 4d797ab694
Author: keronshb <keronshb@live.com>
Date:   Wed Apr 14 17:55:24 2021 -0400

    Merge remote-tracking branch 'upstream/master' into motivation

commit bb047bd57e
Author: keronshb <keronshb@live.com>
Date:   Wed Apr 14 17:54:33 2021 -0400

    dunno why this is here

    dunno why this is here

commit 133f3d55d2
Merge: 624b5a9707 d4d3eea5aa
Author: EmeraldSundisk <51142887+EmeraldSundisk@users.noreply.github.com>
Date:   Mon Apr 12 22:26:26 2021 -0700

    Merge pull request #77 from Citadel-Station-13/master

    4/12

commit 624b5a9707
Merge: 98e3464604 b6b9619f2d
Author: EmeraldSundisk <51142887+EmeraldSundisk@users.noreply.github.com>
Date:   Fri Apr 9 16:40:36 2021 -0700

    Merge pull request #75 from Citadel-Station-13/master

    4/9

commit 41530110a2
Author: keronshb <keronshb@live.com>
Date:   Wed Feb 10 20:00:17 2021 -0500

    LINTER

    AHHHH NEW LINE

commit 827b4efb42
Author: keronshb <keronshb@live.com>
Date:   Fri Jan 29 13:42:07 2021 -0500

    Fixes ANOTHER merge conflict

    agony

commit ae970d5b22
Merge: 26dfff87fc c8dc669e58
Author: keronshb <keronshb@live.com>
Date:   Fri Jan 29 13:38:11 2021 -0500

    Merge remote-tracking branch 'origin/master' into motivation

commit 26dfff87fc
Author: keronshb <keronshb@live.com>
Date:   Fri Jan 29 13:17:46 2021 -0500

    Slight stat buffs, adds parries and comments

    Should be pretty close to 20tc worthy.

commit 4346cb937a
Author: keronshb <keronshb@live.com>
Date:   Fri Jan 29 09:32:28 2021 -0500

    Fixes merge conflict and makes minor adjustments

    TItle

commit a4e933185e
Merge: 5761417e5b 4d945d5f15
Author: keronshb <keronshb@live.com>
Date:   Fri Jan 29 09:29:55 2021 -0500

    Merge remote-tracking branch 'origin/master' into motivation

commit 5761417e5b
Author: keronshb <keronshb@live.com>
Date:   Thu Jan 28 22:21:20 2021 -0500

    Adding it to traitors

    Here it is!

commit a6725b3c23
Author: keronshb <keronshb@live.com>
Date:   Thu Jan 28 22:06:25 2021 -0500

    Motivation near final

    Should be almost done after this.

commit a2833ea85f
Author: keronshb <keronshb@live.com>
Date:   Tue Jan 26 13:27:06 2021 -0500

    Movitation WIP

    WIP still working on this
This commit is contained in:
DeltaFire
2021-06-21 17:50:24 +02:00
parent cd4c75b7eb
commit 8c89d3193d
368 changed files with 92539 additions and 77696 deletions
+1
View File
@@ -53,6 +53,7 @@
#define GELADIKINESIS /datum/mutation/human/geladikinesis
#define CRYOKINESIS /datum/mutation/human/cryokinesis
#define SPIDER_WEB /datum/mutation/human/webbing
#define CLUWNEMUT /datum/mutation/human/cluwne
#define UI_CHANGED "ui changed"
#define UE_CHANGED "ue changed"
+7 -3
View File
@@ -17,7 +17,11 @@
} while(0);
#define CHECK_MULTIPLE_BITFIELDS(flagvar, flags) (((flagvar) & (flags)) == (flags))
GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768))
GLOBAL_LIST_INIT(bitflags, list(
1<<0, 1<<1, 1<<2, 1<<3, 1<<4, 1<<5, 1<<6, 1<<7,
1<<8, 1<<9, 1<<10, 1<<11, 1<<12, 1<<13, 1<<14, 1<<15,
1<<16, 1<<17, 1<<18, 1<<19, 1<<20, 1<<21, 1<<22, 1<<23
))
// for /datum/var/datum_flags
#define DF_USE_TAG (1<<0)
@@ -56,8 +60,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
#define UNUSED_RESERVATION_TURF_1 (1<<1)
/// If a turf can be made dirty at roundstart. This is also used in areas.
#define CAN_BE_DIRTY_1 (1<<2)
/// If blood cultists can draw runes or build structures on this turf
#define CULT_PERMITTED_1 (1<<3)
/// Blocks lava rivers being generated on the turf
#define NO_LAVA_GEN_1 (1<<6)
/// Blocks ruins spawning on the turf
@@ -92,6 +94,8 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
#define ABDUCTOR_PROOF (1<<11)
/// If an area should be hidden from power consoles, power/atmosphere alerts, etc.
#define NO_ALERTS (1<<12)
/// If blood cultists can draw runes or build structures on this AREA.
#define CULT_PERMITTED (1<<13)
/*
These defines are used specifically with the atom/pass_flags bitmask
+1
View File
@@ -82,6 +82,7 @@
#define ADMIN_PUNISHMENT_PICKLE "Pickle-ify"
#define ADMIN_PUNISHMENT_FRY "Fry"
#define ADMIN_PUNISHMENT_PERFORATE ":B:erforate"
#define ADMIN_PUNISHMENT_CLUWNE "Cluwne"
#define AHELP_ACTIVE 1
#define AHELP_CLOSED 2
+3 -3
View File
@@ -148,10 +148,10 @@
#define CANVERTICALATMOSPASS(A, O) ( A.CanAtmosPassVertical == ATMOS_PASS_PROC ? A.CanAtmosPass(O, TRUE) : ( A.CanAtmosPassVertical == ATMOS_PASS_DENSITY ? !A.density : A.CanAtmosPassVertical ) )
//OPEN TURF ATMOS
#define OPENTURF_DEFAULT_ATMOS "o2=22;n2=82;TEMP=293.15" //the default air mix that open turfs spawn
#define OPENTURF_DEFAULT_ATMOS "o2=21.78;n2=82.36;TEMP=293.15" //the default air mix that open turfs spawn, also is what the station vents output at assuming a 21/79% o2/n2 mix
#define TCOMMS_ATMOS "n2=100;TEMP=80" //-193,15degC telecommunications. also used for xenobiology slime killrooms
#define AIRLESS_ATMOS "TEMP=2.7" //space
#define FROZEN_ATMOS "o2=22;n2=82;TEMP=180" //-93.15degC snow and ice turfs
#define FROZEN_ATMOS "o2=21.78;n2=82.36;TEMP=180" //-93.15degC snow and ice turfs
#define BURNMIX_ATMOS "o2=2500;plasma=5000;TEMP=370" //used in the holodeck burn test program
//ATMOSPHERICS DEPARTMENT GAS TANK TURFS
@@ -160,7 +160,7 @@
#define ATMOS_TANK_PLASMA "plasma=70000;TEMP=293.15"
#define ATMOS_TANK_O2 "o2=100000;TEMP=293.15"
#define ATMOS_TANK_N2 "n2=100000;TEMP=293.15"
#define ATMOS_TANK_AIRMIX "o2=2644;n2=10580;TEMP=293.15"
#define ATMOS_TANK_AIRMIX "o2=2811;n2=10583;TEMP=293.15"
//LAVALAND
#define LAVALAND_EQUIPMENT_EFFECT_PRESSURE 50 //what pressure you have to be under to increase the effect of equipment meant for lavaland
+1 -1
View File
@@ -158,7 +158,7 @@
/// how long they're staggered for
#define SHOVE_STAGGER_DURATION 35
/// how long they're off balance for
#define SHOVE_OFFBALANCE_DURATION 30
#define SHOVE_OFFBALANCE_DURATION 3 SECONDS
//Embedded objects
+8
View File
@@ -23,6 +23,14 @@
#define WINDOW_IN_FRAME 1
#define WINDOW_SCREWED_TO_FRAME 2
//reinforced plasma window construction states
#define PRWINDOW_FRAME_BOLTED 3
#define PRWINDOW_BARS_CUT 4
#define PRWINDOW_POPPED 5
#define PRWINDOW_BOLTS_OUT 6
#define PRWINDOW_BOLTS_HEATED 7
#define PRWINDOW_SECURE 8
//airlock assembly construction states
#define AIRLOCK_ASSEMBLY_NEEDS_WIRES 0
#define AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS 1
+1 -1
View File
@@ -532,7 +532,7 @@
// /datum/component/storage signals
#define COMSIG_CONTAINS_STORAGE "is_storage" //() - returns bool.
#define COMSIG_TRY_STORAGE_INSERT "storage_try_insert" //(obj/item/inserting, mob/user, silent, force) - returns bool
#define COMSIG_TRY_STORAGE_SHOW "storage_show_to" //(mob/show_to, force) - returns bool.
#define COMSIG_TRY_STORAGE_SHOW "storage_show_to" //(mob/show_to, force, trigger_on_found) - returns bool.
#define COMSIG_TRY_STORAGE_HIDE_FROM "storage_hide_from" //(mob/hide_from) - returns bool
#define COMSIG_TRY_STORAGE_HIDE_ALL "storage_hide_all" //returns bool
#define COMSIG_TRY_STORAGE_SET_LOCKSTATE "storage_lock_set_state" //(newstate)
+1
View File
@@ -515,6 +515,7 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
#define VOMIT_TOXIC 1
#define VOMIT_PURPLE 2
#define VOMIT_NANITE 3
// possible bitflag return values of intercept_zImpact(atom/movable/AM, levels = 1) calls
#define FALL_INTERCEPTED (1<<0) //Stops the movable from falling further and crashing on the ground
+5 -1
View File
@@ -12,6 +12,11 @@
#define NANITE_CLOUD_DISABLE 2
#define NANITE_CLOUD_ENABLE 3
//Nanite excess thresholds
#define NANITE_EXCESS_MINOR 25
#define NANITE_EXCESS_VOMIT 100
#define NANITE_EXCESS_BURST 350
///Nanite Protocol types
#define NANITE_PROTOCOL_REPLICATION "nanite_replication"
#define NANITE_PROTOCOL_STORAGE "nanite_storage"
@@ -45,4 +50,3 @@
#define NES_SCAN_TYPE "Scan Type"
#define NES_BUTTON_NAME "Button Name"
#define NES_ICON "Icon"
#define NES_COLOR "Color"
+3 -1
View File
@@ -37,6 +37,7 @@
#define ROLE_INTERNAL_AFFAIRS "internal affairs agent"
#define ROLE_GANG "gangster"
#define ROLE_BLOODSUCKER "bloodsucker"
#define ROLE_SPACE_DRAGON "Space Dragon"
//#define ROLE_MONSTERHUNTER "monster hunter" Disabled for now
#define ROLE_GHOSTCAFE "ghostcafe"
#define ROLE_MINOR_ANTAG "minorantag"
@@ -70,7 +71,8 @@ GLOBAL_LIST_INIT(special_roles, list(
ROLE_SENTIENCE,
ROLE_GANG = /datum/game_mode/gang,
ROLE_HERETIC = /datum/game_mode/heretics,
ROLE_BLOODSUCKER = /datum/game_mode/bloodsucker
ROLE_BLOODSUCKER = /datum/game_mode/bloodsucker,
ROLE_SPACE_DRAGON
//ROLE_MONSTERHUNTER Disabled for now
))
+21 -17
View File
@@ -1,6 +1,6 @@
// tgstation-server DMAPI
#define TGS_DMAPI_VERSION "5.2.9"
#define TGS_DMAPI_VERSION "6.0.3"
// All functions and datums outside this document are subject to change with any version and should not be relied on.
@@ -67,7 +67,7 @@
#define TGS_EVENT_REPO_CHECKOUT 1
/// When the repository performs a fetch operation. No parameters
#define TGS_EVENT_REPO_FETCH 2
/// When the repository merges a pull request. Parameters: PR Number, PR Sha, (Nullable) Comment made by TGS user
/// When the repository test merges. Parameters: PR Number, PR Sha, (Nullable) Comment made by TGS user
#define TGS_EVENT_REPO_MERGE_PULL_REQUEST 3
/// Before the repository makes a sychronize operation. Parameters: Absolute repostiory path
#define TGS_EVENT_REPO_PRE_SYNCHRONIZE 4
@@ -95,8 +95,13 @@
#define TGS_EVENT_WATCHDOG_SHUTDOWN 15
/// Before the watchdog detaches for a TGS update/restart. No parameters.
#define TGS_EVENT_WATCHDOG_DETACH 16
// We don't actually implement this value as the DMAPI can never receive it
// We don't actually implement these 4 events as the DMAPI can never receive them.
// #define TGS_EVENT_WATCHDOG_LAUNCH 17
// #define TGS_EVENT_WATCHDOG_CRASH 18
// #define TGS_EVENT_WORLD_END_PROCESS 19
// #define TGS_EVENT_WORLD_REBOOT 20
/// Watchdog event when TgsInitializationComplete() is called. No parameters.
#define TGS_EVENT_WORLD_PRIME 21
// OTHER ENUMS
@@ -130,7 +135,6 @@
*
* This may use [/world/var/sleep_offline] to make this happen so ensure no changes are made to it while this call is running.
* Afterwards, consider explicitly setting it to what you want to avoid this BYOND bug: http://www.byond.com/forum/post/2575184
* Before this point, note that any static files or directories may be in use by another server. Your code should account for this.
* This function should not be called before ..() in [/world/proc/New].
*/
/world/proc/TgsInitializationComplete()
@@ -140,7 +144,7 @@
#define TGS_TOPIC var/tgs_topic_return = TgsTopic(args[1]); if(tgs_topic_return) return tgs_topic_return
/**
* Call this at the beginning of [world/proc/Reboot].
* Call this as late as possible in [world/proc/Reboot].
*/
/world/proc/TgsReboot()
return
@@ -152,6 +156,8 @@
/datum/tgs_revision_information
/// Full SHA of the commit.
var/commit
/// ISO 8601 timestamp of when the commit was created
var/timestamp
/// Full sha of last known remote commit. This may be null if the TGS repository is not currently tracking a remote branch.
var/origin_commit
@@ -190,21 +196,19 @@
/// Represents a merge of a GitHub pull request.
/datum/tgs_revision_information/test_merge
/// The pull request number.
/// The test merge number.
var/number
/// The pull request title when it was merged.
/// The test merge source's title when it was merged.
var/title
/// The pull request body when it was merged.
/// The test merge source's body when it was merged.
var/body
/// The GitHub username of the pull request's author.
/// The Username of the test merge source's author.
var/author
/// An http URL to the pull request.
/// An http URL to the test merge source.
var/url
/// The SHA of the pull request when that was merged.
var/pull_request_commit
/// ISO 8601 timestamp of when the pull request was merged.
var/time_merged
/// (Nullable) Comment left by the TGS user who initiated the merge..
/// The SHA of the test merge when that was merged.
var/head_commit
/// Optional comment left by the TGS user who initiated the merge.
var/comment
/// Represents a connected chat channel.
@@ -263,11 +267,11 @@
// API FUNCTIONS
/// Returns the maximum supported [/datum/tgs_version] of the DMAPI.
/world/proc/TgsMaximumAPIVersion()
/world/proc/TgsMaximumApiVersion()
return
/// Returns the minimum supported [/datum/tgs_version] of the DMAPI.
/world/proc/TgsMinimumAPIVersion()
/world/proc/TgsMinimumApiVersion()
return
/**
+1
View File
@@ -341,3 +341,4 @@
#define ACTIVE_PARRY_TRAIT "active_parry"
#define STICKY_NODROP "sticky-nodrop" //sticky nodrop sounds like a bad soundcloud rapper's name
#define TRAIT_SACRIFICED "sacrificed" //Makes sure that people cant be cult sacrificed twice.
#define TRAIT_SPACEWALK "spacewalk"
+1 -1
View File
@@ -15,7 +15,7 @@ GLOBAL_LIST_INIT(bitfields, list(
"ABDUCTOR_PROOF" = ABDUCTOR_PROOF,
"BLOBS_ALLOWED" = BLOBS_ALLOWED,
"BLOCK_SUICIDE" = BLOCK_SUICIDE,
// "CULT_PERMITTED" = CULT_PERMITTED,
"CULT_PERMITTED" = CULT_PERMITTED,
"FLORA_ALLOWED" = FLORA_ALLOWED,
"HIDDEN_AREA" = HIDDEN_AREA,
"MEGAFAUNA_SPAWN_ALLOWED" = MEGAFAUNA_SPAWN_ALLOWED,
+29 -1
View File
@@ -84,7 +84,35 @@ GLOBAL_LIST_INIT(mutant_transform_list, list("wingsopen" = "wings",
"waggingspines" = "spines",
"mam_waggingtail" = "mam_tail"))
GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list("ghost")) //stores the ghost forms that support directional sprites
GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list(
"ghost",
"ghostian",
"ghostian2",
"ghostking",
"ghost_red",
"ghost_black",
"ghost_blue",
"ghost_yellow",
"ghost_green",
"ghost_pink",
"ghost_cyan",
"ghost_dblue",
"ghost_dred",
"ghost_dgreen",
"ghost_dcyan",
"ghost_grey",
"ghost_dyellow",
"ghost_dpink",
"skeleghost",
"ghost_purpleswirl",
"ghost_rainbow",
"ghost_fire",
"ghost_funkypurp",
"ghost_pinksherbert",
"ghost_blazeit",
"ghost_mellow",
"ghost_camo",
"catghost")) //stores the ghost forms that support directional sprites
GLOBAL_LIST_INIT(ghost_forms_with_accessories_list, list("ghost")) //stores the ghost forms that support hair and other such things
GLOBAL_LIST_INIT(ai_core_display_screens, list(
+2 -1
View File
@@ -123,7 +123,8 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_HIGH_BLOOD" = TRAIT_HIGH_BLOOD,
"TRAIT_EMPATH" = TRAIT_EMPATH,
"TRAIT_FRIENDLY" = TRAIT_FRIENDLY,
"TRAIT_IWASBATONED" = TRAIT_IWASBATONED
"TRAIT_IWASBATONED" = TRAIT_IWASBATONED,
"TRAIT_SPACEWALK" = TRAIT_SPACEWALK
),
/obj/item/bodypart = list(
"TRAIT_PARALYSIS" = TRAIT_PARALYSIS
+12 -9
View File
@@ -1,10 +1,13 @@
/*!
* Copyright (c) 2020 Aleksej Komarov
* SPDX-License-Identifier: MIT
*/
/**
* tgui subsystem
*
* Contains all tgui state and subsystem code.
*
* Copyright (c) 2020 Aleksej Komarov
* SPDX-License-Identifier: MIT
*/
SUBSYSTEM_DEF(tgui)
@@ -42,8 +45,8 @@ SUBSYSTEM_DEF(tgui)
var/datum/tgui/ui = current_run[current_run.len]
current_run.len--
// TODO: Move user/src_object check to process()
if(ui && ui.user && ui.src_object)
ui.process()
if(ui?.user && ui.src_object)
ui.process(wait * 0.1)
else
open_uis.Remove(ui)
if(MC_TICK_CHECK)
@@ -191,8 +194,8 @@ SUBSYSTEM_DEF(tgui)
return count
for(var/datum/tgui/ui in open_uis_by_src[key])
// Check if UI is valid.
if(ui && ui.src_object && ui.user && ui.src_object.ui_host(ui.user))
ui.process(force = 1)
if(ui?.src_object && ui.user && ui.src_object.ui_host(ui.user))
ui.process(wait * 0.1, force = 1)
count++
return count
@@ -213,7 +216,7 @@ SUBSYSTEM_DEF(tgui)
return count
for(var/datum/tgui/ui in open_uis_by_src[key])
// Check if UI is valid.
if(ui && ui.src_object && ui.user && ui.src_object.ui_host(ui.user))
if(ui?.src_object && ui.user && ui.src_object.ui_host(ui.user))
ui.close()
count++
return count
@@ -230,7 +233,7 @@ SUBSYSTEM_DEF(tgui)
for(var/key in open_uis_by_src)
for(var/datum/tgui/ui in open_uis_by_src[key])
// Check if UI is valid.
if(ui && ui.src_object && ui.user && ui.src_object.ui_host(ui.user))
if(ui?.src_object && ui.user && ui.src_object.ui_host(ui.user))
ui.close()
count++
return count
@@ -251,7 +254,7 @@ SUBSYSTEM_DEF(tgui)
return count
for(var/datum/tgui/ui in user.tgui_open_uis)
if(isnull(src_object) || ui.src_object == src_object)
ui.process(force = 1)
ui.process(wait * 0.1, force = 1)
count++
return count
+9
View File
@@ -793,6 +793,15 @@
small_icon = 'icons/mob/lavaland/lavaland_monsters.dmi'
small_icon_state = "ash_whelp"
/datum/action/small_sprite/megafauna/colossus
small_icon_state = "Basilisk"
/datum/action/small_sprite/megafauna/bubblegum
small_icon_state = "goliath2"
/datum/action/small_sprite/megafauna/legion
small_icon_state = "mega_legion"
/datum/action/small_sprite/Trigger()
..()
if(!small)
+5
View File
@@ -176,6 +176,11 @@
scheduled_destruction = world.time + (lifespan - CHAT_MESSAGE_EOL_FADE)
enter_subsystem()
var/mob/living/silicon/robot/R = target
if(iscyborg(R))
if(R.module.dogborg == TRUE || R.dogborg == TRUE) //I hate whoever that thought that putting two types of dogborg that don't even sync up properly was good
message.pixel_x = 16
/**
* Applies final animations to overlay CHAT_MESSAGE_EOL_FADE deciseconds prior to message deletion
* Arguments:
@@ -52,7 +52,7 @@
/datum/crafting_recipe/armwraps
name = "Armwraps"
result = /obj/item/clothing/gloves/fingerless/pugilist
result = /obj/item/clothing/gloves/fingerless/pugilist/crafted
time = 60
tools = list(TOOL_WIRECUTTER)
reqs = list(/obj/item/stack/sheet/cloth = 4,
+1 -1
View File
@@ -159,7 +159,7 @@
/datum/component/embedded/proc/jostleCheck()
var/mob/living/carbon/victim = parent
var/damage = weapon.w_class * pain_mult
var/damage = weapon.w_class * jostle_pain_mult
var/pain_chance_current = jostle_chance
if(victim.m_intent == MOVE_INTENT_WALK || !(victim.mobility_flags & MOBILITY_STAND))
pain_chance_current *= 0.5
+64
View File
@@ -170,6 +170,7 @@
/**
* Used to rid ourselves
*/
///Deletes nanites!
/datum/component/nanites/proc/delete_nanites()
if(can_be_deleted)
qdel(src)
@@ -214,6 +215,7 @@
return SEND_SIGNAL(src, COMSIG_NANITE_INTERNAL_VIRAL_PREVENTION_CHECK)
//Syncs the nanite component to another, making it so programs are the same with the same programming (except activation status)
///Syncs the nanite component to another, making it so programs are the same with the same programming (except activation status)
/datum/component/nanites/proc/sync(datum/signal_source, datum/component/nanites/source, full_overwrite = TRUE, copy_activation = FALSE)
var/list/programs_to_remove = programs.Copy() - permanent_programs
var/list/programs_to_add = source.programs.Copy()
@@ -233,6 +235,7 @@
var/datum/nanite_program/SNP = X
add_program(null, SNP.copy())
///Syncs the nanites to their assigned cloud copy, if it is available. If it is not, there is a small chance of a software error instead.
/datum/component/nanites/proc/cloud_sync()
if(cloud_id)
var/datum/nanite_cloud_backup/backup = SSnanites.get_cloud_backup(cloud_id)
@@ -246,6 +249,7 @@
var/datum/nanite_program/NP = pick(programs)
NP.software_error()
///Adds a nanite program, replacing existing unique programs of the same type. A source program can be specified to copy its programming onto the new one.
/datum/component/nanites/proc/add_program(datum/source, datum/nanite_program/new_program, datum/nanite_program/source_program)
for(var/X in programs)
var/datum/nanite_program/NP = X
@@ -268,11 +272,68 @@
adjust_nanites(null, -amount)
return (nanite_volume > 0)
///Modifies the current nanite volume, then checks if the nanites are depleted or exceeding the maximum amount
/datum/component/nanites/proc/adjust_nanites(datum/source, amount)
nanite_volume = clamp(nanite_volume + amount, 0, max_nanites)
SIGNAL_HANDLER
nanite_volume += amount
if(nanite_volume > max_nanites)
reject_excess_nanites()
if(nanite_volume <= 0) //oops we ran out
nanites_depleted()
/**
* Handles how nanites leave the host's body if they find out that they're currently exceeding the maximum supported amount
*
* IC explanation:
* Normally nanites simply discard excess volume by slowing replication or 'sweating' it out in imperceptible amounts,
* but if there is a large excess volume, likely due to a programming change that leaves them unable to support their current volume,
* the nanites attempt to leave the host as fast as necessary to prevent nanite poisoning. This can range from minor oozing to nanites
* rapidly bursting out from every possible pathway, causing temporary inconvenience to the host.
*/
/datum/component/nanites/proc/reject_excess_nanites()
var/excess = nanite_volume - max_nanites
nanite_volume = max_nanites
switch(excess)
if(0 to NANITE_EXCESS_MINOR) //Minor excess amount, the extra nanites are quietly expelled without visible effects
return
if((NANITE_EXCESS_MINOR + 0.1) to NANITE_EXCESS_VOMIT) //Enough nanites getting rejected at once to be visible to the naked eye
host_mob.visible_message("<span class='warning'>A grainy grey slurry starts oozing out of [host_mob].</span>", "<span class='warning'>A grainy grey slurry starts oozing out of your skin.</span>", null, 4);
if((NANITE_EXCESS_VOMIT + 0.1) to NANITE_EXCESS_BURST) //Nanites getting rejected in massive amounts, but still enough to make a semi-orderly exit through vomit
if(iscarbon(host_mob))
var/mob/living/carbon/C = host_mob
host_mob.visible_message("<span class='warning'>[host_mob] vomits a grainy grey slurry!</span>", "<span class='warning'>You suddenly vomit a metallic-tasting grainy grey slurry!</span>", null);
C.vomit(0, FALSE, TRUE, FLOOR(excess / 100, 1), FALSE, VOMIT_NANITE, FALSE, TRUE, 0)
else
host_mob.visible_message("<span class='warning'>A metallic grey slurry bursts out of [host_mob]'s skin!</span>", "<span class='userdanger'>A metallic grey slurry violently bursts out of your skin!</span>", null);
if(isturf(host_mob.drop_location()))
var/turf/T = host_mob.drop_location()
T.add_vomit_floor(host_mob, VOMIT_NANITE, 0)
if((NANITE_EXCESS_BURST + 0.1) to INFINITY) //Way too many nanites, they just leave through the closest exit before they harm/poison the host
host_mob.visible_message("<span class='warning'>A torrent of metallic grey slurry violently bursts out of [host_mob]'s face and floods out of [host_mob.p_their()] skin!</span>",
"<span class='userdanger'>A torrent of metallic grey slurry violently bursts out of your eyes, ears, and mouth, and floods out of your skin!</span>");
host_mob.blind_eyes(15) //nanites coming out of your eyes
host_mob.Paralyze(120)
if(iscarbon(host_mob))
var/mob/living/carbon/C = host_mob
var/obj/item/organ/ears/ears = C.getorganslot(ORGAN_SLOT_EARS)
if(ears)
ears.adjustEarDamage(0, 30) //nanites coming out of your ears
C.vomit(0, FALSE, TRUE, 2, FALSE, VOMIT_NANITE, FALSE, TRUE, 0) //nanites coming out of your mouth
//nanites everywhere
if(isturf(host_mob.drop_location()))
var/turf/T = host_mob.drop_location()
T.add_vomit_floor(host_mob, VOMIT_NANITE, 0)
for(var/turf/adjacent_turf in oview(host_mob, 1))
if(adjacent_turf.density || !adjacent_turf.Adjacent(T))
continue
adjacent_turf.add_vomit_floor(host_mob, VOMIT_NANITE, 0)
///Updates the nanite volume bar visible in diagnostic HUDs
/datum/component/nanites/proc/set_nanite_bar(remove = FALSE)
var/image/holder = host_mob.hud_list[DIAG_NANITE_FULL_HUD]
var/icon/I = icon(host_mob.icon, host_mob.icon_state, host_mob.dir)
@@ -347,6 +408,9 @@
/datum/component/nanites/proc/set_max_volume(datum/source, amount)
max_nanites = max(1, max_nanites)
SIGNAL_HANDLER
max_nanites = max(1, amount)
/datum/component/nanites/proc/set_cloud(datum/source, amount)
cloud_id = clamp(amount, 0, 100)
@@ -37,7 +37,7 @@
to_chat(M, "<span class='notice'>You start dumping out tier/cell rating [lowest_rating] parts from [parent].</span>")
var/turf/T = get_turf(A)
var/datum/progressbar/progress = new(M, length(things), T)
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress)))
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress, TRUE, M)))
stoplag(1)
qdel(progress)
A.do_squish(0.8, 1.2)
@@ -81,7 +81,7 @@
to_chat(M, "<span class='notice'>You start dumping out tier/cell rating [lowest_rating] parts from [parent].</span>")
var/turf/T = get_turf(A)
var/datum/progressbar/progress = new(M, length(things), T)
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress)))
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress, TRUE, M)))
stoplag(1)
qdel(progress)
A.do_squish(0.8, 1.2)
+23 -10
View File
@@ -271,20 +271,20 @@
var/turf/T = get_turf(A)
var/list/things = contents()
var/datum/progressbar/progress = new(M, length(things), T)
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress)))
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress, TRUE, M)))
stoplag(1)
qdel(progress)
A.do_squish(0.8, 1.2)
/datum/component/storage/proc/mass_remove_from_storage(atom/target, list/things, datum/progressbar/progress, trigger_on_found = TRUE)
/datum/component/storage/proc/mass_remove_from_storage(atom/target, list/things, datum/progressbar/progress, trigger_on_found = TRUE, mob/user)
var/atom/real_location = real_location()
for(var/obj/item/I in things)
things -= I
if(I.loc != real_location)
continue
remove_from_storage(I, target)
if(trigger_on_found && I.on_found())
if(trigger_on_found && user && (user.active_storage != src) && I.on_found(user))
return FALSE
remove_from_storage(I, target)
if(TICK_CHECK)
progress.update(progress.goal - length(things))
return TRUE
@@ -429,7 +429,7 @@
return FALSE
// this must come before the screen objects only block, dunno why it wasn't before
if(over_object == M)
user_show_to_mob(M)
user_show_to_mob(M, trigger_on_found = TRUE)
return
if(isrevenant(M))
RevenantThrow(over_object, M, source)
@@ -448,15 +448,28 @@
return
A.add_fingerprint(M)
/datum/component/storage/proc/user_show_to_mob(mob/M, force = FALSE)
/datum/component/storage/proc/user_show_to_mob(mob/M, force = FALSE, trigger_on_found = FALSE)
var/atom/A = parent
if(!istype(M))
return FALSE
A.add_fingerprint(M)
if(!force && (check_locked(null, M) || !M.CanReach(parent, view_only = TRUE)))
return FALSE
if(trigger_on_found)
if(check_on_found(M))
return
ui_show(M)
/**
* Check if we should trigger on_found()
* If this returns TRUE, it means an on_found() returned TRUE and immediately broke the chain.
* In most contexts, this should mean to stop.
*/
/datum/component/storage/proc/check_on_found(mob/user)
for(var/obj/item/I in contents())
if(I.on_found(user))
return TRUE
/datum/component/storage/proc/mousedrop_receive(datum/source, atom/movable/O, mob/M)
if(isitem(O))
var/obj/item/I = O
@@ -579,8 +592,8 @@
/datum/component/storage/proc/show_to_ghost(datum/source, mob/dead/observer/M)
return user_show_to_mob(M, TRUE)
/datum/component/storage/proc/signal_show_attempt(datum/source, mob/showto, force = FALSE)
return user_show_to_mob(showto, force)
/datum/component/storage/proc/signal_show_attempt(datum/source, mob/showto, force = FALSE, trigger_on_found = TRUE)
return user_show_to_mob(showto, force, trigger_on_found = trigger_on_found)
/datum/component/storage/proc/on_check()
return TRUE
@@ -649,7 +662,7 @@
if(A.loc == user)
. = COMPONENT_NO_ATTACK_HAND
if(!check_locked(source, user, TRUE))
ui_show(user)
user_show_to_mob(user, trigger_on_found = TRUE)
A.do_jiggle()
/datum/component/storage/proc/signal_on_pickup(datum/source, mob/user)
@@ -679,7 +692,7 @@
var/atom/A = parent
if(!quickdraw)
A.add_fingerprint(user)
user_show_to_mob(user)
user_show_to_mob(user, trigger_on_found = TRUE)
if(rustle_sound)
playsound(A, "rustle", 50, 1, -5)
return TRUE
+12 -1
View File
@@ -7,8 +7,9 @@
var/left_hand
var/inv_slots
var/proctype //if present, will be invoked on headwear generation.
var/escape_on_find = FALSE //if present, will be released upon the item being 'found' (i.e. opening a container or pocket with it present)
/datum/element/mob_holder/Attach(datum/target, worn_state, alt_worn, right_hand, left_hand, inv_slots = NONE, proctype)
/datum/element/mob_holder/Attach(datum/target, worn_state, alt_worn, right_hand, left_hand, inv_slots = NONE, proctype, escape_on_find)
. = ..()
if(!isliving(target))
@@ -20,6 +21,7 @@
src.left_hand = left_hand
src.inv_slots = inv_slots
src.proctype = proctype
src.escape_on_find = escape_on_find
RegisterSignal(target, COMSIG_CLICK_ALT, .proc/mob_try_pickup)
RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_examine)
@@ -55,6 +57,8 @@
to_chat(user, "<span class='notice'>You pick [source] up.</span>")
source.drop_all_held_items()
var/obj/item/clothing/head/mob_holder/holder = new(get_turf(source), source, worn_state, alt_worn, right_hand, left_hand, inv_slots)
holder.escape_on_find = escape_on_find
if(proctype)
INVOKE_ASYNC(src, proctype, source, holder, user)
user.put_in_hands(holder)
@@ -78,6 +82,7 @@
w_class = WEIGHT_CLASS_BULKY
dynamic_hair_suffix = ""
var/mob/living/held_mob
var/escape_on_find
/obj/item/clothing/head/mob_holder/Initialize(mapload, mob/living/target, worn_state, alt_worn, right_hand, left_hand, slots = NONE)
. = ..()
@@ -189,3 +194,9 @@
if(ismob(location))
return location.loc.remove_air(amount)
return location.remove_air(amount)
// escape when found if applicable
/obj/item/clothing/head/mob_holder/on_found(mob/living/finder)
if(escape_on_find)
finder.visible_message("[finder] accidentally releases the [held_mob]!")
release()
+4 -4
View File
@@ -16,7 +16,7 @@
if(revinfo)
commit = revinfo.commit
originmastercommit = revinfo.origin_commit
date = rustg_git_commit_date(commit)
date = revinfo.timestamp || rustg_git_commit_date(commit)
// goes to DD log and config_error.txt
log_world(get_log_message())
@@ -29,8 +29,8 @@
for(var/line in testmerge)
var/datum/tgs_revision_information/test_merge/tm = line
msg += "Test merge active of PR #[tm.number] commit [tm.pull_request_commit]"
SSblackbox.record_feedback("associative", "testmerged_prs", 1, list("number" = "[tm.number]", "commit" = "[tm.pull_request_commit]", "title" = "[tm.title]", "author" = "[tm.author]"))
msg += "Test merge active of PR #[tm.number] commit [tm.head_commit]"
SSblackbox.record_feedback("associative", "testmerged_prs", 1, list("number" = "[tm.number]", "commit" = "[tm.head_commit]", "title" = "[tm.title]", "author" = "[tm.author]"))
if(commit && commit != originmastercommit)
msg += "HEAD: [commit]"
@@ -45,7 +45,7 @@
. = header ? "The following pull requests are currently test merged:<br>" : ""
for(var/line in testmerge)
var/datum/tgs_revision_information/test_merge/tm = line
var/cm = tm.pull_request_commit
var/cm = tm.head_commit
var/details = ": '" + html_encode(tm.title) + "' by " + html_encode(tm.author) + " at commit " + html_encode(copytext_char(cm, 1, 11))
if(details && findtext(details, "\[s\]") && (!usr || !usr.client.holder))
continue
+57
View File
@@ -0,0 +1,57 @@
/datum/mutation/human/cluwne
name = "Cluwne"
quality = NEGATIVE
locked = TRUE
text_gain_indication = "<span class='danger'>You feel like your brain is tearing itself apart.</span>"
/datum/mutation/human/cluwne/on_acquiring(mob/living/carbon/human/owner)
if(..())
return
owner.dna.add_mutation(CLOWNMUT)
owner.dna.add_mutation(EPILEPSY)
owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, 199, 199)
var/mob/living/carbon/human/H = owner
if(!istype(H.wear_mask, /obj/item/clothing/mask/gas/cluwne))
if(!H.dropItemToGround(H.wear_mask))
qdel(H.wear_mask)
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/cluwne(H), SLOT_WEAR_MASK)
if(!istype(H.w_uniform, /obj/item/clothing/under/cluwne))
if(!H.dropItemToGround(H.w_uniform))
qdel(H.w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/under/cluwne(H), SLOT_W_UNIFORM)
if(!istype(H.shoes, /obj/item/clothing/shoes/clown_shoes/cluwne))
if(!H.dropItemToGround(H.shoes))
qdel(H.shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes/cluwne(H), SLOT_SHOES)
owner.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/white(owner), SLOT_GLOVES) // this is purely for cosmetic purposes incase they aren't wearing anything in that slot
owner.equip_to_slot_or_del(new /obj/item/storage/backpack/clown(owner), SLOT_BACK) // ditto
/datum/mutation/human/cluwne/on_life(mob/living/carbon/human/owner)
if((prob(15) && owner.IsUnconscious()))
owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, 199, 199) // there I changed it to setBrainLoss
switch(rand(1, 6))
if(1)
owner.say("HONK")
if(2 to 5)
owner.emote("scream")
if(6)
owner.Stun(1)
owner.Knockdown(20)
owner.Jitter(500)
/datum/mutation/human/cluwne/on_losing(mob/living/carbon/human/owner)
owner.adjust_fire_stacks(1)
owner.IgniteMob()
owner.dna.add_mutation(CLUWNEMUT)
/mob/living/carbon/human/proc/cluwneify()
dna.add_mutation(CLUWNEMUT)
emote("scream")
regenerate_icons()
visible_message("<span class='danger'>[src]'s body glows green, the glow dissipating only to leave behind a cluwne formerly known as [src]!</span>", \
"<span class='danger'>Your brain feels like it's being torn apart, there is only the honkmother now.</span>")
flash_act()
+9 -8
View File
@@ -8,23 +8,24 @@
time_coeff = 5
instability = 30
/datum/mutation/human/space_adaptation/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut)
..()
if(!(type in visual_indicators))
visual_indicators[type] = list(mutable_appearance('icons/effects/genetics.dmi', "space_adapt", -MUTATIONS_LAYER))
/datum/mutation/human/space_adaptation/get_visual_indicator()
return visual_indicators[type][1]
/datum/mutation/human/space_adaptation/on_acquiring(mob/living/carbon/human/owner)
if(..())
return
ADD_TRAIT(owner, TRAIT_RESISTCOLD, "cold_resistance")
ADD_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, "cold_resistance")
owner.add_filter("space_glow", 2, list("type" = "outline", "color" = "#ffe46bd8", "size" = 1))
addtimer(CALLBACK(src, .proc/glow_loop, owner), rand(1,19))
/datum/mutation/human/space_adaptation/proc/glow_loop(mob/living/carbon/human/owner)
var/filter = owner.get_filter("space_glow")
if(filter)
animate(filter, alpha = 190, time = 15, loop = -1)
animate(alpha = 110, time = 25)
/datum/mutation/human/space_adaptation/on_losing(mob/living/carbon/human/owner)
if(..())
return
REMOVE_TRAIT(owner, TRAIT_RESISTCOLD, "cold_resistance")
REMOVE_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, "cold_resistance")
owner.remove_filter("space_glow")
+1 -1
View File
@@ -642,7 +642,7 @@
O.Remove()
if(iscarbon(owner))
var/mob/living/carbon/C = owner
C.vomit(0, toxic = TRUE)
C.vomit(0)
O.forceMove(get_turf(owner))
if(isliving(owner))
var/mob/living/L = owner
+98
View File
@@ -207,3 +207,101 @@
if(!key_valid)
GLOB.topic_status_cache = .
/datum/world_topic/jsonstatus
keyword = "jsonstatus"
/datum/world_topic/jsonstatus/Run(list/input, addr)
. = list()
.["mode"] = "hidden" // GLOB.master_mode - woops we don't want people to know if there's secret/extended :)
.["round_id"] = "[GLOB.round_id]"
.["players"] = GLOB.clients.len
var/list/adm = get_admin_counts()
var/list/presentmins = adm["present"]
var/list/afkmins = adm["afk"]
.["admins"] = presentmins.len + afkmins.len //equivalent to the info gotten from adminwho
.["security_level"] = "[NUM2SECLEVEL(GLOB.security_level)]"
.["round_duration"] = WORLDTIME2TEXT("hh:mm:ss")
.["map"] = SSmapping.config.map_name
return json_encode(.)
/datum/world_topic/jsonplayers
keyword = "jsonplayers"
/datum/world_topic/jsonplayers/Run(list/input, addr)
. = list()
for(var/client/C in GLOB.clients)
if(C.holder?.fakekey)
. += C.holder.fakekey
continue
. += C.key
return json_encode(.)
/datum/world_topic/jsonmanifest
keyword = "jsonmanifest"
/datum/world_topic/jsonmanifest/Run(list/input, addr)
var/list/command = list()
var/list/security = list()
var/list/engineering = list()
var/list/medical = list()
var/list/science = list()
var/list/cargo = list()
var/list/civilian = list()
var/list/misc = list()
for(var/datum/data/record/R in GLOB.data_core.general)
var/name = R.fields["name"]
var/rank = R.fields["rank"]
var/real_rank = rank // make_list_rank(R.fields["real_rank"])
if(real_rank in GLOB.security_positions)
security[name] = rank
else if(real_rank in GLOB.engineering_positions)
engineering[name] = rank
else if(real_rank in GLOB.medical_positions)
medical[name] = rank
else if(real_rank in GLOB.science_positions)
science[name] = rank
else if(real_rank in GLOB.supply_positions)
cargo[name] = rank
else if(real_rank in GLOB.civilian_positions)
civilian[name] = rank
else
misc[name] = rank
// mixed departments, /datum/department when
if(real_rank in GLOB.command_positions)
command[name] = rank
. = list()
.["Command"] = command
.["Security"] = security
.["Engineering"] = engineering
.["Medical"] = medical
.["Science"] = science
.["Cargo"] = cargo
.["Civilian"] = civilian
.["Misc"] = misc
return json_encode(.)
/datum/world_topic/jsonrevision
keyword = "jsonrevision"
/datum/world_topic/jsonrevision/Run(list/input, addr)
var/datum/getrev/revdata = GLOB.revdata
var/list/data = list(
"date" = copytext(revdata.date, 1, 11),
"dd_version" = world.byond_version,
"dd_build" = world.byond_build,
"dm_version" = DM_VERSION,
"dm_build" = DM_BUILD,
"revision" = revdata.commit,
"round_id" = "[GLOB.round_id]",
"testmerge_base_url" = "[CONFIG_GET(string/githuburl)]/pull/"
)
if (revdata.testmerge.len)
for (var/datum/tgs_revision_information/test_merge/TM in revdata.testmerge)
data["testmerges"] += list(list(
"id" = TM.number,
"desc" = TM.title,
"author" = TM.author
))
return json_encode(data)
+10 -13
View File
@@ -209,7 +209,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
name = "Generic Maintenance"
// ambience_index = AMBIENCE_MAINT
ambientsounds = MAINTENANCE
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
// airlock_wires = /datum/wires/airlock/maint
sound_environment = SOUND_AREA_TUNNEL_ENCLOSED
@@ -294,7 +294,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/maintenance/department/science/xenobiology
name = "Xenobiology Maintenance"
icon_state = "xenomaint"
area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA | XENOBIOLOGY_COMPATIBLE
area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA | XENOBIOLOGY_COMPATIBLE | CULT_PERMITTED
//Maintenance - Generic
@@ -598,11 +598,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/commons
name = "Crew Quarters"
sound_environment = SOUND_AREA_STANDARD_STATION
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
/area/commons/dorms
name = "Dormitories"
icon_state = "dorms"
area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA
/area/commons/dorms/barracks
name = "Sleep Barracks"
@@ -899,7 +899,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
// mood_bonus = 5
// mood_message = "<span class='nicegreen'>I love being in the library!</span>\n"
// mood_trait = TRAIT_INTROVERT
flags_1 = CULT_PERMITTED_1
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
sound_environment = SOUND_AREA_LARGE_SOFTFLOOR
/area/service/library/lounge
@@ -926,7 +926,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/service/library/abandoned
name = "Abandoned Library"
icon_state = "abandoned_library"
flags_1 = CULT_PERMITTED_1
nightshift_public_area = NIGHTSHIFT_AREA_NONE
/area/service/chapel
@@ -973,8 +972,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/service/janitor
name = "Custodial Closet"
icon_state = "janitor"
flags_1 = CULT_PERMITTED_1
sound_environment = SOUND_AREA_SMALL_ENCLOSED
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
/area/service/janitor/aux
name = "Auxiliary Custodial Closet"
@@ -1027,7 +1026,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/engineering/atmos
name = "Atmospherics"
icon_state = "atmos"
flags_1 = CULT_PERMITTED_1
/area/engineering/atmos/upper
name = "Upper Atmospherics"
@@ -1035,7 +1033,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/engineering/atmospherics_engine
name = "Atmospherics Engine"
icon_state = "atmos_engine"
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
/area/engineering/lobby
name = "Engineering Lobby"
@@ -1044,7 +1042,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/engineering/supermatter
name = "Supermatter Engine"
icon_state = "engine_sm"
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
sound_environment = SOUND_AREA_SMALL_ENCLOSED
/area/engineering/break_room
@@ -1084,7 +1082,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/engineering/storage/tcomms
name = "Telecomms Storage"
icon_state = "tcom"
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
clockwork_warp_allowed = FALSE
//Engineering - Construction
@@ -1314,7 +1312,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/medical/virology
name = "Virology"
icon_state = "virology"
flags_1 = CULT_PERMITTED_1
/area/medical/morgue
name = "Morgue"
@@ -1608,7 +1605,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/science/test_area
name = "Toxins Test Area"
icon_state = "tox_test"
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
/area/science/mixing
name = "Toxins Mixing Lab"
@@ -1617,7 +1614,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/science/mixing/chamber
name = "Toxins Mixing Chamber"
icon_state = "tox_mix_chamber"
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
/area/science/misc_lab
name = "Testing Lab"
+1 -1
View File
@@ -13,7 +13,7 @@
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
invisibility = INVISIBILITY_LIGHTING
var/area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA
var/area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
var/fire = null
///Whether there is an atmos alarm in this area
+1 -1
View File
@@ -11,7 +11,7 @@
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
requires_power = FALSE
has_gravity = STANDARD_GRAVITY
area_flags = VALID_TERRITORY | UNIQUE_AREA | NOTELEPORT
area_flags = UNIQUE_AREA | NOTELEPORT
flags_1 = NONE
/area/centcom/control
+4 -4
View File
@@ -3,7 +3,6 @@
icon_state = "Holodeck"
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
flags_1 = NONE
area_flags = VALID_TERRITORY | UNIQUE_AREA
sound_environment = SOUND_ENVIRONMENT_PADDED_CELL
var/obj/machinery/computer/holodeck/linked
@@ -87,9 +86,6 @@
/area/holodeck/rec_center/lounge
name = "Holodeck - Lounge"
/area/holodeck/rec_center/medical
name = "Holodeck - Emergency Medical"
/area/holodeck/rec_center/pet_lounge
name = "Holodeck - Pet Park"
@@ -128,6 +124,10 @@
name = "Holodeck - Holdout Bunker"
restricted = 1
/area/holodeck/rec_center/medical
name = "Holodeck - Emergency Medical"
restricted = 1
/area/holodeck/rec_center/anthophila
name = "Holodeck - Anthophila"
restricted = 1
+2 -2
View File
@@ -157,10 +157,10 @@
/area/shuttle/escape
name = "Emergency Shuttle"
area_flags = BLOBS_ALLOWED
area_flags = BLOBS_ALLOWED | CULT_PERMITTED
// area_limited_icon_smoothing = /area/shuttle/escape
canSmoothWithAreas = /area/shuttle/escape
flags_1 = CAN_BE_DIRTY_1 // | CULT_PERMITTED_1
flags_1 = CAN_BE_DIRTY_1
/area/shuttle/escape/backup
name = "Backup Emergency Shuttle"
+2
View File
@@ -800,6 +800,8 @@
var/list/things = src_object.contents()
var/datum/progressbar/progress = new(user, things.len, src)
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
if(STR == src_object)
return
while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(STR, /datum/component/storage.proc/handle_mass_item_insertion, things, src_object, user, progress)))
stoplag(1)
qdel(progress)
+1 -1
View File
@@ -579,7 +579,7 @@
//TODO: Better floating
/atom/movable/proc/float(on, throw_override)
if(throwing || !throw_override)
if(throwing && !throw_override)
return
if(on && !(movement_type & FLOATING))
animate(src, pixel_y = 2, time = 10, loop = -1, flags = ANIMATION_RELATIVE)
+4 -1
View File
@@ -1,7 +1,10 @@
/obj/machinery/computer/bank_machine
name = "bank machine"
desc = "A machine used to deposit and withdraw station funds."
icon = 'goon/icons/obj/goon_terminals.dmi'
icon = 'icons/obj/computer.dmi'
icon_state = "computer"
icon_screen = "vault"
icon_keyboard = "security_key"
idle_power_usage = 100
var/siphoning = FALSE
+1 -1
View File
@@ -3,7 +3,7 @@
desc = "A culinary marvel that uses matter-to-energy conversion to store dishes and shards. Convenient! \
Additional features include a vacuum function to suck in nearby dishes, and an automatic transfer beam that empties its contents into nearby disposal bins every now and then. \
Or you can just drop your plates on the floor, like civilized folk."
icon = 'goon/icons/obj/kitchen.dmi'
icon = 'icons/obj/kitchen.dmi'
icon_state = "synthesizer"
idle_power_usage = 8 //5 with default parts
active_power_usage = 13 //10 with default parts
@@ -341,6 +341,9 @@
return TRUE
. = ..()
/obj/structure/foamedmetal/resin/BlockSuperconductivity()
return TRUE
#undef ALUMINUM_FOAM
#undef IRON_FOAM
#undef RESIN_FOAM
+8
View File
@@ -73,6 +73,8 @@
myseed.adjust_yield(rand(-3,2))
myseed.adjust_production(rand(-3,3))
myseed.endurance = clamp(myseed.endurance + rand(-3,2), 0, 100) // adjust_endurance has a min value of 10, need to edit directly
// Scale health to endurance
max_integrity = obj_integrity = 10 + myseed.endurance / 2
delay_spread = delay_spread - myseed.production * 100 //So the delay goes DOWN with better stats instead of up. :I
var/datum/plant_gene/trait/glow/G = myseed.get_gene(/datum/plant_gene/trait/glow)
if(ispath(G)) // Seeds were ported to initialize so their genes are still typepaths here, luckily their initializer is smart enough to handle us doing this
@@ -193,8 +195,14 @@
/obj/structure/glowshroom/proc/Decay(spread, amount)
if (spread) // Decay due to spread
myseed.endurance -= amount
max_integrity = min(max_integrity, 10 + myseed.endurance / 2)
if(obj_integrity > max_integrity)
obj_integrity = max_integrity
else // Timed decay
myseed.endurance -= 1
max_integrity = min(max_integrity, 10 + myseed.endurance / 2)
if(obj_integrity > max_integrity)
obj_integrity = max_integrity
if (myseed.endurance > 0)
addtimer(CALLBACK(src, .proc/Decay), delay_decay, FALSE) // Recall decay timer
return
@@ -378,6 +378,12 @@
icon_state = "shieldsparkles"
duration = 6
/obj/effect/temp_visual/impact_effect/judgement_cut
name = "judgement cut impact"
icon = 'icons/effects/effects.dmi'
icon_state = "impact_judgement"
duration = 6
/obj/effect/temp_visual/heart
name = "heart"
icon = 'icons/mob/animal.dmi'
@@ -535,3 +541,7 @@
/obj/effect/temp_visual/slime_puddle/reverse
icon_state = "from_puddle"
duration = 7
/obj/effect/temp_visual/gib_animation
icon = 'icons/mob/mob.dmi'
duration = 15
+13 -7
View File
@@ -21,7 +21,7 @@
var/powered = FALSE //if there's a cell in the defib with enough power for a revive, blocks paddles from reviving otherwise
var/obj/item/shockpaddles/paddles
var/obj/item/stock_parts/cell/cell
var/combat = FALSE //can we revive through space suits?
var/combat = FALSE //if true, revive through hardsuits, allow for combat shocking, and tint paddles syndicate colors
var/grab_ghost = FALSE // Do we pull the ghost back into their body?
var/healdisk = FALSE // Does the unit have the healdisk upgrade?
var/pullshocksafely = FALSE // Will we shock people dragging the body?
@@ -176,7 +176,9 @@
A.UpdateButtonIcon()
/obj/item/defibrillator/proc/make_paddles()
return new /obj/item/shockpaddles(src)
if(!combat)
return new /obj/item/shockpaddles(src)
return new /obj/item/shockpaddles/syndicate(src)
/obj/item/defibrillator/equipped(mob/user, slot)
..()
@@ -245,6 +247,8 @@
/obj/item/defibrillator/compact/combat
name = "combat defibrillator"
desc = "A belt-equipped blood-red defibrillator that can be rapidly deployed. Does not have the restrictions or safeties of conventional defibrillators and can revive through space suits."
icon_state = "defibcombat" //needs defib inhand sprites
item_state = "defibcombat"
combat = TRUE
safety = FALSE
always_emagged = TRUE
@@ -279,6 +283,7 @@
var/combat = FALSE //If it penetrates armor and gives additional functionality
var/grab_ghost = FALSE
var/tlimit = DEFIB_TIME_LIMIT * 10
var/base_icon_state = "defibpaddles"
var/disarm_shock_time = 10
var/wielded = FALSE // track wielded status on item
@@ -352,10 +357,10 @@
return (OXYLOSS)
/obj/item/shockpaddles/update_icon_state()
icon_state = "defibpaddles[wielded]"
item_state = "defibpaddles[wielded]"
icon_state = "[base_icon_state][wielded]"
item_state = icon_state
if(cooldown)
icon_state = "defibpaddles[wielded]_cooldown"
icon_state = "[base_icon_state][wielded]_cooldown"
/obj/item/shockpaddles/dropped(mob/user)
if(!req_defib)
@@ -704,8 +709,9 @@
desc = "A pair of paddles used to revive deceased operatives. It possesses both the ability to penetrate armor and to deliver powerful shocks offensively."
combat = TRUE
icon = 'icons/obj/defibrillators.dmi'
icon_state = "defibpaddles0"
item_state = "defibpaddles0"
icon_state = "syndiepaddles0"
item_state = "syndiepaddles0"
base_icon_state = "syndiepaddles"
req_defib = FALSE
///////////////////////////////////////////
@@ -77,8 +77,11 @@
return
if(!iscarbon(target))
return
if(!(target?.client?.prefs?.cit_toggles & MEDIHOUND_SLEEPER))
to_chat(user, "<span class='warning'>The user has opted out of the use of your [src].")
return
var/voracious = TRUE
if(!target.client || !(target.client.prefs.cit_toggles & MEDIHOUND_SLEEPER) || !hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER))
if(!hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER))
voracious = FALSE
if(target.buckled)
to_chat(user, "<span class='warning'>The user is buckled and can not be put into your [src].</span>")
+2 -2
View File
@@ -381,8 +381,8 @@ GENETICS SCANNER
else if (S.mutantstomach != initial(S.mutantstomach))
mutant = TRUE
msg += "\t<span class='info'>Reported Species: [H.dna.custom_species ? H.dna.custom_species : S.name]</span>\n"
msg += "\t<span class='info'>Base Species: [S.name]</span>\n"
msg += "\t<span class='info'>Reported Species: [H.spec_trait_examine_font()][H.dna.custom_species ? H.dna.custom_species : S.name]</font></span>\n"
msg += "\t<span class='info'>Base Species: [H.spec_trait_examine_font()][S.name]</font></span>\n"
if(mutant)
msg += "\t<span class='info'>Subject has mutations present.</span>\n"
msg += "\t<span class='info'>Body temperature: [round(M.bodytemperature-T0C,0.1)] &deg;C ([round(M.bodytemperature*1.8-459.67,0.1)] &deg;F)</span>\n"
+2 -2
View File
@@ -399,7 +399,7 @@
on_sound = 'sound/weapons/batonextend.ogg'
on_icon_state = "telebaton_1"
off_icon_state = "telebaton_0"
on_item_state = "nullrod"
on_item_state = "telebaton_1"
force_on = 10
force_off = 0
weight_class_on = WEIGHT_CLASS_BULKY
@@ -472,7 +472,7 @@
on_stun_sound = 'sound/effects/contractorbatonhit.ogg'
on_icon_state = "contractor_baton_1"
off_icon_state = "contractor_baton_0"
on_item_state = "contractor_baton"
on_item_state = "contractor_baton_1"
force_on = 16
force_off = 5
weight_class_on = WEIGHT_CLASS_NORMAL
+4 -2
View File
@@ -4,10 +4,10 @@
desc = "A handheld tracking device that locks onto certain signals."
icon = 'icons/obj/device.dmi'
icon_state = "pinpointer"
item_state = "pinpointer"
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BELT
w_class = WEIGHT_CLASS_SMALL
item_state = "electronic"
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
throw_speed = 3
@@ -97,6 +97,7 @@
name = "crew pinpointer"
desc = "A handheld tracking device that points to crew suit sensors."
icon_state = "pinpointer_crew"
item_state = "pinpointer_crew"
custom_price = PRICE_ABOVE_EXPENSIVE
var/has_owner = FALSE
var/pinpointer_owner = null
@@ -208,6 +209,7 @@
name = "fugitive pinpointer"
desc = "A handheld tracking device that locates the bounty hunter shuttle for quick escapes."
icon_state = "pinpointer_hunter"
item_state = "pinpointer_black"
var/obj/shuttleport
/obj/item/pinpointer/shuttle/Initialize(mapload)
@@ -231,4 +233,4 @@
/obj/item/pinpointer/custom
resets_target = FALSE
+3 -3
View File
@@ -1,7 +1,7 @@
/obj/item/singularityhammer
name = "singularity hammer"
desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows."
icon_state = "mjollnir0"
icon_state = "singularity_hammer0"
lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
flags_1 = CONDUCT_1
@@ -25,7 +25,7 @@
/obj/item/singularityhammer/ComponentInitialize()
. = ..()
AddComponent(/datum/component/two_handed, force_multiplier=4, icon_wielded="mjollnir1")
AddComponent(/datum/component/two_handed, force_multiplier=4, icon_wielded="singularity_hammer1")
/// triggered on wield of two handed item
/obj/item/singularityhammer/proc/on_wield(obj/item/source, mob/user)
@@ -36,7 +36,7 @@
wielded = FALSE
/obj/item/singularityhammer/update_icon_state()
icon_state = "mjollnir0"
icon_state = "singularity_hammer0"
/obj/item/singularityhammer/Destroy()
STOP_PROCESSING(SSobj, src)
@@ -593,7 +593,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \
return
var/turf/T = get_turf(user) //we may have moved. adjust as needed...
var/area/A = get_area(user)
if((!is_station_level(T.z) && !is_mining_level(T.z)) || (A && !(A.flags_1 & CULT_PERMITTED_1)))
if((!is_station_level(T.z) && !is_mining_level(T.z)) || !(A?.area_flags & CULT_PERMITTED))
to_chat(user, "<span class='warning'>The veil is not weak enough here.</span>")
return FALSE
return ..()
+1
View File
@@ -85,6 +85,7 @@
name = "trash bag of holding"
desc = "The latest and greatest in custodial convenience, a trashbag that is capable of holding vast quantities of garbage."
icon_state = "bluetrashbag"
item_state = "bluetrashbag"
item_flags = NO_MAT_REDEMPTION
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
+2 -2
View File
@@ -211,8 +211,8 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
"<span class='userdanger'>YOU FEEL THE POWER OF VALHALLA FLOWING THROUGH YOU! <i>THERE CAN BE ONLY ONE!!!</i></span>")
user.update_icons()
new_name = "GORE-DRENCHED CLAYMORE OF [pick("THE WHIMSICAL SLAUGHTER", "A THOUSAND SLAUGHTERED CATTLE", "GLORY AND VALHALLA", "ANNIHILATION", "OBLITERATION")]"
icon_state = "claymore_valhalla"
item_state = "cultblade"
icon_state = "claymore_gold"
item_state = "claymore_gold"
remove_atom_colour(ADMIN_COLOUR_PRIORITY)
name = new_name
@@ -13,15 +13,16 @@
return 0
. = ..()
// Exists to work around the minimum 700 cr price for goodies / small items
/obj/structure/closet/secure_closet/goodies
// Exists to work around the minimum 700 cr price for goodies / small items / materials
/obj/structure/closet/secure_closet/cargo
name = "cargo locker"
icon_state = "goodies"
desc = "A sturdier card-locked storage unit used for bulky shipments."
max_integrity = 500 // Same as crates.
melee_min_damage = 25 // Idem.
/obj/structure/closet/secure_closet/goodies/owned
name = "private locker"
/obj/structure/closet/secure_closet/cargo/owned
name = "private cargo locker"
desc = "A locker designed to only open for who purchased its contents."
///Account of the person buying the crate if private purchasing.
var/datum/bank_account/buyer_account
@@ -32,18 +33,18 @@
///Is the crate being bought by a person, or a budget card?
var/department_purchase = FALSE
/obj/structure/closet/secure_closet/goodies/owned/examine(mob/user)
/obj/structure/closet/secure_closet/cargo/owned/examine(mob/user)
. = ..()
. += "<span class='notice'>It's locked with a privacy lock, and can only be unlocked by the buyer's ID.</span>"
/obj/structure/closet/secure_closet/goodies/owned/Initialize(mapload, datum/bank_account/_buyer_account)
/obj/structure/closet/secure_closet/cargo/owned/Initialize(mapload, datum/bank_account/_buyer_account)
. = ..()
buyer_account = _buyer_account
if(istype(buyer_account, /datum/bank_account/department))
department_purchase = TRUE
department_account = buyer_account
/obj/structure/closet/secure_closet/goodies/owned/togglelock(mob/living/user, silent)
/obj/structure/closet/secure_closet/cargo/owned/togglelock(mob/living/user, silent)
if(privacy_lock)
if(!broken)
var/obj/item/card/id/id_card = user.get_idcard(TRUE)
+97 -17
View File
@@ -21,6 +21,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
var/ini_dir = null
var/state = WINDOW_OUT_OF_FRAME
var/reinf = FALSE
var/extra_reinforced = FALSE
var/heat_resistance = 800
var/decon_speed = 30
var/wtype = "glass"
@@ -65,6 +66,20 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
. += "<span class='notice'>The window is out of the frame, but could be <i>pried</i> in. It is <b>screwed</b> to the floor.</span>"
else if(!anchored)
. += "<span class='notice'>The window is <i>unscrewed</i> from the floor, and could be deconstructed by <b>wrenching</b>.</span>"
switch(state)
if(PRWINDOW_SECURE)
if(extra_reinforced)
. += "It's been screwed in with one way screws, you'd need to <b>heat their solder cover</b> to have any chance of backing them out."
else
. += "It's been screwed in with solid screws, you'd need to <b>screw them</b> out to unsecure the window."
if(PRWINDOW_BOLTS_HEATED)
. += "The solder cover melts away, and you'll likely be able to <b>unscrew them</b> now."
if(PRWINDOW_BOLTS_OUT)
. += "The screws have been removed, revealing a small gap you could fit a <b>prying tool</b> in."
if(PRWINDOW_POPPED)
. += "The main plate of the window has popped out of the frame, exposing some bars that look like they can be <b>cut</b>."
if(PRWINDOW_BARS_CUT)
. += "The main pane can be easily moved out of the way to reveal some <b>bolts</b> holding the frame in."
else
if(anchored)
. += "<span class='notice'>The window is <b>screwed</b> to the floor.</span>"
@@ -75,8 +90,13 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
. = ..()
if(direct)
setDir(direct)
if(reinf && anchored)
if(extra_reinforced && anchored)
state = PRWINDOW_SECURE
else if(reinf && anchored)
state = WINDOW_SCREWED_TO_FRAME
if(mapload && electrochromatic_id && electrochromatic_id[1] == "!")
electrochromatic_id = SSmapping.get_obfuscated_id(electrochromatic_id)
@@ -230,29 +250,26 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
make_electrochromatic(K.id)
qdel(K)
if(!(flags_1&NODECONSTRUCT_1))
if(!(flags_1 & NODECONSTRUCT_1) && !(state >= PRWINDOW_FRAME_BOLTED))
if(I.tool_behaviour == TOOL_SCREWDRIVER)
I.play_tool_sound(src, 75)
if(reinf)
if(state == WINDOW_SCREWED_TO_FRAME || state == WINDOW_IN_FRAME)
to_chat(user, "<span class='notice'>You begin to [state == WINDOW_SCREWED_TO_FRAME ? "unscrew the window from":"screw the window to"] the frame...</span>")
if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
if(state == WINDOW_SCREWED_TO_FRAME || state == WINDOW_IN_FRAME && anchored)
to_chat(user, "<span class='notice'>You begin to [state == WINDOW_SCREWED_TO_FRAME ? "unscrew the window from":"screw the window to"] the frame...</span>")
if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
if(extra_reinforced && state == WINDOW_IN_FRAME)
state = PRWINDOW_SECURE
else
state = (state == WINDOW_IN_FRAME ? WINDOW_SCREWED_TO_FRAME : WINDOW_IN_FRAME)
to_chat(user, "<span class='notice'>You [state == WINDOW_IN_FRAME ? "unfasten the window from":"fasten the window to"] the frame.</span>")
else if(state == WINDOW_OUT_OF_FRAME)
to_chat(user, "<span class='notice'>You begin to [anchored ? "unscrew the frame from":"screw the frame to"] the floor...</span>")
if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
setAnchored(!anchored)
to_chat(user, "<span class='notice'>You [anchored ? "fasten the frame to":"unfasten the frame from"] the floor.</span>")
else //if we're not reinforced, we don't need to check or update state
to_chat(user, "<span class='notice'>You begin to [anchored ? "unscrew the window from":"screw the window to"] the floor...</span>")
if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_anchored, anchored)))
to_chat(user, "<span class='notice'>You [state == WINDOW_IN_FRAME ? "unfasten the window from":"fasten the window to"] the frame.</span>")
else if(state == WINDOW_OUT_OF_FRAME)
to_chat(user, "<span class='notice'>You begin to [anchored ? "unscrew the frame from":"screw the frame to"] the floor...</span>")
if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
setAnchored(!anchored)
to_chat(user, "<span class='notice'>You [anchored ? "fasten the window to":"unfasten the window from"] the floor.</span>")
to_chat(user, "<span class='notice'>You [anchored ? "fasten the frame to":"unfasten the frame from"] the floor.</span>")
return
else if(I.tool_behaviour == TOOL_CROWBAR && reinf && (state == WINDOW_OUT_OF_FRAME || state == WINDOW_IN_FRAME))
else if(I.tool_behaviour == TOOL_CROWBAR && reinf && (state == WINDOW_OUT_OF_FRAME || state == WINDOW_IN_FRAME) && anchored)
to_chat(user, "<span class='notice'>You begin to lever the window [state == WINDOW_OUT_OF_FRAME ? "into":"out of"] the frame...</span>")
I.play_tool_sound(src, 75)
if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
@@ -270,8 +287,67 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
to_chat(user, "<span class='notice'>You successfully disassemble [src].</span>")
qdel(src)
return
if(!reinf || !anchored)
return ..()
switch(state)
if(PRWINDOW_SECURE)
if(extra_reinforced)
if(I.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HARM)
user.visible_message("<span class='notice'>[user] holds \the [I] to the security screws on \the [src]...</span>",
"<span class='notice'>You begin heating the security screws on \the [src]...</span>")
if(I.use_tool(src, user, 180, volume = 100))
to_chat(user, "<span class='notice'>The security bolts are glowing white hot and look ready to be removed.</span>")
state = PRWINDOW_BOLTS_HEATED
addtimer(CALLBACK(src, .proc/cool_bolts), 300)
return
else
if(I.tool_behaviour == TOOL_SCREWDRIVER)
user.visible_message("<span class='notice'>[user] digs into the screws and starts removing them...</span>",
"<span class='notice'>You dig into the screws hard and they start turning...</span>")
if(I.use_tool(src, user, 80, volume = 50))
state = PRWINDOW_BOLTS_OUT
to_chat(user, "<span class='notice'>The screws come out, and a gap forms around the edge of the pane.</span>")
return
if(PRWINDOW_BOLTS_HEATED)
if(I.tool_behaviour == TOOL_SCREWDRIVER)
user.visible_message("<span class='notice'>[user] digs into the security screws and starts removing them...</span>",
"<span class='notice'>You dig into the screws hard and they start turning...</span>")
if(I.use_tool(src, user, 80, volume = 50))
state = PRWINDOW_BOLTS_OUT
to_chat(user, "<span class='notice'>The screws come out, and a gap forms around the edge of the pane.</span>")
return
if(PRWINDOW_BOLTS_OUT)
if(I.tool_behaviour == TOOL_CROWBAR)
user.visible_message("<span class='notice'>[user] wedges \the [I] into the gap in the frame and starts prying...</span>",
"<span class='notice'>You wedge \the [I] into the gap in the frame and start prying...</span>")
if(I.use_tool(src, user, 50, volume = 50))
state = PRWINDOW_POPPED
to_chat(user, "<span class='notice'>The panel pops out of the frame, exposing some thin metal bars that looks like they can be cut.</span>")
return
if(PRWINDOW_POPPED)
if(I.tool_behaviour == TOOL_WIRECUTTER)
user.visible_message("<span class='notice'>[user] starts cutting the exposed bars on \the [src]...</span>",
"<span class='notice'>You start cutting the exposed bars on \the [src]</span>")
if(I.use_tool(src, user, 30, volume = 50))
state = PRWINDOW_BARS_CUT
to_chat(user, "<span class='notice'>The panels falls out of the way exposing the frame bolts.</span>")
return
if(PRWINDOW_BARS_CUT)
if(I.tool_behaviour == TOOL_WRENCH)
user.visible_message("<span class='notice'>[user] starts unfastening \the [src] from the frame...</span>",
"<span class='notice'>You start unfastening the bolts from the frame...</span>")
if(I.use_tool(src, user, 50, volume = 50))
to_chat(user, "<span class='notice'>You unscrew the bolts from the frame and the window pops loose.</span>")
state = WINDOW_OUT_OF_FRAME
setAnchored(FALSE)
return
return ..()
/obj/structure/window/proc/cool_bolts()
if(state == PRWINDOW_BOLTS_HEATED)
state = PRWINDOW_SECURE
visible_message("<span class='notice'>The bolts on \the [src] look like they've cooled off...</span>")
/obj/structure/window/setAnchored(anchorvalue)
..()
air_update_turf(TRUE)
@@ -577,6 +653,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
desc = "A window made out of a plasma-silicate alloy and a rod matrix. It looks hopelessly tough to break and is most likely nigh fireproof."
icon_state = "plasmarwindow"
reinf = TRUE
extra_reinforced = TRUE
heat_resistance = 50000
armor = list("melee" = 85, "bullet" = 20, "laser" = 0, "energy" = 0, "bomb" = 60, "bio" = 100, "rad" = 100, "fire" = 99, "acid" = 100)
max_integrity = 500
@@ -642,6 +719,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
icon = 'icons/obj/smooth_structures/rplasma_window.dmi'
icon_state = "rplasmawindow"
dir = FULLTILE_WINDOW_DIR
state = PRWINDOW_SECURE
max_integrity = 1000
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
@@ -726,6 +804,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
reinf = TRUE
extra_reinforced = TRUE
heat_resistance = 1600
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 100)
smooth = SMOOTH_TRUE
@@ -758,6 +837,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
wave_explosion_block = EXPLOSION_BLOCK_BOROSILICATE_WINDOW
wave_explosion_multiply = EXPLOSION_DAMPEN_BOROSILICATE_WINDOW
decon_speed = 40
extra_reinforced = TRUE
glass_type = /obj/item/stack/tile/brass
glass_amount = 1
reinf = FALSE
+1 -1
View File
@@ -280,7 +280,7 @@
if(lube & NO_SLIP_WHEN_WALKING)
if(C.m_intent == MOVE_INTENT_WALK)
return FALSE
if(ishuman(C) && !(lube & SLIP_WHEN_JOGGING))
if(ishuman(C) && !(lube & SLIP_WHEN_JOGGING) && CONFIG_GET(flag/sprint_enabled))
var/mob/living/carbon/human/H = C
if(!(H.combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) && H.getStaminaLoss() <= 20)
return FALSE
+12 -9
View File
@@ -386,7 +386,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
var/list/things = src_object.contents()
var/datum/progressbar/progress = new(user, things.len, src)
while (do_after(usr, 1 SECONDS, TRUE, src, FALSE, CALLBACK(src_object, /datum/component/storage.proc/mass_remove_from_storage, src, things, progress)))
while (do_after(usr, 1 SECONDS, TRUE, src, FALSE, CALLBACK(src_object, /datum/component/storage.proc/mass_remove_from_storage, src, things, progress, TRUE, user)))
stoplag(1)
qdel(progress)
@@ -579,7 +579,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
/turf/AllowDrop()
return TRUE
/turf/proc/add_vomit_floor(mob/living/M, toxvomit = NONE)
/turf/proc/add_vomit_floor(mob/living/M, toxvomit = NONE, purge_ratio = 0.1)
var/obj/effect/decal/cleanable/vomit/V = new /obj/effect/decal/cleanable/vomit(src, M.get_static_viruses())
//if the vomit combined, apply toxicity and reagents to the old vomit
@@ -587,21 +587,24 @@ GLOBAL_LIST_EMPTY(station_turfs)
V = locate() in src
if(!V) //the decal was spawned on a wall or groundless turf and promptly qdeleted.
return
// Make toxins and blazaam vomit look different
// Apply the proper icon set based on vomit type
if(toxvomit == VOMIT_PURPLE)
V.icon_state = "vomitpurp_[pick(1,4)]"
else if (toxvomit == VOMIT_TOXIC)
V.icon_state = "vomittox_[pick(1,4)]"
if (iscarbon(M))
var/mob/living/carbon/C = M
if(C.reagents)
clear_reagents_to_vomit_pool(C,V)
else if (toxvomit == VOMIT_NANITE)
V.name = "metallic slurry"
V.desc = "A puddle of metallic slurry that looks vaguely like very fine sand. It almost seems like it's moving..."
V.icon_state = "vomitnanite_[pick(1,4)]"
if (purge_ratio && iscarbon(M))
clear_reagents_to_vomit_pool(M, V, purge_ratio)
/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V)
/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V, purge_ratio = 0.1)
for(var/datum/reagent/consumable/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food
if(R.nutriment_factor > 0)
M.reagents.del_reagent(R.type)
M.reagents.trans_to(V, M.reagents.total_volume / 10)
var/chemicals_lost = M.reagents.total_volume * purge_ratio
M.reagents.trans_to(V, chemicals_lost)
//Whatever happens after high temperature fire dies out or thermite reaction works.
//Should return new turf
+1
View File
@@ -116,6 +116,7 @@ GLOBAL_LIST_INIT(admin_verbs_fun, list(
/client/proc/show_tip,
/client/proc/smite,
/client/proc/admin_away,
/client/proc/spawn_floor_cluwne,
/client/proc/cmd_admin_toggle_fov, //CIT CHANGE - FOV
/client/proc/roll_dices //CIT CHANGE - Adds dice verb
))
+1 -1
View File
@@ -104,7 +104,7 @@ GLOBAL_VAR(antag_prototypes)
var/datum/component/activity/activity = current.GetComponent(/datum/component/activity)
if(activity)
out += "Activity level: [activity.activity_level]<br>"
out += "Hasn't changed areas in approximately [activity.not_moved_counter] seconds"
out += "Hasn't changed areas in approximately [activity.not_moved_counter] seconds<br>"
var/special_statuses = get_special_statuses()
if(length(special_statuses))
+29 -3
View File
@@ -1333,9 +1333,10 @@ Traitors and the like can also be revived with the previous role mostly intact.
ADMIN_PUNISHMENT_SHOES,
ADMIN_PUNISHMENT_PICKLE,
ADMIN_PUNISHMENT_FRY,
ADMIN_PUNISHMENT_CRACK,
ADMIN_PUNISHMENT_BLEED,
ADMIN_PUNISHMENT_SCARIFY)
ADMIN_PUNISHMENT_CRACK,
ADMIN_PUNISHMENT_BLEED,
ADMIN_PUNISHMENT_SCARIFY,
ADMIN_PUNISHMENT_CLUWNE)
var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list
@@ -1501,6 +1502,11 @@ Traitors and the like can also be revived with the previous role mostly intact.
to_chat(usr,"<span class='warning'>[C] does not have knottable shoes!</span>")
return
sick_kicks.adjust_laces(SHOES_KNOTTED)
if(ADMIN_PUNISHMENT_CLUWNE)
if(!iscarbon(target))
to_chat(usr,"<span class='warning'>This must be used on a carbon mob.</span>")
return
target.cluwneify()
punish_log(target, punishment)
@@ -1691,3 +1697,23 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!source)
return
REMOVE_TRAIT(D,chosen_trait,source)
/client/proc/spawn_floor_cluwne()
set category = "Admin.Fun"
set name = "Unleash Floor Cluwne"
set desc = "Pick a specific target or just let it select randomly and spawn the floor cluwne mob on the station. Be warned: spawning more than one may cause issues!"
var/target
if(!check_rights(R_FUN))
return
var/turf/T = get_turf(usr)
target = input("Any specific target in mind? Please note only live, non cluwned, human targets are valid.", "Target", target) as null|anything in GLOB.player_list
if(target && ishuman(target))
var/mob/living/carbon/human/H = target
var/mob/living/simple_animal/hostile/floor_cluwne/FC = new /mob/living/simple_animal/hostile/floor_cluwne(T)
FC.Acquire_Victim(H)
else
new /mob/living/simple_animal/hostile/floor_cluwne(T)
log_admin("[key_name(usr)] spawned floor cluwne.")
message_admins("[key_name(usr)] spawned floor cluwne.")
@@ -6,7 +6,7 @@
holder.marked_datum = D
vv_update_display(D, "marked", VV_MSG_MARKED)
/client/proc/mark_datum_mapview(datum/D as mob|obj|turf|area in view(view))
/client/proc/mark_datum_mapview(datum/D in world)
set category = "Debug"
set name = "Mark Object"
mark_datum(D)
@@ -684,6 +684,7 @@
if(HAS_TRAIT(user, TRAIT_NOPUGILIST))
to_chat(user, "<span class='warning'>We would gain nothing by forming our fists into brute-force weapons when we are trained in precision martial arts!</span>")
return
return ..()
/obj/item/clothing/gloves/fingerless/pugilist/cling // switches between lesser GotNS and Big Punchy Rib Breaky Hands
name = "hewn bone gauntlets"
@@ -25,7 +25,7 @@
/datum/clockwork_scripture/create_object/stargazer/check_special_requirements()
var/area/A = get_area(invoker)
var/turf/T = get_turf(invoker)
if(!is_station_level(invoker.z) || isspaceturf(T) || !(A.area_flags & VALID_TERRITORY))
if(!is_station_level(invoker.z) || isspaceturf(T) || !(A?.area_flags & CULT_PERMITTED))
to_chat(invoker, "<span class='danger'>Stargazers can't be built off-station.</span>")
return
return ..()
@@ -34,7 +34,7 @@
return FALSE
var/area/A = get_area(invoker)
var/turf/T = get_turf(invoker)
if(!is_station_level(T.z) || isspaceturf(T) || !(A.area_flags & VALID_TERRITORY) || isshuttleturf(T))
if(!is_station_level(T.z) || isspaceturf(T) || !(A?.area_flags & CULT_PERMITTED) || isshuttleturf(T))
to_chat(invoker, "<span class='warning'>You must be on the station to activate the Ark!</span>")
return FALSE
if(GLOB.clockwork_gateway_activated)
@@ -52,7 +52,7 @@
break
if(has_starlight && anchored)
var/area/A = get_area(src)
if(A.outdoors || A.map_name == "Space" || !(A.area_flags & VALID_TERRITORY))
if(A.outdoors || A.map_name == "Space" || !(A?.area_flags & CULT_PERMITTED))
has_starlight = FALSE
if(old_status != has_starlight)
if(has_starlight)
+1 -1
View File
@@ -419,7 +419,7 @@
var/sanity = 0
while(summon_spots.len < SUMMON_POSSIBILITIES && sanity < 100)
var/area/summon = pick(GLOB.sortedAreas - summon_spots)
if(summon && is_station_level(summon.z) && !(summon.area_flags & VALID_TERRITORY))
if(summon && is_station_level(summon.z) && (summon.area_flags & VALID_TERRITORY))
summon_spots += summon
sanity++
update_explanation_text()
+1 -1
View File
@@ -148,7 +148,7 @@ This file contains the cult dagger and rune list code
to_chat(user, "<span class='cult'>There is already a rune here.</span>")
return FALSE
var/area/A = get_area(T)
if((!is_station_level(T.z) && !is_mining_level(T.z)) || !(A?.area_flags & VALID_TERRITORY))
if((!is_station_level(T.z) && !is_mining_level(T.z)) || !(A?.area_flags & CULT_PERMITTED))
to_chat(user, "<span class='warning'>The veil is not weak enough here.</span>")
return FALSE
return TRUE
@@ -89,6 +89,7 @@
var/list/lore = list()
data["charges"] = charge
data["total_sacs"] = cultie.total_sacrifices
for(var/X in to_know)
lore = list()
@@ -96,7 +97,11 @@
lore["type"] = EK.type
lore["name"] = EK.name
lore["cost"] = EK.cost
lore["disabled"] = EK.cost <= charge ? FALSE : TRUE
lore["sacs"] = EK.sacs_needed
if(EK.cost <= charge && cultie.total_sacrifices >= EK.sacs_needed)
lore["disabled"] = FALSE
else
lore["disabled"] = TRUE
lore["path"] = EK.route
lore["state"] = "Research"
lore["flavour"] = EK.gain_text
@@ -108,6 +113,7 @@
var/datum/eldritch_knowledge/EK = known[X]
lore["name"] = EK.name
lore["cost"] = EK.cost
lore["sacs"] = EK.sacs_needed
lore["disabled"] = TRUE
lore["path"] = EK.route
lore["state"] = "Researched"
@@ -165,6 +165,25 @@
new /obj/effect/reality_smash(chosen_location)
ReworkNetwork()
/**
*CIT CHANGE
*
*Creates a singular reality smash
*Credit to slimelust
*/
/datum/reality_smash_tracker/proc/RandomSpawnSmash(var/deferred = FALSE)
var/turf/chosen_location = get_safe_random_station_turf()
//we also dont want them close to each other, at least 1 tile of separation
var/obj/effect/reality_smash/what_if_i_have_one = locate() in range(1, chosen_location)
var/obj/effect/broken_illusion/what_if_i_had_one_but_got_used = locate() in range(1, chosen_location)
var/tries = 10
while((what_if_i_have_one || what_if_i_had_one_but_got_used) && tries-- > 0)
chosen_location = get_safe_random_station_turf()
new /obj/effect/reality_smash(chosen_location)
if(!deferred)
ReworkNetwork()
/**
* Adds a mind to the list of people that can see the reality smashes
*
@@ -200,15 +219,23 @@
/obj/effect/broken_illusion/Initialize()
. = ..()
addtimer(CALLBACK(src,.proc/show_presence),15 SECONDS)
addtimer(CALLBACK(src,.proc/remove_presence),195 SECONDS)
var/image/I = image('icons/effects/eldritch.dmi',src,null,OBJ_LAYER)
I.override = TRUE
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/silicons, "pierced_reality", I)
/obj/effect/broken_illusion/Destroy()
GLOB.reality_smash_track.RandomSpawnSmash()
return ..()
///Makes this obj appear out of nothing
/obj/effect/broken_illusion/proc/show_presence()
animate(src,alpha = 255,time = 15 SECONDS)
/obj/effect/broken_illusion/proc/remove_presence()
qdel(src)
/obj/effect/broken_illusion/attack_hand(mob/living/user, list/modifiers)
if(!ishuman(user))
return ..()
@@ -44,46 +44,6 @@
if(target.stat == DEAD)
to_chat(user,"<span class='warning'>[target.real_name] is dead. Bring them onto a transmutation rune!</span>")
/datum/action/innate/heretic_shatter
name = "Shattering Offer"
desc = "After a brief delay, you will be granted salvation from a dire situation at the cost of your blade. (Teleports you to a random safe turf on your current z level after a windup, but destroys your blade.)"
background_icon_state = "bg_ecult"
button_icon_state = "shatter"
icon_icon = 'icons/mob/actions/actions_ecult.dmi'
check_flags = MOBILITY_HOLD|MOBILITY_MOVE|MOBILITY_USE
var/mob/living/carbon/human/holder
var/obj/item/melee/sickly_blade/sword
/datum/action/innate/heretic_shatter/Grant(mob/user, obj/object)
sword = object
holder = user
//i know what im doing
return ..()
/datum/action/innate/heretic_shatter/IsAvailable()
if(IS_HERETIC(holder) || IS_HERETIC_MONSTER(holder))
return ..()
else
return FALSE
/datum/action/innate/heretic_shatter/Activate()
if(do_after(holder,10, target = holder))
if(!sword || QDELETED(sword))
return
if(!IsAvailable()) //Never trust the user.
return
var/swordz = (get_turf(sword))?.z //SHOULD usually have a turf but if it doesn't better be prepared.
if(!swordz)
to_chat(holder, "<span class='warning'>[sword] flickers but remains in place, as do you...</span>")
return
var/turf/safe_turf = find_safe_turf(zlevels = swordz, extended_safety_checks = TRUE)
if(!safe_turf)
to_chat(holder, "<span class='warning'>[sword] flickers but remains in place, as do you...</span>")
return
do_teleport(holder,safe_turf,forceMove = TRUE,channel=TELEPORT_CHANNEL_MAGIC)
to_chat(holder,"<span class='warning'>You feel a gust of energy flow through your body... the Rusted Hills heard your call...</span>")
qdel(sword)
/obj/item/melee/sickly_blade
name = "sickly blade"
desc = "A sickly green crescent blade, decorated with an ornamental eye. You feel like you're being watched..."
@@ -101,11 +61,6 @@
throwforce = 10
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "lacerated", "ripped", "diced", "rended")
var/datum/action/innate/heretic_shatter/linked_action
/obj/item/melee/sickly_blade/Initialize()
. = ..()
linked_action = new(src)
/obj/item/melee/sickly_blade/attack(mob/living/target, mob/living/user)
if(!(IS_HERETIC(user) || IS_HERETIC_MONSTER(user)))
@@ -120,13 +75,17 @@
return
return ..()
/obj/item/melee/sickly_blade/pickup(mob/user)
. = ..()
linked_action.Grant(user, src)
/obj/item/melee/sickly_blade/dropped(mob/user, silent)
. = ..()
linked_action.Remove(user, src)
/obj/item/melee/sickly_blade/attack_self(mob/user)
var/turf/safe_turf = find_safe_turf(zlevels = z, extended_safety_checks = TRUE)
if(IS_HERETIC(user) || IS_HERETIC_MONSTER(user))
if(do_teleport(user, safe_turf, forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC))
to_chat(user,"<span class='warning'>As you shatter [src], you feel a gust of energy flow through your body. The Rusted Hills heard your call...</span>")
else
to_chat(user,"<span class='warning'>You shatter [src], but your plea goes unanswered.</span>")
else
to_chat(user,"<span class='warning'>You shatter [src].</span>")
playsound(src, "shatter", 70, TRUE) //copied from the code for smashing a glass sheet onto the ground to turn it into a shard
qdel(src)
/obj/item/melee/sickly_blade/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
. = ..()
@@ -141,6 +100,11 @@
else
eldritch_knowledge_datum.on_ranged_attack_eldritch_blade(target,user,click_parameters)
/obj/item/melee/sickly_blade/examine(mob/user)
. = ..()
if(IS_HERETIC(user) || IS_HERETIC_MONSTER(user))
. += "<span class='notice'><B>A heretic (or a servant of one) can shatter this blade to teleport to a random, mostly safe location by activating it in-hand.</B></span>"
/obj/item/melee/sickly_blade/rust
name = "rusted blade"
desc = "This crescent blade is decrepit, wasting to rust. Yet still it bites, ripping flesh and bone with jagged, rotten teeth."
@@ -243,6 +207,7 @@
// slightly worse than normal cult robes
armor = list("melee" = 30, "bullet" = 30, "laser" = 30,"energy" = 30, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
pocket_storage_component_path = /datum/component/storage/concrete/pockets/void_cloak
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
/obj/item/clothing/suit/hooded/cultrobes/void/ToggleHood()
if(!iscarbon(loc))
@@ -15,6 +15,8 @@
var/gain_text = ""
///Cost of knowledge in souls
var/cost = 0
///Required sacrifices to unlock
var/sacs_needed = 0
///Next knowledge in the research tree
var/list/next_knowledge = list()
///What knowledge is incompatible with this. This will simply make it impossible to research knowledges that are in banned_knowledge once this gets researched.
@@ -230,7 +232,6 @@
atoms -= H
H.gib()
///////////////
///Base lore///
///////////////
@@ -109,10 +109,15 @@
gain_text = "When the Glory of the Lantern scorches and sears their skin, nothing will protect them from the ashes."
desc = "Fire off five streams of fire from your hand, each setting ablaze targets hit and scorching them upon contact."
cost = 2
sacs_needed = 3
spell_to_add = /obj/effect/proc_holder/spell/pointed/nightwatchers_rite
next_knowledge = list(/datum/eldritch_knowledge/final/ash_final)
route = PATH_ASH
/datum/eldritch_knowledge/spell/nightwatchers_rite/on_gain(mob/user)
. = ..()
priority_announce("Large heat signatures discovered! A swelling fiery horror is coming..", sound = 'sound/misc/notice1.ogg')
/datum/eldritch_knowledge/ash_blade_upgrade
name = "Fiery Blade"
gain_text = "Blade in hand, he swung and swung as the ash fell from the skies. His city, his people... all burnt to cinders, and yet life still remained in his charred body."
@@ -181,6 +186,7 @@
desc = "Bring 3 corpses onto a transmutation rune, you will become immune to fire, the vacuum of space, cold and other enviromental hazards and become overall sturdier to all other damages. You will gain a spell that passively creates ring of fire around you as well ,as you will gain a powerful ability that lets you create a wave of flames all around you."
required_atoms = list(/mob/living/carbon/human)
cost = 5
sacs_needed = 8
route = PATH_ASH
var/list/trait_list = list(TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE)
@@ -170,7 +170,7 @@
gain_text = "The Uncanny Man, who walks alone in the valley between the worlds... I was able to summon his aid."
desc = "You can now summon a Raw Prophet by transmutating a pair of eyes, a left arm and a pool of blood. Raw prophets have increased seeing range, as well as X-Ray vision, but they are very fragile."
cost = 1
required_atoms = list(/obj/item/organ/eyes,/obj/item/bodypart/l_arm,/obj/item/bodypart/r_arm,/obj/effect/decal/cleanable/blood)
required_atoms = list(/obj/item/organ/eyes,/obj/item/bodypart/l_arm,/obj/effect/decal/cleanable/blood)
mob_to_summon = /mob/living/simple_animal/hostile/eldritch/raw_prophet
next_knowledge = list(/datum/eldritch_knowledge/flesh_blade_upgrade,/datum/eldritch_knowledge/rune_carver,/datum/eldritch_knowledge/curse/paralysis)
route = PATH_FLESH
@@ -217,6 +217,7 @@
desc = "Bring 3 bodies onto a transmutation rune to shed your human form and ascend to untold power."
required_atoms = list(/mob/living/carbon/human)
cost = 5
sacs_needed = 8
route = PATH_FLESH
/datum/eldritch_knowledge/final/flesh_final/on_finished_recipe(mob/living/user, list/atoms, loc)
@@ -257,6 +258,11 @@
gain_text = "The ignorant mind that inhabits their feeble bodies will crumble when they acknowledge - willingly or not, the truth."
desc = "By forcing the knowledge of the Mansus upon my foes, I can show them things that would drive any normal man insane."
cost = 2
sacs_needed = 3
spell_to_add = /obj/effect/proc_holder/spell/targeted/touch/mad_touch
next_knowledge = list(/datum/eldritch_knowledge/final/flesh_final)
route = PATH_FLESH
/datum/eldritch_knowledge/spell/touch_of_madness/on_gain(mob/user)
. = ..()
priority_announce("The stench of rotting flesh fills the air... An approaching abomination has been detected!", sound = 'sound/misc/notice1.ogg')
@@ -159,15 +159,21 @@
desc = "Applying your knowledge of rust to the human body, a knowledge that could decay your foes from the inside out, resulting in organ failure, vomiting, or eventual death through the peeling of rotting flesh."
gain_text = "Rust, decay, it's all the same. All that remains is application."
cost = 2
sacs_needed = 3
spell_to_add = /obj/effect/proc_holder/spell/targeted/touch/grasp_of_decay
next_knowledge = list(/datum/eldritch_knowledge/final/rust_final)
route = PATH_RUST
/datum/eldritch_knowledge/spell/grasp_of_decay/on_gain(mob/user)
. = ..()
priority_announce("A foul wind is blowing... The floor creaks with rust as something sinister approaches!", sound = 'sound/misc/notice1.ogg')
/datum/eldritch_knowledge/final/rust_final
name = "Rustbringer's Oath"
desc = "Bring three corpses onto a transmutation rune. After you finish the ritual, rust will now automatically spread from the rune. Your healing on rust is also tripled, while you become more resilient overall."
gain_text = "Champion of rust. Corruptor of steel. Fear the dark for the Rustbringer has come! Rusted Hills, CALL MY NAME!"
cost = 5
sacs_needed = 8
required_atoms = list(/mob/living/carbon/human)
route = PATH_RUST
@@ -160,15 +160,21 @@
gain_text = "This world will be my stage, and nothing will be out of my reach."
desc = "Gain the ability to mark a 7x7 area as your domain after a short delay. Creatures in your domain are slowed and branded with a void mark, allowing you to quickly teleport to them and slash them, further inhibiting their ability to move."
cost = 2
sacs_needed = 3
spell_to_add = /obj/effect/proc_holder/spell/aoe_turf/domain_expansion
next_knowledge = list(/datum/eldritch_knowledge/final/void_final)
route = PATH_VOID
/datum/eldritch_knowledge/spell/domain_expansion/on_gain(mob/user)
. = ..()
priority_announce("Echos of the lost in space are heard... An ominous presence is being detected! ", sound = 'sound/misc/notice1.ogg')
/datum/eldritch_knowledge/final/void_final
name = "Waltz at the End of Time"
desc = "Bring 3 corpses onto the transmutation rune. After you finish the ritual you will automatically silence people around you and will summon a snow storm around you."
gain_text = "The world falls into darkness. I stand in an empty plane, small flakes of ice fall from the sky. The Aristocrat stands before me, he motions to me. We will play a waltz to the whispers of dying reality, as the world is destroyed before our eyes."
cost = 5
sacs_needed = 8
required_atoms = list(/mob/living/carbon/human)
route = PATH_VOID
///soundloop for the void theme
@@ -61,6 +61,7 @@
name = "syndicate pinpointer"
desc = "A handheld tracking device that locks onto certain signals. It's configured to switch tracking modes once it detects the activation signal of a nuclear device."
icon_state = "pinpointer_syndicate"
item_state = "pinpointer_black"
/obj/item/pinpointer/syndicate_cyborg // Cyborg pinpointers just look for a random operative.
name = "cyborg syndicate pinpointer"
@@ -492,7 +492,7 @@
var/targetAmount = 100
/datum/objective/revenant/New()
targetAmount = rand(350,600)
targetAmount = rand(150,300)
explanation_text = "Absorb [targetAmount] points of essence from humans."
..()
@@ -0,0 +1,79 @@
/datum/antagonist/space_dragon
name = "Space Dragon"
roundend_category = "space dragons"
antagpanel_category = "Space Dragon"
job_rank = ROLE_SPACE_DRAGON
show_in_antagpanel = TRUE
show_name_in_check_antagonists = TRUE
var/list/datum/mind/carp = list()
/datum/antagonist/space_dragon/greet()
to_chat(owner, "<b>Endless time and space we have moved through. We do not remember from where we came, we do not know where we will go. All space belongs to us.\n\
Space is an empty void, of which our kind is the apex predator, and there was little to rival our claim to this title.\n\
But now, we find intruders spread out amongst our claim, willing to fight our teeth with magics unimaginable, their dens like lights flicking in the depths of space.\n\
Today, we will snuff out one of those lights.</b>")
to_chat(owner, "<span class='boldwarning'>You have five minutes to find a safe location to place down the first rift. If you take longer than five minutes to place a rift, you will be returned from whence you came.\n\
Alt click to cause a gust around you!</span>")
owner.announce_objectives()
SEND_SOUND(owner.current, sound('sound/magic/demon_attack1.ogg'))
/datum/antagonist/space_dragon/proc/forge_objectives()
var/datum/objective/summon_carp/summon = new()
summon.dragon = src
objectives += summon
/datum/antagonist/space_dragon/on_gain()
forge_objectives()
. = ..()
/datum/objective/summon_carp
var/datum/antagonist/space_dragon/dragon
explanation_text = "Summon and protect the rifts to flood the station with carp."
/datum/antagonist/space_dragon/roundend_report()
var/list/parts = list()
var/datum/objective/summon_carp/S = locate() in objectives
if(S.check_completion())
parts += "<span class='redtext big'>The [name] has succeeded! Station space has been reclaimed by the space carp!</span>"
parts += printplayer(owner)
var/objectives_complete = TRUE
if(objectives.len)
parts += printobjectives(objectives)
for(var/datum/objective/objective in objectives)
if(!objective.check_completion())
objectives_complete = FALSE
break
if(objectives_complete)
parts += "<span class='greentext big'>The [name] was successful!</span>"
else
parts += "<span class='redtext big'>The [name] has failed!</span>"
parts += "<span class='header'>The [name] was assisted by:</span>"
parts += printplayerlist(carp)
return "<div class='panel redborder'>[parts.Join("<br>")]</div>"
/datum/antagonist/space_dragon/admin_add(datum/mind/new_owner, mob/admin)
// pick the spawn loc
var/list/spawn_locs = list()
for(var/obj/effect/landmark/carpspawn/carp_spawn in GLOB.landmarks_list)
if(!isturf(carp_spawn.loc))
stack_trace("Carp spawn found not on a turf: [carp_spawn.type] on [isnull(carp_spawn.loc) ? "null" : carp_spawn.loc.type]")
continue
spawn_locs += carp_spawn.loc
if(!spawn_locs.len)
message_admins("No valid spawn locations found, aborting...")
return MAP_ERROR
// spawn our dragon
var/mob/living/simple_animal/hostile/space_dragon/S = new(pick(spawn_locs))
// gib or delete the old mob here
new_owner.current.gib()
// alternativelly, isntead of using the code above to pick a location, we can gib the mob, then spawn the dragon where it died for a goresome transformation
//mind transfer and role setup
new_owner.transfer_to(S)
new_owner.assigned_role = "Space Dragon"
new_owner.special_role = "Space Dragon"
playsound(S, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
. = ..()
return SUCCESSFUL_SPAWN
@@ -244,6 +244,7 @@
name = "contractor pinpointer"
desc = "A handheld tracking device that locks onto certain signals. Ignores suit sensors, but is much less accurate."
icon_state = "pinpointer_syndicate"
item_state = "pinpointer_black"
minimum_range = 25
has_owner = TRUE
ignore_suit_sensor_level = TRUE
@@ -145,7 +145,7 @@
if("VICTIM")
var/mob/living/carbon/human/T = target
var/datum/antagonist/cult/C = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
if(C?.cult_team.is_sacrifice_target(T.mind))
if(C && C.cult_team.is_sacrifice_target(T.mind))
if(iscultist(user))
to_chat(user, "<span class='cult'><b>\"This soul is mine.</b></span> <span class='cultlarge'>SACRIFICE THEM!\"</span>")
else
@@ -252,6 +252,10 @@
name = "Barnyard Curse"
spell_type = /obj/effect/proc_holder/spell/pointed/barnyardcurse
/datum/spellbook_entry/cluwne
name = "Cluwne Curse"
spell_type = /obj/effect/proc_holder/spell/targeted/cluwnecurse
/datum/spellbook_entry/charge
name = "Charge"
spell_type = /obj/effect/proc_holder/spell/targeted/charge
@@ -166,6 +166,13 @@
)
parents = list("font-awesome.css" = 'html/font-awesome/css/all.min.css')
/datum/asset/simple/namespaced/tgfont
assets = list(
"tgfont.eot" = 'tgui/packages/tgfont/dist/tgfont.eot',
"tgfont.woff2" = 'tgui/packages/tgfont/dist/tgfont.woff2',
)
parents = list("tgfont.css" = 'tgui/packages/tgfont/dist/tgfont.css')
/datum/asset/spritesheet/chat
name = "chat"
@@ -21,7 +21,7 @@
air_contents.set_volume(volume)
air_contents.set_temperature(T20C)
if(gas_type)
air_contents.set_moles(AIR_CONTENTS)
air_contents.set_moles(gas_type, AIR_CONTENTS)
name = "[name] ([GLOB.meta_gas_names[gas_type]])"
setPipingLayer(piping_layer)
@@ -32,8 +32,8 @@
/obj/machinery/atmospherics/components/unary/tank/air/New()
..()
var/datum/gas_mixture/air_contents = airs[1]
air_contents.set_moles(/datum/gas/oxygen, AIR_CONTENTS * 0.2)
air_contents.set_moles(/datum/gas/nitrogen, AIR_CONTENTS * 0.8)
air_contents.set_moles(/datum/gas/oxygen, AIR_CONTENTS * 0.21)
air_contents.set_moles(/datum/gas/nitrogen, AIR_CONTENTS * 0.79)
/obj/machinery/atmospherics/components/unary/tank/carbon_dioxide
gas_type = /datum/gas/carbon_dioxide
+1 -1
View File
@@ -96,7 +96,7 @@
var/static/list/blacklisted_error = typecacheof(list(
/obj/structure/closet/crate/secure,
/obj/structure/closet/crate/large,
/obj/structure/closet/secure_closet/goodies
/obj/structure/closet/secure_closet/cargo
))
if(is_type_in_list(container, blacklisted_error))
P.errors &= ~MANIFEST_ERROR_ITEM
+2 -2
View File
@@ -22,8 +22,8 @@
/datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account)
var/obj/structure/closet/crate/C
if(paying_account)
if(ispath(crate_type, /obj/structure/closet/secure_closet/goodies)) // lets ensure private orders don't come in crates when the original one comes in lockers
C = new /obj/structure/closet/secure_closet/goodies/owned(A, paying_account) // that would lead to infinite money exploits
if(ispath(crate_type, /obj/structure/closet/secure_closet/cargo)) // lets ensure private orders don't come in crates when the original one comes in lockers
C = new /obj/structure/closet/secure_closet/cargo/owned(A, paying_account) // that would lead to infinite money exploits
else
C = new /obj/structure/closet/crate/secure/owned(A, paying_account)
C.name = "[crate_name] - Purchased by [paying_account.account_holder]"
+10 -10
View File
@@ -14,56 +14,56 @@
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/materials/cardboard50
crate_type = /obj/structure/closet/secure_closet/goodies
crate_type = /obj/structure/closet/secure_closet/cargo
name = "50 Cardboard Sheets"
desc = "Create a bunch of boxes."
cost = 300 //thrice their export value
contains = list(/obj/item/stack/sheet/cardboard/fifty)
/datum/supply_pack/materials/glass50
crate_type = /obj/structure/closet/secure_closet/goodies
crate_type = /obj/structure/closet/secure_closet/cargo
name = "50 Glass Sheets"
desc = "Let some nice light in with fifty glass sheets!"
cost = 300 //double their export value
contains = list(/obj/item/stack/sheet/glass/fifty)
/datum/supply_pack/materials/metal50
crate_type = /obj/structure/closet/secure_closet/goodies
crate_type = /obj/structure/closet/secure_closet/cargo
name = "50 Metal Sheets"
desc = "Any construction project begins with a good stack of fifty metal sheets!"
cost = 300 //double their export value
contains = list(/obj/item/stack/sheet/metal/fifty)
/datum/supply_pack/materials/plasteel20
crate_type = /obj/structure/closet/secure_closet/goodies
crate_type = /obj/structure/closet/secure_closet/cargo
name = "20 Plasteel Sheets"
desc = "Reinforce the station's integrity with twenty plasteel sheets!"
cost = 4000
contains = list(/obj/item/stack/sheet/plasteel/twenty)
/datum/supply_pack/materials/plastic50
crate_type = /obj/structure/closet/secure_closet/goodies
name = "50 Plastic Sheets"
/datum/supply_pack/materials/plastic20
crate_type = /obj/structure/closet/secure_closet/cargo
name = "20 Plastic Sheets"
desc = "Build a limitless amount of toys with fifty plastic sheets!"
cost = 200 // double their export
contains = list(/obj/item/stack/sheet/plastic/twenty)
/datum/supply_pack/materials/sandstone30
crate_type = /obj/structure/closet/secure_closet/goodies
crate_type = /obj/structure/closet/secure_closet/cargo
name = "30 Sandstone Blocks"
desc = "Neither sandy nor stoney, these thirty blocks will still get the job done."
cost = 150 // five times their export
contains = list(/obj/item/stack/sheet/mineral/sandstone/thirty)
/datum/supply_pack/materials/wood20
crate_type = /obj/structure/closet/secure_closet/goodies
crate_type = /obj/structure/closet/secure_closet/cargo
name = "20 Wood Planks"
desc = "Turn cargo's boring metal groundwork into beautiful panelled flooring and much more with twenty wooden planks!"
cost = 400 // 6-7 planks shy from having equal import/export prices
contains = list(/obj/item/stack/sheet/mineral/wood/twenty)
/datum/supply_pack/materials/rcdammo
crate_type = /obj/structure/closet/secure_closet/goodies
crate_type = /obj/structure/closet/secure_closet/cargo
name = "Large RCD ammo Single-Pack"
desc = "A single large compressed RCD matter pack, to help with any holes or projects people might be working on."
cost = 600
+1 -1
View File
@@ -370,7 +370,7 @@
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/misc/carpet
crate_type = /obj/structure/closet/secure_closet/goodies
crate_type = /obj/structure/closet/secure_closet/cargo
name = "Classic Carpet Single-Pack"
desc = "Plasteel floor tiles getting on your nerves? This 50 units stack of extra soft carpet will tie any room together."
cost = 200
@@ -76,6 +76,18 @@
if(!silent)
to_chat(user, "<span class='warning'>With [src] off of your arms, you feel less ready to punch things.</span>")
/obj/item/clothing/gloves/fingerless/pugilist/crafted
unique_reskin = list("Short" = "armwraps",
"Extended" = "armwraps_extended"
)
/obj/item/clothing/gloves/fingerless/pugilist/crafted/reskin_obj(mob/M)
. = ..()
if(icon_state == "armwraps_extended")
item_state = "armwraps_extended"
else
return
/obj/item/clothing/gloves/fingerless/pugilist/chaplain
name = "armwraps of unyielding resolve"
desc = "A series of armwraps, soaked in holy water. Makes you pretty keen to smite evil magic users."
+106
View File
@@ -0,0 +1,106 @@
/obj/item/clothing/mask/gas/cluwne
name = "clown wig and mask"
desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask."
flags_cover = MASKCOVERSEYES
icon_state = "cluwne"
item_state = "cluwne"
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
clothing_flags = ALLOWINTERNALS
item_flags = ABSTRACT | DROPDEL
flags_inv = HIDEEARS|HIDEEYES
var/voicechange = TRUE
var/last_sound = 0
var/delay = 15
/obj/item/clothing/mask/gas/cluwne/Initialize()
.=..()
ADD_TRAIT(src, TRAIT_NODROP, CLOTHING_TRAIT)
ADD_TRAIT(src, CURSED_ITEM_TRAIT, CLOTHING_TRAIT)
/obj/item/clothing/mask/gas/cluwne/proc/play_laugh1()
if(world.time - delay > last_sound)
playsound (src, 'sound/voice/cluwnelaugh1.ogg', 30, 1)
last_sound = world.time
/obj/item/clothing/mask/gas/cluwne/proc/play_laugh2()
if(world.time - delay > last_sound)
playsound (src, 'sound/voice/cluwnelaugh2.ogg', 30, 1)
last_sound = world.time
/obj/item/clothing/mask/gas/cluwne/proc/play_laugh3()
if(world.time - delay > last_sound)
playsound (src, 'sound/voice/cluwnelaugh3.ogg', 30, 1)
last_sound = world.time
/obj/item/clothing/mask/gas/cluwne/equipped(mob/user, slot) //when you put it on
var/mob/living/carbon/C = user
if((C.wear_mask == src) && (voicechange))
play_laugh1()
return ..()
/obj/item/clothing/mask/gas/cluwne/handle_speech(datum/source, list/speech_args)
if(voicechange)
if(prob(5)) //the brain isn't fully gone yet...
speech_args[SPEECH_MESSAGE] = pick("HELP ME!!","PLEASE KILL ME!!","I WANT TO DIE!!", "END MY SUFFERING", "I CANT TAKE THIS ANYMORE!!" ,"SOMEBODY STOP ME!!")
play_laugh2()
if(prob(3))
speech_args[SPEECH_MESSAGE] = pick("HOOOOINKKKKKKK!!", "HOINK HOINK HOINK HOINK!!","HOINK HOINK!!","HOOOOOOIIINKKKK!!") //but most of the time they cant speak,
play_laugh3()
else
speech_args[SPEECH_MESSAGE] = pick("HEEEENKKKKKK!!", "HONK HONK HONK HONK!!","HONK HONK!!","HOOOOOONKKKK!!") //More sounds,
play_laugh1()
return SPEECH_MESSAGE
/obj/item/clothing/mask/gas/cluwne/equipped(mob/user, slot)
. = ..()
if(!ishuman(user))
return
if(slot == SLOT_WEAR_MASK)
var/mob/living/carbon/human/H = user
H.dna.add_mutation(CLUWNEMUT)
return
/obj/item/clothing/mask/gas/cluwne/happy_cluwne
name = "Happy Cluwne Mask"
desc = "The mask of a poor cluwne that has been scrubbed of its curse by the Nanotrasen supernatural machinations division. Guaranteed to be %99 curse free and %99.9 not haunted. "
item_flags = ABSTRACT
var/can_cluwne = FALSE
var/is_cursed = FALSE //i don't care that this is *slightly* memory wasteful, it's just one more byte and it's not like some madman is going to spawn thousands of these
var/is_very_cursed = FALSE
/obj/item/clothing/mask/gas/cluwne/happy_cluwne/Initialize()
.=..()
if(prob(1)) //this function pre-determines the logic of the cluwne mask. applying and reapplying the mask does not alter or change anything
is_cursed = TRUE
is_very_cursed = FALSE
else if(prob(0.1))
is_cursed = FALSE
is_very_cursed = TRUE
/obj/item/clothing/mask/gas/cluwne/happy_cluwne/attack_self(mob/user)
voicechange = !voicechange
to_chat(user, "<span class='notice'>You turn the voice box [voicechange ? "on" : "off"]!</span>")
if(voicechange)
play_laugh1()
/obj/item/clothing/mask/gas/cluwne/happy_cluwne/equipped(mob/user, slot)
. = ..()
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
if(slot == SLOT_WEAR_MASK)
if(is_cursed && can_cluwne) //logic predetermined
log_admin("[key_name(H)] was made into a cluwne by [src]")
message_admins("[key_name(H)] got cluwned by [src]")
to_chat(H, "<span class='userdanger'>The masks straps suddenly tighten to your face and your thoughts are erased by a horrible green light!</span>")
H.dropItemToGround(src)
H.cluwneify()
qdel(src)
else if(is_very_cursed && can_cluwne)
var/turf/T = get_turf(src)
var/mob/living/simple_animal/hostile/floor_cluwne/S = new(T)
S.Acquire_Victim(user)
log_admin("[key_name(user)] summoned a floor cluwne using the [src]")
message_admins("[key_name(user)] summoned a floor cluwne using the [src]")
to_chat(H, "<span class='warning'>The mask suddenly slips off your face and... slides under the floor?</span>")
to_chat(H, "<i>...dneirf uoy ot gnoleb ton seod tahT</i>")
+29
View File
@@ -0,0 +1,29 @@
/obj/item/clothing/shoes/clown_shoes/cluwne
desc = "The prankster's standard-issue clowning shoes. Damn, they're huge!"
name = "clown shoes"
icon_state = "cluwne"
item_state = "cluwne"
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
item_flags = DROPDEL
var/footstep = 1
/obj/item/clothing/shoes/clown_shoes/cluwne/Initialize()
.=..()
ADD_TRAIT(src, TRAIT_NODROP, CLOTHING_TRAIT)
ADD_TRAIT(src, CURSED_ITEM_TRAIT, CLOTHING_TRAIT)
/obj/item/clothing/shoes/clown_shoes/cluwne/step_action()
if(footstep > 1)
playsound(src, "clownstep", 50, 1)
footstep = 0
else
footstep++
/obj/item/clothing/shoes/clown_shoes/cluwne/equipped(mob/user, slot)
. = ..()
if(!ishuman(user))
return
if(slot == SLOT_SHOES)
var/mob/living/carbon/human/H = user
H.dna.add_mutation(CLUWNEMUT)
return
@@ -255,6 +255,13 @@
item_state = "maidapron"
minimize_when_attached = FALSE
/obj/item/clothing/accessory/sleevecrop
name = "one sleeved crop top"
desc = "Off the shoulder crop top, for those nights out partying."
icon_state = "sleevecrop"
item_state = "sleevecrop"
minimize_when_attached = FALSE
//////////
//Medals//
//////////
@@ -466,6 +473,7 @@
////////////////
//HA HA! NERD!//
////////////////
/obj/item/clothing/accessory/pocketprotector
name = "pocket protector"
desc = "Can protect your clothing from ink stains, but you'll look like a nerd if you're using one."
+22
View File
@@ -0,0 +1,22 @@
/obj/item/clothing/under/cluwne
name = "clown suit"
desc = "<i>'HONK!'</i>"
icon_state = "greenclown"
item_state = "greenclown"
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
item_flags = DROPDEL
can_adjust = 0
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
/obj/item/clothing/under/cluwne/Initialize()
.=..()
ADD_TRAIT(src, TRAIT_NODROP, CLOTHING_TRAIT)
ADD_TRAIT(src, CURSED_ITEM_TRAIT, CLOTHING_TRAIT)
/obj/item/clothing/under/cluwne/equipped(mob/living/carbon/user, slot)
if(!ishuman(user))
return
if(slot == SLOT_W_UNIFORM)
var/mob/living/carbon/human/H = user
H.dna.add_mutation(CLUWNEMUT)
return ..()
+2 -1
View File
@@ -56,7 +56,7 @@
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
icon_state = "tactifool"
item_state = "bl_suit"
has_sensor = TRUE
has_sensor = HAS_SENSORS
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 5)
/obj/item/clothing/under/syndicate/cosmetic/skirt
@@ -64,6 +64,7 @@
icon_state = "tactifool_skirt"
fitted = FEMALE_UNIFORM_TOP
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
can_adjust = FALSE
/obj/item/clothing/under/syndicate/sniper
name = "Tactical turtleneck suit"
+19 -9
View File
@@ -102,9 +102,14 @@
desc = "An uniform worn by command officers since 2420s."
icon_state = "orv_com"
/obj/item/clothing/under/trek/engsec/orv
/obj/item/clothing/under/trek/eng/orv
desc = "An uniform worn by operations officers since 2420s."
icon_state = "orv_ops"
icon_state = "orv_eng"
/obj/item/clothing/under/trek/sec/orv
desc = "An uniform worn by security officers since 2420s."
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30, "wound" = 10)
icon_state = "orv_sec"
/obj/item/clothing/under/trek/medsci/orv
desc = "An uniform worn by medsci officers since 2420s."
@@ -114,13 +119,20 @@
//honestly no idea why i added specified comm. uniforms but w/e
/obj/item/clothing/under/trek/command/orv/captain
name = "captain uniform"
desc = "An uniform worn by captains since 2550s."
desc = "An uniform worn by captains and commanders since 2550s."
icon_state = "orv_com_capt"
/obj/item/clothing/under/trek/command/orv/engsec
name = "operations command uniform"
desc = "An uniform worn by operations command officers since 2550s."
icon_state = "orv_com_ops"
/obj/item/clothing/under/trek/command/orv/eng
name = "engineering command uniform"
desc = "An uniform worn by Chief Engineers since 2550s."
icon_state = "orv_com_eng"
/obj/item/clothing/under/trek/command/orv/sec
name = "security command uniform"
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 10)
desc = "An uniform worn by Heads of Security since 2550s."
icon_state = "orv_com_sec"
/obj/item/clothing/under/trek/command/orv/medsci
name = "medsci command uniform"
@@ -131,13 +143,11 @@
name = "adjutant uniform"
desc = "An uniform worn by adjutants <i>(assistants)</i> since 2550s."
icon_state = "orv_ass"
item_state = "gy_suit"
/obj/item/clothing/under/trek/orv/service
name = "service uniform"
desc = "An uniform worn by service officers since 2550s."
icon_state = "orv_srv"
item_state = "g_suit"
//The Motion Picture
/obj/item/clothing/under/trek/fedutil
+22
View File
@@ -0,0 +1,22 @@
/datum/round_event_control/cat_surgeon
name = "Cat Surgeon"
typepath = /datum/round_event/cat_surgeon
max_occurrences = 1
weight = 10
/datum/round_event/cat_surgeon/start()
var/list/spawn_locs = list()
for(var/X in GLOB.xeno_spawn)
spawn_locs += X
if(!spawn_locs.len)
message_admins("No valid spawn locations found, aborting...")
return MAP_ERROR
var/turf/T = get_turf(pick(spawn_locs))
var/mob/living/simple_animal/hostile/cat_butcherer/S = new(T)
playsound(S, 'sound/misc/catscream.ogg', 50, 1, -1)
message_admins("A cat surgeon has been spawned at [COORD(T)][ADMIN_JMP(T)]")
log_game("A cat surgeon has been spawned at [COORD(T)]")
return SUCCESSFUL_SPAWN
+23
View File
@@ -0,0 +1,23 @@
/datum/round_event_control/floor_cluwne
name = "Floor Cluwne"
typepath = /datum/round_event/floor_cluwne
max_occurrences = 1
min_players = 20
weight = 10
/datum/round_event/floor_cluwne/start()
var/list/spawn_locs = list()
for(var/X in GLOB.xeno_spawn)
spawn_locs += X
if(!spawn_locs.len)
message_admins("No valid spawn locations found, aborting...")
return MAP_ERROR
var/turf/T = get_turf(pick(spawn_locs))
var/mob/living/simple_animal/hostile/floor_cluwne/S = new(T)
playsound(S, 'sound/misc/bikehorn_creepy.ogg', 50, 1, -1)
message_admins("A floor cluwne has been spawned at [COORD(T)][ADMIN_JMP(T)]")
log_game("A floor cluwne has been spawned at [COORD(T)]")
return SUCCESSFUL_SPAWN
+45
View File
@@ -0,0 +1,45 @@
/datum/round_event_control/space_dragon
name = "Spawn Space Dragon"
typepath = /datum/round_event/ghost_role/space_dragon
weight = 8
max_occurrences = 1
min_players = 20
/datum/round_event/ghost_role/space_dragon
minimum_required = 1
role_name = "Space Dragon"
announceWhen = 10
/datum/round_event/ghost_role/space_dragon/announce(fake)
priority_announce("A large organic energy flux has been recorded near of [station_name()], please stand-by.", "Lifesign Alert")
/datum/round_event/ghost_role/space_dragon/spawn_role()
var/list/spawn_locs = list()
for(var/obj/effect/landmark/carpspawn/carp_spawn in GLOB.landmarks_list)
if(!isturf(carp_spawn.loc))
stack_trace("Carp spawn found not on a turf: [carp_spawn.type] on [isnull(carp_spawn.loc) ? "null" : carp_spawn.loc.type]")
continue
spawn_locs += carp_spawn.loc
if(!spawn_locs.len)
message_admins("No valid spawn locations found, aborting...")
return MAP_ERROR
var/list/candidates = get_candidates(ROLE_SPACE_DRAGON, null, ROLE_SPACE_DRAGON)
if(!candidates.len)
return NOT_ENOUGH_PLAYERS
var/mob/dead/selected = pick_n_take(candidates)
var/datum/mind/player_mind = new /datum/mind(selected.key)
player_mind.active = TRUE
var/mob/living/simple_animal/hostile/space_dragon/S = new(pick(spawn_locs))
player_mind.transfer_to(S)
player_mind.assigned_role = "Space Dragon"
player_mind.special_role = "Space Dragon"
player_mind.add_antag_datum(/datum/antagonist/space_dragon)
playsound(S, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Space Dragon by an event.")
log_game("[key_name(S)] was spawned as a Space Dragon by an event.")
spawned_mobs += S
return SUCCESSFUL_SPAWN
Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

@@ -391,6 +391,15 @@
bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1)
tastes = list("meat" = 3, "smokey sauce" = 1)
foodtype = MEAT
/obj/item/reagent_containers/food/snacks/goliathcalamari
name = "goliath calamari"
desc = "ACKCHYUALLY, this isn't calamari, guys!"
icon_state = "goliathcalamari"
bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/consumable/capsaicin = 1)
list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/capsaicin = 2)
tastes = list("rock" = 1, "meat" = 1)
foodtype = MEAT
////////////// Cubes //////////
@@ -213,3 +213,12 @@
)
result = /obj/item/reagent_containers/food/snacks/salad/gumbo
subcategory = CAT_MEAT
/datum/crafting_recipe/food/goliathcalamari
name = "Goliath Calamari"
reqs = list(
/obj/item/reagent_containers/food/snacks/meat/slab/goliath = 2,
/datum/reagent/consumable/cooking_oil = 10
)
result = /obj/item/reagent_containers/food/snacks/goliathcalamari
subcategory = CAT_MEAT
@@ -266,6 +266,8 @@
desc = "A wooden rod about the size of your forearm with a snake carved around it, winding it's way up the sides of the rod. Something about it seems to inspire in you the responsibilty and duty to help others."
icon = 'icons/obj/lavaland/artefacts.dmi'
icon_state = "asclepius_dormant"
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
var/activated = FALSE
var/usedHand
+2
View File
@@ -11,6 +11,8 @@
/obj/item/storage/bag/money/Initialize()
. = ..()
if(prob(20))
icon_state = "moneybagalt"
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_w_class = WEIGHT_CLASS_NORMAL
STR.max_items = 40
@@ -101,6 +101,13 @@
matrixed_sections = MATRIX_RED
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
/datum/sprite_accessory/ears/lablight
name = "Dog, Floppy (Light)"
icon_state = "lablight"
color_src = MATRIXED
matrixed_sections = MATRIX_RED
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
/datum/sprite_accessory/ears/human/eevee
name = "Eevee"
icon_state = "eevee"
@@ -351,10 +358,15 @@
matrixed_sections = MATRIX_RED_GREEN
/datum/sprite_accessory/ears/mam_ears/lab
name = "Dog, Long"
name = "Dog, Floppy"
icon_state = "lab"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/lablight
name = "Dog, Floppy (Light)"
icon_state = "lablight"
matrixed_sections = MATRIX_RED
/datum/sprite_accessory/ears/mam_ears/murid
name = "Murid"
icon_state = "murid"

Some files were not shown because too many files have changed in this diff Show More