Files
GS13NG/code/modules/admin/verbs/randomverbs.dm
DeltaFire 8c89d3193d 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
2021-06-21 17:50:24 +02:00

1720 lines
62 KiB
Plaintext

/client/proc/cmd_admin_drop_everything(mob/M in GLOB.mob_list)
set category = null
set name = "Drop Everything"
if(!check_rights(R_ADMIN))
return
var/confirm = alert(src, "Make [M] drop everything?", "Message", "Yes", "No")
if(confirm != "Yes")
return
for(var/obj/item/W in M)
if(!M.dropItemToGround(W))
qdel(W)
M.regenerate_icons()
log_admin("[key_name(usr)] made [key_name(M)] drop everything!")
var/msg = "[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] drop everything!"
message_admins(msg)
admin_ticket_log(M, msg)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Drop Everything") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_subtle_message(mob/M in GLOB.mob_list)
set category = "Admin.Events"
set name = "Subtle Message"
if(!ismob(M))
return
if(!check_rights(R_ADMIN))
return
message_admins("[key_name_admin(src)] has started answering [ADMIN_LOOKUPFLW(M)]'s prayer.")
var/msg = input("Message:", text("Subtle PM to [M.key]")) as text|null
if (!msg)
message_admins("[key_name_admin(src)] decided not to answer [ADMIN_LOOKUPFLW(M)]'s prayer")
return
if(usr)
if (usr.client)
if(usr.client.holder)
to_chat(M, "<i>You hear a voice in your head... <b>[msg]</i></b>")
log_admin("SubtlePM: [key_name(usr)] -> [key_name(M)] : [msg]")
msg = "<span class='adminnotice'><b> SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] :</b> [msg]</span>"
message_admins(msg)
admin_ticket_log(M, msg)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Subtle Message") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_headset_message(mob/M in GLOB.mob_list)
set category = "Admin.Events"
set name = "Headset Message"
admin_headset_message(M)
/client/proc/admin_headset_message(mob/M in GLOB.mob_list, sender = null)
var/mob/living/carbon/human/H = M
if(!check_rights(R_ADMIN))
return
if(!istype(H))
to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human")
return
if(!istype(H.ears, /obj/item/radio/headset))
to_chat(usr, "The person you are trying to contact is not wearing a headset.")
return
if (!sender)
sender = input("Who is the message from?", "Sender") as null|anything in list(RADIO_CHANNEL_CENTCOM,RADIO_CHANNEL_SYNDICATE)
if(!sender)
return
message_admins("[key_name_admin(src)] has started answering [key_name_admin(H)]'s [sender] request.")
var/input = input("Please enter a message to reply to [key_name(H)] via their headset.","Outgoing message from [sender]", "") as text|null
if(!input)
message_admins("[key_name_admin(src)] decided not to answer [key_name_admin(H)]'s [sender] request.")
return
log_directed_talk(mob, H, input, LOG_ADMIN, "reply")
message_admins("[key_name_admin(src)] replied to [key_name_admin(H)]'s [sender] message with: \"[input]\"")
to_chat(H, "You hear something crackle in your ears for a moment before a voice speaks. \"Please stand by for a message from [sender == "Syndicate" ? "your benefactor" : "Central Command"]. Message as follows[sender == "Syndicate" ? ", agent." : ":"] <span class='bold'>[input].</span> Message ends.\"")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Headset Message") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_mod_antag_rep(client/C in GLOB.clients, var/operation)
set category = "Special Verbs"
set name = "Modify Antagonist Reputation"
if(!check_rights(R_ADMIN))
return
var/msg = ""
var/log_text = ""
if(operation == "zero")
log_text = "Set to 0"
SSpersistence.antag_rep -= C.ckey
else
var/prompt = "Please enter the amount of reputation to [operation]:"
if(operation == "set")
prompt = "Please enter the new reputation value:"
msg = input("Message:", prompt) as num|null
if (!msg)
return
var/ANTAG_REP_MAXIMUM = CONFIG_GET(number/antag_rep_maximum)
if(operation == "set")
log_text = "Set to [num2text(msg)]"
SSpersistence.antag_rep[C.ckey] = max(0, min(msg, ANTAG_REP_MAXIMUM))
else if(operation == "add")
log_text = "Added [num2text(msg)]"
SSpersistence.antag_rep[C.ckey] = min(SSpersistence.antag_rep[C.ckey]+msg, ANTAG_REP_MAXIMUM)
else if(operation == "subtract")
log_text = "Subtracted [num2text(msg)]"
SSpersistence.antag_rep[C.ckey] = max(SSpersistence.antag_rep[C.ckey]-msg, 0)
else
to_chat(src, "Invalid operation for antag rep modification: [operation] by user [key_name(usr)]")
return
if(SSpersistence.antag_rep[C.ckey] <= 0)
SSpersistence.antag_rep -= C.ckey
log_admin("[key_name(usr)]: Modified [key_name(C)]'s antagonist reputation [log_text]")
message_admins("<span class='adminnotice'>[key_name_admin(usr)]: Modified [key_name(C)]'s antagonist reputation ([log_text])</span>")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Modify Antagonist Reputation") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_world_narrate()
set category = "Admin.Events"
set name = "Global Narrate"
if(!check_rights(R_ADMIN))
return
var/msg = input("Message:", text("Enter the text you wish to appear to everyone:")) as text|null
if (!msg)
return
to_chat(world, "[msg]")
log_admin("GlobalNarrate: [key_name(usr)] : [msg]")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] Sent a global narrate</span>")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Global Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_direct_narrate(mob/M)
set category = "Admin.Events"
set name = "Direct Narrate"
if(!check_rights(R_ADMIN))
return
if(!M)
M = input("Direct narrate to whom?", "Active Players") as null|anything in GLOB.player_list
if(!M)
return
var/msg = input("Message:", text("Enter the text you wish to appear to your target:")) as text|null
if( !msg )
return
to_chat(M, msg)
log_admin("DirectNarrate: [key_name(usr)] to ([M.name]/[M.key]): [msg]")
msg = "<span class='adminnotice'><b> DirectNarrate: [key_name(usr)] to ([M.name]/[M.key]):</b> [msg]<BR></span>"
message_admins(msg)
admin_ticket_log(M, msg)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Direct Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_local_narrate(atom/A)
set category = "Admin.Events"
set name = "Local Narrate"
if(!check_rights(R_ADMIN))
return
if(!A)
return
var/range = input("Range:", "Narrate to mobs within how many tiles:", 7) as num|null
if(!range)
return
var/msg = input("Message:", text("Enter the text you wish to appear to everyone within view:")) as text|null
if (!msg)
return
for(var/mob/M in view(range,A))
to_chat(M, msg)
log_admin("LocalNarrate: [key_name(usr)] at [AREACOORD(A)]: [msg]")
message_admins("<span class='adminnotice'><b> LocalNarrate: [key_name_admin(usr)] at [ADMIN_VERBOSEJMP(A)]:</b> [msg]<BR></span>")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Local Narrate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_godmode(mob/M in GLOB.mob_list)
set category = "Admin.Game"
set name = "Godmode"
if(!check_rights(R_ADMIN))
return
M.status_flags ^= GODMODE
to_chat(usr, "<span class='adminnotice'>Toggled [(M.status_flags & GODMODE) ? "ON" : "OFF"]</span>")
log_admin("[key_name(usr)] has toggled [key_name(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]")
var/msg = "[key_name_admin(usr)] has toggled [ADMIN_LOOKUPFLW(M)]'s nodamage to [(M.status_flags & GODMODE) ? "On" : "Off"]"
message_admins(msg)
admin_ticket_log(M, msg)
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Godmode", "[M.status_flags & GODMODE ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/proc/cmd_admin_mute(whom, mute_type, automute = 0)
if(!whom)
return
var/muteunmute
var/mute_string
var/feedback_string
switch(mute_type)
if(MUTE_IC)
mute_string = "IC (say and emote)"
feedback_string = "IC"
if(MUTE_OOC)
mute_string = "OOC"
feedback_string = "OOC"
if(MUTE_PRAY)
mute_string = "pray"
feedback_string = "Pray"
if(MUTE_ADMINHELP)
mute_string = "adminhelp, admin PM and ASAY"
feedback_string = "Adminhelp"
if(MUTE_DEADCHAT)
mute_string = "deadchat and DSAY"
feedback_string = "Deadchat"
if(MUTE_ALL)
mute_string = "everything"
feedback_string = "Everything"
else
return
var/client/C
if(istype(whom, /client))
C = whom
else if(istext(whom))
C = GLOB.directory[whom]
else
return
var/datum/preferences/P
if(C)
P = C.prefs
else
P = GLOB.preferences_datums[whom]
if(!P)
return
if(automute)
if(!CONFIG_GET(flag/automute_on))
return
else
if(!check_rights())
return
if(automute)
muteunmute = "auto-muted"
P.muted |= mute_type
log_admin("SPAM AUTOMUTE: [muteunmute] [key_name(whom)] from [mute_string]")
message_admins("SPAM AUTOMUTE: [muteunmute] [key_name_admin(whom)] from [mute_string].")
if(C)
to_chat(C, "You have been [muteunmute] from [mute_string] by the SPAM AUTOMUTE system. Contact an admin.")
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Auto Mute [feedback_string]", "1")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
if(P.muted & mute_type)
muteunmute = "unmuted"
P.muted &= ~mute_type
else
muteunmute = "muted"
P.muted |= mute_type
log_admin("[key_name(usr)] has [muteunmute] [key_name(whom)] from [mute_string]")
message_admins("[key_name_admin(usr)] has [muteunmute] [key_name_admin(whom)] from [mute_string].")
if(C)
to_chat(C, "You have been [muteunmute] from [mute_string] by [key_name(usr, include_name = FALSE)].")
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Mute [feedback_string]", "[P.muted & mute_type]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
//I use this proc for respawn character too. /N
/proc/create_xeno(ckey)
if(!ckey)
var/list/candidates = list()
for(var/mob/M in GLOB.player_list)
if(M.stat != DEAD)
continue //we are not dead!
if(!(ROLE_ALIEN in M.client.prefs.be_special))
continue //we don't want to be an alium
if(M.client.is_afk())
continue //we are afk
if(M.mind && M.mind.current && M.mind.current.stat != DEAD)
continue //we have a live body we are tied to
candidates += M.ckey
if(candidates.len)
ckey = input("Pick the player you want to respawn as a xeno.", "Suitable Candidates") as null|anything in candidates
else
to_chat(usr, "<span class='danger'>Error: create_xeno(): no suitable candidates.</span>")
if(!istext(ckey))
return 0
var/alien_caste = input(usr, "Please choose which caste to spawn.","Pick a caste",null) as null|anything in list("Queen","Praetorian","Hunter","Sentinel","Drone","Larva")
var/obj/effect/landmark/spawn_here = GLOB.xeno_spawn.len ? pick(GLOB.xeno_spawn) : null
var/mob/living/carbon/alien/new_xeno
switch(alien_caste)
if("Queen")
new_xeno = new /mob/living/carbon/alien/humanoid/royal/queen(spawn_here)
if("Praetorian")
new_xeno = new /mob/living/carbon/alien/humanoid/royal/praetorian(spawn_here)
if("Hunter")
new_xeno = new /mob/living/carbon/alien/humanoid/hunter(spawn_here)
if("Sentinel")
new_xeno = new /mob/living/carbon/alien/humanoid/sentinel(spawn_here)
if("Drone")
new_xeno = new /mob/living/carbon/alien/humanoid/drone(spawn_here)
if("Larva")
new_xeno = new /mob/living/carbon/alien/larva(spawn_here)
else
return 0
if(!spawn_here)
SSjob.SendToLateJoin(new_xeno, FALSE)
new_xeno.ckey = ckey
var/msg = "<span class='notice'>[key_name_admin(usr)] has spawned [ckey] as a filthy xeno [alien_caste].</span>"
message_admins(msg)
admin_ticket_log(new_xeno, msg)
return 1
/*
If a guy was gibbed and you want to revive him, this is a good way to do so.
Works kind of like entering the game with a new character. Character receives a new mind if they didn't have one.
Traitors and the like can also be revived with the previous role mostly intact.
/N */
/client/proc/respawn_character()
set category = "Admin.Game"
set name = "Respawn Character"
set desc = "Respawn a person that has been gibbed/dusted/killed. They must be a ghost for this to work and preferably should not have a body to go back into."
if(!check_rights(R_ADMIN))
return
var/input = ckey(input(src, "Please specify which key will be respawned.", "Key", ""))
if(!input)
return
var/mob/dead/observer/G_found
for(var/mob/dead/observer/G in GLOB.player_list)
if(G.ckey == input)
G_found = G
break
if(!G_found)//If a ghost was not found.
to_chat(usr, "<font color='red'>There is no active key like that in the game or the person is not currently a ghost.</font>")
return
if(G_found.mind && !G_found.mind.active) //mind isn't currently in use by someone/something
//Check if they were an alien
if(G_found.mind.assigned_role == ROLE_ALIEN)
if(alert("This character appears to have been an alien. Would you like to respawn them as such?",,"Yes","No")=="Yes")
var/turf/T
if(GLOB.xeno_spawn.len)
T = pick(GLOB.xeno_spawn)
var/mob/living/carbon/alien/new_xeno
switch(G_found.mind.special_role)//If they have a mind, we can determine which caste they were.
if("Hunter")
new_xeno = new /mob/living/carbon/alien/humanoid/hunter(T)
if("Sentinel")
new_xeno = new /mob/living/carbon/alien/humanoid/sentinel(T)
if("Drone")
new_xeno = new /mob/living/carbon/alien/humanoid/drone(T)
if("Praetorian")
new_xeno = new /mob/living/carbon/alien/humanoid/royal/praetorian(T)
if("Queen")
new_xeno = new /mob/living/carbon/alien/humanoid/royal/queen(T)
else//If we don't know what special role they have, for whatever reason, or they're a larva.
create_xeno(G_found.ckey)
return
if(!T)
SSjob.SendToLateJoin(new_xeno, FALSE)
//Now to give them their mind back.
G_found.mind.transfer_to(new_xeno) //be careful when doing stuff like this! I've already checked the mind isn't in use
G_found.transfer_ckey(new_xeno, FALSE)
to_chat(new_xeno, "You have been fully respawned. Enjoy the game.")
var/msg = "<span class='adminnotice'>[key_name_admin(usr)] has respawned [new_xeno.key] as a filthy xeno.</span>"
message_admins(msg)
admin_ticket_log(new_xeno, msg)
return //all done. The ghost is auto-deleted
//check if they were a monkey
else if(findtext(G_found.real_name,"monkey"))
if(alert("This character appears to have been a monkey. Would you like to respawn them as such?",,"Yes","No")=="Yes")
var/mob/living/carbon/monkey/new_monkey = new
SSjob.SendToLateJoin(new_monkey)
G_found.mind.transfer_to(new_monkey) //be careful when doing stuff like this! I've already checked the mind isn't in use
G_found.transfer_ckey(new_monkey, FALSE)
to_chat(new_monkey, "You have been fully respawned. Enjoy the game.")
var/msg = "<span class='adminnotice'>[key_name_admin(usr)] has respawned [new_monkey.key] as a filthy xeno.</span>"
message_admins(msg)
admin_ticket_log(new_monkey, msg)
return //all done. The ghost is auto-deleted
//Ok, it's not a xeno or a monkey. So, spawn a human.
var/mob/living/carbon/human/new_character = new//The mob being spawned.
SSjob.SendToLateJoin(new_character)
var/datum/data/record/record_found //Referenced to later to either randomize or not randomize the character.
if(G_found.mind && !G_found.mind.active) //mind isn't currently in use by someone/something
/*Try and locate a record for the person being respawned through GLOB.data_core.
This isn't an exact science but it does the trick more often than not.*/
var/id = md5("[G_found.real_name][G_found.mind.assigned_role]")
record_found = find_record("id", id, GLOB.data_core.locked)
if(record_found)//If they have a record we can determine a few things.
new_character.real_name = record_found.fields["name"]
new_character.gender = record_found.fields["gender"]
new_character.age = record_found.fields["age"]
new_character.hardset_dna(record_found.fields["identity"], record_found.fields["enzymes"], null, record_found.fields["name"], record_found.fields["blood_type"], new record_found.fields["species"], record_found.fields["features"])
else
var/datum/preferences/A = new()
A.copy_to(new_character)
A.real_name = G_found.real_name
new_character.dna.update_dna_identity()
new_character.name = new_character.real_name
if(G_found.mind && !G_found.mind.active)
G_found.mind.transfer_to(new_character) //be careful when doing stuff like this! I've already checked the mind isn't in use
else
new_character.mind_initialize()
if(!new_character.mind.assigned_role)
new_character.mind.assigned_role = "Assistant"//If they somehow got a null assigned role.
G_found.transfer_ckey(new_character, FALSE)
/*
The code below functions with the assumption that the mob is already a traitor if they have a special role.
So all it does is re-equip the mob with powers and/or items. Or not, if they have no special role.
If they don't have a mind, they obviously don't have a special role.
*/
//Two variables to properly announce later on.
var/admin = key_name_admin(src)
var/player_key = G_found.key
//Now for special roles and equipment.
var/datum/antagonist/traitor/traitordatum = new_character.mind.has_antag_datum(/datum/antagonist/traitor)
if(traitordatum)
SSjob.EquipRank(new_character, new_character.mind.assigned_role, 1)
traitordatum.equip()
switch(new_character.mind.special_role)
if(ROLE_WIZARD)
new_character.forceMove(pick(GLOB.wizardstart))
var/datum/antagonist/wizard/A = new_character.mind.has_antag_datum(/datum/antagonist/wizard,TRUE)
A.equip_wizard()
if(ROLE_SYNDICATE)
new_character.forceMove(pick(GLOB.nukeop_start))
var/datum/antagonist/nukeop/N = new_character.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE)
N.equip_op()
if(ROLE_NINJA)
var/list/ninja_spawn = list()
for(var/obj/effect/landmark/carpspawn/L in GLOB.landmarks_list)
ninja_spawn += L
var/datum/antagonist/ninja/ninjadatum = new_character.mind.has_antag_datum(/datum/antagonist/ninja)
ninjadatum.equip_space_ninja()
if(ninja_spawn.len)
new_character.forceMove(pick(ninja_spawn))
else//They may also be a cyborg or AI.
switch(new_character.mind.assigned_role)
if("Cyborg")//More rigging to make em' work and check if they're traitor.
new_character = new_character.Robotize(TRUE)
if("AI")
new_character = new_character.AIize()
else
SSjob.EquipRank(new_character, new_character.mind.assigned_role, 1)//Or we simply equip them.
//Announces the character on all the systems, based on the record.
if(!issilicon(new_character))//If they are not a cyborg/AI.
if(!record_found&&new_character.mind.assigned_role!=new_character.mind.special_role)//If there are no records for them. If they have a record, this info is already in there. MODE people are not announced anyway.
//Power to the user!
if(alert(new_character,"Warning: No data core entry detected. Would you like to announce the arrival of this character by adding them to various databases, such as medical records?",,"No","Yes")=="Yes")
GLOB.data_core.manifest_inject(new_character)
if(alert(new_character,"Would you like an active AI to announce this character?",,"No","Yes")=="Yes")
AnnounceArrival(new_character, new_character.mind.assigned_role)
var/msg = "<span class='adminnotice'>[admin] has respawned [player_key] as [new_character.real_name].</span>"
message_admins(msg)
admin_ticket_log(new_character, msg)
to_chat(new_character, "You have been fully respawned. Enjoy the game.")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Respawn Character") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return new_character
/client/proc/cmd_admin_add_freeform_ai_law()
set category = "Admin.Events"
set name = "Add Custom AI law"
if(!check_rights(R_ADMIN))
return
var/input = input(usr, "Please enter anything you want the AI to do. Anything. Serious.", "What?", "") as text|null
if(!input)
return
log_admin("Admin [key_name(usr)] has added a new AI law - [input]")
message_admins("Admin [key_name_admin(usr)] has added a new AI law - [input]")
var/show_log = alert(src, "Show ion message?", "Message", "Yes", "No")
var/announce_ion_laws = (show_log == "Yes" ? 1 : -1)
var/datum/round_event/ion_storm/add_law_only/ion = new()
ion.announceEvent = announce_ion_laws
ion.ionMessage = input
SSblackbox.record_feedback("tally", "admin_verb", 1, "Add Custom AI Law") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_rejuvenate(mob/living/M in GLOB.mob_list)
set category = "Special Verbs"
set name = "Rejuvenate"
if(!check_rights(R_ADMIN))
return
if(!mob)
return
if(!istype(M))
alert("Cannot revive a ghost")
return
M.revive(full_heal = 1, admin_revive = 1)
log_admin("[key_name(usr)] healed / revived [key_name(M)]")
var/msg = "<span class='danger'>Admin [key_name_admin(usr)] healed / revived [ADMIN_LOOKUPFLW(M)]!</span>"
message_admins(msg)
admin_ticket_log(M, msg)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Rejuvinate") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_create_centcom_report()
set category = "Admin.Events"
set name = "Create Command Report"
if(!check_rights(R_ADMIN))
return
var/input = input(usr, "Enter a Command Report. Ensure it makes sense IC.", "What?", "") as message|null
if(!input)
return
var/confirm = alert(src, "Do you want to announce the contents of the report to the crew?", "Announce", "Yes", "No", "Cancel")
var/announce_command_report = TRUE
switch(confirm)
if("Yes")
priority_announce(input, null, "commandreport")
announce_command_report = FALSE
if("Cancel")
return
print_command_report(input, "[announce_command_report ? "Classified " : ""][command_name()] Update", announce_command_report)
log_admin("[key_name(src)] has created a command report: [input]")
message_admins("[key_name_admin(src)] has created a command report")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Create Command Report") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_make_priority_announcement()
set category = "Admin.Events"
set name = "Make Priority Announcement"
if(!check_rights(R_ADMIN))
return
var/input = input(usr, "Enter a priority announcement. Ensure it makes sense IC.", "What?", "") as message|null
if(!input)
return
var/title = input(src, "What should the title be?", "What?","") as text|null
var/special_name = input(src, "Who is making the announcement?", "Who?", "") as text|null
priority_announce(input, title, sender_override = special_name)
log_admin("[key_name(src)] has sent a priority announcement: [input]")
message_admins("[key_name_admin(src)] has made a priority announcement")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Priority Announcement") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_change_command_name()
set category = "Admin.Events"
set name = "Change Command Name"
if(!check_rights(R_ADMIN))
return
var/input = input(usr, "Please input a new name for Central Command.", "What?", "") as text|null
if(!input)
return
change_command_name(input)
message_admins("[key_name_admin(src)] has changed Central Command's name to [input]")
log_admin("[key_name(src)] has changed the Central Command name to: [input]")
/client/proc/cmd_admin_delete(atom/A as obj|mob|turf in world)
set category = "Admin"
set name = "Delete"
if(!check_rights(R_SPAWN|R_DEBUG))
return
admin_delete(A)
/client/proc/cmd_admin_list_open_jobs()
set category = "Admin.Game"
set name = "Manage Job Slots"
if(!check_rights(R_ADMIN))
return
holder.manage_free_slots()
SSblackbox.record_feedback("tally", "admin_verb", 1, "Manage Job Slots") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_explosion(atom/O as obj|mob|turf in world)
set category = "Admin.Fun"
set name = "Explosion"
if(!check_rights(R_ADMIN))
return
var/devastation = input("Range of total devastation. -1 to none", text("Input")) as num|null
if(devastation == null)
return
var/heavy = input("Range of heavy impact. -1 to none", text("Input")) as num|null
if(heavy == null)
return
var/light = input("Range of light impact. -1 to none", text("Input")) as num|null
if(light == null)
return
var/flash = input("Range of flash. -1 to none", text("Input")) as num|null
if(flash == null)
return
var/flames = input("Range of flames. -1 to none", text("Input")) as num|null
if(flames == null)
return
if ((devastation != -1) || (heavy != -1) || (light != -1) || (flash != -1) || (flames != -1))
if ((devastation > 20) || (heavy > 20) || (light > 20) || (flames > 20))
if (alert(src, "Are you sure you want to do this? It will laaag.", "Confirmation", "Yes", "No") == "No")
return
explosion(O, devastation, heavy, light, flash, null, null,flames)
log_admin("[key_name(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at [AREACOORD(O)]")
message_admins("[key_name_admin(usr)] created an explosion ([devastation],[heavy],[light],[flames]) at [AREACOORD(O)]")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Explosion") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
else
return
/client/proc/cmd_admin_emp(atom/O as obj|mob|turf in world)
set category = "Admin.Fun"
set name = "EM Pulse"
if(!check_rights(R_ADMIN))
return
var/range = input("Range.", text("Input")) as num|null
if(!range)
return
log_admin("[key_name(usr)] created an EM Pulse - log below") //because we'll just log the empulse itself
message_admins("[key_name_admin(usr)] created an EM Pulse at [AREACOORD(O)] with range [range]")
empulse_using_range(O, range, TRUE) //its details get shown too
SSblackbox.record_feedback("tally", "admin_verb", 1, "EM Pulse") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_gib(mob/M in GLOB.mob_list)
set category = "Admin.Fun"
set name = "Gib"
if(!check_rights(R_ADMIN))
return
var/confirm = alert(src, "Drop a brain?", "Confirm", "Yes", "No","Cancel")
if(confirm == "Cancel")
return
//Due to the delay here its easy for something to have happened to the mob
if(!M)
return
log_admin("[key_name(usr)] has gibbed [key_name(M)]")
message_admins("[key_name_admin(usr)] has gibbed [key_name_admin(M)]")
if(isobserver(M))
new /obj/effect/gibspawner/generic(get_turf(M))
return
if(confirm == "Yes")
M.gib()
else
M.gib(1)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Gib") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_gib_self()
set name = "Gibself"
set category = "Admin.Fun"
var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No")
if(confirm == "Yes")
log_admin("[key_name(usr)] used gibself.")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] used gibself.</span>")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Gib Self") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
mob.gib(1, 1, 1)
/client/proc/cmd_admin_check_contents(mob/living/M in GLOB.mob_list)
set category = "Special Verbs"
set name = "Check Contents"
var/list/L = M.get_contents()
for(var/t in L)
to_chat(usr, "[t]")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Check Contents") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggle_view_range()
set category = "Admin.Game"
set name = "Change View Range"
set desc = "switches between 1x and custom views"
if(view_size.getView() == view_size.default)
view_size.setTo(input("Select view range:", "FUCK YE", 7) in list(1,2,3,4,5,6,7,8,9,10,11,12,13,14,128) - 7)
else
view_size.resetToDefault(getScreenSize(prefs.widescreenpref))
log_admin("[key_name(usr)] changed their view range to [view].")
//message_admins("\blue [key_name_admin(usr)] changed their view range to [view].") //why? removed by order of XSI
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Change View Range", "[view]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/admin_call_shuttle()
set category = "Admin.Events"
set name = "Call Shuttle"
if(EMERGENCY_AT_LEAST_DOCKED)
return
if(!check_rights(R_ADMIN))
return
var/confirm = alert(src, "You sure?", "Confirm", "Yes", "No")
if(confirm != "Yes")
return
SSshuttle.emergency.request()
SSblackbox.record_feedback("tally", "admin_verb", 1, "Call Shuttle") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] admin-called the emergency shuttle.")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] admin-called the emergency shuttle.</span>")
return
/client/proc/admin_cancel_shuttle()
set category = "Admin.Events"
set name = "Cancel Shuttle"
if(!check_rights(0))
return
if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes")
return
if(EMERGENCY_AT_LEAST_DOCKED)
return
SSshuttle.emergency.cancel()
SSblackbox.record_feedback("tally", "admin_verb", 1, "Cancel Shuttle") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] admin-recalled the emergency shuttle.")
message_admins("<span class='adminnotice'>[key_name_admin(usr)] admin-recalled the emergency shuttle.</span>")
return
/*
/client/proc/admin_disable_shuttle()
set category = "Admin.Events"
set name = "Disable Shuttle"
if(!check_rights(R_ADMIN))
return
if(SSshuttle.emergency.mode == SHUTTLE_DISABLED)
to_chat(usr, "<span class='warning'>Error, shuttle is already disabled.</span>")
return
if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes")
return
message_admins("<span class='adminnotice'>[key_name_admin(usr)] disabled the shuttle.</span>")
SSshuttle.lastMode = SSshuttle.emergency.mode
SSshuttle.lastCallTime = SSshuttle.emergency.timeLeft(1)
SSshuttle.adminEmergencyNoRecall = TRUE
SSshuttle.emergency.setTimer(0)
SSshuttle.emergency.mode = SHUTTLE_DISABLED
priority_announce("Warning: Emergency Shuttle uplink failure, shuttle disabled until further notice.", "Emergency Shuttle Uplink Alert", 'sound/misc/announce_dig.ogg')
/client/proc/admin_enable_shuttle()
set category = "Admin - Events"
set category = "Admin.Events"
set name = "Enable Shuttle"
if(!check_rights(R_ADMIN))
return
if(SSshuttle.emergency.mode != SHUTTLE_DISABLED)
to_chat(usr, "<span class='warning'>Error, shuttle not disabled.</span>")
return
if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes")
return
message_admins("<span class='adminnotice'>[key_name_admin(usr)] enabled the emergency shuttle.</span>")
SSshuttle.adminEmergencyNoRecall = FALSE
SSshuttle.emergencyNoRecall = FALSE
if(SSshuttle.lastMode == SHUTTLE_DISABLED) //If everything goes to shit, fix it.
SSshuttle.lastMode = SHUTTLE_IDLE
SSshuttle.emergency.mode = SSshuttle.lastMode
if(SSshuttle.lastCallTime < 10 SECONDS && SSshuttle.lastMode != SHUTTLE_IDLE)
SSshuttle.lastCallTime = 10 SECONDS //Make sure no insta departures.
SSshuttle.emergency.setTimer(SSshuttle.lastCallTime)
priority_announce("Warning: Emergency Shuttle uplink reestablished, shuttle enabled.", "Emergency Shuttle Uplink Alert", 'sound/misc/announce_dig.ogg')
*/
/client/proc/everyone_random()
set category = "Admin.Fun"
set name = "Make Everyone Random"
set desc = "Make everyone have a random appearance. You can only use this before rounds!"
if(SSticker.HasRoundStarted())
to_chat(usr, "Nope you can't do this, the game's already started. This only works before rounds!")
return
var/frn = CONFIG_GET(flag/force_random_names)
if(frn)
CONFIG_SET(flag/force_random_names, FALSE)
message_admins("Admin [key_name_admin(usr)] has disabled \"Everyone is Special\" mode.")
to_chat(usr, "Disabled.")
return
var/notifyplayers = alert(src, "Do you want to notify the players?", "Options", "Yes", "No", "Cancel")
if(notifyplayers == "Cancel")
return
log_admin("Admin [key_name(src)] has forced the players to have random appearances.")
message_admins("Admin [key_name_admin(usr)] has forced the players to have random appearances.")
if(notifyplayers == "Yes")
to_chat(world, "<span class='adminnotice'>Admin [usr.key] has forced the players to have completely random identities!</span>")
to_chat(usr, "<i>Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet</i>.")
CONFIG_SET(flag/force_random_names, TRUE)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Everyone Random") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggle_random_events()
set category = "Server"
set name = "Toggle random events on/off"
set desc = "Toggles random events such as meteors, black holes, blob (but not space dust) on/off"
var/new_are = !CONFIG_GET(flag/allow_random_events)
CONFIG_SET(flag/allow_random_events, new_are)
if(new_are)
to_chat(usr, "Random events enabled")
message_admins("Admin [key_name_admin(usr)] has enabled random events.")
else
to_chat(usr, "Random events disabled")
message_admins("Admin [key_name_admin(usr)] has disabled random events.")
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Random Events", "[new_are ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/admin_change_sec_level()
set category = "Admin.Events"
set name = "Set Security Level"
set desc = "Changes the security level. Announcement only, i.e. setting to Delta won't activate nuke"
if(!check_rights(R_ADMIN))
return
var/level = input("Select security level to change to","Set Security Level") as null|anything in list("green","blue","amber","red","delta")
if(level)
set_security_level(level)
log_admin("[key_name(usr)] changed the security level to [level]")
message_admins("[key_name_admin(usr)] changed the security level to [level]")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Set Security Level [capitalize(level)]") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggle_nuke(obj/machinery/nuclearbomb/N in GLOB.nuke_list)
set name = "Toggle Nuke"
set category = "Admin.Events"
set popup_menu = 0
if(!check_rights(R_DEBUG))
return
if(!N.timing)
var/newtime = input(usr, "Set activation timer.", "Activate Nuke", "[N.timer_set]") as num|null
if(!newtime)
return
N.timer_set = newtime
N.set_safety()
N.set_active()
log_admin("[key_name(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [AREACOORD(N)].")
message_admins("[ADMIN_LOOKUPFLW(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [ADMIN_VERBOSEJMP(N)].")
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Nuke", "[N.timing]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/create_outfits()
set category = "Debug"
set name = "Create Custom Outfit"
if(!check_rights(R_DEBUG))
return
holder.create_outfit()
/datum/admins/proc/create_outfit()
var/list/uniforms = typesof(/obj/item/clothing/under)
var/list/suits = typesof(/obj/item/clothing/suit)
var/list/gloves = typesof(/obj/item/clothing/gloves)
var/list/shoes = typesof(/obj/item/clothing/shoes)
var/list/headwear = typesof(/obj/item/clothing/head)
var/list/glasses = typesof(/obj/item/clothing/glasses)
var/list/masks = typesof(/obj/item/clothing/mask)
var/list/ids = typesof(/obj/item/card/id)
var/uniform_select = "<select name=\"outfit_uniform\"><option value=\"\">None</option>"
for(var/path in uniforms)
uniform_select += "<option value=\"[path]\">[path]</option>"
uniform_select += "</select>"
var/suit_select = "<select name=\"outfit_suit\"><option value=\"\">None</option>"
for(var/path in suits)
suit_select += "<option value=\"[path]\">[path]</option>"
suit_select += "</select>"
var/gloves_select = "<select name=\"outfit_gloves\"><option value=\"\">None</option>"
for(var/path in gloves)
gloves_select += "<option value=\"[path]\">[path]</option>"
gloves_select += "</select>"
var/shoes_select = "<select name=\"outfit_shoes\"><option value=\"\">None</option>"
for(var/path in shoes)
shoes_select += "<option value=\"[path]\">[path]</option>"
shoes_select += "</select>"
var/head_select = "<select name=\"outfit_head\"><option value=\"\">None</option>"
for(var/path in headwear)
head_select += "<option value=\"[path]\">[path]</option>"
head_select += "</select>"
var/glasses_select = "<select name=\"outfit_glasses\"><option value=\"\">None</option>"
for(var/path in glasses)
glasses_select += "<option value=\"[path]\">[path]</option>"
glasses_select += "</select>"
var/mask_select = "<select name=\"outfit_mask\"><option value=\"\">None</option>"
for(var/path in masks)
mask_select += "<option value=\"[path]\">[path]</option>"
mask_select += "</select>"
var/id_select = "<select name=\"outfit_id\"><option value=\"\">None</option>"
for(var/path in ids)
id_select += "<option value=\"[path]\">[path]</option>"
id_select += "</select>"
var/dat = {"
<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Create Outfit</title></head><body>
<form name="outfit" action="byond://?src=[REF(src)];[HrefToken()]" method="get">
<input type="hidden" name="src" value="[REF(src)]">
[HrefTokenFormField()]
<input type="hidden" name="create_outfit" value="1">
<table>
<tr>
<th>Name:</th>
<td>
<input type="text" name="outfit_name" value="Custom Outfit">
</td>
</tr>
<tr>
<th>Uniform:</th>
<td>
[uniform_select]
</td>
</tr>
<tr>
<th>Suit:</th>
<td>
[suit_select]
</td>
</tr>
<tr>
<th>Back:</th>
<td>
<input type="text" name="outfit_back" value="">
</td>
</tr>
<tr>
<th>Belt:</th>
<td>
<input type="text" name="outfit_belt" value="">
</td>
</tr>
<tr>
<th>Gloves:</th>
<td>
[gloves_select]
</td>
</tr>
<tr>
<th>Shoes:</th>
<td>
[shoes_select]
</td>
</tr>
<tr>
<th>Head:</th>
<td>
[head_select]
</td>
</tr>
<tr>
<th>Mask:</th>
<td>
[mask_select]
</td>
</tr>
<tr>
<th>Ears:</th>
<td>
<input type="text" name="outfit_ears" value="">
</td>
</tr>
<tr>
<th>Glasses:</th>
<td>
[glasses_select]
</td>
</tr>
<tr>
<th>ID:</th>
<td>
[id_select]
</td>
</tr>
<tr>
<th>Left Pocket:</th>
<td>
<input type="text" name="outfit_l_pocket" value="">
</td>
</tr>
<tr>
<th>Right Pocket:</th>
<td>
<input type="text" name="outfit_r_pocket" value="">
</td>
</tr>
<tr>
<th>Suit Store:</th>
<td>
<input type="text" name="outfit_s_store" value="">
</td>
</tr>
<tr>
<th>Right Hand:</th>
<td>
<input type="text" name="outfit_r_hand" value="">
</td>
</tr>
<tr>
<th>Left Hand:</th>
<td>
<input type="text" name="outfit_l_hand" value="">
</td>
</tr>
</table>
<br>
<input type="submit" value="Save">
</form></body></html>
"}
usr << browse(dat, "window=dressup;size=550x600")
/client/proc/toggle_combo_hud()
set category = "Admin.Game"
set name = "Toggle Combo HUD"
set desc = "Toggles the Admin Combo HUD (antag, sci, med, eng)"
if(!check_rights(R_ADMIN))
return
var/adding_hud = !has_antag_hud()
for(var/hudtype in list(DATA_HUD_SECURITY_ADVANCED, DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_ADVANCED)) // add data huds
var/datum/atom_hud/H = GLOB.huds[hudtype]
(adding_hud) ? H.add_hud_to(usr) : H.remove_hud_from(usr)
for(var/datum/atom_hud/antag/H in GLOB.huds) // add antag huds
(adding_hud) ? H.add_hud_to(usr) : H.remove_hud_from(usr)
if(prefs.toggles & COMBOHUD_LIGHTING)
if(adding_hud)
mob.lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE
else
mob.lighting_alpha = initial(mob.lighting_alpha)
mob.update_sight()
to_chat(usr, "You toggled your admin combo HUD [adding_hud ? "ON" : "OFF"].")
message_admins("[key_name_admin(usr)] toggled their admin combo HUD [adding_hud ? "ON" : "OFF"].")
log_admin("[key_name(usr)] toggled their admin combo HUD [adding_hud ? "ON" : "OFF"].")
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Combo HUD", "[adding_hud ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/has_antag_hud()
var/datum/atom_hud/A = GLOB.huds[ANTAG_HUD_TRAITOR]
return A.hudusers[mob]
/client/proc/run_weather()
set category = "Admin.Events"
set name = "Run Weather"
set desc = "Triggers a weather on the z-level you choose."
if(!holder)
return
var/weather_type = input("Choose a weather", "Weather") as null|anything in subtypesof(/datum/weather)
if(!weather_type)
return
var/z_level = input("Z-Level to target? Leave blank to target current Z-Level.", "Z-Level") as num|null
if(!isnum(z_level))
if(!src.mob)
return
z_level = src.mob.z
SSweather.run_weather(weather_type, z_level)
message_admins("[key_name_admin(usr)] started weather of type [weather_type] on the z-level [z_level].")
log_admin("[key_name(usr)] started weather of type [weather_type] on the z-level [z_level].")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Run Weather")
/client/proc/mass_zombie_infection()
set category = "Admin.Fun"
set name = "Mass Zombie Infection"
set desc = "Infects all humans with a latent organ that will zombify \
them on death."
if(!check_rights(R_ADMIN))
return
var/confirm = alert(src, "Please confirm you want to add latent zombie organs in all humans?", "Confirm Zombies", "Yes", "No")
if(confirm != "Yes")
return
for(var/mob/living/carbon/human/H in GLOB.carbon_list)
new /obj/item/organ/zombie_infection/nodamage(H)
message_admins("[key_name_admin(usr)] added a latent zombie infection to all humans.")
log_admin("[key_name(usr)] added a latent zombie infection to all humans.")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Mass Zombie Infection")
/client/proc/mass_zombie_cure()
set category = "Admin.Fun"
set name = "Mass Zombie Cure"
set desc = "Removes the zombie infection from all humans, returning them to normal."
if(!check_rights(R_ADMIN))
return
var/confirm = alert(src, "Please confirm you want to cure all zombies?", "Confirm Zombie Cure", "Yes", "No")
if(confirm != "Yes")
return
for(var/obj/item/organ/zombie_infection/nodamage/I in GLOB.zombie_infection_list)
qdel(I)
message_admins("[key_name_admin(usr)] cured all zombies.")
log_admin("[key_name(usr)] cured all zombies.")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Mass Zombie Cure")
/client/proc/polymorph_all()
set category = "Admin.Fun"
set name = "Polymorph All"
set desc = "Applies the effects of the bolt of change to every single mob."
if(!check_rights(R_ADMIN))
return
var/confirm = alert(src, "Please confirm you want polymorph all mobs?", "Confirm Polymorph", "Yes", "No")
if(confirm != "Yes")
return
var/list/mobs = shuffle(GLOB.alive_mob_list.Copy()) // might change while iterating
var/who_did_it = key_name_admin(usr)
message_admins("[key_name_admin(usr)] started polymorphed all living mobs.")
log_admin("[key_name(usr)] polymorphed all living mobs.")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Polymorph All")
for(var/mob/living/M in mobs)
CHECK_TICK
if(!M)
continue
M.audible_message("<span class='italics'>...wabbajack...wabbajack...</span>")
playsound(M.loc, 'sound/magic/staff_change.ogg', 50, 1, -1)
wabbajack(M)
message_admins("Mass polymorph started by [who_did_it] is complete.")
/client/proc/show_tip()
set category = "Admin"
set name = "Show Tip"
set desc = "Sends a tip (that you specify) to all players. After all \
you're the experienced player here."
if(!check_rights(R_ADMIN))
return
var/input = input(usr, "Please specify your tip that you want to send to the players.", "Tip", "") as message|null
if(!input)
return
if(!SSticker)
return
SSticker.selected_tip = input
// If we've already tipped, then send it straight away.
if(SSticker.tipped)
SSticker.send_tip_of_the_round()
message_admins("[key_name_admin(usr)] sent a tip of the round.")
log_admin("[key_name(usr)] sent \"[input]\" as the Tip of the Round.")
SSblackbox.record_feedback("tally", "admin_verb", 1, "Show Tip")
/client/proc/modify_goals()
set category = "Debug"
set name = "Modify goals"
if(!check_rights(R_ADMIN))
return
holder.modify_goals()
/datum/admins/proc/modify_goals()
var/dat = ""
for(var/datum/station_goal/S in SSticker.mode.station_goals)
dat += "[S.name] - <a href='?src=[REF(S)];[HrefToken()];announce=1'>Announce</a> | <a href='?src=[REF(S)];[HrefToken()];remove=1'>Remove</a><br>"
dat += "<br><a href='?src=[REF(src)];[HrefToken()];add_station_goal=1'>Add New Goal</a>"
usr << browse(dat, "window=goals;size=400x400")
/client/proc/toggle_hub()
set category = "Server"
set name = "Toggle Hub"
world.update_hub_visibility(!GLOB.hub_visibility)
log_admin("[key_name(usr)] has toggled the server's hub status for the round, it is now [(GLOB.hub_visibility?"on":"off")] the hub.")
message_admins("[key_name_admin(usr)] has toggled the server's hub status for the round, it is now [(GLOB.hub_visibility?"on":"off")] the hub.")
if (GLOB.hub_visibility && !world.reachable)
message_admins("WARNING: The server will not show up on the hub because byond is detecting that a filewall is blocking incoming connections.")
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggled Hub Visibility", "[GLOB.hub_visibility ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_admin_toggle_fov()
set category = "Admin.Fun"
set name = "Enable/Disable Field of Vision"
var/static/busy_toggling_fov = FALSE
if(!check_rights(R_ADMIN) || !check_rights(R_FUN))
return
var/on_off = CONFIG_GET(flag/use_field_of_vision)
if(busy_toggling_fov)
to_chat(usr, "<span class='warning'>A previous call of this function is still busy toggling FoV [on_off ? "on" : "off"]. Have some patiece</span>.")
return
busy_toggling_fov = TRUE
log_admin("[key_name(usr)] has [on_off ? "disabled" : "enabled"] the Field of Vision configuration.")
CONFIG_SET(flag/use_field_of_vision, !on_off)
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggled Field of Vision", "[on_off ? "Enabled" : "Disabled"]"))
if(on_off)
for(var/k in GLOB.mob_list)
if(!k)
continue
var/mob/M = k
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!(H.dna?.species.has_field_of_vision))
continue
else if(!M.has_field_of_vision)
continue
var/datum/component/field_of_vision/FoV = M.GetComponent(/datum/component/field_of_vision)
if(FoV)
qdel(FoV)
CHECK_TICK
else
for(var/k in GLOB.clients)
if(!k)
continue
var/client/C = k
var/mob/M = C.mob
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!(H.dna?.species.has_field_of_vision))
continue
else if(!M.has_field_of_vision)
continue
M.LoadComponent(/datum/component/field_of_vision, M.field_of_vision_type)
CHECK_TICK
busy_toggling_fov = FALSE
/client/proc/smite(mob/living/carbon/human/target as mob)
set name = "Smite"
set category = "Admin.Fun"
if(!check_rights(R_ADMIN) || !check_rights(R_FUN))
return
var/list/punishment_list = list(ADMIN_PUNISHMENT_PIE,
ADMIN_PUNISHMENT_CUSTOM_PIE,
ADMIN_PUNISHMENT_FIREBALL,
ADMIN_PUNISHMENT_LIGHTNING,
ADMIN_PUNISHMENT_BRAINDAMAGE,
ADMIN_PUNISHMENT_BSA,
ADMIN_PUNISHMENT_GIB,
ADMIN_PUNISHMENT_SUPPLYPOD_QUICK,
ADMIN_PUNISHMENT_SUPPLYPOD,
ADMIN_PUNISHMENT_MAZING,
ADMIN_PUNISHMENT_ROD,
ADMIN_PUNISHMENT_SHOES,
ADMIN_PUNISHMENT_PICKLE,
ADMIN_PUNISHMENT_FRY,
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
if(QDELETED(target) || !punishment)
return
switch(punishment)
if(ADMIN_PUNISHMENT_LIGHTNING)
var/turf/T = get_step(get_step(target, NORTH), NORTH)
T.Beam(target, icon_state="lightning[rand(1,12)]", time = 5)
target.adjustFireLoss(75)
target.electrocution_animation(40)
to_chat(target, "<span class='userdanger'>The gods have punished you for your sins!</span>")
if(ADMIN_PUNISHMENT_BRAINDAMAGE)
target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 199, 199)
if(ADMIN_PUNISHMENT_GIB)
target.gib(FALSE)
if(ADMIN_PUNISHMENT_BSA)
bluespace_artillery(target)
if(ADMIN_PUNISHMENT_FIREBALL)
new /obj/effect/temp_visual/target(get_turf(target))
if(ADMIN_PUNISHMENT_ROD)
var/turf/T = get_turf(target)
var/startside = pick(GLOB.cardinals)
var/turf/startT = spaceDebrisStartLoc(startside, T.z)
var/turf/endT = spaceDebrisFinishLoc(startside, T.z)
new /obj/effect/immovablerod(startT, endT,target)
if(ADMIN_PUNISHMENT_SUPPLYPOD_QUICK)
var/target_path = input(usr,"Enter typepath of an atom you'd like to send with the pod (type \"empty\" to send an empty pod):" ,"Typepath","/obj/item/reagent_containers/food/snacks/grown/harebell") as null|text
var/area/pod_storage_area = locate(/area/centcom/supplypod/podStorage) in GLOB.sortedAreas
var/obj/structure/closet/supplypod/centcompod/pod = new(pick(get_area_turfs(pod_storage_area))) //Lets not runtime
pod.damage = 40
pod.explosionSize = list(0,0,0,2)
pod.effectStun = TRUE
if (isnull(target_path)) //The user pressed "Cancel"
return
if (target_path != "empty")//if you didn't type empty, we want to load the pod with a delivery
var/delivery = text2path(target_path)
if(!ispath(delivery))
delivery = pick_closest_path(target_path)
if(!delivery)
alert("ERROR: Incorrect / improper path given.")
new delivery(pod)
new /obj/effect/pod_landingzone(get_turf(target), pod)
if(ADMIN_PUNISHMENT_SUPPLYPOD)
var/datum/centcom_podlauncher/plaunch = new(usr)
if(!holder)
return
plaunch.specificTarget = target
plaunch.launchChoice = 0
plaunch.damageChoice = 1
plaunch.explosionChoice = 1
plaunch.temp_pod.damage = 40//bring the mother fuckin ruckus
plaunch.temp_pod.explosionSize = list(0,0,0,2)
plaunch.temp_pod.effectStun = TRUE
return //We return here because punish_log() is handled by the centcom_podlauncher datum
if(ADMIN_PUNISHMENT_MAZING)
if(!puzzle_imprison(target))
to_chat(usr,"<span class='warning'>Imprisonment failed!</span>")
return
if(ADMIN_PUNISHMENT_PIE)
var/obj/item/reagent_containers/food/snacks/pie/cream/nostun/creamy = new(get_turf(target))
creamy.splat(target)
if(ADMIN_PUNISHMENT_CUSTOM_PIE)
var/obj/item/reagent_containers/food/snacks/pie/cream/nostun/A = new()
if(!A.reagents)
var/amount = input(usr, "Specify the reagent size of [A]", "Set Reagent Size", 50) as num|null
if(amount)
A.create_reagents(amount)
if(A.reagents)
var/chosen_id = choose_reagent_id(usr)
if(chosen_id)
var/amount = input(usr, "Choose the amount to add.", "Choose the amount.", A.reagents.maximum_volume) as num|null
if(amount)
A.reagents.add_reagent(chosen_id, amount)
A.splat(target)
if(ADMIN_PUNISHMENT_CRACK)
if(!iscarbon(target))
to_chat(usr,"<span class='warning'>This must be used on a carbon mob.</span>", confidential = TRUE)
return
var/mob/living/carbon/C = target
for(var/i in C.bodyparts)
var/obj/item/bodypart/squish_part = i
var/type_wound = pick(list(/datum/wound/blunt/critical, /datum/wound/blunt/severe, /datum/wound/blunt/critical, /datum/wound/blunt/severe, /datum/wound/blunt/moderate))
squish_part.force_wound_upwards(type_wound, smited=TRUE)
if(ADMIN_PUNISHMENT_BLEED)
if(!iscarbon(target))
to_chat(usr,"<span class='warning'>This must be used on a carbon mob.</span>", confidential = TRUE)
return
var/mob/living/carbon/C = target
for(var/i in C.bodyparts)
var/obj/item/bodypart/slice_part = i
var/type_wound = pick(list(/datum/wound/slash/severe, /datum/wound/slash/moderate))
slice_part.force_wound_upwards(type_wound, smited=TRUE)
type_wound = pick(list(/datum/wound/slash/critical, /datum/wound/slash/severe, /datum/wound/slash/moderate))
slice_part.force_wound_upwards(type_wound, smited=TRUE)
type_wound = pick(list(/datum/wound/slash/critical, /datum/wound/slash/severe))
slice_part.force_wound_upwards(type_wound, smited=TRUE)
if(ADMIN_PUNISHMENT_SCARIFY)
if(!iscarbon(target))
to_chat(usr,"<span class='warning'>This must be used on a carbon mob.</span>", confidential = TRUE)
return
var/mob/living/carbon/dude = target
dude.generate_fake_scars(rand(1, 4))
to_chat(dude, "<span class='warning'>You feel your body grow jaded and torn...</span>")
if(ADMIN_PUNISHMENT_PERFORATE)
if(!iscarbon(target))
to_chat(usr,"<span class='warning'>This must be used on a carbon mob.</span>", confidential = TRUE)
return
var/list/how_fucked_is_this_dude = list("A little", "A lot", "So fucking much", "FUCK THIS DUDE")
var/hatred = input("How much do you hate this guy?") in how_fucked_is_this_dude
var/repetitions
var/shots_per_limb_per_rep = 2
var/damage
switch(hatred)
if("A little")
repetitions = 1
damage = 5
if("A lot")
repetitions = 2
damage = 8
if("So fucking much")
repetitions = 3
damage = 10
if("FUCK THIS DUDE")
repetitions = 4
damage = 10
var/mob/living/carbon/dude = target
var/list/open_adj_turfs = get_adjacent_open_turfs(dude)
var/list/wound_bonuses = list(15, 70, 110, 250)
var/delay_per_shot = 1
var/delay_counter = 1
dude.Immobilize(5 SECONDS)
for(var/wound_bonus_rep in 1 to repetitions)
for(var/i in dude.bodyparts)
var/obj/item/bodypart/slice_part = i
var/shots_this_limb = 0
for(var/t in shuffle(open_adj_turfs))
var/turf/iter_turf = t
addtimer(CALLBACK(GLOBAL_PROC, .proc/firing_squad, dude, iter_turf, slice_part.body_zone, wound_bonuses[wound_bonus_rep], damage), delay_counter)
delay_counter += delay_per_shot
shots_this_limb++
if(shots_this_limb > shots_per_limb_per_rep)
break
if(ADMIN_PUNISHMENT_PICKLE)
target.turn_into_pickle()
if(ADMIN_PUNISHMENT_FRY)
target.fry()
if(ADMIN_PUNISHMENT_SHOES)
if(!iscarbon(target))
to_chat(usr,"<span class='warning'>This must be used on a carbon mob.</span>")
return
var/mob/living/carbon/C = target
var/obj/item/clothing/shoes/sick_kicks = C.shoes
if(!sick_kicks?.can_be_tied)
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)
/**
* firing_squad is a proc for the :B:erforate smite to shoot each individual bullet at them, so that we can add actual delays without sleep() nonsense
*
* Hilariously, if you drag someone away mid smite, the bullets will still chase after them from the original spot, possibly hitting other people. Too funny to fix imo
*
* Arguments:
* * target- guy we're shooting obviously
* * source_turf- where the bullet begins, preferably on a turf next to the target
* * body_zone- which bodypart we're aiming for, if there is one there
* * wound_bonus- the wounding power we're assigning to the bullet, since we don't care about the base one
* * damage- the damage we're assigning to the bullet, since we don't care about the base one
*/
/proc/firing_squad(mob/living/carbon/target, turf/source_turf, body_zone, wound_bonus, damage)
if(!target.get_bodypart(body_zone))
return
playsound(target, 'sound/weapons/shot.ogg', 100)
var/obj/item/projectile/bullet/smite/divine_wrath = new(source_turf)
divine_wrath.damage = damage
divine_wrath.wound_bonus = wound_bonus
divine_wrath.original = target
divine_wrath.def_zone = body_zone
divine_wrath.spread = 0
divine_wrath.preparePixelProjectile(target, source_turf)
divine_wrath.fire()
/client/proc/punish_log(var/whom, var/punishment)
var/msg = "[key_name_admin(usr)] punished [key_name_admin(whom)] with [punishment]."
message_admins(msg)
admin_ticket_log(whom, msg)
log_admin("[key_name(usr)] punished [key_name(whom)] with [punishment].")
/client/proc/trigger_centcom_recall()
if(!check_rights(R_ADMIN))
return
var/message = pick(GLOB.admiral_messages)
message = input("Enter message from the on-call admiral to be put in the recall report.", "Admiral Message", message) as text|null
if(!message)
return
message_admins("[key_name_admin(usr)] triggered a CentCom recall, with the admiral message of: [message]")
log_game("[key_name(usr)] triggered a CentCom recall, with the message of: [message]")
SSshuttle.centcom_recall(SSshuttle.emergency.timer, message)
/client/proc/cmd_admin_check_player_exp() //Allows admins to determine who the newer players are.
set category = "Admin"
set name = "Player Playtime"
if(!check_rights(R_ADMIN))
return
if(!CONFIG_GET(flag/use_exp_tracking))
to_chat(usr, "<span class='warning'>Tracking is disabled in the server configuration file.</span>")
return
var/list/msg = list()
msg += "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'><title>Playtime Report</title></head><body>Playtime:<BR><UL>"
for(var/client/C in GLOB.clients)
msg += "<LI> - [key_name_admin(C)]: <A href='?_src_=holder;[HrefToken()];getplaytimewindow=[REF(C.mob)]'>" + C.get_exp_living() + "</a></LI>"
msg += "</UL></BODY></HTML>"
src << browse(msg.Join(), "window=Player_playtime_check")
/obj/effect/temp_visual/fireball
icon = 'icons/obj/wizard.dmi'
icon_state = "fireball"
name = "fireball"
desc = "Get out of the way!"
layer = FLY_LAYER
randomdir = FALSE
duration = 9
pixel_z = 270
/obj/effect/temp_visual/fireball/Initialize()
. = ..()
animate(src, pixel_z = 0, time = duration)
/obj/effect/temp_visual/target
icon = 'icons/mob/actions/actions_items.dmi'
icon_state = "sniper_zoom"
layer = BELOW_MOB_LAYER
light_range = 2
duration = 9
/obj/effect/temp_visual/target/ex_act()
return
/obj/effect/temp_visual/target/Initialize(mapload, list/flame_hit)
. = ..()
INVOKE_ASYNC(src, .proc/fall, flame_hit)
/obj/effect/temp_visual/target/proc/fall(list/flame_hit)
var/turf/T = get_turf(src)
playsound(T,'sound/magic/fleshtostone.ogg', 80, 1)
new /obj/effect/temp_visual/fireball(T)
sleep(duration)
if(ismineralturf(T))
var/turf/closed/mineral/M = T
M.gets_drilled()
playsound(T, "explosion", 80, 1)
new /obj/effect/hotspot(T)
T.hotspot_expose(700, 50, 1)
for(var/mob/living/L in T.contents)
if(istype(L, /mob/living/simple_animal/hostile/megafauna/dragon))
continue
if(islist(flame_hit) && !flame_hit[L])
L.adjustFireLoss(40)
to_chat(L, "<span class='userdanger'>You're hit by the drake's fire breath!</span>")
flame_hit[L] = TRUE
else
L.adjustFireLoss(10) //if we've already hit them, do way less damage
/datum/admins/proc/cmd_show_exp_panel(client/client_to_check)
if(!check_rights(R_ADMIN))
return
if(!client_to_check)
to_chat(usr, "<span class='danger'>ERROR: Client not found.</span>", confidential = TRUE)
return
if(!CONFIG_GET(flag/use_exp_tracking))
to_chat(usr, "<span class='warning'>Tracking is disabled in the server configuration file.</span>", confidential = TRUE)
return
new /datum/job_report_menu(client_to_check, usr)
/datum/admins/proc/toggle_exempt_status(client/C)
if(!check_rights(R_ADMIN))
return
if(!C)
to_chat(usr, "<span class='danger'>ERROR: Client not found.</span>")
return
if(!C.set_db_player_flags())
to_chat(usr, "<span class='danger'>ERROR: Unable read player flags from database. Please check logs.</span>")
var/dbflags = C.prefs.db_flags
var/newstate = FALSE
if(dbflags & DB_FLAG_EXEMPT)
newstate = FALSE
else
newstate = TRUE
if(C.update_flag_db(DB_FLAG_EXEMPT, newstate))
to_chat(usr, "<span class='danger'>ERROR: Unable to update player flags. Please check logs.</span>")
else
message_admins("[key_name_admin(usr)] has [newstate ? "activated" : "deactivated"] job exp exempt status on [key_name_admin(C)]")
log_admin("[key_name(usr)] has [newstate ? "activated" : "deactivated"] job exp exempt status on [key_name(C)]")
/// Allow admin to add or remove traits of datum
/datum/admins/proc/modify_traits(datum/D)
if(!D)
return
var/add_or_remove = input("Remove/Add?", "Trait Remove/Add") as null|anything in list("Add","Remove")
if(!add_or_remove)
return
var/list/availible_traits = list()
switch(add_or_remove)
if("Add")
for(var/key in GLOB.traits_by_type)
if(istype(D,key))
availible_traits += GLOB.traits_by_type[key]
if("Remove")
if(!GLOB.trait_name_map)
GLOB.trait_name_map = generate_trait_name_map()
for(var/trait in D.status_traits)
var/name = GLOB.trait_name_map[trait] || trait
availible_traits[name] = trait
var/chosen_trait = input("Select trait to modify", "Trait") as null|anything in sortList(availible_traits)
if(!chosen_trait)
return
chosen_trait = availible_traits[chosen_trait]
var/source = "adminabuse"
switch(add_or_remove)
if("Add") //Not doing source choosing here intentionally to make this bit faster to use, you can always vv it.
ADD_TRAIT(D,chosen_trait,source)
if("Remove")
var/specific = input("All or specific source ?", "Trait Remove/Add") as null|anything in list("All","Specific")
if(!specific)
return
switch(specific)
if("All")
source = null
if("Specific")
source = input("Source to be removed","Trait Remove/Add") as null|anything in sortList(D.status_traits[chosen_trait])
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.")