Squashed commit of the following:
commit19e44efef1Author: Changelogs <action@github.com> Date: Mon Jun 21 00:24:03 2021 +0000 Automatic changelog compile [ci skip] commitbd1344b4b2Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 20 18:26:23 2021 -0500 Automatic changelog generation for PR #14872 [ci skip] commit3a914072b5Merge:8a81fa7d7929604b939cAuthor: 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. commit8a81fa7d79Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 20 18:25:25 2021 -0500 Automatic changelog generation for PR #14873 [ci skip] commit9117cc6a5cMerge:0a1f0d3e660113412190Author: Lin <linzolle@gmail.com> Date: Sun Jun 20 16:25:23 2021 -0700 Merge pull request #14873 from timothyteakettle/vore vore href exploit fix commit29604b939cAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Sun Jun 20 13:18:54 2021 -0700 Update glowshroom.dm commit0a1f0d3e66Author: Changelogs <action@github.com> Date: Sun Jun 20 00:24:26 2021 +0000 Automatic changelog compile [ci skip] commit0113412190Author: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sat Jun 19 16:28:52 2021 +0100 Update vorepanel.dm commitab9a776690Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sat Jun 19 09:04:51 2021 -0500 Automatic changelog generation for PR #14863 [ci skip] commit0cfe2ec4caMerge:0067cc2b6ecf0d7f704aAuthor: 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) commit8f3c1fe03aAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Sat Jun 19 07:02:51 2021 -0700 Update glowshroom.dm commitc0e3af55bcAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Sat Jun 19 06:59:26 2021 -0700 Update glowshroom.dm commit0067cc2b6eAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Fri Jun 18 22:03:46 2021 -0500 Automatic changelog generation for PR #14734 [ci skip] commit3c7786dafdMerge:de26ea4a20538efd2d8fAuthor: 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. commitde26ea4a20Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Fri Jun 18 22:02:25 2021 -0500 Automatic changelog generation for PR #14867 [ci skip] commitfd0afa209fMerge:ae6a648c4b20bc2f2f59Author: 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 commitae6a648c4bMerge:2fa8136e6afb9cc6fe45Author: 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 commit2fa8136e6aAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Fri Jun 18 22:01:08 2021 -0500 Automatic changelog generation for PR #14860 [ci skip] commit4768b23398Merge:0e7760fb095619b73e6bAuthor: 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 commit0e7760fb09Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Fri Jun 18 21:58:29 2021 -0500 Automatic changelog generation for PR #14831 [ci skip] commitbc4773b728Merge:ec2548949ba64d94a7ccAuthor: 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 commitec2548949bAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Fri Jun 18 21:58:09 2021 -0500 Automatic changelog generation for PR #14864 [ci skip] commit30d5a72688Merge:5d3384d649d823c5b168Author: 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. commit5d3384d649Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Fri Jun 18 20:52:39 2021 -0500 Automatic changelog generation for PR #14847 [ci skip] commitf6b3bce2f3Merge:84068b467a03b921a121Author: 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 commit84068b467aMerge:1400c8deb9687d0adf23Author: 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 (?) commit1400c8deb9Author: Changelogs <action@github.com> Date: Sat Jun 19 00:23:19 2021 +0000 Automatic changelog compile [ci skip] commitadc6b7d76aMerge:eab6579ccea8b7c07f00Author: 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 :) commiteab6579cceAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Fri Jun 18 12:22:50 2021 -0500 Automatic changelog generation for PR #14862 [ci skip] commita192757843Author: 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 commitfb9cc6fe45Author: bunny232 <bunnyracer23@yahoo.com> Date: Fri Jun 18 05:25:02 2021 -0400 Update atmospherics.dm commit5d574acdc2Merge:2b89214d14eaf36d3137Author: 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. commit2b89214d14Author: Changelogs <action@github.com> Date: Fri Jun 18 00:22:21 2021 +0000 Automatic changelog compile [ci skip] commit20bc2f2f59Author: 123 <aeromireleks@gmail.com> Date: Thu Jun 17 16:16:21 2021 -0700 Update scooter.dm commit04debb2c20Author: Changelogs <action@github.com> Date: Sun Mar 14 00:27:26 2021 +0000 Automatic changelog compile [ci skip] commita8b7c07f00Author: silicons <2003111+silicons@users.noreply.github.com> Date: Thu Jun 17 07:07:49 2021 -0700 Update open.dm commitd823c5b168Author: EmeraldSundisk <thachazman@hotmail.com> Date: Wed Jun 16 21:58:32 2021 -0700 Update Snaxi.dmm commit507b1f43c0Merge:a121153f0f21845e0618Author: 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 commit21845e0618Merge:a121153f0f64f762f59bAuthor: 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 commitcf0d7f704aAuthor: miniusAreas <39163353+miniusAreas@users.noreply.github.com> Date: Wed Jun 16 22:20:52 2021 -0400 AAAAAAAAAAA commit04b67e3584Author: miniusAreas <39163353+miniusAreas@users.noreply.github.com> Date: Wed Jun 16 22:14:57 2021 -0400 metapubbydelta commit687d0adf23Merge:b734c2837064f762f59bAuthor: 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 commit64f762f59bAuthor: Changelogs <action@github.com> Date: Thu Jun 17 00:22:08 2021 +0000 Automatic changelog compile [ci skip] commit0a3aa1e94dAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 16 13:30:04 2021 -0500 Automatic changelog generation for PR #14851 [ci skip] commit1e66357706Merge:dc6b686ac5df72710caeAuthor: Lin <linzolle@gmail.com> Date: Wed Jun 16 11:30:01 2021 -0700 Merge pull request #14851 from Vynzill/spritinghell Extended Armwraps commitdc6b686ac5Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 16 12:27:22 2021 -0500 Automatic changelog generation for PR #14854 [ci skip] commite12380cc40Author: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed Jun 16 18:27:19 2021 +0100 Update embedded.dm (#14854) commit3864baaf76Author: Changelogs <action@github.com> Date: Wed Jun 16 00:23:43 2021 +0000 Automatic changelog compile [ci skip] commit5619b73e6bAuthor: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 02:02:28 2021 +0300 Makes it actually, actually work commitad0c3d477eAuthor: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 01:48:54 2021 +0300 Makes it work proper, hopefully commit795ab3f835Author: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 01:32:24 2021 +0300 https://github.com/tgstation/tgstation/pull/49798 commit096e7d4d67Author: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 01:31:53 2021 +0300 https://github.com/tgstation/tgstation/pull/49927 commitfbcd1a3026Author: 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 commitab82766757Author: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 01:19:48 2021 +0300 https://github.com/tgstation/tgstation/pull/59169 commitf33343c6dbAuthor: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 01:17:13 2021 +0300 https://github.com/tgstation/tgstation/pull/56739 commit74c186d871Author: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 01:16:39 2021 +0300 https://github.com/tgstation/tgstation/pull/56516 commita430dc4d4dAuthor: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 01:16:08 2021 +0300 https://github.com/tgstation/tgstation/pull/56542 commitf3e16b298bAuthor: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 01:15:21 2021 +0300 https://github.com/tgstation/tgstation/pull/56588 commitb0d7482f04Author: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 01:09:30 2021 +0300 https://github.com/tgstation/tgstation/pull/55902 commite2eb9d52d0Author: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 01:03:51 2021 +0300 https://github.com/tgstation/tgstation/pull/55164 commit18aee24231Author: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 01:01:41 2021 +0300 https://github.com/tgstation/tgstation/pull/54902 commit337998e99aAuthor: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 00:46:05 2021 +0300 https://github.com/tgstation/tgstation/pull/54793 commit724b34f55dAuthor: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 16 00:44:32 2021 +0300 https://github.com/tgstation/tgstation/pull/54710 commit70de0547abMerge:9277e685e90d206742faAuthor: 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. commit9277e685e9Merge:e22ea7de59bc56f74229Author: 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 commite22ea7de59Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Mon Jun 14 22:15:45 2021 -0500 Automatic changelog generation for PR #14834 [ci skip] commit4ae09baa63Merge:84a6467fc98feb473e65Author: 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 commit84a6467fc9Merge:a1db7518e22c61a48860Author: 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 commita1db7518e2Author: Changelogs <action@github.com> Date: Tue Jun 15 00:23:42 2021 +0000 Automatic changelog compile [ci skip] commitdf72710caeAuthor: Vynzill <crimsonrazoralt@gmail.com> Date: Mon Jun 14 17:19:05 2021 -0500 herewego commitc3f87c312cAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Mon Jun 14 16:30:56 2021 -0500 Automatic changelog generation for PR #14849 [ci skip] commitecd3454ce5Merge:38d40b58924fec75fe87Author: 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. commit4fec75fe87Author: EmeraldSundisk <thachazman@hotmail.com> Date: Mon Jun 14 08:48:14 2021 -0700 initialfix commit03b921a121Author: bunny232 <bunnyracer23@yahoo.com> Date: Mon Jun 14 06:12:04 2021 -0400 Update tank.dm commita121153f0fMerge:29e37b0f5e38d40b5892Author: 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 commit38d40b5892Author: Changelogs <action@github.com> Date: Mon Jun 14 00:22:34 2021 +0000 Automatic changelog compile [ci skip] commitb734c28370Author: silicons <2003111+silicons@users.noreply.github.com> Date: Sun Jun 13 16:27:38 2021 -0700 fixes commit6495bbcc81Merge:a8f17c3305eb353c9687Author: 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 commita64d94a7ccMerge:bae89fcabaeb353c9687Author: 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 commiteb353c9687Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:24:33 2021 -0500 Automatic changelog generation for PR #14832 [ci skip] commit49efd115eeMerge:cc88ebd185319e03476bAuthor: 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 commitcc88ebd185Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:19:48 2021 -0500 Automatic changelog generation for PR #14818 [ci skip] commitddf885f42eMerge:744ed08466c44750760dAuthor: 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!!! commit744ed08466Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:19:39 2021 -0500 Automatic changelog generation for PR #14837 [ci skip] commita91d5111c4Merge:a88561d1aaa395fc1b52Author: 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 commita88561d1aaMerge:3170d60919ed929dda12Author: 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. commitbae89fcabaMerge:1122135c173170d60919Author: 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 commit3170d60919Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:18:48 2021 -0500 Automatic changelog generation for PR #14824 [ci skip] commitd6aaf5c96aMerge:a8f7a56d41e78929cde1Author: 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 commita8f7a56d41Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:17:21 2021 -0500 Automatic changelog generation for PR #14814 [ci skip] commitdc80bcaabbMerge:ef5a52372901a61b551cAuthor: 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 commitef5a523729Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:16:39 2021 -0500 Automatic changelog generation for PR #14816 [ci skip] commitd0fc422b3aMerge:81cd0013593321e17c6fAuthor: 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 commit319e03476bMerge:e757f9ea2c81cd001359Author: 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 commit81cd001359Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:16:02 2021 -0500 Automatic changelog generation for PR #14841 [ci skip] commitf56e95e4e7Merge:fe031f32c0a324701730Author: 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" commitfe031f32c0Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:15:35 2021 -0500 Automatic changelog generation for PR #14813 [ci skip] commit2dd0d014b9Merge:0f2bbc2a13d70a35a48dAuthor: 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) commit0f2bbc2a13Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:15:22 2021 -0500 Automatic changelog generation for PR #14820 [ci skip] commit431acd9d5cMerge:b2f530da5d584dce4a80Author: 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 commitb2f530da5dAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:15:07 2021 -0500 Automatic changelog generation for PR #14836 [ci skip] commit5e1818819bMerge:6efe680a471303f4b9aeAuthor: 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 commit6efe680a47Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:14:32 2021 -0500 Automatic changelog generation for PR #14830 [ci skip] commitb77da2824aMerge:f02098d1a14486b08bd4Author: 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 commitf02098d1a1Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:14:07 2021 -0500 Automatic changelog generation for PR #14829 [ci skip] commit211fed05d7Merge:81be45f0628a5a5ef6ccAuthor: 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 commit81be45f062Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:13:49 2021 -0500 Automatic changelog generation for PR #14826 [ci skip] commit33d8e95144Merge:5324544a6339d951a4a8Author: 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 commit5324544a63Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sun Jun 13 17:13:25 2021 -0500 Automatic changelog generation for PR #14825 [ci skip] commit8eff0ca5b3Merge:405135834e5bf831be0fAuthor: 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 commita324701730Author: MrJWhit <48370570+MrJWhit@users.noreply.github.com> Date: Sun Jun 13 05:25:02 2021 -0400 Revert "adds cat meteors" commitc44750760dAuthor: EmeraldSundisk <51142887+EmeraldSundisk@users.noreply.github.com> Date: Sat Jun 12 21:34:41 2021 -0700 Add files via upload commit686798b789Author: EmeraldSundisk <thachazman@hotmail.com> Date: Sat Jun 12 21:21:43 2021 -0700 stronk commita395fc1b52Author: zerothebigboy <cookiesvvww@gmail.com> Date: Sat Jun 12 19:58:53 2021 -0400 a commite757f9ea2cAuthor: zerothebigboy <cookiesvvww@gmail.com> Date: Sat Jun 12 17:41:09 2021 -0400 thetwentythirdofmany commit1303f4b9aeAuthor: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sat Jun 12 15:34:58 2021 +0100 Update tips.txt commit2c61a48860Author: silicons <2003111+silicons@users.noreply.github.com> Date: Sat Jun 12 05:09:13 2021 -0700 Update mark_datum.dm commit8feb473e65Author: silicons <2003111+silicons@users.noreply.github.com> Date: Sat Jun 12 04:49:23 2021 -0700 fixes commit55e8d67521Author: silicons <2003111+silicons@users.noreply.github.com> Date: Sat Jun 12 04:41:58 2021 -0700 refactor a bit commit85b1125c83Author: silicons <2003111+silicons@users.noreply.github.com> Date: Sat Jun 12 04:36:02 2021 -0700 fix commit01a61b551cAuthor: TripleShades <MegaProto@gmx.com> Date: Sat Jun 12 01:08:22 2021 -0400 Update DeltaStation2.dmm commit3fae79f876Author: zerothebigboy <cookiesvvww@gmail.com> Date: Fri Jun 11 20:28:25 2021 -0400 thetwentyfirstofmany commit405135834eAuthor: Changelogs <action@github.com> Date: Sat Jun 12 00:20:05 2021 +0000 Automatic changelog compile [ci skip] commit1122135c17Author: zerothebigboy <cookiesvvww@gmail.com> Date: Fri Jun 11 20:04:05 2021 -0400 thetwentiethofmany commitb7eecc315fAuthor: zerothebigboy <cookiesvvww@gmail.com> Date: Fri Jun 11 19:49:43 2021 -0400 theeighteenthofmany commit53e95b7356Author: zerothebigboy <cookiesvvww@gmail.com> Date: Fri Jun 11 19:48:04 2021 -0400 theseventeenthofmany commit4486b08bd4Author: zerothebigboy <cookiesvvww@gmail.com> Date: Fri Jun 11 19:33:51 2021 -0400 thefifteenthofmany commit979aa04a69Merge:c33348fe18b188a6ea0fAuthor: 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) commit8a5a5ef6ccAuthor: zerothebigboy <cookiesvvww@gmail.com> Date: Fri Jun 11 19:22:05 2021 -0400 thethirteenthofmany commitb188a6ea0fAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Fri Jun 11 16:15:31 2021 -0700 why commita8f17c3305Author: silicons <2003111+silicons@users.noreply.github.com> Date: Fri Jun 11 15:33:55 2021 -0700 hm commit39d951a4a8Author: zerothebigboy <cookiesvvww@gmail.com> Date: Fri Jun 11 18:24:29 2021 -0400 thesixthofmany commit5bf831be0fAuthor: zerothebigboy <cookiesvvww@gmail.com> Date: Fri Jun 11 18:17:16 2021 -0400 thefourthofmany commit0830181b26Author: silicons <2003111+silicons@users.noreply.github.com> Date: Fri Jun 11 15:10:29 2021 -0700 hm commite78929cde1Author: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri Jun 11 17:55:38 2021 +0100 typo commitbaad78e7feAuthor: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri Jun 11 16:08:55 2021 +0100 bee commit816b09bf32Merge:4289b8be1ec33348fe18Author: 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 commit7980ee2c37Author: EmeraldSundisk <thachazman@hotmail.com> Date: Thu Jun 10 21:54:00 2021 -0700 strongdmm commit584dce4a80Author: qweq12yt <45515587+qweq12yt@users.noreply.github.com> Date: Fri Jun 11 01:34:19 2021 -0300 updating comments commit78470092fcAuthor: qweq12yt <45515587+qweq12yt@users.noreply.github.com> Date: Fri Jun 11 01:12:16 2021 -0300 Update settings.json commitc33348fe18Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Thu Jun 10 19:52:15 2021 -0500 Automatic changelog generation for PR #14768 [ci skip] commit86881dc1afMerge:a683754160b1b931a7c4Author: 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 commita683754160Author: Changelogs <action@github.com> Date: Fri Jun 11 00:23:59 2021 +0000 Automatic changelog compile [ci skip] commit0ca61af62aAuthor: qweq12yt <45515587+qweq12yt@users.noreply.github.com> Date: Thu Jun 10 16:50:44 2021 -0300 fixed combo lockers commitebb4ab1f07Author: EmeraldSundisk <thachazman@hotmail.com> Date: Wed Jun 9 21:21:24 2021 -0700 to finish commit29e37b0f5eMerge:375da54dc29376ec0d04Author: 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 commit3321e17c6fAuthor: SandPoot <43283559+SandPoot@users.noreply.github.com> Date: Wed Jun 9 21:48:06 2021 -0300 Update NtosWindow.js Delet unused stuff commite63eac2c57Author: SandPoot <43283559+SandPoot@users.noreply.github.com> Date: Wed Jun 9 21:47:33 2021 -0300 upload NtosWindow.js commit79c501a7b4Author: SandPoot <enric_gabirel@hotmail.com> Date: Wed Jun 9 21:36:43 2021 -0300 upload files commit9376ec0d04Author: Changelogs <action@github.com> Date: Thu Jun 10 00:25:00 2021 +0000 Automatic changelog compile [ci skip] commit42b8120f74Author: TripleShades <MegaProto@gmx.com> Date: Wed Jun 9 15:47:33 2021 -0400 Update DeltaStation2.dmm commit0ca6e983c9Author: TripleShades <MegaProto@gmx.com> Date: Wed Jun 9 15:32:48 2021 -0400 changies delda changies good commitd3f1a163b1Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 14:14:39 2021 -0500 Automatic changelog generation for PR #14683 [ci skip] commit5e4f3ed694Merge:e78715d95233affb4f10Author: 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. commit33affb4f10Author: keronshb <keronshb@live.com> Date: Wed Jun 9 15:14:07 2021 -0400 THREE SECONDS commited929dda12Author: keronshb <keronshb@live.com> Date: Wed Jun 9 15:12:22 2021 -0400 Changes up the animation a bit commitd70a35a48dAuthor: SandPoot <enric_gabirel@hotmail.com> Date: Wed Jun 9 15:49:57 2021 -0300 upload syndicate.dm commite78715d952Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:29:26 2021 -0500 Automatic changelog generation for PR #14776 [ci skip] commit09d61c3becMerge:13c965e5f37884ccf316Author: 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!) commit13c965e5f3Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:22:28 2021 -0500 Automatic changelog generation for PR #14766 [ci skip] commita77aa8bd41Merge:fa24353b16ed86a6628aAuthor: 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. commitfa24353b16Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:21:57 2021 -0500 Automatic changelog generation for PR #14762 [ci skip] commit224efa0e26Merge:535435633e2eeb6ede1eAuthor: 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 commit535435633eAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:21:24 2021 -0500 Automatic changelog generation for PR #14760 [ci skip] commiteb4b4088f4Merge:323e2f435540f9941849Author: 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. commit323e2f4355Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:21:14 2021 -0500 Automatic changelog generation for PR #14759 [ci skip] commit996a99b7f4Merge:c094d771c171a8c08e22Author: 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 commitc094d771c1Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:20:52 2021 -0500 Automatic changelog generation for PR #14749 [ci skip] commita56ac3ce07Merge:34b3fd10117dab80cbb7Author: 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™) commit34b3fd1011Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:19:42 2021 -0500 Automatic changelog generation for PR #14771 [ci skip] commit30e7939e0eMerge:8d9cfc7b4a25fe97e8feAuthor: 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 commit8d9cfc7b4aAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:18:35 2021 -0500 Automatic changelog generation for PR #14796 [ci skip] commit564a3aaa4bMerge:82a61121cd2db540aae3Author: 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 commit82a61121cdAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:18:12 2021 -0500 Automatic changelog generation for PR #14803 [ci skip] commitb28d4f26f3Merge:21e816abba26544ddbb7Author: 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 commit21e816abbaAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:17:54 2021 -0500 Automatic changelog generation for PR #14806 [ci skip] commitdcd80edf5fMerge:0ee2892bee536135ec02Author: 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 commit0ee2892beeMerge:5197b0aff3fcd1ec83ccAuthor: 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 commit5197b0aff3Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:17:27 2021 -0500 Automatic changelog generation for PR #14808 [ci skip] commit7af470efefMerge:4b675a930000bb96d467Author: 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 commit4b675a9300Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:17:20 2021 -0500 Automatic changelog generation for PR #14810 [ci skip] commitc7df74f452Merge:ec63a4c62b082ffa16f3Author: 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 commitec63a4c62bMerge:3d86ce9bda84db564e0fAuthor: 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 commit3d86ce9bdaMerge:a339d43eac015bd3c338Author: 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 commiteaf36d3137Author: silicons <2003111+silicons@users.noreply.github.com> Date: Wed Jun 9 11:16:55 2021 -0700 Update _flags.dm commita339d43eacAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:15:58 2021 -0500 Automatic changelog generation for PR #14802 [ci skip] commita7781f77fdMerge:31b544dc677826ced174Author: 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? commit31b544dc67Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:15:41 2021 -0500 Automatic changelog generation for PR #14805 [ci skip] commit2402c56bfcMerge:460026f3bc1a72070f5cAuthor: 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 commit460026f3bcMerge:5ffceb376d5563ed1492Author: 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 commit5ffceb376dMerge:87e6b3992f413bb15961Author: 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 commit87e6b3992fAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:15:03 2021 -0500 Automatic changelog generation for PR #14809 [ci skip] commitc0e3b8d5efMerge:259aed7903b0940456f5Author: 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 commit259aed7903Merge:fe8323f503b2e2c49011Author: 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 commitfe8323f503Merge:03e71c36a57458909970Author: 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. commit03e71c36a5Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:12:26 2021 -0500 Automatic changelog generation for PR #14712 [ci skip] commit7963dce24eMerge:0a2f05b5ddf4780d4b5aAuthor: 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) commit0a2f05b5ddAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 9 13:10:20 2021 -0500 Automatic changelog generation for PR #14160 [ci skip] commit716c2a04e4Merge:103731ed05475a7d2499Author: 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) commit103731ed05Author: Changelogs <action@github.com> Date: Wed Jun 9 00:26:52 2021 +0000 Automatic changelog compile [ci skip] commit413bb15961Author: 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> commit082ffa16f3Author: zeroisthebiggay <43571008+zeroisthebiggay@users.noreply.github.com> Date: Tue Jun 8 15:43:32 2021 -0400 Update car.dm commitb0940456f5Author: SandPoot <enric_gabirel@hotmail.com> Date: Tue Jun 8 13:13:22 2021 -0300 upload files commit00bb96d467Author: SandPoot <enric_gabirel@hotmail.com> Date: Tue Jun 8 12:32:12 2021 -0300 upload soulstone.dm commitfcd1ec83ccAuthor: Putnam <putnam3145@gmail.com> Date: Tue Jun 8 00:25:31 2021 -0700 removed redundant check commitf6e08a8d2aAuthor: Putnam <putnam3145@gmail.com> Date: Tue Jun 8 00:24:54 2021 -0700 include a message too commita236357ebeAuthor: Putnam <putnam3145@gmail.com> Date: Tue Jun 8 00:21:19 2021 -0700 makes medihound sleeper toggle do something commit536135ec02Author: zeroisthebiggay <43571008+zeroisthebiggay@users.noreply.github.com> Date: Tue Jun 8 01:17:10 2021 -0400 last bit of finetuning commit55075fb31bAuthor: zeroisthebiggay <43571008+zeroisthebiggay@users.noreply.github.com> Date: Tue Jun 8 01:15:03 2021 -0400 Update revenant.dm commit538f1c802dAuthor: zeroisthebiggay <43571008+zeroisthebiggay@users.noreply.github.com> Date: Tue Jun 8 01:13:12 2021 -0400 Update revenant.dm commit1a72070f5cAuthor: bunny232 <bunnyracer23@yahoo.com> Date: Mon Jun 7 21:44:33 2021 -0400 slimejelly a commit614c3192e5Author: Changelogs <action@github.com> Date: Tue Jun 8 00:43:09 2021 +0000 Automatic changelog compile [ci skip] commit26544ddbb7Author: bunny232 <bunnyracer23@yahoo.com> Date: Sun Jun 6 17:24:10 2021 -0400 21/79 not 20/80 commit7826ced174Author: bunny232 <bunnyracer23@yahoo.com> Date: Sun Jun 6 12:54:07 2021 -0400 Update effects_foam.dm commite24ecea492Author: Changelogs <action@github.com> Date: Sun Jun 6 00:41:17 2021 +0000 Automatic changelog compile [ci skip] commit697fffd347Merge:f3f5b0d605e4c01b3f74Author: 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. commitf3f5b0d605Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Sat Jun 5 16:26:23 2021 -0500 Automatic changelog generation for PR #14793 [ci skip] commit27d7b4b564Merge:06bcb7c904720966f31eAuthor: 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 commit06bcb7c904Merge:5f6cb40d16d3f6b69a86Author: Lin <linzolle@gmail.com> Date: Sat Jun 5 16:21:12 2021 -0500 Merge pull request #14795 from MrJWhit/boxstation-touchups2 Boxstation touchups2 commit7884ccf316Author: 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 commitbc56f74229Author: silicons <2003111+silicons@users.noreply.github.com> Date: Fri Jun 4 20:23:02 2021 -0700 Delete docker_publish.yml commit40f9941849Author: keronshb <keronshb@live.com> Date: Fri Jun 4 22:52:03 2021 -0400 Fixes invisibility when being dragged and glass table cheese commit5f6cb40d16Merge:4b3a4d99dc0dc1163a29Author: 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 commit2db540aae3Author: MrJWhit <48370570+MrJWhit@users.noreply.github.com> Date: Fri Jun 4 20:53:34 2021 -0400 Update holodeck.dm commit4b3a4d99dcAuthor: Changelogs <action@github.com> Date: Sat Jun 5 00:48:25 2021 +0000 Automatic changelog compile [ci skip] commit560ce54d59Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Fri Jun 4 17:37:59 2021 -0500 Automatic changelog generation for PR #14763 [ci skip] commitb757e22956Merge:2ec1abe71e7dea33f6c2Author: 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 commitd3f6b69a86Author: MrJWhit <48370570+MrJWhit@users.noreply.github.com> Date: Fri Jun 4 13:26:06 2021 -0400 Update BoxStation.dmm commit2ec1abe71eAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Fri Jun 4 12:13:39 2021 -0500 Automatic changelog generation for PR #14786 [ci skip] commita31c99e361Merge:9acd1ed386f631879b88Author: Lin <linzolle@gmail.com> Date: Fri Jun 4 12:13:36 2021 -0500 Merge pull request #14786 from Arturlang/fixes_float Fixes float() commit829944640eAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Fri Jun 4 09:24:15 2021 -0700 Update _flags.dm commit9acd1ed386Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Fri Jun 4 10:29:45 2021 -0500 Automatic changelog generation for PR #14788 [ci skip] commit4b3e33bb8aMerge:3fccc794832cfbee96eaAuthor: 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 commit3fccc79483Author: Changelogs <action@github.com> Date: Fri Jun 4 01:10:04 2021 +0000 Automatic changelog compile [ci skip] commit720966f31eAuthor: bunny232 <bunnyracer23@yahoo.com> Date: Thu Jun 3 19:10:46 2021 -0400 Misty~ commite4c01b3f74Author: bunny232 <bunnyracer23@yahoo.com> Date: Thu Jun 3 18:49:43 2021 -0400 Woopsie, right vars are set now commit4b5b6a9063Author: bunny232 <bunnyracer23@yahoo.com> Date: Thu Jun 3 18:38:59 2021 -0400 Update MetaStation.dmm commit2cfbee96eaAuthor: coderbus13 <31148848+coderbus13@users.noreply.github.com> Date: Thu Jun 3 01:09:41 2021 -0500 Delete temp commit9df9828666Author: coderbus13 <31148848+coderbus13@users.noreply.github.com> Date: Thu Jun 3 01:08:36 2021 -0500 Add files via upload commit8ca433fadbAuthor: coderbus13 <31148848+coderbus13@users.noreply.github.com> Date: Thu Jun 3 01:08:20 2021 -0500 Create temp commit8dff4fa301Author: 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 commitef4ea8b0daAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 2 21:50:36 2021 -0500 Automatic changelog generation for PR #14772 [ci skip] commitc2c2825027Merge:36284922da9040c08698Author: 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 commit36284922daAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 2 20:23:09 2021 -0500 Automatic changelog generation for PR #14785 [ci skip] commit24f7576b92Merge:8a4c6c4cf4160882fb6cAuthor: Lin <linzolle@gmail.com> Date: Wed Jun 2 20:23:06 2021 -0500 Merge pull request #14785 from MrJWhit/metastation-fix Metastation atmos fix commit8a4c6c4cf4Author: Changelogs <action@github.com> Date: Thu Jun 3 01:12:16 2021 +0000 Automatic changelog compile [ci skip] commitc869f9b53aAuthor: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 2 19:44:57 2021 -0500 Automatic changelog generation for PR #14784 [ci skip] commit0ead4e0bbbMerge:5876399d14e08c10e5fbAuthor: Lin <linzolle@gmail.com> Date: Wed Jun 2 19:44:55 2021 -0500 Merge pull request #14784 from TripleShades/sigh-pubby Tiny Pubby Additions commit5876399d14Merge:b341c184b5f70d6b9ea5Author: 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 commitb341c184b5Author: CitadelStationBot <citadelstationcommunity@gmail.com> Date: Wed Jun 2 19:41:25 2021 -0500 Automatic changelog generation for PR #14782 [ci skip] commit2b8ef762a7Merge:0fdfda7dc4fe9fdf0975Author: Lin <linzolle@gmail.com> Date: Wed Jun 2 19:41:23 2021 -0500 Merge pull request #14782 from MrJWhit/xenoruin-fix Fixing xenoruins floor commit0fdfda7dc4Merge:cb52be5dd90f0ad31aabAuthor: 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 commitb2e2c49011Author: DeltaFire <andreoxgrievous@gmail.com> Date: Wed Jun 2 17:47:57 2021 +0200 plasmamen & golems commit015bd3c338Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com> Date: Wed Jun 2 17:22:46 2021 +0200 Armor for security armor and a small fix commitd8e31af507Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com> Date: Wed Jun 2 15:31:19 2021 +0200 And the Icons themselves commit505dd3399fAuthor: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com> Date: Wed Jun 2 15:30:13 2021 +0200 Inventory Icons commit5c827d9796Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com> Date: Wed Jun 2 15:28:46 2021 +0200 Bit of that commit9cdc45a905Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com> Date: Wed Jun 2 15:27:47 2021 +0200 Bit of this commitb563e6c2e0Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com> Date: Wed Jun 2 15:25:50 2021 +0200 Splits Engineering and Security ORV Suits commitf631879b88Author: Artur <arturpaavooskari.lang@gmail.com> Date: Wed Jun 2 14:27:22 2021 +0300 fixes_float commit0d206742faAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Tue Jun 1 21:35:49 2021 -0700 Update world_topic.dm commit160882fb6cAuthor: MrJWhit <48370570+MrJWhit@users.noreply.github.com> Date: Tue Jun 1 21:48:22 2021 -0400 Update MetaStation.dmm commite08c10e5fbAuthor: TripleShades <MegaProto@gmx.com> Date: Tue Jun 1 17:00:16 2021 -0400 fucking pubby this should be everything commit0f01a4a7daAuthor: DeltaFire <andreoxgrievous@gmail.com> Date: Tue Jun 1 22:52:39 2021 +0200 huh commitdd33371a3bAuthor: DeltaFire <andreoxgrievous@gmail.com> Date: Tue Jun 1 22:48:57 2021 +0200 colors commitfe9fdf0975Author: MrJWhit <48370570+MrJWhit@users.noreply.github.com> Date: Tue Jun 1 11:26:46 2021 -0400 Update lavaland_surface_alien_nest.dmm commit656d0545cdAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Tue Jun 1 01:32:54 2021 -0700 Update world_topic.dm commitf9be173f08Author: keronshb <keronshb@live.com> Date: Mon May 31 22:25:32 2021 -0400 Fixes the shoes? Maybe? commit70926f5dafMerge:e0a1e50927cb52be5dd9Author: keronshb <keronshb@live.com> Date: Mon May 31 22:21:34 2021 -0400 Merge remote-tracking branch 'upstream/master' into floorcluwneport commit84db564e0fAuthor: Arturlang <arturpaavooskari.lang@gmail.com> Date: Tue Jun 1 02:25:06 2021 +0300 Prettier? code commit4b541d3dacAuthor: Arturlang <arturpaavooskari.lang@gmail.com> Date: Tue Jun 1 02:21:33 2021 +0300 phonecode commit8687312935Author: Artur <arturpaavooskari.lang@gmail.com> Date: Mon May 31 18:14:06 2021 +0300 Makes orbit menu show antags if DNR commite69729beb4Author: 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. commitdd6452ad5bAuthor: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com> Date: Mon May 31 10:11:12 2021 +0200 Fixes the file? Please? commitb3851a4647Author: 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 commit249d23a6ccAuthor: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com> Date: Mon May 31 09:52:31 2021 +0200 Fixed something with the event commitf70d6b9ea5Author: bunny232 <bunnyracer23@yahoo.com> Date: Mon May 31 01:52:43 2021 -0400 dir = 1 and adds a forgotten fire alarm. commitff379e41b6Author: bunny232 <bunnyracer23@yahoo.com> Date: Mon May 31 01:47:49 2021 -0400 Think map preview think! commit398491b584Author: 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. commit2516afbbbaAuthor: 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! commitae2970f318Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com> Date: Sun May 30 21:17:03 2021 +0200 Adds a special Catranq Dart commitdf0e1057d1Author: WanderingFox95 <75953558+WanderingFox95@users.noreply.github.com> Date: Sun May 30 21:15:44 2021 +0200 Imagine this crazy person became a threat suddenly commit5563ed1492Author: 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> commit0dc1163a29Author: Putnam <putnam3145@gmail.com> Date: Sun May 30 00:44:02 2021 -0700 adds a sorely needed line break commit9040c08698Author: Putnam <putnam3145@gmail.com> Date: Sun May 30 00:38:07 2021 -0700 whoops i forgot the var commit2ab05d1247Author: Putnam <putnam3145@gmail.com> Date: Sun May 30 00:31:20 2021 -0700 makes sniper zooming work commit25fe97e8feAuthor: keronshb <keronshb@live.com> Date: Sat May 29 13:21:23 2021 -0400 Lets Disposal pipes work on the cargo shuttle again Silly removal. commit71db9298a1Author: silicons <2003111+silicons@users.noreply.github.com> Date: Fri May 28 18:21:46 2021 -0700 Update world_topic.dm commitc1a9f9cfe9Author: keronshb <keronshb@live.com> Date: Fri May 28 17:40:43 2021 -0400 GLOW ANIMATION commit86a825bb9fAuthor: keronshb <keronshb@live.com> Date: Fri May 28 15:57:16 2021 -0400 Space Adapt outline commitb1b931a7c4Author: silicons <2003111+silicons@users.noreply.github.com> Date: Thu May 27 22:48:24 2021 -0700 Update _bodyparts.dm commited86a6628aAuthor: Linzolle <linzolle@gmail.com> Date: Thu May 27 19:53:55 2021 -0500 THIS SHOULD REALLY BE THE OTHER WAY AROUND commit0cf7c5070dAuthor: Linzolle <linzolle@gmail.com> Date: Thu May 27 19:45:12 2021 -0500 parentheses commit46833abf0bAuthor: Linzolle <linzolle@gmail.com> Date: Thu May 27 19:34:00 2021 -0500 add cult_permitted area flag commit0f0ad31aabAuthor: MrJWhit <48370570+MrJWhit@users.noreply.github.com> Date: Thu May 27 17:58:21 2021 -0400 Update BoxStation.dmm commit7dea33f6c2Author: zerothebigboy <cookiesvvww@gmail.com> Date: Thu May 27 16:08:28 2021 -0400 doge commitf7ca7d7afeMerge:f4ba3aa688bff21669e3Author: keronshb <keronshb@live.com> Date: Thu May 27 13:29:08 2021 -0400 Merge remote-tracking branch 'upstream/master' commite0a1e50927Author: keronshb <keronshb@live.com> Date: Thu May 27 13:25:27 2021 -0400 Fixes the linter commit482b679937Author: keronshb <keronshb@live.com> Date: Thu May 27 12:24:16 2021 -0400 Should fix the linter? commit2eeb6ede1eAuthor: 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 commit903ff69621Author: 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) commitd42fb1ae90Author: DrPainis <79603707+DrPainis@users.noreply.github.com> Date: Thu May 27 12:17:41 2021 -0400 makes cat meteors significantly rarer than meaty ores commit8f1db2d5ecAuthor: 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. commit1ce8ffba11Author: DrPainis <79603707+DrPainis@users.noreply.github.com> Date: Thu May 27 11:48:09 2021 -0400 fixes the typepath for cat meteors commit11a6cfd99cAuthor: bunny232 <bunnyracer23@yahoo.com> Date: Thu May 27 03:27:10 2021 -0400 Delta station ce office, now with less microwave slaughter. commit1b8ef53014Author: DrPainis <79603707+DrPainis@users.noreply.github.com> Date: Thu May 27 00:55:41 2021 -0400 maybe makes this compile commitcbb7673e79Author: 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. commit98d5499712Author: DrPainis <79603707+DrPainis@users.noreply.github.com> Date: Thu May 27 00:25:55 2021 -0400 adds the cat wave_type commitd199f0585aAuthor: DrPainis <79603707+DrPainis@users.noreply.github.com> Date: Thu May 27 00:23:24 2021 -0400 adds cat meteors because funny commit7dbab19597Author: keronshb <keronshb@live.com> Date: Thu May 27 00:14:43 2021 -0400 Fixes the linters and adds a proper async commit78db6bd5c2Author: keronshb <keronshb@live.com> Date: Wed May 26 21:58:35 2021 -0400 Ports Floor Cluwnes Oh fuck oh god commit71a8c08e22Author: Arturlang <arturpaavooskari.lang@gmail.com> Date: Wed May 26 18:40:59 2021 +0300 A lil more commit673a322cbbAuthor: Artur <arturpaavooskari.lang@gmail.com> Date: Wed May 26 18:29:18 2021 +0300 changes cost of two uplink items commit9e3c1ff860Author: keronshb <keronshb@live.com> Date: Mon May 24 22:46:59 2021 -0400 adds floor cluwnes from yog commit7dab80cbb7Author: DrPainis <79603707+DrPainis@users.noreply.github.com> Date: Sun May 23 23:42:16 2021 -0400 fuck commit51911e1f27Author: DrPainis <79603707+DrPainis@users.noreply.github.com> Date: Sun May 23 23:36:11 2021 -0400 adds the recipe for goliath calamari commita7add64905Author: 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. commitce1b170b46Author: DrPainis <79603707+DrPainis@users.noreply.github.com> Date: Sun May 23 23:27:48 2021 -0400 adds goliath calamari commit7458909970Author: keronshb <keronshb@live.com> Date: Sun May 23 13:36:03 2021 -0400 Switched heated screws to solder. commit8787caccbaAuthor: keronshb <keronshb@live.com> Date: Sat May 22 14:12:31 2021 -0400 Fixes the roundstart deconstruction issue commitbd05dd29b6Author: keronshb <keronshb@live.com> Date: Sat May 22 13:58:01 2021 -0400 ReinforcedPlasmaSteps Adds more steps for deconning stronger windows commit0dd24d9de9Author: silicons <2003111+silicons@users.noreply.github.com> Date: Fri May 21 19:35:46 2021 -0700 Update world_topic.dm commitf07d832cadAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Fri May 21 18:20:28 2021 -0700 Update world_topic.dm commit538efd2d8fAuthor: keronshb <keronshb@live.com> Date: Wed May 19 20:01:11 2021 -0400 Alt Click and Alt Click message commit88dc0821d1Author: keronshb <keronshb@live.com> Date: Wed May 19 19:49:48 2021 -0400 User gibs when being turned into a spess dragon commit0f7c71cfdbAuthor: keronshb <keronshb@live.com> Date: Wed May 19 19:16:24 2021 -0400 trailing endline commit1d843cc72fAuthor: keronshb <keronshb@live.com> Date: Wed May 19 19:19:35 2021 -0400 Part 3 - the missing stuff commitb19fb1cfa8Author: keronshb <keronshb@live.com> Date: Wed May 19 19:18:50 2021 -0400 Part 2 with Sprites commita15637a929Author: keronshb <keronshb@live.com> Date: Wed May 19 19:18:19 2021 -0400 Part 1 of Health Bars for Space Dragon commitf4780d4b5aAuthor: keronshb <keronshb@live.com> Date: Wed May 19 11:19:12 2021 -0400 Correct Raw Prophet recipe commit547b3d0a0bAuthor: keronshb <keronshb@live.com> Date: Wed May 19 11:15:48 2021 -0400 TP finally works commitb8b25662ffAuthor: keronshb <keronshb@live.com> Date: Tue May 18 22:12:02 2021 -0400 Couple of fixes, almost ready to go commitd2f69acaf8Author: keronshb <keronshb@live.com> Date: Tue May 18 12:06:32 2021 -0400 Space Dragon Event Ports the Space Dragon event commitf802890153Author: silicons <2003111+silicons@users.noreply.github.com> Date: Sun May 16 22:17:50 2021 -0700 Update world_topic.dm commit8ff0685f0dAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Sat May 15 18:28:00 2021 -0700 Update world_topic.dm commit3ae3caa14aAuthor: bunny232 <bunnyracer23@yahoo.com> Date: Fri May 14 18:05:24 2021 -0400 Update DeltaStation2.dmm commit94bd7308aeAuthor: bunny232 <bunnyracer23@yahoo.com> Date: Fri May 14 17:38:55 2021 -0400 Update DeltaStation2.dmm commitbc35ffeaa2Author: 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> commit0b06957dc7Author: 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 commita6ae645fc2Author: keronshb <keronshb@live.com> Date: Fri May 14 12:32:48 2021 -0400 Space Dragon Fixes (#55759) commit3aa72f7d31Author: 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> commit7e5a44cbd6Author: 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) commit2eba3ae383Author: 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. commitef470a3bafAuthor: keronshb <keronshb@live.com> Date: Thu May 13 13:37:35 2021 -0400 Fixes Void Robes for Digi legs commitbdd42c728dAuthor: keronshb <keronshb@live.com> Date: Thu May 13 13:21:34 2021 -0400 Adds a missing space commit55ee9a00b4Author: silicons <2003111+silicons@users.noreply.github.com> Date: Wed May 12 18:24:26 2021 -0700 woo yeah woo yeah commit8e2921f3c0Author: silicons <2003111+silicons@users.noreply.github.com> Date: Wed May 12 17:36:01 2021 -0700 woo commit59f160be57Author: silicons <2003111+silicons@users.noreply.github.com> Date: Wed May 12 16:59:48 2021 -0700 woo commit2a3a45573fAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Wed May 12 16:58:17 2021 -0700 woo commit6237928c4bAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Wed May 12 16:55:21 2021 -0700 woo commit0b9d021d9bAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Wed May 12 16:51:28 2021 -0700 woo commit482be2ee0dAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Wed May 12 16:37:13 2021 -0700 okay commit611dca2776Author: keronshb <keronshb@live.com> Date: Wed May 12 17:04:10 2021 -0400 New Line at End of file commit21ca62a2e2Author: keronshb <keronshb@live.com> Date: Wed May 12 14:54:44 2021 -0400 FINALLY fixes the comma, I think Time to try commit0841cea1d5Author: keronshb <keronshb@live.com> Date: Wed May 12 13:17:23 2021 -0400 I still have no idea what's messing with this commit3fb84eb1d8Author: silicons <2003111+silicons@users.noreply.github.com> Date: Wed May 12 03:35:02 2021 -0700 fix commitaeefeb6c53Author: silicons <2003111+silicons@users.noreply.github.com> Date: Wed May 12 03:33:41 2021 -0700 woo commit0185007e6cAuthor: keronshb <keronshb@live.com> Date: Tue May 11 19:33:53 2021 -0400 adding ; to line 25 commit0cb6f2469bAuthor: keronshb <keronshb@live.com> Date: Tue May 11 18:39:36 2021 -0400 Have no idea... commit8c7c41bfd4Author: keronshb <keronshb@live.com> Date: Tue May 11 18:17:41 2021 -0400 Fixes the comma, I think commit1de8b69312Author: keronshb <keronshb@live.com> Date: Tue May 11 18:10:27 2021 -0400 Fixes the linter Fixes the linter commit79f5feea9fMerge:4749be2ba882b6443928Author: keronshb <keronshb@live.com> Date: Tue May 11 17:58:41 2021 -0400 Merge remote-tracking branch 'upstream/master' into hereticadjustments commit4749be2ba8Author: keronshb <keronshb@live.com> Date: Tue May 11 16:52:16 2021 -0400 Final rework Last part. commit57dfe8dc09Author: 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. commitcda492c6baAuthor: keronshb <keronshb@live.com> Date: Sun May 9 20:10:38 2021 -0400 Removes the condition if they're knocked down commit82e4421cdeAuthor: keronshb <keronshb@live.com> Date: Sun May 9 20:01:30 2021 -0400 Ports Break in hand from tg 58526 commit11a7e118feAuthor: 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. commit7947258e51Author: 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. commitbe2e962983Author: keronshb <keronshb@live.com> Date: Tue May 4 00:51:16 2021 -0400 Off Balance for Guns only again Was intended for guns commit4289b8be1eMerge:78a9cdc5c60c803e0232Author: 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 commit78a9cdc5c6Merge:7cc6bba5ff810eba15edAuthor: 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 commit7cc6bba5ffAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Wed Apr 28 22:27:09 2021 -0700 fixes commit456b55cb06Author: silicons <2003111+silicons@users.noreply.github.com> Date: Wed Apr 28 22:25:39 2021 -0700 that too commit80a8467e9eAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Wed Apr 28 22:24:49 2021 -0700 hm commitfefb33454fAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Wed Apr 28 16:16:55 2021 -0700 do that too commitc3d91f01dbAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Wed Apr 28 07:20:54 2021 -0700 scripts commitd06c33bd8dAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Wed Apr 28 07:17:34 2021 -0700 restore cit stuff commit3f09460b6eAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Wed Apr 28 07:04:29 2021 -0700 let's do that commit488a6a6927Author: silicons <2003111+silicons@users.noreply.github.com> Date: Wed Apr 28 07:02:26 2021 -0700 woops commit375da54dc2Merge:133f3d55d2810eba15edAuthor: 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 commit50831a9c73Author: silicons <2003111+silicons@users.noreply.github.com> Date: Sun Apr 25 16:40:33 2021 -0700 fixes commit47bd3c6c7cAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Sun Apr 25 16:22:46 2021 -0700 ok commit7919f09160Merge:1dbd86499c44c2a9eecdAuthor: 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 commit1dbd86499cAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Sun Apr 25 16:18:41 2021 -0700 others commitd017d7df66Author: silicons <2003111+silicons@users.noreply.github.com> Date: Sun Apr 25 16:16:38 2021 -0700 let's do that commit9e123db32aAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Sun Apr 25 16:15:25 2021 -0700 ok commit990e74179aAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Sun Apr 25 16:09:41 2021 -0700 other thing commit9933a917acAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Sun Apr 25 16:08:33 2021 -0700 ? commitfdafe0fb84Author: silicons <2003111+silicons@users.noreply.github.com> Date: Sun Apr 25 15:57:32 2021 -0700 vscode commit12894384ffAuthor: silicons <2003111+silicons@users.noreply.github.com> Date: Sun Apr 25 14:17:37 2021 -0700 okay commit475a7d2499Author: keronshb <keronshb@live.com> Date: Wed Apr 14 18:01:17 2021 -0400 Icon fixes Should fix the merge conflict commit20c190c17dMerge:bb047bd57e4d797ab694Author: keronshb <keronshb@live.com> Date: Wed Apr 14 17:55:24 2021 -0400 Merge remote-tracking branch 'upstream/master' into motivation commitbb047bd57eAuthor: keronshb <keronshb@live.com> Date: Wed Apr 14 17:54:33 2021 -0400 dunno why this is here dunno why this is here commit133f3d55d2Merge:624b5a9707d4d3eea5aaAuthor: 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 commit624b5a9707Merge:98e3464604b6b9619f2dAuthor: 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 commit41530110a2Author: keronshb <keronshb@live.com> Date: Wed Feb 10 20:00:17 2021 -0500 LINTER AHHHH NEW LINE commit827b4efb42Author: keronshb <keronshb@live.com> Date: Fri Jan 29 13:42:07 2021 -0500 Fixes ANOTHER merge conflict agony commitae970d5b22Merge:26dfff87fcc8dc669e58Author: keronshb <keronshb@live.com> Date: Fri Jan 29 13:38:11 2021 -0500 Merge remote-tracking branch 'origin/master' into motivation commit26dfff87fcAuthor: 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. commit4346cb937aAuthor: keronshb <keronshb@live.com> Date: Fri Jan 29 09:32:28 2021 -0500 Fixes merge conflict and makes minor adjustments TItle commita4e933185eMerge:5761417e5b4d945d5f15Author: keronshb <keronshb@live.com> Date: Fri Jan 29 09:29:55 2021 -0500 Merge remote-tracking branch 'origin/master' into motivation commit5761417e5bAuthor: keronshb <keronshb@live.com> Date: Thu Jan 28 22:21:20 2021 -0500 Adding it to traitors Here it is! commita6725b3c23Author: keronshb <keronshb@live.com> Date: Thu Jan 28 22:06:25 2021 -0500 Motivation near final Should be almost done after this. commita2833ea85fAuthor: keronshb <keronshb@live.com> Date: Tue Jan 26 13:27:06 2021 -0500 Movitation WIP WIP still working on this
This commit is contained in:
@@ -53,6 +53,7 @@
|
||||
#define GELADIKINESIS /datum/mutation/human/geladikinesis
|
||||
#define CRYOKINESIS /datum/mutation/human/cryokinesis
|
||||
#define SPIDER_WEB /datum/mutation/human/webbing
|
||||
#define CLUWNEMUT /datum/mutation/human/cluwne
|
||||
|
||||
#define UI_CHANGED "ui changed"
|
||||
#define UE_CHANGED "ue changed"
|
||||
|
||||
@@ -17,7 +17,11 @@
|
||||
} while(0);
|
||||
#define CHECK_MULTIPLE_BITFIELDS(flagvar, flags) (((flagvar) & (flags)) == (flags))
|
||||
|
||||
GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768))
|
||||
GLOBAL_LIST_INIT(bitflags, list(
|
||||
1<<0, 1<<1, 1<<2, 1<<3, 1<<4, 1<<5, 1<<6, 1<<7,
|
||||
1<<8, 1<<9, 1<<10, 1<<11, 1<<12, 1<<13, 1<<14, 1<<15,
|
||||
1<<16, 1<<17, 1<<18, 1<<19, 1<<20, 1<<21, 1<<22, 1<<23
|
||||
))
|
||||
|
||||
// for /datum/var/datum_flags
|
||||
#define DF_USE_TAG (1<<0)
|
||||
@@ -56,8 +60,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
|
||||
#define UNUSED_RESERVATION_TURF_1 (1<<1)
|
||||
/// If a turf can be made dirty at roundstart. This is also used in areas.
|
||||
#define CAN_BE_DIRTY_1 (1<<2)
|
||||
/// If blood cultists can draw runes or build structures on this turf
|
||||
#define CULT_PERMITTED_1 (1<<3)
|
||||
/// Blocks lava rivers being generated on the turf
|
||||
#define NO_LAVA_GEN_1 (1<<6)
|
||||
/// Blocks ruins spawning on the turf
|
||||
@@ -92,6 +94,8 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
|
||||
#define ABDUCTOR_PROOF (1<<11)
|
||||
/// If an area should be hidden from power consoles, power/atmosphere alerts, etc.
|
||||
#define NO_ALERTS (1<<12)
|
||||
/// If blood cultists can draw runes or build structures on this AREA.
|
||||
#define CULT_PERMITTED (1<<13)
|
||||
|
||||
/*
|
||||
These defines are used specifically with the atom/pass_flags bitmask
|
||||
|
||||
@@ -82,6 +82,7 @@
|
||||
#define ADMIN_PUNISHMENT_PICKLE "Pickle-ify"
|
||||
#define ADMIN_PUNISHMENT_FRY "Fry"
|
||||
#define ADMIN_PUNISHMENT_PERFORATE ":B:erforate"
|
||||
#define ADMIN_PUNISHMENT_CLUWNE "Cluwne"
|
||||
|
||||
#define AHELP_ACTIVE 1
|
||||
#define AHELP_CLOSED 2
|
||||
|
||||
@@ -148,10 +148,10 @@
|
||||
#define CANVERTICALATMOSPASS(A, O) ( A.CanAtmosPassVertical == ATMOS_PASS_PROC ? A.CanAtmosPass(O, TRUE) : ( A.CanAtmosPassVertical == ATMOS_PASS_DENSITY ? !A.density : A.CanAtmosPassVertical ) )
|
||||
|
||||
//OPEN TURF ATMOS
|
||||
#define OPENTURF_DEFAULT_ATMOS "o2=22;n2=82;TEMP=293.15" //the default air mix that open turfs spawn
|
||||
#define OPENTURF_DEFAULT_ATMOS "o2=21.78;n2=82.36;TEMP=293.15" //the default air mix that open turfs spawn, also is what the station vents output at assuming a 21/79% o2/n2 mix
|
||||
#define TCOMMS_ATMOS "n2=100;TEMP=80" //-193,15degC telecommunications. also used for xenobiology slime killrooms
|
||||
#define AIRLESS_ATMOS "TEMP=2.7" //space
|
||||
#define FROZEN_ATMOS "o2=22;n2=82;TEMP=180" //-93.15degC snow and ice turfs
|
||||
#define FROZEN_ATMOS "o2=21.78;n2=82.36;TEMP=180" //-93.15degC snow and ice turfs
|
||||
#define BURNMIX_ATMOS "o2=2500;plasma=5000;TEMP=370" //used in the holodeck burn test program
|
||||
|
||||
//ATMOSPHERICS DEPARTMENT GAS TANK TURFS
|
||||
@@ -160,7 +160,7 @@
|
||||
#define ATMOS_TANK_PLASMA "plasma=70000;TEMP=293.15"
|
||||
#define ATMOS_TANK_O2 "o2=100000;TEMP=293.15"
|
||||
#define ATMOS_TANK_N2 "n2=100000;TEMP=293.15"
|
||||
#define ATMOS_TANK_AIRMIX "o2=2644;n2=10580;TEMP=293.15"
|
||||
#define ATMOS_TANK_AIRMIX "o2=2811;n2=10583;TEMP=293.15"
|
||||
|
||||
//LAVALAND
|
||||
#define LAVALAND_EQUIPMENT_EFFECT_PRESSURE 50 //what pressure you have to be under to increase the effect of equipment meant for lavaland
|
||||
|
||||
@@ -158,7 +158,7 @@
|
||||
/// how long they're staggered for
|
||||
#define SHOVE_STAGGER_DURATION 35
|
||||
/// how long they're off balance for
|
||||
#define SHOVE_OFFBALANCE_DURATION 30
|
||||
#define SHOVE_OFFBALANCE_DURATION 3 SECONDS
|
||||
|
||||
|
||||
//Embedded objects
|
||||
|
||||
@@ -23,6 +23,14 @@
|
||||
#define WINDOW_IN_FRAME 1
|
||||
#define WINDOW_SCREWED_TO_FRAME 2
|
||||
|
||||
//reinforced plasma window construction states
|
||||
#define PRWINDOW_FRAME_BOLTED 3
|
||||
#define PRWINDOW_BARS_CUT 4
|
||||
#define PRWINDOW_POPPED 5
|
||||
#define PRWINDOW_BOLTS_OUT 6
|
||||
#define PRWINDOW_BOLTS_HEATED 7
|
||||
#define PRWINDOW_SECURE 8
|
||||
|
||||
//airlock assembly construction states
|
||||
#define AIRLOCK_ASSEMBLY_NEEDS_WIRES 0
|
||||
#define AIRLOCK_ASSEMBLY_NEEDS_ELECTRONICS 1
|
||||
|
||||
@@ -532,7 +532,7 @@
|
||||
// /datum/component/storage signals
|
||||
#define COMSIG_CONTAINS_STORAGE "is_storage" //() - returns bool.
|
||||
#define COMSIG_TRY_STORAGE_INSERT "storage_try_insert" //(obj/item/inserting, mob/user, silent, force) - returns bool
|
||||
#define COMSIG_TRY_STORAGE_SHOW "storage_show_to" //(mob/show_to, force) - returns bool.
|
||||
#define COMSIG_TRY_STORAGE_SHOW "storage_show_to" //(mob/show_to, force, trigger_on_found) - returns bool.
|
||||
#define COMSIG_TRY_STORAGE_HIDE_FROM "storage_hide_from" //(mob/hide_from) - returns bool
|
||||
#define COMSIG_TRY_STORAGE_HIDE_ALL "storage_hide_all" //returns bool
|
||||
#define COMSIG_TRY_STORAGE_SET_LOCKSTATE "storage_lock_set_state" //(newstate)
|
||||
|
||||
@@ -515,6 +515,7 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
|
||||
|
||||
#define VOMIT_TOXIC 1
|
||||
#define VOMIT_PURPLE 2
|
||||
#define VOMIT_NANITE 3
|
||||
|
||||
// possible bitflag return values of intercept_zImpact(atom/movable/AM, levels = 1) calls
|
||||
#define FALL_INTERCEPTED (1<<0) //Stops the movable from falling further and crashing on the ground
|
||||
|
||||
@@ -12,6 +12,11 @@
|
||||
#define NANITE_CLOUD_DISABLE 2
|
||||
#define NANITE_CLOUD_ENABLE 3
|
||||
|
||||
//Nanite excess thresholds
|
||||
#define NANITE_EXCESS_MINOR 25
|
||||
#define NANITE_EXCESS_VOMIT 100
|
||||
#define NANITE_EXCESS_BURST 350
|
||||
|
||||
///Nanite Protocol types
|
||||
#define NANITE_PROTOCOL_REPLICATION "nanite_replication"
|
||||
#define NANITE_PROTOCOL_STORAGE "nanite_storage"
|
||||
@@ -45,4 +50,3 @@
|
||||
#define NES_SCAN_TYPE "Scan Type"
|
||||
#define NES_BUTTON_NAME "Button Name"
|
||||
#define NES_ICON "Icon"
|
||||
#define NES_COLOR "Color"
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#define ROLE_INTERNAL_AFFAIRS "internal affairs agent"
|
||||
#define ROLE_GANG "gangster"
|
||||
#define ROLE_BLOODSUCKER "bloodsucker"
|
||||
#define ROLE_SPACE_DRAGON "Space Dragon"
|
||||
//#define ROLE_MONSTERHUNTER "monster hunter" Disabled for now
|
||||
#define ROLE_GHOSTCAFE "ghostcafe"
|
||||
#define ROLE_MINOR_ANTAG "minorantag"
|
||||
@@ -70,7 +71,8 @@ GLOBAL_LIST_INIT(special_roles, list(
|
||||
ROLE_SENTIENCE,
|
||||
ROLE_GANG = /datum/game_mode/gang,
|
||||
ROLE_HERETIC = /datum/game_mode/heretics,
|
||||
ROLE_BLOODSUCKER = /datum/game_mode/bloodsucker
|
||||
ROLE_BLOODSUCKER = /datum/game_mode/bloodsucker,
|
||||
ROLE_SPACE_DRAGON
|
||||
//ROLE_MONSTERHUNTER Disabled for now
|
||||
))
|
||||
|
||||
|
||||
+21
-17
@@ -1,6 +1,6 @@
|
||||
// tgstation-server DMAPI
|
||||
|
||||
#define TGS_DMAPI_VERSION "5.2.9"
|
||||
#define TGS_DMAPI_VERSION "6.0.3"
|
||||
|
||||
// All functions and datums outside this document are subject to change with any version and should not be relied on.
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
#define TGS_EVENT_REPO_CHECKOUT 1
|
||||
/// When the repository performs a fetch operation. No parameters
|
||||
#define TGS_EVENT_REPO_FETCH 2
|
||||
/// When the repository merges a pull request. Parameters: PR Number, PR Sha, (Nullable) Comment made by TGS user
|
||||
/// When the repository test merges. Parameters: PR Number, PR Sha, (Nullable) Comment made by TGS user
|
||||
#define TGS_EVENT_REPO_MERGE_PULL_REQUEST 3
|
||||
/// Before the repository makes a sychronize operation. Parameters: Absolute repostiory path
|
||||
#define TGS_EVENT_REPO_PRE_SYNCHRONIZE 4
|
||||
@@ -95,8 +95,13 @@
|
||||
#define TGS_EVENT_WATCHDOG_SHUTDOWN 15
|
||||
/// Before the watchdog detaches for a TGS update/restart. No parameters.
|
||||
#define TGS_EVENT_WATCHDOG_DETACH 16
|
||||
// We don't actually implement this value as the DMAPI can never receive it
|
||||
// We don't actually implement these 4 events as the DMAPI can never receive them.
|
||||
// #define TGS_EVENT_WATCHDOG_LAUNCH 17
|
||||
// #define TGS_EVENT_WATCHDOG_CRASH 18
|
||||
// #define TGS_EVENT_WORLD_END_PROCESS 19
|
||||
// #define TGS_EVENT_WORLD_REBOOT 20
|
||||
/// Watchdog event when TgsInitializationComplete() is called. No parameters.
|
||||
#define TGS_EVENT_WORLD_PRIME 21
|
||||
|
||||
// OTHER ENUMS
|
||||
|
||||
@@ -130,7 +135,6 @@
|
||||
*
|
||||
* This may use [/world/var/sleep_offline] to make this happen so ensure no changes are made to it while this call is running.
|
||||
* Afterwards, consider explicitly setting it to what you want to avoid this BYOND bug: http://www.byond.com/forum/post/2575184
|
||||
* Before this point, note that any static files or directories may be in use by another server. Your code should account for this.
|
||||
* This function should not be called before ..() in [/world/proc/New].
|
||||
*/
|
||||
/world/proc/TgsInitializationComplete()
|
||||
@@ -140,7 +144,7 @@
|
||||
#define TGS_TOPIC var/tgs_topic_return = TgsTopic(args[1]); if(tgs_topic_return) return tgs_topic_return
|
||||
|
||||
/**
|
||||
* Call this at the beginning of [world/proc/Reboot].
|
||||
* Call this as late as possible in [world/proc/Reboot].
|
||||
*/
|
||||
/world/proc/TgsReboot()
|
||||
return
|
||||
@@ -152,6 +156,8 @@
|
||||
/datum/tgs_revision_information
|
||||
/// Full SHA of the commit.
|
||||
var/commit
|
||||
/// ISO 8601 timestamp of when the commit was created
|
||||
var/timestamp
|
||||
/// Full sha of last known remote commit. This may be null if the TGS repository is not currently tracking a remote branch.
|
||||
var/origin_commit
|
||||
|
||||
@@ -190,21 +196,19 @@
|
||||
|
||||
/// Represents a merge of a GitHub pull request.
|
||||
/datum/tgs_revision_information/test_merge
|
||||
/// The pull request number.
|
||||
/// The test merge number.
|
||||
var/number
|
||||
/// The pull request title when it was merged.
|
||||
/// The test merge source's title when it was merged.
|
||||
var/title
|
||||
/// The pull request body when it was merged.
|
||||
/// The test merge source's body when it was merged.
|
||||
var/body
|
||||
/// The GitHub username of the pull request's author.
|
||||
/// The Username of the test merge source's author.
|
||||
var/author
|
||||
/// An http URL to the pull request.
|
||||
/// An http URL to the test merge source.
|
||||
var/url
|
||||
/// The SHA of the pull request when that was merged.
|
||||
var/pull_request_commit
|
||||
/// ISO 8601 timestamp of when the pull request was merged.
|
||||
var/time_merged
|
||||
/// (Nullable) Comment left by the TGS user who initiated the merge..
|
||||
/// The SHA of the test merge when that was merged.
|
||||
var/head_commit
|
||||
/// Optional comment left by the TGS user who initiated the merge.
|
||||
var/comment
|
||||
|
||||
/// Represents a connected chat channel.
|
||||
@@ -263,11 +267,11 @@
|
||||
// API FUNCTIONS
|
||||
|
||||
/// Returns the maximum supported [/datum/tgs_version] of the DMAPI.
|
||||
/world/proc/TgsMaximumAPIVersion()
|
||||
/world/proc/TgsMaximumApiVersion()
|
||||
return
|
||||
|
||||
/// Returns the minimum supported [/datum/tgs_version] of the DMAPI.
|
||||
/world/proc/TgsMinimumAPIVersion()
|
||||
/world/proc/TgsMinimumApiVersion()
|
||||
return
|
||||
|
||||
/**
|
||||
|
||||
@@ -341,3 +341,4 @@
|
||||
#define ACTIVE_PARRY_TRAIT "active_parry"
|
||||
#define STICKY_NODROP "sticky-nodrop" //sticky nodrop sounds like a bad soundcloud rapper's name
|
||||
#define TRAIT_SACRIFICED "sacrificed" //Makes sure that people cant be cult sacrificed twice.
|
||||
#define TRAIT_SPACEWALK "spacewalk"
|
||||
|
||||
@@ -15,7 +15,7 @@ GLOBAL_LIST_INIT(bitfields, list(
|
||||
"ABDUCTOR_PROOF" = ABDUCTOR_PROOF,
|
||||
"BLOBS_ALLOWED" = BLOBS_ALLOWED,
|
||||
"BLOCK_SUICIDE" = BLOCK_SUICIDE,
|
||||
// "CULT_PERMITTED" = CULT_PERMITTED,
|
||||
"CULT_PERMITTED" = CULT_PERMITTED,
|
||||
"FLORA_ALLOWED" = FLORA_ALLOWED,
|
||||
"HIDDEN_AREA" = HIDDEN_AREA,
|
||||
"MEGAFAUNA_SPAWN_ALLOWED" = MEGAFAUNA_SPAWN_ALLOWED,
|
||||
|
||||
@@ -84,7 +84,35 @@ GLOBAL_LIST_INIT(mutant_transform_list, list("wingsopen" = "wings",
|
||||
"waggingspines" = "spines",
|
||||
"mam_waggingtail" = "mam_tail"))
|
||||
|
||||
GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list("ghost")) //stores the ghost forms that support directional sprites
|
||||
GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list(
|
||||
"ghost",
|
||||
"ghostian",
|
||||
"ghostian2",
|
||||
"ghostking",
|
||||
"ghost_red",
|
||||
"ghost_black",
|
||||
"ghost_blue",
|
||||
"ghost_yellow",
|
||||
"ghost_green",
|
||||
"ghost_pink",
|
||||
"ghost_cyan",
|
||||
"ghost_dblue",
|
||||
"ghost_dred",
|
||||
"ghost_dgreen",
|
||||
"ghost_dcyan",
|
||||
"ghost_grey",
|
||||
"ghost_dyellow",
|
||||
"ghost_dpink",
|
||||
"skeleghost",
|
||||
"ghost_purpleswirl",
|
||||
"ghost_rainbow",
|
||||
"ghost_fire",
|
||||
"ghost_funkypurp",
|
||||
"ghost_pinksherbert",
|
||||
"ghost_blazeit",
|
||||
"ghost_mellow",
|
||||
"ghost_camo",
|
||||
"catghost")) //stores the ghost forms that support directional sprites
|
||||
GLOBAL_LIST_INIT(ghost_forms_with_accessories_list, list("ghost")) //stores the ghost forms that support hair and other such things
|
||||
|
||||
GLOBAL_LIST_INIT(ai_core_display_screens, list(
|
||||
|
||||
@@ -123,7 +123,8 @@ GLOBAL_LIST_INIT(traits_by_type, list(
|
||||
"TRAIT_HIGH_BLOOD" = TRAIT_HIGH_BLOOD,
|
||||
"TRAIT_EMPATH" = TRAIT_EMPATH,
|
||||
"TRAIT_FRIENDLY" = TRAIT_FRIENDLY,
|
||||
"TRAIT_IWASBATONED" = TRAIT_IWASBATONED
|
||||
"TRAIT_IWASBATONED" = TRAIT_IWASBATONED,
|
||||
"TRAIT_SPACEWALK" = TRAIT_SPACEWALK
|
||||
),
|
||||
/obj/item/bodypart = list(
|
||||
"TRAIT_PARALYSIS" = TRAIT_PARALYSIS
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
/*!
|
||||
* Copyright (c) 2020 Aleksej Komarov
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
/**
|
||||
* tgui subsystem
|
||||
*
|
||||
* Contains all tgui state and subsystem code.
|
||||
*
|
||||
* Copyright (c) 2020 Aleksej Komarov
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
SUBSYSTEM_DEF(tgui)
|
||||
@@ -42,8 +45,8 @@ SUBSYSTEM_DEF(tgui)
|
||||
var/datum/tgui/ui = current_run[current_run.len]
|
||||
current_run.len--
|
||||
// TODO: Move user/src_object check to process()
|
||||
if(ui && ui.user && ui.src_object)
|
||||
ui.process()
|
||||
if(ui?.user && ui.src_object)
|
||||
ui.process(wait * 0.1)
|
||||
else
|
||||
open_uis.Remove(ui)
|
||||
if(MC_TICK_CHECK)
|
||||
@@ -191,8 +194,8 @@ SUBSYSTEM_DEF(tgui)
|
||||
return count
|
||||
for(var/datum/tgui/ui in open_uis_by_src[key])
|
||||
// Check if UI is valid.
|
||||
if(ui && ui.src_object && ui.user && ui.src_object.ui_host(ui.user))
|
||||
ui.process(force = 1)
|
||||
if(ui?.src_object && ui.user && ui.src_object.ui_host(ui.user))
|
||||
ui.process(wait * 0.1, force = 1)
|
||||
count++
|
||||
return count
|
||||
|
||||
@@ -213,7 +216,7 @@ SUBSYSTEM_DEF(tgui)
|
||||
return count
|
||||
for(var/datum/tgui/ui in open_uis_by_src[key])
|
||||
// Check if UI is valid.
|
||||
if(ui && ui.src_object && ui.user && ui.src_object.ui_host(ui.user))
|
||||
if(ui?.src_object && ui.user && ui.src_object.ui_host(ui.user))
|
||||
ui.close()
|
||||
count++
|
||||
return count
|
||||
@@ -230,7 +233,7 @@ SUBSYSTEM_DEF(tgui)
|
||||
for(var/key in open_uis_by_src)
|
||||
for(var/datum/tgui/ui in open_uis_by_src[key])
|
||||
// Check if UI is valid.
|
||||
if(ui && ui.src_object && ui.user && ui.src_object.ui_host(ui.user))
|
||||
if(ui?.src_object && ui.user && ui.src_object.ui_host(ui.user))
|
||||
ui.close()
|
||||
count++
|
||||
return count
|
||||
@@ -251,7 +254,7 @@ SUBSYSTEM_DEF(tgui)
|
||||
return count
|
||||
for(var/datum/tgui/ui in user.tgui_open_uis)
|
||||
if(isnull(src_object) || ui.src_object == src_object)
|
||||
ui.process(force = 1)
|
||||
ui.process(wait * 0.1, force = 1)
|
||||
count++
|
||||
return count
|
||||
|
||||
|
||||
@@ -793,6 +793,15 @@
|
||||
small_icon = 'icons/mob/lavaland/lavaland_monsters.dmi'
|
||||
small_icon_state = "ash_whelp"
|
||||
|
||||
/datum/action/small_sprite/megafauna/colossus
|
||||
small_icon_state = "Basilisk"
|
||||
|
||||
/datum/action/small_sprite/megafauna/bubblegum
|
||||
small_icon_state = "goliath2"
|
||||
|
||||
/datum/action/small_sprite/megafauna/legion
|
||||
small_icon_state = "mega_legion"
|
||||
|
||||
/datum/action/small_sprite/Trigger()
|
||||
..()
|
||||
if(!small)
|
||||
|
||||
@@ -176,6 +176,11 @@
|
||||
scheduled_destruction = world.time + (lifespan - CHAT_MESSAGE_EOL_FADE)
|
||||
enter_subsystem()
|
||||
|
||||
var/mob/living/silicon/robot/R = target
|
||||
if(iscyborg(R))
|
||||
if(R.module.dogborg == TRUE || R.dogborg == TRUE) //I hate whoever that thought that putting two types of dogborg that don't even sync up properly was good
|
||||
message.pixel_x = 16
|
||||
|
||||
/**
|
||||
* Applies final animations to overlay CHAT_MESSAGE_EOL_FADE deciseconds prior to message deletion
|
||||
* Arguments:
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
/datum/crafting_recipe/armwraps
|
||||
name = "Armwraps"
|
||||
result = /obj/item/clothing/gloves/fingerless/pugilist
|
||||
result = /obj/item/clothing/gloves/fingerless/pugilist/crafted
|
||||
time = 60
|
||||
tools = list(TOOL_WIRECUTTER)
|
||||
reqs = list(/obj/item/stack/sheet/cloth = 4,
|
||||
|
||||
@@ -159,7 +159,7 @@
|
||||
/datum/component/embedded/proc/jostleCheck()
|
||||
var/mob/living/carbon/victim = parent
|
||||
|
||||
var/damage = weapon.w_class * pain_mult
|
||||
var/damage = weapon.w_class * jostle_pain_mult
|
||||
var/pain_chance_current = jostle_chance
|
||||
if(victim.m_intent == MOVE_INTENT_WALK || !(victim.mobility_flags & MOBILITY_STAND))
|
||||
pain_chance_current *= 0.5
|
||||
|
||||
@@ -170,6 +170,7 @@
|
||||
/**
|
||||
* Used to rid ourselves
|
||||
*/
|
||||
///Deletes nanites!
|
||||
/datum/component/nanites/proc/delete_nanites()
|
||||
if(can_be_deleted)
|
||||
qdel(src)
|
||||
@@ -214,6 +215,7 @@
|
||||
return SEND_SIGNAL(src, COMSIG_NANITE_INTERNAL_VIRAL_PREVENTION_CHECK)
|
||||
|
||||
//Syncs the nanite component to another, making it so programs are the same with the same programming (except activation status)
|
||||
///Syncs the nanite component to another, making it so programs are the same with the same programming (except activation status)
|
||||
/datum/component/nanites/proc/sync(datum/signal_source, datum/component/nanites/source, full_overwrite = TRUE, copy_activation = FALSE)
|
||||
var/list/programs_to_remove = programs.Copy() - permanent_programs
|
||||
var/list/programs_to_add = source.programs.Copy()
|
||||
@@ -233,6 +235,7 @@
|
||||
var/datum/nanite_program/SNP = X
|
||||
add_program(null, SNP.copy())
|
||||
|
||||
///Syncs the nanites to their assigned cloud copy, if it is available. If it is not, there is a small chance of a software error instead.
|
||||
/datum/component/nanites/proc/cloud_sync()
|
||||
if(cloud_id)
|
||||
var/datum/nanite_cloud_backup/backup = SSnanites.get_cloud_backup(cloud_id)
|
||||
@@ -246,6 +249,7 @@
|
||||
var/datum/nanite_program/NP = pick(programs)
|
||||
NP.software_error()
|
||||
|
||||
///Adds a nanite program, replacing existing unique programs of the same type. A source program can be specified to copy its programming onto the new one.
|
||||
/datum/component/nanites/proc/add_program(datum/source, datum/nanite_program/new_program, datum/nanite_program/source_program)
|
||||
for(var/X in programs)
|
||||
var/datum/nanite_program/NP = X
|
||||
@@ -268,11 +272,68 @@
|
||||
adjust_nanites(null, -amount)
|
||||
return (nanite_volume > 0)
|
||||
|
||||
///Modifies the current nanite volume, then checks if the nanites are depleted or exceeding the maximum amount
|
||||
/datum/component/nanites/proc/adjust_nanites(datum/source, amount)
|
||||
nanite_volume = clamp(nanite_volume + amount, 0, max_nanites)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
nanite_volume += amount
|
||||
if(nanite_volume > max_nanites)
|
||||
reject_excess_nanites()
|
||||
if(nanite_volume <= 0) //oops we ran out
|
||||
nanites_depleted()
|
||||
|
||||
/**
|
||||
* Handles how nanites leave the host's body if they find out that they're currently exceeding the maximum supported amount
|
||||
*
|
||||
* IC explanation:
|
||||
* Normally nanites simply discard excess volume by slowing replication or 'sweating' it out in imperceptible amounts,
|
||||
* but if there is a large excess volume, likely due to a programming change that leaves them unable to support their current volume,
|
||||
* the nanites attempt to leave the host as fast as necessary to prevent nanite poisoning. This can range from minor oozing to nanites
|
||||
* rapidly bursting out from every possible pathway, causing temporary inconvenience to the host.
|
||||
*/
|
||||
/datum/component/nanites/proc/reject_excess_nanites()
|
||||
var/excess = nanite_volume - max_nanites
|
||||
nanite_volume = max_nanites
|
||||
|
||||
switch(excess)
|
||||
if(0 to NANITE_EXCESS_MINOR) //Minor excess amount, the extra nanites are quietly expelled without visible effects
|
||||
return
|
||||
if((NANITE_EXCESS_MINOR + 0.1) to NANITE_EXCESS_VOMIT) //Enough nanites getting rejected at once to be visible to the naked eye
|
||||
host_mob.visible_message("<span class='warning'>A grainy grey slurry starts oozing out of [host_mob].</span>", "<span class='warning'>A grainy grey slurry starts oozing out of your skin.</span>", null, 4);
|
||||
if((NANITE_EXCESS_VOMIT + 0.1) to NANITE_EXCESS_BURST) //Nanites getting rejected in massive amounts, but still enough to make a semi-orderly exit through vomit
|
||||
if(iscarbon(host_mob))
|
||||
var/mob/living/carbon/C = host_mob
|
||||
host_mob.visible_message("<span class='warning'>[host_mob] vomits a grainy grey slurry!</span>", "<span class='warning'>You suddenly vomit a metallic-tasting grainy grey slurry!</span>", null);
|
||||
C.vomit(0, FALSE, TRUE, FLOOR(excess / 100, 1), FALSE, VOMIT_NANITE, FALSE, TRUE, 0)
|
||||
else
|
||||
host_mob.visible_message("<span class='warning'>A metallic grey slurry bursts out of [host_mob]'s skin!</span>", "<span class='userdanger'>A metallic grey slurry violently bursts out of your skin!</span>", null);
|
||||
if(isturf(host_mob.drop_location()))
|
||||
var/turf/T = host_mob.drop_location()
|
||||
T.add_vomit_floor(host_mob, VOMIT_NANITE, 0)
|
||||
if((NANITE_EXCESS_BURST + 0.1) to INFINITY) //Way too many nanites, they just leave through the closest exit before they harm/poison the host
|
||||
host_mob.visible_message("<span class='warning'>A torrent of metallic grey slurry violently bursts out of [host_mob]'s face and floods out of [host_mob.p_their()] skin!</span>",
|
||||
"<span class='userdanger'>A torrent of metallic grey slurry violently bursts out of your eyes, ears, and mouth, and floods out of your skin!</span>");
|
||||
|
||||
host_mob.blind_eyes(15) //nanites coming out of your eyes
|
||||
host_mob.Paralyze(120)
|
||||
if(iscarbon(host_mob))
|
||||
var/mob/living/carbon/C = host_mob
|
||||
var/obj/item/organ/ears/ears = C.getorganslot(ORGAN_SLOT_EARS)
|
||||
if(ears)
|
||||
ears.adjustEarDamage(0, 30) //nanites coming out of your ears
|
||||
C.vomit(0, FALSE, TRUE, 2, FALSE, VOMIT_NANITE, FALSE, TRUE, 0) //nanites coming out of your mouth
|
||||
|
||||
//nanites everywhere
|
||||
if(isturf(host_mob.drop_location()))
|
||||
var/turf/T = host_mob.drop_location()
|
||||
T.add_vomit_floor(host_mob, VOMIT_NANITE, 0)
|
||||
for(var/turf/adjacent_turf in oview(host_mob, 1))
|
||||
if(adjacent_turf.density || !adjacent_turf.Adjacent(T))
|
||||
continue
|
||||
adjacent_turf.add_vomit_floor(host_mob, VOMIT_NANITE, 0)
|
||||
|
||||
///Updates the nanite volume bar visible in diagnostic HUDs
|
||||
/datum/component/nanites/proc/set_nanite_bar(remove = FALSE)
|
||||
var/image/holder = host_mob.hud_list[DIAG_NANITE_FULL_HUD]
|
||||
var/icon/I = icon(host_mob.icon, host_mob.icon_state, host_mob.dir)
|
||||
@@ -347,6 +408,9 @@
|
||||
|
||||
/datum/component/nanites/proc/set_max_volume(datum/source, amount)
|
||||
max_nanites = max(1, max_nanites)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
max_nanites = max(1, amount)
|
||||
|
||||
/datum/component/nanites/proc/set_cloud(datum/source, amount)
|
||||
cloud_id = clamp(amount, 0, 100)
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
to_chat(M, "<span class='notice'>You start dumping out tier/cell rating [lowest_rating] parts from [parent].</span>")
|
||||
var/turf/T = get_turf(A)
|
||||
var/datum/progressbar/progress = new(M, length(things), T)
|
||||
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress)))
|
||||
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress, TRUE, M)))
|
||||
stoplag(1)
|
||||
qdel(progress)
|
||||
A.do_squish(0.8, 1.2)
|
||||
@@ -81,7 +81,7 @@
|
||||
to_chat(M, "<span class='notice'>You start dumping out tier/cell rating [lowest_rating] parts from [parent].</span>")
|
||||
var/turf/T = get_turf(A)
|
||||
var/datum/progressbar/progress = new(M, length(things), T)
|
||||
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress)))
|
||||
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress, TRUE, M)))
|
||||
stoplag(1)
|
||||
qdel(progress)
|
||||
A.do_squish(0.8, 1.2)
|
||||
|
||||
@@ -271,20 +271,20 @@
|
||||
var/turf/T = get_turf(A)
|
||||
var/list/things = contents()
|
||||
var/datum/progressbar/progress = new(M, length(things), T)
|
||||
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress)))
|
||||
while (do_after(M, 10, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress, TRUE, M)))
|
||||
stoplag(1)
|
||||
qdel(progress)
|
||||
A.do_squish(0.8, 1.2)
|
||||
|
||||
/datum/component/storage/proc/mass_remove_from_storage(atom/target, list/things, datum/progressbar/progress, trigger_on_found = TRUE)
|
||||
/datum/component/storage/proc/mass_remove_from_storage(atom/target, list/things, datum/progressbar/progress, trigger_on_found = TRUE, mob/user)
|
||||
var/atom/real_location = real_location()
|
||||
for(var/obj/item/I in things)
|
||||
things -= I
|
||||
if(I.loc != real_location)
|
||||
continue
|
||||
remove_from_storage(I, target)
|
||||
if(trigger_on_found && I.on_found())
|
||||
if(trigger_on_found && user && (user.active_storage != src) && I.on_found(user))
|
||||
return FALSE
|
||||
remove_from_storage(I, target)
|
||||
if(TICK_CHECK)
|
||||
progress.update(progress.goal - length(things))
|
||||
return TRUE
|
||||
@@ -429,7 +429,7 @@
|
||||
return FALSE
|
||||
// this must come before the screen objects only block, dunno why it wasn't before
|
||||
if(over_object == M)
|
||||
user_show_to_mob(M)
|
||||
user_show_to_mob(M, trigger_on_found = TRUE)
|
||||
return
|
||||
if(isrevenant(M))
|
||||
RevenantThrow(over_object, M, source)
|
||||
@@ -448,15 +448,28 @@
|
||||
return
|
||||
A.add_fingerprint(M)
|
||||
|
||||
/datum/component/storage/proc/user_show_to_mob(mob/M, force = FALSE)
|
||||
/datum/component/storage/proc/user_show_to_mob(mob/M, force = FALSE, trigger_on_found = FALSE)
|
||||
var/atom/A = parent
|
||||
if(!istype(M))
|
||||
return FALSE
|
||||
A.add_fingerprint(M)
|
||||
if(!force && (check_locked(null, M) || !M.CanReach(parent, view_only = TRUE)))
|
||||
return FALSE
|
||||
if(trigger_on_found)
|
||||
if(check_on_found(M))
|
||||
return
|
||||
ui_show(M)
|
||||
|
||||
/**
|
||||
* Check if we should trigger on_found()
|
||||
* If this returns TRUE, it means an on_found() returned TRUE and immediately broke the chain.
|
||||
* In most contexts, this should mean to stop.
|
||||
*/
|
||||
/datum/component/storage/proc/check_on_found(mob/user)
|
||||
for(var/obj/item/I in contents())
|
||||
if(I.on_found(user))
|
||||
return TRUE
|
||||
|
||||
/datum/component/storage/proc/mousedrop_receive(datum/source, atom/movable/O, mob/M)
|
||||
if(isitem(O))
|
||||
var/obj/item/I = O
|
||||
@@ -579,8 +592,8 @@
|
||||
/datum/component/storage/proc/show_to_ghost(datum/source, mob/dead/observer/M)
|
||||
return user_show_to_mob(M, TRUE)
|
||||
|
||||
/datum/component/storage/proc/signal_show_attempt(datum/source, mob/showto, force = FALSE)
|
||||
return user_show_to_mob(showto, force)
|
||||
/datum/component/storage/proc/signal_show_attempt(datum/source, mob/showto, force = FALSE, trigger_on_found = TRUE)
|
||||
return user_show_to_mob(showto, force, trigger_on_found = trigger_on_found)
|
||||
|
||||
/datum/component/storage/proc/on_check()
|
||||
return TRUE
|
||||
@@ -649,7 +662,7 @@
|
||||
if(A.loc == user)
|
||||
. = COMPONENT_NO_ATTACK_HAND
|
||||
if(!check_locked(source, user, TRUE))
|
||||
ui_show(user)
|
||||
user_show_to_mob(user, trigger_on_found = TRUE)
|
||||
A.do_jiggle()
|
||||
|
||||
/datum/component/storage/proc/signal_on_pickup(datum/source, mob/user)
|
||||
@@ -679,7 +692,7 @@
|
||||
var/atom/A = parent
|
||||
if(!quickdraw)
|
||||
A.add_fingerprint(user)
|
||||
user_show_to_mob(user)
|
||||
user_show_to_mob(user, trigger_on_found = TRUE)
|
||||
if(rustle_sound)
|
||||
playsound(A, "rustle", 50, 1, -5)
|
||||
return TRUE
|
||||
|
||||
@@ -7,8 +7,9 @@
|
||||
var/left_hand
|
||||
var/inv_slots
|
||||
var/proctype //if present, will be invoked on headwear generation.
|
||||
var/escape_on_find = FALSE //if present, will be released upon the item being 'found' (i.e. opening a container or pocket with it present)
|
||||
|
||||
/datum/element/mob_holder/Attach(datum/target, worn_state, alt_worn, right_hand, left_hand, inv_slots = NONE, proctype)
|
||||
/datum/element/mob_holder/Attach(datum/target, worn_state, alt_worn, right_hand, left_hand, inv_slots = NONE, proctype, escape_on_find)
|
||||
. = ..()
|
||||
|
||||
if(!isliving(target))
|
||||
@@ -20,6 +21,7 @@
|
||||
src.left_hand = left_hand
|
||||
src.inv_slots = inv_slots
|
||||
src.proctype = proctype
|
||||
src.escape_on_find = escape_on_find
|
||||
|
||||
RegisterSignal(target, COMSIG_CLICK_ALT, .proc/mob_try_pickup)
|
||||
RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_examine)
|
||||
@@ -55,6 +57,8 @@
|
||||
to_chat(user, "<span class='notice'>You pick [source] up.</span>")
|
||||
source.drop_all_held_items()
|
||||
var/obj/item/clothing/head/mob_holder/holder = new(get_turf(source), source, worn_state, alt_worn, right_hand, left_hand, inv_slots)
|
||||
holder.escape_on_find = escape_on_find
|
||||
|
||||
if(proctype)
|
||||
INVOKE_ASYNC(src, proctype, source, holder, user)
|
||||
user.put_in_hands(holder)
|
||||
@@ -78,6 +82,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
dynamic_hair_suffix = ""
|
||||
var/mob/living/held_mob
|
||||
var/escape_on_find
|
||||
|
||||
/obj/item/clothing/head/mob_holder/Initialize(mapload, mob/living/target, worn_state, alt_worn, right_hand, left_hand, slots = NONE)
|
||||
. = ..()
|
||||
@@ -189,3 +194,9 @@
|
||||
if(ismob(location))
|
||||
return location.loc.remove_air(amount)
|
||||
return location.remove_air(amount)
|
||||
|
||||
// escape when found if applicable
|
||||
/obj/item/clothing/head/mob_holder/on_found(mob/living/finder)
|
||||
if(escape_on_find)
|
||||
finder.visible_message("[finder] accidentally releases the [held_mob]!")
|
||||
release()
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
if(revinfo)
|
||||
commit = revinfo.commit
|
||||
originmastercommit = revinfo.origin_commit
|
||||
date = rustg_git_commit_date(commit)
|
||||
date = revinfo.timestamp || rustg_git_commit_date(commit)
|
||||
|
||||
// goes to DD log and config_error.txt
|
||||
log_world(get_log_message())
|
||||
@@ -29,8 +29,8 @@
|
||||
|
||||
for(var/line in testmerge)
|
||||
var/datum/tgs_revision_information/test_merge/tm = line
|
||||
msg += "Test merge active of PR #[tm.number] commit [tm.pull_request_commit]"
|
||||
SSblackbox.record_feedback("associative", "testmerged_prs", 1, list("number" = "[tm.number]", "commit" = "[tm.pull_request_commit]", "title" = "[tm.title]", "author" = "[tm.author]"))
|
||||
msg += "Test merge active of PR #[tm.number] commit [tm.head_commit]"
|
||||
SSblackbox.record_feedback("associative", "testmerged_prs", 1, list("number" = "[tm.number]", "commit" = "[tm.head_commit]", "title" = "[tm.title]", "author" = "[tm.author]"))
|
||||
|
||||
if(commit && commit != originmastercommit)
|
||||
msg += "HEAD: [commit]"
|
||||
@@ -45,7 +45,7 @@
|
||||
. = header ? "The following pull requests are currently test merged:<br>" : ""
|
||||
for(var/line in testmerge)
|
||||
var/datum/tgs_revision_information/test_merge/tm = line
|
||||
var/cm = tm.pull_request_commit
|
||||
var/cm = tm.head_commit
|
||||
var/details = ": '" + html_encode(tm.title) + "' by " + html_encode(tm.author) + " at commit " + html_encode(copytext_char(cm, 1, 11))
|
||||
if(details && findtext(details, "\[s\]") && (!usr || !usr.client.holder))
|
||||
continue
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
/datum/mutation/human/cluwne
|
||||
|
||||
name = "Cluwne"
|
||||
quality = NEGATIVE
|
||||
locked = TRUE
|
||||
text_gain_indication = "<span class='danger'>You feel like your brain is tearing itself apart.</span>"
|
||||
|
||||
/datum/mutation/human/cluwne/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
owner.dna.add_mutation(CLOWNMUT)
|
||||
owner.dna.add_mutation(EPILEPSY)
|
||||
owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, 199, 199)
|
||||
|
||||
var/mob/living/carbon/human/H = owner
|
||||
|
||||
if(!istype(H.wear_mask, /obj/item/clothing/mask/gas/cluwne))
|
||||
if(!H.dropItemToGround(H.wear_mask))
|
||||
qdel(H.wear_mask)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/cluwne(H), SLOT_WEAR_MASK)
|
||||
if(!istype(H.w_uniform, /obj/item/clothing/under/cluwne))
|
||||
if(!H.dropItemToGround(H.w_uniform))
|
||||
qdel(H.w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/cluwne(H), SLOT_W_UNIFORM)
|
||||
if(!istype(H.shoes, /obj/item/clothing/shoes/clown_shoes/cluwne))
|
||||
if(!H.dropItemToGround(H.shoes))
|
||||
qdel(H.shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes/cluwne(H), SLOT_SHOES)
|
||||
|
||||
owner.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/white(owner), SLOT_GLOVES) // this is purely for cosmetic purposes incase they aren't wearing anything in that slot
|
||||
owner.equip_to_slot_or_del(new /obj/item/storage/backpack/clown(owner), SLOT_BACK) // ditto
|
||||
|
||||
/datum/mutation/human/cluwne/on_life(mob/living/carbon/human/owner)
|
||||
if((prob(15) && owner.IsUnconscious()))
|
||||
owner.adjustOrganLoss(ORGAN_SLOT_BRAIN, 199, 199) // there I changed it to setBrainLoss
|
||||
switch(rand(1, 6))
|
||||
if(1)
|
||||
owner.say("HONK")
|
||||
if(2 to 5)
|
||||
owner.emote("scream")
|
||||
if(6)
|
||||
owner.Stun(1)
|
||||
owner.Knockdown(20)
|
||||
owner.Jitter(500)
|
||||
|
||||
/datum/mutation/human/cluwne/on_losing(mob/living/carbon/human/owner)
|
||||
owner.adjust_fire_stacks(1)
|
||||
owner.IgniteMob()
|
||||
owner.dna.add_mutation(CLUWNEMUT)
|
||||
|
||||
/mob/living/carbon/human/proc/cluwneify()
|
||||
dna.add_mutation(CLUWNEMUT)
|
||||
emote("scream")
|
||||
regenerate_icons()
|
||||
visible_message("<span class='danger'>[src]'s body glows green, the glow dissipating only to leave behind a cluwne formerly known as [src]!</span>", \
|
||||
"<span class='danger'>Your brain feels like it's being torn apart, there is only the honkmother now.</span>")
|
||||
flash_act()
|
||||
@@ -8,23 +8,24 @@
|
||||
time_coeff = 5
|
||||
instability = 30
|
||||
|
||||
/datum/mutation/human/space_adaptation/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut)
|
||||
..()
|
||||
if(!(type in visual_indicators))
|
||||
visual_indicators[type] = list(mutable_appearance('icons/effects/genetics.dmi', "space_adapt", -MUTATIONS_LAYER))
|
||||
|
||||
/datum/mutation/human/space_adaptation/get_visual_indicator()
|
||||
return visual_indicators[type][1]
|
||||
|
||||
/datum/mutation/human/space_adaptation/on_acquiring(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
ADD_TRAIT(owner, TRAIT_RESISTCOLD, "cold_resistance")
|
||||
ADD_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, "cold_resistance")
|
||||
owner.add_filter("space_glow", 2, list("type" = "outline", "color" = "#ffe46bd8", "size" = 1))
|
||||
addtimer(CALLBACK(src, .proc/glow_loop, owner), rand(1,19))
|
||||
|
||||
/datum/mutation/human/space_adaptation/proc/glow_loop(mob/living/carbon/human/owner)
|
||||
var/filter = owner.get_filter("space_glow")
|
||||
if(filter)
|
||||
animate(filter, alpha = 190, time = 15, loop = -1)
|
||||
animate(alpha = 110, time = 25)
|
||||
|
||||
/datum/mutation/human/space_adaptation/on_losing(mob/living/carbon/human/owner)
|
||||
if(..())
|
||||
return
|
||||
REMOVE_TRAIT(owner, TRAIT_RESISTCOLD, "cold_resistance")
|
||||
REMOVE_TRAIT(owner, TRAIT_RESISTLOWPRESSURE, "cold_resistance")
|
||||
owner.remove_filter("space_glow")
|
||||
|
||||
|
||||
@@ -642,7 +642,7 @@
|
||||
O.Remove()
|
||||
if(iscarbon(owner))
|
||||
var/mob/living/carbon/C = owner
|
||||
C.vomit(0, toxic = TRUE)
|
||||
C.vomit(0)
|
||||
O.forceMove(get_turf(owner))
|
||||
if(isliving(owner))
|
||||
var/mob/living/L = owner
|
||||
|
||||
@@ -207,3 +207,101 @@
|
||||
if(!key_valid)
|
||||
GLOB.topic_status_cache = .
|
||||
|
||||
/datum/world_topic/jsonstatus
|
||||
keyword = "jsonstatus"
|
||||
|
||||
/datum/world_topic/jsonstatus/Run(list/input, addr)
|
||||
. = list()
|
||||
.["mode"] = "hidden" // GLOB.master_mode - woops we don't want people to know if there's secret/extended :)
|
||||
.["round_id"] = "[GLOB.round_id]"
|
||||
.["players"] = GLOB.clients.len
|
||||
var/list/adm = get_admin_counts()
|
||||
var/list/presentmins = adm["present"]
|
||||
var/list/afkmins = adm["afk"]
|
||||
.["admins"] = presentmins.len + afkmins.len //equivalent to the info gotten from adminwho
|
||||
.["security_level"] = "[NUM2SECLEVEL(GLOB.security_level)]"
|
||||
.["round_duration"] = WORLDTIME2TEXT("hh:mm:ss")
|
||||
.["map"] = SSmapping.config.map_name
|
||||
return json_encode(.)
|
||||
|
||||
/datum/world_topic/jsonplayers
|
||||
keyword = "jsonplayers"
|
||||
|
||||
/datum/world_topic/jsonplayers/Run(list/input, addr)
|
||||
. = list()
|
||||
for(var/client/C in GLOB.clients)
|
||||
if(C.holder?.fakekey)
|
||||
. += C.holder.fakekey
|
||||
continue
|
||||
. += C.key
|
||||
return json_encode(.)
|
||||
|
||||
/datum/world_topic/jsonmanifest
|
||||
keyword = "jsonmanifest"
|
||||
|
||||
/datum/world_topic/jsonmanifest/Run(list/input, addr)
|
||||
var/list/command = list()
|
||||
var/list/security = list()
|
||||
var/list/engineering = list()
|
||||
var/list/medical = list()
|
||||
var/list/science = list()
|
||||
var/list/cargo = list()
|
||||
var/list/civilian = list()
|
||||
var/list/misc = list()
|
||||
for(var/datum/data/record/R in GLOB.data_core.general)
|
||||
var/name = R.fields["name"]
|
||||
var/rank = R.fields["rank"]
|
||||
var/real_rank = rank // make_list_rank(R.fields["real_rank"])
|
||||
if(real_rank in GLOB.security_positions)
|
||||
security[name] = rank
|
||||
else if(real_rank in GLOB.engineering_positions)
|
||||
engineering[name] = rank
|
||||
else if(real_rank in GLOB.medical_positions)
|
||||
medical[name] = rank
|
||||
else if(real_rank in GLOB.science_positions)
|
||||
science[name] = rank
|
||||
else if(real_rank in GLOB.supply_positions)
|
||||
cargo[name] = rank
|
||||
else if(real_rank in GLOB.civilian_positions)
|
||||
civilian[name] = rank
|
||||
else
|
||||
misc[name] = rank
|
||||
// mixed departments, /datum/department when
|
||||
if(real_rank in GLOB.command_positions)
|
||||
command[name] = rank
|
||||
|
||||
. = list()
|
||||
.["Command"] = command
|
||||
.["Security"] = security
|
||||
.["Engineering"] = engineering
|
||||
.["Medical"] = medical
|
||||
.["Science"] = science
|
||||
.["Cargo"] = cargo
|
||||
.["Civilian"] = civilian
|
||||
.["Misc"] = misc
|
||||
return json_encode(.)
|
||||
|
||||
/datum/world_topic/jsonrevision
|
||||
keyword = "jsonrevision"
|
||||
|
||||
/datum/world_topic/jsonrevision/Run(list/input, addr)
|
||||
var/datum/getrev/revdata = GLOB.revdata
|
||||
var/list/data = list(
|
||||
"date" = copytext(revdata.date, 1, 11),
|
||||
"dd_version" = world.byond_version,
|
||||
"dd_build" = world.byond_build,
|
||||
"dm_version" = DM_VERSION,
|
||||
"dm_build" = DM_BUILD,
|
||||
"revision" = revdata.commit,
|
||||
"round_id" = "[GLOB.round_id]",
|
||||
"testmerge_base_url" = "[CONFIG_GET(string/githuburl)]/pull/"
|
||||
)
|
||||
if (revdata.testmerge.len)
|
||||
for (var/datum/tgs_revision_information/test_merge/TM in revdata.testmerge)
|
||||
data["testmerges"] += list(list(
|
||||
"id" = TM.number,
|
||||
"desc" = TM.title,
|
||||
"author" = TM.author
|
||||
))
|
||||
|
||||
return json_encode(data)
|
||||
|
||||
@@ -209,7 +209,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
name = "Generic Maintenance"
|
||||
// ambience_index = AMBIENCE_MAINT
|
||||
ambientsounds = MAINTENANCE
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
|
||||
// airlock_wires = /datum/wires/airlock/maint
|
||||
sound_environment = SOUND_AREA_TUNNEL_ENCLOSED
|
||||
|
||||
@@ -294,7 +294,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/maintenance/department/science/xenobiology
|
||||
name = "Xenobiology Maintenance"
|
||||
icon_state = "xenomaint"
|
||||
area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA | XENOBIOLOGY_COMPATIBLE
|
||||
area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA | XENOBIOLOGY_COMPATIBLE | CULT_PERMITTED
|
||||
|
||||
//Maintenance - Generic
|
||||
|
||||
@@ -598,11 +598,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/commons
|
||||
name = "Crew Quarters"
|
||||
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
|
||||
|
||||
/area/commons/dorms
|
||||
name = "Dormitories"
|
||||
icon_state = "dorms"
|
||||
area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA
|
||||
|
||||
/area/commons/dorms/barracks
|
||||
name = "Sleep Barracks"
|
||||
@@ -899,7 +899,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
// mood_bonus = 5
|
||||
// mood_message = "<span class='nicegreen'>I love being in the library!</span>\n"
|
||||
// mood_trait = TRAIT_INTROVERT
|
||||
flags_1 = CULT_PERMITTED_1
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
|
||||
sound_environment = SOUND_AREA_LARGE_SOFTFLOOR
|
||||
|
||||
/area/service/library/lounge
|
||||
@@ -926,7 +926,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/service/library/abandoned
|
||||
name = "Abandoned Library"
|
||||
icon_state = "abandoned_library"
|
||||
flags_1 = CULT_PERMITTED_1
|
||||
nightshift_public_area = NIGHTSHIFT_AREA_NONE
|
||||
|
||||
/area/service/chapel
|
||||
@@ -973,8 +972,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/service/janitor
|
||||
name = "Custodial Closet"
|
||||
icon_state = "janitor"
|
||||
flags_1 = CULT_PERMITTED_1
|
||||
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
|
||||
|
||||
/area/service/janitor/aux
|
||||
name = "Auxiliary Custodial Closet"
|
||||
@@ -1027,7 +1026,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/engineering/atmos
|
||||
name = "Atmospherics"
|
||||
icon_state = "atmos"
|
||||
flags_1 = CULT_PERMITTED_1
|
||||
|
||||
/area/engineering/atmos/upper
|
||||
name = "Upper Atmospherics"
|
||||
@@ -1035,7 +1033,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/engineering/atmospherics_engine
|
||||
name = "Atmospherics Engine"
|
||||
icon_state = "atmos_engine"
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
|
||||
|
||||
/area/engineering/lobby
|
||||
name = "Engineering Lobby"
|
||||
@@ -1044,7 +1042,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/engineering/supermatter
|
||||
name = "Supermatter Engine"
|
||||
icon_state = "engine_sm"
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
|
||||
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||
|
||||
/area/engineering/break_room
|
||||
@@ -1084,7 +1082,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/engineering/storage/tcomms
|
||||
name = "Telecomms Storage"
|
||||
icon_state = "tcom"
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
|
||||
clockwork_warp_allowed = FALSE
|
||||
|
||||
//Engineering - Construction
|
||||
@@ -1314,7 +1312,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/medical/virology
|
||||
name = "Virology"
|
||||
icon_state = "virology"
|
||||
flags_1 = CULT_PERMITTED_1
|
||||
|
||||
/area/medical/morgue
|
||||
name = "Morgue"
|
||||
@@ -1608,7 +1605,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/science/test_area
|
||||
name = "Toxins Test Area"
|
||||
icon_state = "tox_test"
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
|
||||
|
||||
/area/science/mixing
|
||||
name = "Toxins Mixing Lab"
|
||||
@@ -1617,7 +1614,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/science/mixing/chamber
|
||||
name = "Toxins Mixing Chamber"
|
||||
icon_state = "tox_mix_chamber"
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA
|
||||
area_flags = BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
|
||||
|
||||
/area/science/misc_lab
|
||||
name = "Testing Lab"
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
invisibility = INVISIBILITY_LIGHTING
|
||||
|
||||
var/area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA
|
||||
var/area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA | CULT_PERMITTED
|
||||
|
||||
var/fire = null
|
||||
///Whether there is an atmos alarm in this area
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||
requires_power = FALSE
|
||||
has_gravity = STANDARD_GRAVITY
|
||||
area_flags = VALID_TERRITORY | UNIQUE_AREA | NOTELEPORT
|
||||
area_flags = UNIQUE_AREA | NOTELEPORT
|
||||
flags_1 = NONE
|
||||
|
||||
/area/centcom/control
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
icon_state = "Holodeck"
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
|
||||
flags_1 = NONE
|
||||
area_flags = VALID_TERRITORY | UNIQUE_AREA
|
||||
sound_environment = SOUND_ENVIRONMENT_PADDED_CELL
|
||||
|
||||
var/obj/machinery/computer/holodeck/linked
|
||||
@@ -87,9 +86,6 @@
|
||||
/area/holodeck/rec_center/lounge
|
||||
name = "Holodeck - Lounge"
|
||||
|
||||
/area/holodeck/rec_center/medical
|
||||
name = "Holodeck - Emergency Medical"
|
||||
|
||||
/area/holodeck/rec_center/pet_lounge
|
||||
name = "Holodeck - Pet Park"
|
||||
|
||||
@@ -128,6 +124,10 @@
|
||||
name = "Holodeck - Holdout Bunker"
|
||||
restricted = 1
|
||||
|
||||
/area/holodeck/rec_center/medical
|
||||
name = "Holodeck - Emergency Medical"
|
||||
restricted = 1
|
||||
|
||||
/area/holodeck/rec_center/anthophila
|
||||
name = "Holodeck - Anthophila"
|
||||
restricted = 1
|
||||
|
||||
@@ -157,10 +157,10 @@
|
||||
|
||||
/area/shuttle/escape
|
||||
name = "Emergency Shuttle"
|
||||
area_flags = BLOBS_ALLOWED
|
||||
area_flags = BLOBS_ALLOWED | CULT_PERMITTED
|
||||
// area_limited_icon_smoothing = /area/shuttle/escape
|
||||
canSmoothWithAreas = /area/shuttle/escape
|
||||
flags_1 = CAN_BE_DIRTY_1 // | CULT_PERMITTED_1
|
||||
flags_1 = CAN_BE_DIRTY_1
|
||||
|
||||
/area/shuttle/escape/backup
|
||||
name = "Backup Emergency Shuttle"
|
||||
|
||||
@@ -800,6 +800,8 @@
|
||||
var/list/things = src_object.contents()
|
||||
var/datum/progressbar/progress = new(user, things.len, src)
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
if(STR == src_object)
|
||||
return
|
||||
while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(STR, /datum/component/storage.proc/handle_mass_item_insertion, things, src_object, user, progress)))
|
||||
stoplag(1)
|
||||
qdel(progress)
|
||||
|
||||
@@ -579,7 +579,7 @@
|
||||
|
||||
//TODO: Better floating
|
||||
/atom/movable/proc/float(on, throw_override)
|
||||
if(throwing || !throw_override)
|
||||
if(throwing && !throw_override)
|
||||
return
|
||||
if(on && !(movement_type & FLOATING))
|
||||
animate(src, pixel_y = 2, time = 10, loop = -1, flags = ANIMATION_RELATIVE)
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
/obj/machinery/computer/bank_machine
|
||||
name = "bank machine"
|
||||
desc = "A machine used to deposit and withdraw station funds."
|
||||
icon = 'goon/icons/obj/goon_terminals.dmi'
|
||||
icon = 'icons/obj/computer.dmi'
|
||||
icon_state = "computer"
|
||||
icon_screen = "vault"
|
||||
icon_keyboard = "security_key"
|
||||
idle_power_usage = 100
|
||||
|
||||
var/siphoning = FALSE
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "A culinary marvel that uses matter-to-energy conversion to store dishes and shards. Convenient! \
|
||||
Additional features include a vacuum function to suck in nearby dishes, and an automatic transfer beam that empties its contents into nearby disposal bins every now and then. \
|
||||
Or you can just drop your plates on the floor, like civilized folk."
|
||||
icon = 'goon/icons/obj/kitchen.dmi'
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
icon_state = "synthesizer"
|
||||
idle_power_usage = 8 //5 with default parts
|
||||
active_power_usage = 13 //10 with default parts
|
||||
|
||||
@@ -341,6 +341,9 @@
|
||||
return TRUE
|
||||
. = ..()
|
||||
|
||||
/obj/structure/foamedmetal/resin/BlockSuperconductivity()
|
||||
return TRUE
|
||||
|
||||
#undef ALUMINUM_FOAM
|
||||
#undef IRON_FOAM
|
||||
#undef RESIN_FOAM
|
||||
|
||||
@@ -73,6 +73,8 @@
|
||||
myseed.adjust_yield(rand(-3,2))
|
||||
myseed.adjust_production(rand(-3,3))
|
||||
myseed.endurance = clamp(myseed.endurance + rand(-3,2), 0, 100) // adjust_endurance has a min value of 10, need to edit directly
|
||||
// Scale health to endurance
|
||||
max_integrity = obj_integrity = 10 + myseed.endurance / 2
|
||||
delay_spread = delay_spread - myseed.production * 100 //So the delay goes DOWN with better stats instead of up. :I
|
||||
var/datum/plant_gene/trait/glow/G = myseed.get_gene(/datum/plant_gene/trait/glow)
|
||||
if(ispath(G)) // Seeds were ported to initialize so their genes are still typepaths here, luckily their initializer is smart enough to handle us doing this
|
||||
@@ -193,8 +195,14 @@
|
||||
/obj/structure/glowshroom/proc/Decay(spread, amount)
|
||||
if (spread) // Decay due to spread
|
||||
myseed.endurance -= amount
|
||||
max_integrity = min(max_integrity, 10 + myseed.endurance / 2)
|
||||
if(obj_integrity > max_integrity)
|
||||
obj_integrity = max_integrity
|
||||
else // Timed decay
|
||||
myseed.endurance -= 1
|
||||
max_integrity = min(max_integrity, 10 + myseed.endurance / 2)
|
||||
if(obj_integrity > max_integrity)
|
||||
obj_integrity = max_integrity
|
||||
if (myseed.endurance > 0)
|
||||
addtimer(CALLBACK(src, .proc/Decay), delay_decay, FALSE) // Recall decay timer
|
||||
return
|
||||
|
||||
@@ -378,6 +378,12 @@
|
||||
icon_state = "shieldsparkles"
|
||||
duration = 6
|
||||
|
||||
/obj/effect/temp_visual/impact_effect/judgement_cut
|
||||
name = "judgement cut impact"
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "impact_judgement"
|
||||
duration = 6
|
||||
|
||||
/obj/effect/temp_visual/heart
|
||||
name = "heart"
|
||||
icon = 'icons/mob/animal.dmi'
|
||||
@@ -535,3 +541,7 @@
|
||||
/obj/effect/temp_visual/slime_puddle/reverse
|
||||
icon_state = "from_puddle"
|
||||
duration = 7
|
||||
|
||||
/obj/effect/temp_visual/gib_animation
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
duration = 15
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
var/powered = FALSE //if there's a cell in the defib with enough power for a revive, blocks paddles from reviving otherwise
|
||||
var/obj/item/shockpaddles/paddles
|
||||
var/obj/item/stock_parts/cell/cell
|
||||
var/combat = FALSE //can we revive through space suits?
|
||||
var/combat = FALSE //if true, revive through hardsuits, allow for combat shocking, and tint paddles syndicate colors
|
||||
var/grab_ghost = FALSE // Do we pull the ghost back into their body?
|
||||
var/healdisk = FALSE // Does the unit have the healdisk upgrade?
|
||||
var/pullshocksafely = FALSE // Will we shock people dragging the body?
|
||||
@@ -176,7 +176,9 @@
|
||||
A.UpdateButtonIcon()
|
||||
|
||||
/obj/item/defibrillator/proc/make_paddles()
|
||||
return new /obj/item/shockpaddles(src)
|
||||
if(!combat)
|
||||
return new /obj/item/shockpaddles(src)
|
||||
return new /obj/item/shockpaddles/syndicate(src)
|
||||
|
||||
/obj/item/defibrillator/equipped(mob/user, slot)
|
||||
..()
|
||||
@@ -245,6 +247,8 @@
|
||||
/obj/item/defibrillator/compact/combat
|
||||
name = "combat defibrillator"
|
||||
desc = "A belt-equipped blood-red defibrillator that can be rapidly deployed. Does not have the restrictions or safeties of conventional defibrillators and can revive through space suits."
|
||||
icon_state = "defibcombat" //needs defib inhand sprites
|
||||
item_state = "defibcombat"
|
||||
combat = TRUE
|
||||
safety = FALSE
|
||||
always_emagged = TRUE
|
||||
@@ -279,6 +283,7 @@
|
||||
var/combat = FALSE //If it penetrates armor and gives additional functionality
|
||||
var/grab_ghost = FALSE
|
||||
var/tlimit = DEFIB_TIME_LIMIT * 10
|
||||
var/base_icon_state = "defibpaddles"
|
||||
var/disarm_shock_time = 10
|
||||
var/wielded = FALSE // track wielded status on item
|
||||
|
||||
@@ -352,10 +357,10 @@
|
||||
return (OXYLOSS)
|
||||
|
||||
/obj/item/shockpaddles/update_icon_state()
|
||||
icon_state = "defibpaddles[wielded]"
|
||||
item_state = "defibpaddles[wielded]"
|
||||
icon_state = "[base_icon_state][wielded]"
|
||||
item_state = icon_state
|
||||
if(cooldown)
|
||||
icon_state = "defibpaddles[wielded]_cooldown"
|
||||
icon_state = "[base_icon_state][wielded]_cooldown"
|
||||
|
||||
/obj/item/shockpaddles/dropped(mob/user)
|
||||
if(!req_defib)
|
||||
@@ -704,8 +709,9 @@
|
||||
desc = "A pair of paddles used to revive deceased operatives. It possesses both the ability to penetrate armor and to deliver powerful shocks offensively."
|
||||
combat = TRUE
|
||||
icon = 'icons/obj/defibrillators.dmi'
|
||||
icon_state = "defibpaddles0"
|
||||
item_state = "defibpaddles0"
|
||||
icon_state = "syndiepaddles0"
|
||||
item_state = "syndiepaddles0"
|
||||
base_icon_state = "syndiepaddles"
|
||||
req_defib = FALSE
|
||||
|
||||
///////////////////////////////////////////
|
||||
|
||||
@@ -77,8 +77,11 @@
|
||||
return
|
||||
if(!iscarbon(target))
|
||||
return
|
||||
if(!(target?.client?.prefs?.cit_toggles & MEDIHOUND_SLEEPER))
|
||||
to_chat(user, "<span class='warning'>The user has opted out of the use of your [src].")
|
||||
return
|
||||
var/voracious = TRUE
|
||||
if(!target.client || !(target.client.prefs.cit_toggles & MEDIHOUND_SLEEPER) || !hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER))
|
||||
if(!hound.client || !(hound.client.prefs.cit_toggles & MEDIHOUND_SLEEPER))
|
||||
voracious = FALSE
|
||||
if(target.buckled)
|
||||
to_chat(user, "<span class='warning'>The user is buckled and can not be put into your [src].</span>")
|
||||
|
||||
@@ -381,8 +381,8 @@ GENETICS SCANNER
|
||||
else if (S.mutantstomach != initial(S.mutantstomach))
|
||||
mutant = TRUE
|
||||
|
||||
msg += "\t<span class='info'>Reported Species: [H.dna.custom_species ? H.dna.custom_species : S.name]</span>\n"
|
||||
msg += "\t<span class='info'>Base Species: [S.name]</span>\n"
|
||||
msg += "\t<span class='info'>Reported Species: [H.spec_trait_examine_font()][H.dna.custom_species ? H.dna.custom_species : S.name]</font></span>\n"
|
||||
msg += "\t<span class='info'>Base Species: [H.spec_trait_examine_font()][S.name]</font></span>\n"
|
||||
if(mutant)
|
||||
msg += "\t<span class='info'>Subject has mutations present.</span>\n"
|
||||
msg += "\t<span class='info'>Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)</span>\n"
|
||||
|
||||
@@ -399,7 +399,7 @@
|
||||
on_sound = 'sound/weapons/batonextend.ogg'
|
||||
on_icon_state = "telebaton_1"
|
||||
off_icon_state = "telebaton_0"
|
||||
on_item_state = "nullrod"
|
||||
on_item_state = "telebaton_1"
|
||||
force_on = 10
|
||||
force_off = 0
|
||||
weight_class_on = WEIGHT_CLASS_BULKY
|
||||
@@ -472,7 +472,7 @@
|
||||
on_stun_sound = 'sound/effects/contractorbatonhit.ogg'
|
||||
on_icon_state = "contractor_baton_1"
|
||||
off_icon_state = "contractor_baton_0"
|
||||
on_item_state = "contractor_baton"
|
||||
on_item_state = "contractor_baton_1"
|
||||
force_on = 16
|
||||
force_off = 5
|
||||
weight_class_on = WEIGHT_CLASS_NORMAL
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
desc = "A handheld tracking device that locks onto certain signals."
|
||||
icon = 'icons/obj/device.dmi'
|
||||
icon_state = "pinpointer"
|
||||
item_state = "pinpointer"
|
||||
flags_1 = CONDUCT_1
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
item_state = "electronic"
|
||||
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
|
||||
throw_speed = 3
|
||||
@@ -97,6 +97,7 @@
|
||||
name = "crew pinpointer"
|
||||
desc = "A handheld tracking device that points to crew suit sensors."
|
||||
icon_state = "pinpointer_crew"
|
||||
item_state = "pinpointer_crew"
|
||||
custom_price = PRICE_ABOVE_EXPENSIVE
|
||||
var/has_owner = FALSE
|
||||
var/pinpointer_owner = null
|
||||
@@ -208,6 +209,7 @@
|
||||
name = "fugitive pinpointer"
|
||||
desc = "A handheld tracking device that locates the bounty hunter shuttle for quick escapes."
|
||||
icon_state = "pinpointer_hunter"
|
||||
item_state = "pinpointer_black"
|
||||
var/obj/shuttleport
|
||||
|
||||
/obj/item/pinpointer/shuttle/Initialize(mapload)
|
||||
@@ -231,4 +233,4 @@
|
||||
|
||||
/obj/item/pinpointer/custom
|
||||
resets_target = FALSE
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/singularityhammer
|
||||
name = "singularity hammer"
|
||||
desc = "The pinnacle of close combat technology, the hammer harnesses the power of a miniaturized singularity to deal crushing blows."
|
||||
icon_state = "mjollnir0"
|
||||
icon_state = "singularity_hammer0"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi'
|
||||
flags_1 = CONDUCT_1
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
/obj/item/singularityhammer/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/two_handed, force_multiplier=4, icon_wielded="mjollnir1")
|
||||
AddComponent(/datum/component/two_handed, force_multiplier=4, icon_wielded="singularity_hammer1")
|
||||
|
||||
/// triggered on wield of two handed item
|
||||
/obj/item/singularityhammer/proc/on_wield(obj/item/source, mob/user)
|
||||
@@ -36,7 +36,7 @@
|
||||
wielded = FALSE
|
||||
|
||||
/obj/item/singularityhammer/update_icon_state()
|
||||
icon_state = "mjollnir0"
|
||||
icon_state = "singularity_hammer0"
|
||||
|
||||
/obj/item/singularityhammer/Destroy()
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
@@ -593,7 +593,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \
|
||||
return
|
||||
var/turf/T = get_turf(user) //we may have moved. adjust as needed...
|
||||
var/area/A = get_area(user)
|
||||
if((!is_station_level(T.z) && !is_mining_level(T.z)) || (A && !(A.flags_1 & CULT_PERMITTED_1)))
|
||||
if((!is_station_level(T.z) && !is_mining_level(T.z)) || !(A?.area_flags & CULT_PERMITTED))
|
||||
to_chat(user, "<span class='warning'>The veil is not weak enough here.</span>")
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
@@ -85,6 +85,7 @@
|
||||
name = "trash bag of holding"
|
||||
desc = "The latest and greatest in custodial convenience, a trashbag that is capable of holding vast quantities of garbage."
|
||||
icon_state = "bluetrashbag"
|
||||
item_state = "bluetrashbag"
|
||||
item_flags = NO_MAT_REDEMPTION
|
||||
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
|
||||
|
||||
|
||||
@@ -211,8 +211,8 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
"<span class='userdanger'>YOU FEEL THE POWER OF VALHALLA FLOWING THROUGH YOU! <i>THERE CAN BE ONLY ONE!!!</i></span>")
|
||||
user.update_icons()
|
||||
new_name = "GORE-DRENCHED CLAYMORE OF [pick("THE WHIMSICAL SLAUGHTER", "A THOUSAND SLAUGHTERED CATTLE", "GLORY AND VALHALLA", "ANNIHILATION", "OBLITERATION")]"
|
||||
icon_state = "claymore_valhalla"
|
||||
item_state = "cultblade"
|
||||
icon_state = "claymore_gold"
|
||||
item_state = "claymore_gold"
|
||||
remove_atom_colour(ADMIN_COLOUR_PRIORITY)
|
||||
|
||||
name = new_name
|
||||
|
||||
@@ -13,15 +13,16 @@
|
||||
return 0
|
||||
. = ..()
|
||||
|
||||
// Exists to work around the minimum 700 cr price for goodies / small items
|
||||
/obj/structure/closet/secure_closet/goodies
|
||||
// Exists to work around the minimum 700 cr price for goodies / small items / materials
|
||||
/obj/structure/closet/secure_closet/cargo
|
||||
name = "cargo locker"
|
||||
icon_state = "goodies"
|
||||
desc = "A sturdier card-locked storage unit used for bulky shipments."
|
||||
max_integrity = 500 // Same as crates.
|
||||
melee_min_damage = 25 // Idem.
|
||||
|
||||
/obj/structure/closet/secure_closet/goodies/owned
|
||||
name = "private locker"
|
||||
/obj/structure/closet/secure_closet/cargo/owned
|
||||
name = "private cargo locker"
|
||||
desc = "A locker designed to only open for who purchased its contents."
|
||||
///Account of the person buying the crate if private purchasing.
|
||||
var/datum/bank_account/buyer_account
|
||||
@@ -32,18 +33,18 @@
|
||||
///Is the crate being bought by a person, or a budget card?
|
||||
var/department_purchase = FALSE
|
||||
|
||||
/obj/structure/closet/secure_closet/goodies/owned/examine(mob/user)
|
||||
/obj/structure/closet/secure_closet/cargo/owned/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>It's locked with a privacy lock, and can only be unlocked by the buyer's ID.</span>"
|
||||
|
||||
/obj/structure/closet/secure_closet/goodies/owned/Initialize(mapload, datum/bank_account/_buyer_account)
|
||||
/obj/structure/closet/secure_closet/cargo/owned/Initialize(mapload, datum/bank_account/_buyer_account)
|
||||
. = ..()
|
||||
buyer_account = _buyer_account
|
||||
if(istype(buyer_account, /datum/bank_account/department))
|
||||
department_purchase = TRUE
|
||||
department_account = buyer_account
|
||||
|
||||
/obj/structure/closet/secure_closet/goodies/owned/togglelock(mob/living/user, silent)
|
||||
/obj/structure/closet/secure_closet/cargo/owned/togglelock(mob/living/user, silent)
|
||||
if(privacy_lock)
|
||||
if(!broken)
|
||||
var/obj/item/card/id/id_card = user.get_idcard(TRUE)
|
||||
|
||||
@@ -21,6 +21,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
var/ini_dir = null
|
||||
var/state = WINDOW_OUT_OF_FRAME
|
||||
var/reinf = FALSE
|
||||
var/extra_reinforced = FALSE
|
||||
var/heat_resistance = 800
|
||||
var/decon_speed = 30
|
||||
var/wtype = "glass"
|
||||
@@ -65,6 +66,20 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
. += "<span class='notice'>The window is out of the frame, but could be <i>pried</i> in. It is <b>screwed</b> to the floor.</span>"
|
||||
else if(!anchored)
|
||||
. += "<span class='notice'>The window is <i>unscrewed</i> from the floor, and could be deconstructed by <b>wrenching</b>.</span>"
|
||||
switch(state)
|
||||
if(PRWINDOW_SECURE)
|
||||
if(extra_reinforced)
|
||||
. += "It's been screwed in with one way screws, you'd need to <b>heat their solder cover</b> to have any chance of backing them out."
|
||||
else
|
||||
. += "It's been screwed in with solid screws, you'd need to <b>screw them</b> out to unsecure the window."
|
||||
if(PRWINDOW_BOLTS_HEATED)
|
||||
. += "The solder cover melts away, and you'll likely be able to <b>unscrew them</b> now."
|
||||
if(PRWINDOW_BOLTS_OUT)
|
||||
. += "The screws have been removed, revealing a small gap you could fit a <b>prying tool</b> in."
|
||||
if(PRWINDOW_POPPED)
|
||||
. += "The main plate of the window has popped out of the frame, exposing some bars that look like they can be <b>cut</b>."
|
||||
if(PRWINDOW_BARS_CUT)
|
||||
. += "The main pane can be easily moved out of the way to reveal some <b>bolts</b> holding the frame in."
|
||||
else
|
||||
if(anchored)
|
||||
. += "<span class='notice'>The window is <b>screwed</b> to the floor.</span>"
|
||||
@@ -75,8 +90,13 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
. = ..()
|
||||
if(direct)
|
||||
setDir(direct)
|
||||
if(reinf && anchored)
|
||||
|
||||
if(extra_reinforced && anchored)
|
||||
state = PRWINDOW_SECURE
|
||||
|
||||
else if(reinf && anchored)
|
||||
state = WINDOW_SCREWED_TO_FRAME
|
||||
|
||||
|
||||
if(mapload && electrochromatic_id && electrochromatic_id[1] == "!")
|
||||
electrochromatic_id = SSmapping.get_obfuscated_id(electrochromatic_id)
|
||||
@@ -230,29 +250,26 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
make_electrochromatic(K.id)
|
||||
qdel(K)
|
||||
|
||||
if(!(flags_1&NODECONSTRUCT_1))
|
||||
if(!(flags_1 & NODECONSTRUCT_1) && !(state >= PRWINDOW_FRAME_BOLTED))
|
||||
if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
I.play_tool_sound(src, 75)
|
||||
if(reinf)
|
||||
if(state == WINDOW_SCREWED_TO_FRAME || state == WINDOW_IN_FRAME)
|
||||
to_chat(user, "<span class='notice'>You begin to [state == WINDOW_SCREWED_TO_FRAME ? "unscrew the window from":"screw the window to"] the frame...</span>")
|
||||
if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
|
||||
if(state == WINDOW_SCREWED_TO_FRAME || state == WINDOW_IN_FRAME && anchored)
|
||||
to_chat(user, "<span class='notice'>You begin to [state == WINDOW_SCREWED_TO_FRAME ? "unscrew the window from":"screw the window to"] the frame...</span>")
|
||||
if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
|
||||
if(extra_reinforced && state == WINDOW_IN_FRAME)
|
||||
state = PRWINDOW_SECURE
|
||||
else
|
||||
state = (state == WINDOW_IN_FRAME ? WINDOW_SCREWED_TO_FRAME : WINDOW_IN_FRAME)
|
||||
to_chat(user, "<span class='notice'>You [state == WINDOW_IN_FRAME ? "unfasten the window from":"fasten the window to"] the frame.</span>")
|
||||
else if(state == WINDOW_OUT_OF_FRAME)
|
||||
to_chat(user, "<span class='notice'>You begin to [anchored ? "unscrew the frame from":"screw the frame to"] the floor...</span>")
|
||||
if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
|
||||
setAnchored(!anchored)
|
||||
to_chat(user, "<span class='notice'>You [anchored ? "fasten the frame to":"unfasten the frame from"] the floor.</span>")
|
||||
else //if we're not reinforced, we don't need to check or update state
|
||||
to_chat(user, "<span class='notice'>You begin to [anchored ? "unscrew the window from":"screw the window to"] the floor...</span>")
|
||||
if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_anchored, anchored)))
|
||||
to_chat(user, "<span class='notice'>You [state == WINDOW_IN_FRAME ? "unfasten the window from":"fasten the window to"] the frame.</span>")
|
||||
else if(state == WINDOW_OUT_OF_FRAME)
|
||||
to_chat(user, "<span class='notice'>You begin to [anchored ? "unscrew the frame from":"screw the frame to"] the floor...</span>")
|
||||
if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
|
||||
setAnchored(!anchored)
|
||||
to_chat(user, "<span class='notice'>You [anchored ? "fasten the window to":"unfasten the window from"] the floor.</span>")
|
||||
to_chat(user, "<span class='notice'>You [anchored ? "fasten the frame to":"unfasten the frame from"] the floor.</span>")
|
||||
return
|
||||
|
||||
|
||||
else if(I.tool_behaviour == TOOL_CROWBAR && reinf && (state == WINDOW_OUT_OF_FRAME || state == WINDOW_IN_FRAME))
|
||||
else if(I.tool_behaviour == TOOL_CROWBAR && reinf && (state == WINDOW_OUT_OF_FRAME || state == WINDOW_IN_FRAME) && anchored)
|
||||
to_chat(user, "<span class='notice'>You begin to lever the window [state == WINDOW_OUT_OF_FRAME ? "into":"out of"] the frame...</span>")
|
||||
I.play_tool_sound(src, 75)
|
||||
if(I.use_tool(src, user, decon_speed, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
|
||||
@@ -270,8 +287,67 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
to_chat(user, "<span class='notice'>You successfully disassemble [src].</span>")
|
||||
qdel(src)
|
||||
return
|
||||
if(!reinf || !anchored)
|
||||
return ..()
|
||||
switch(state)
|
||||
if(PRWINDOW_SECURE)
|
||||
if(extra_reinforced)
|
||||
if(I.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HARM)
|
||||
user.visible_message("<span class='notice'>[user] holds \the [I] to the security screws on \the [src]...</span>",
|
||||
"<span class='notice'>You begin heating the security screws on \the [src]...</span>")
|
||||
if(I.use_tool(src, user, 180, volume = 100))
|
||||
to_chat(user, "<span class='notice'>The security bolts are glowing white hot and look ready to be removed.</span>")
|
||||
state = PRWINDOW_BOLTS_HEATED
|
||||
addtimer(CALLBACK(src, .proc/cool_bolts), 300)
|
||||
return
|
||||
else
|
||||
if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
user.visible_message("<span class='notice'>[user] digs into the screws and starts removing them...</span>",
|
||||
"<span class='notice'>You dig into the screws hard and they start turning...</span>")
|
||||
if(I.use_tool(src, user, 80, volume = 50))
|
||||
state = PRWINDOW_BOLTS_OUT
|
||||
to_chat(user, "<span class='notice'>The screws come out, and a gap forms around the edge of the pane.</span>")
|
||||
return
|
||||
if(PRWINDOW_BOLTS_HEATED)
|
||||
if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
user.visible_message("<span class='notice'>[user] digs into the security screws and starts removing them...</span>",
|
||||
"<span class='notice'>You dig into the screws hard and they start turning...</span>")
|
||||
if(I.use_tool(src, user, 80, volume = 50))
|
||||
state = PRWINDOW_BOLTS_OUT
|
||||
to_chat(user, "<span class='notice'>The screws come out, and a gap forms around the edge of the pane.</span>")
|
||||
return
|
||||
if(PRWINDOW_BOLTS_OUT)
|
||||
if(I.tool_behaviour == TOOL_CROWBAR)
|
||||
user.visible_message("<span class='notice'>[user] wedges \the [I] into the gap in the frame and starts prying...</span>",
|
||||
"<span class='notice'>You wedge \the [I] into the gap in the frame and start prying...</span>")
|
||||
if(I.use_tool(src, user, 50, volume = 50))
|
||||
state = PRWINDOW_POPPED
|
||||
to_chat(user, "<span class='notice'>The panel pops out of the frame, exposing some thin metal bars that looks like they can be cut.</span>")
|
||||
return
|
||||
if(PRWINDOW_POPPED)
|
||||
if(I.tool_behaviour == TOOL_WIRECUTTER)
|
||||
user.visible_message("<span class='notice'>[user] starts cutting the exposed bars on \the [src]...</span>",
|
||||
"<span class='notice'>You start cutting the exposed bars on \the [src]</span>")
|
||||
if(I.use_tool(src, user, 30, volume = 50))
|
||||
state = PRWINDOW_BARS_CUT
|
||||
to_chat(user, "<span class='notice'>The panels falls out of the way exposing the frame bolts.</span>")
|
||||
return
|
||||
if(PRWINDOW_BARS_CUT)
|
||||
if(I.tool_behaviour == TOOL_WRENCH)
|
||||
user.visible_message("<span class='notice'>[user] starts unfastening \the [src] from the frame...</span>",
|
||||
"<span class='notice'>You start unfastening the bolts from the frame...</span>")
|
||||
if(I.use_tool(src, user, 50, volume = 50))
|
||||
to_chat(user, "<span class='notice'>You unscrew the bolts from the frame and the window pops loose.</span>")
|
||||
state = WINDOW_OUT_OF_FRAME
|
||||
setAnchored(FALSE)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/window/proc/cool_bolts()
|
||||
if(state == PRWINDOW_BOLTS_HEATED)
|
||||
state = PRWINDOW_SECURE
|
||||
visible_message("<span class='notice'>The bolts on \the [src] look like they've cooled off...</span>")
|
||||
|
||||
/obj/structure/window/setAnchored(anchorvalue)
|
||||
..()
|
||||
air_update_turf(TRUE)
|
||||
@@ -577,6 +653,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
desc = "A window made out of a plasma-silicate alloy and a rod matrix. It looks hopelessly tough to break and is most likely nigh fireproof."
|
||||
icon_state = "plasmarwindow"
|
||||
reinf = TRUE
|
||||
extra_reinforced = TRUE
|
||||
heat_resistance = 50000
|
||||
armor = list("melee" = 85, "bullet" = 20, "laser" = 0, "energy" = 0, "bomb" = 60, "bio" = 100, "rad" = 100, "fire" = 99, "acid" = 100)
|
||||
max_integrity = 500
|
||||
@@ -642,6 +719,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
icon = 'icons/obj/smooth_structures/rplasma_window.dmi'
|
||||
icon_state = "rplasmawindow"
|
||||
dir = FULLTILE_WINDOW_DIR
|
||||
state = PRWINDOW_SECURE
|
||||
max_integrity = 1000
|
||||
fulltile = TRUE
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
@@ -726,6 +804,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
fulltile = TRUE
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
reinf = TRUE
|
||||
extra_reinforced = TRUE
|
||||
heat_resistance = 1600
|
||||
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 100)
|
||||
smooth = SMOOTH_TRUE
|
||||
@@ -758,6 +837,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
wave_explosion_block = EXPLOSION_BLOCK_BOROSILICATE_WINDOW
|
||||
wave_explosion_multiply = EXPLOSION_DAMPEN_BOROSILICATE_WINDOW
|
||||
decon_speed = 40
|
||||
extra_reinforced = TRUE
|
||||
glass_type = /obj/item/stack/tile/brass
|
||||
glass_amount = 1
|
||||
reinf = FALSE
|
||||
|
||||
@@ -280,7 +280,7 @@
|
||||
if(lube & NO_SLIP_WHEN_WALKING)
|
||||
if(C.m_intent == MOVE_INTENT_WALK)
|
||||
return FALSE
|
||||
if(ishuman(C) && !(lube & SLIP_WHEN_JOGGING))
|
||||
if(ishuman(C) && !(lube & SLIP_WHEN_JOGGING) && CONFIG_GET(flag/sprint_enabled))
|
||||
var/mob/living/carbon/human/H = C
|
||||
if(!(H.combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) && H.getStaminaLoss() <= 20)
|
||||
return FALSE
|
||||
|
||||
+12
-9
@@ -386,7 +386,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
|
||||
|
||||
var/list/things = src_object.contents()
|
||||
var/datum/progressbar/progress = new(user, things.len, src)
|
||||
while (do_after(usr, 1 SECONDS, TRUE, src, FALSE, CALLBACK(src_object, /datum/component/storage.proc/mass_remove_from_storage, src, things, progress)))
|
||||
while (do_after(usr, 1 SECONDS, TRUE, src, FALSE, CALLBACK(src_object, /datum/component/storage.proc/mass_remove_from_storage, src, things, progress, TRUE, user)))
|
||||
stoplag(1)
|
||||
qdel(progress)
|
||||
|
||||
@@ -579,7 +579,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
|
||||
/turf/AllowDrop()
|
||||
return TRUE
|
||||
|
||||
/turf/proc/add_vomit_floor(mob/living/M, toxvomit = NONE)
|
||||
/turf/proc/add_vomit_floor(mob/living/M, toxvomit = NONE, purge_ratio = 0.1)
|
||||
|
||||
var/obj/effect/decal/cleanable/vomit/V = new /obj/effect/decal/cleanable/vomit(src, M.get_static_viruses())
|
||||
//if the vomit combined, apply toxicity and reagents to the old vomit
|
||||
@@ -587,21 +587,24 @@ GLOBAL_LIST_EMPTY(station_turfs)
|
||||
V = locate() in src
|
||||
if(!V) //the decal was spawned on a wall or groundless turf and promptly qdeleted.
|
||||
return
|
||||
// Make toxins and blazaam vomit look different
|
||||
// Apply the proper icon set based on vomit type
|
||||
if(toxvomit == VOMIT_PURPLE)
|
||||
V.icon_state = "vomitpurp_[pick(1,4)]"
|
||||
else if (toxvomit == VOMIT_TOXIC)
|
||||
V.icon_state = "vomittox_[pick(1,4)]"
|
||||
if (iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
if(C.reagents)
|
||||
clear_reagents_to_vomit_pool(C,V)
|
||||
else if (toxvomit == VOMIT_NANITE)
|
||||
V.name = "metallic slurry"
|
||||
V.desc = "A puddle of metallic slurry that looks vaguely like very fine sand. It almost seems like it's moving..."
|
||||
V.icon_state = "vomitnanite_[pick(1,4)]"
|
||||
if (purge_ratio && iscarbon(M))
|
||||
clear_reagents_to_vomit_pool(M, V, purge_ratio)
|
||||
|
||||
/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V)
|
||||
/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V, purge_ratio = 0.1)
|
||||
for(var/datum/reagent/consumable/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food
|
||||
if(R.nutriment_factor > 0)
|
||||
M.reagents.del_reagent(R.type)
|
||||
M.reagents.trans_to(V, M.reagents.total_volume / 10)
|
||||
var/chemicals_lost = M.reagents.total_volume * purge_ratio
|
||||
M.reagents.trans_to(V, chemicals_lost)
|
||||
|
||||
//Whatever happens after high temperature fire dies out or thermite reaction works.
|
||||
//Should return new turf
|
||||
|
||||
@@ -116,6 +116,7 @@ GLOBAL_LIST_INIT(admin_verbs_fun, list(
|
||||
/client/proc/show_tip,
|
||||
/client/proc/smite,
|
||||
/client/proc/admin_away,
|
||||
/client/proc/spawn_floor_cluwne,
|
||||
/client/proc/cmd_admin_toggle_fov, //CIT CHANGE - FOV
|
||||
/client/proc/roll_dices //CIT CHANGE - Adds dice verb
|
||||
))
|
||||
|
||||
@@ -104,7 +104,7 @@ GLOBAL_VAR(antag_prototypes)
|
||||
var/datum/component/activity/activity = current.GetComponent(/datum/component/activity)
|
||||
if(activity)
|
||||
out += "Activity level: [activity.activity_level]<br>"
|
||||
out += "Hasn't changed areas in approximately [activity.not_moved_counter] seconds"
|
||||
out += "Hasn't changed areas in approximately [activity.not_moved_counter] seconds<br>"
|
||||
|
||||
var/special_statuses = get_special_statuses()
|
||||
if(length(special_statuses))
|
||||
|
||||
@@ -1333,9 +1333,10 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
ADMIN_PUNISHMENT_SHOES,
|
||||
ADMIN_PUNISHMENT_PICKLE,
|
||||
ADMIN_PUNISHMENT_FRY,
|
||||
ADMIN_PUNISHMENT_CRACK,
|
||||
ADMIN_PUNISHMENT_BLEED,
|
||||
ADMIN_PUNISHMENT_SCARIFY)
|
||||
ADMIN_PUNISHMENT_CRACK,
|
||||
ADMIN_PUNISHMENT_BLEED,
|
||||
ADMIN_PUNISHMENT_SCARIFY,
|
||||
ADMIN_PUNISHMENT_CLUWNE)
|
||||
|
||||
var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list
|
||||
|
||||
@@ -1501,6 +1502,11 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
to_chat(usr,"<span class='warning'>[C] does not have knottable shoes!</span>")
|
||||
return
|
||||
sick_kicks.adjust_laces(SHOES_KNOTTED)
|
||||
if(ADMIN_PUNISHMENT_CLUWNE)
|
||||
if(!iscarbon(target))
|
||||
to_chat(usr,"<span class='warning'>This must be used on a carbon mob.</span>")
|
||||
return
|
||||
target.cluwneify()
|
||||
|
||||
punish_log(target, punishment)
|
||||
|
||||
@@ -1691,3 +1697,23 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if(!source)
|
||||
return
|
||||
REMOVE_TRAIT(D,chosen_trait,source)
|
||||
|
||||
/client/proc/spawn_floor_cluwne()
|
||||
set category = "Admin.Fun"
|
||||
set name = "Unleash Floor Cluwne"
|
||||
set desc = "Pick a specific target or just let it select randomly and spawn the floor cluwne mob on the station. Be warned: spawning more than one may cause issues!"
|
||||
var/target
|
||||
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
|
||||
var/turf/T = get_turf(usr)
|
||||
target = input("Any specific target in mind? Please note only live, non cluwned, human targets are valid.", "Target", target) as null|anything in GLOB.player_list
|
||||
if(target && ishuman(target))
|
||||
var/mob/living/carbon/human/H = target
|
||||
var/mob/living/simple_animal/hostile/floor_cluwne/FC = new /mob/living/simple_animal/hostile/floor_cluwne(T)
|
||||
FC.Acquire_Victim(H)
|
||||
else
|
||||
new /mob/living/simple_animal/hostile/floor_cluwne(T)
|
||||
log_admin("[key_name(usr)] spawned floor cluwne.")
|
||||
message_admins("[key_name(usr)] spawned floor cluwne.")
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
holder.marked_datum = D
|
||||
vv_update_display(D, "marked", VV_MSG_MARKED)
|
||||
|
||||
/client/proc/mark_datum_mapview(datum/D as mob|obj|turf|area in view(view))
|
||||
/client/proc/mark_datum_mapview(datum/D in world)
|
||||
set category = "Debug"
|
||||
set name = "Mark Object"
|
||||
mark_datum(D)
|
||||
|
||||
@@ -684,6 +684,7 @@
|
||||
if(HAS_TRAIT(user, TRAIT_NOPUGILIST))
|
||||
to_chat(user, "<span class='warning'>We would gain nothing by forming our fists into brute-force weapons when we are trained in precision martial arts!</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/gloves/fingerless/pugilist/cling // switches between lesser GotNS and Big Punchy Rib Breaky Hands
|
||||
name = "hewn bone gauntlets"
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
/datum/clockwork_scripture/create_object/stargazer/check_special_requirements()
|
||||
var/area/A = get_area(invoker)
|
||||
var/turf/T = get_turf(invoker)
|
||||
if(!is_station_level(invoker.z) || isspaceturf(T) || !(A.area_flags & VALID_TERRITORY))
|
||||
if(!is_station_level(invoker.z) || isspaceturf(T) || !(A?.area_flags & CULT_PERMITTED))
|
||||
to_chat(invoker, "<span class='danger'>Stargazers can't be built off-station.</span>")
|
||||
return
|
||||
return ..()
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
return FALSE
|
||||
var/area/A = get_area(invoker)
|
||||
var/turf/T = get_turf(invoker)
|
||||
if(!is_station_level(T.z) || isspaceturf(T) || !(A.area_flags & VALID_TERRITORY) || isshuttleturf(T))
|
||||
if(!is_station_level(T.z) || isspaceturf(T) || !(A?.area_flags & CULT_PERMITTED) || isshuttleturf(T))
|
||||
to_chat(invoker, "<span class='warning'>You must be on the station to activate the Ark!</span>")
|
||||
return FALSE
|
||||
if(GLOB.clockwork_gateway_activated)
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
break
|
||||
if(has_starlight && anchored)
|
||||
var/area/A = get_area(src)
|
||||
if(A.outdoors || A.map_name == "Space" || !(A.area_flags & VALID_TERRITORY))
|
||||
if(A.outdoors || A.map_name == "Space" || !(A?.area_flags & CULT_PERMITTED))
|
||||
has_starlight = FALSE
|
||||
if(old_status != has_starlight)
|
||||
if(has_starlight)
|
||||
|
||||
@@ -419,7 +419,7 @@
|
||||
var/sanity = 0
|
||||
while(summon_spots.len < SUMMON_POSSIBILITIES && sanity < 100)
|
||||
var/area/summon = pick(GLOB.sortedAreas - summon_spots)
|
||||
if(summon && is_station_level(summon.z) && !(summon.area_flags & VALID_TERRITORY))
|
||||
if(summon && is_station_level(summon.z) && (summon.area_flags & VALID_TERRITORY))
|
||||
summon_spots += summon
|
||||
sanity++
|
||||
update_explanation_text()
|
||||
|
||||
@@ -148,7 +148,7 @@ This file contains the cult dagger and rune list code
|
||||
to_chat(user, "<span class='cult'>There is already a rune here.</span>")
|
||||
return FALSE
|
||||
var/area/A = get_area(T)
|
||||
if((!is_station_level(T.z) && !is_mining_level(T.z)) || !(A?.area_flags & VALID_TERRITORY))
|
||||
if((!is_station_level(T.z) && !is_mining_level(T.z)) || !(A?.area_flags & CULT_PERMITTED))
|
||||
to_chat(user, "<span class='warning'>The veil is not weak enough here.</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
@@ -89,6 +89,7 @@
|
||||
var/list/lore = list()
|
||||
|
||||
data["charges"] = charge
|
||||
data["total_sacs"] = cultie.total_sacrifices
|
||||
|
||||
for(var/X in to_know)
|
||||
lore = list()
|
||||
@@ -96,7 +97,11 @@
|
||||
lore["type"] = EK.type
|
||||
lore["name"] = EK.name
|
||||
lore["cost"] = EK.cost
|
||||
lore["disabled"] = EK.cost <= charge ? FALSE : TRUE
|
||||
lore["sacs"] = EK.sacs_needed
|
||||
if(EK.cost <= charge && cultie.total_sacrifices >= EK.sacs_needed)
|
||||
lore["disabled"] = FALSE
|
||||
else
|
||||
lore["disabled"] = TRUE
|
||||
lore["path"] = EK.route
|
||||
lore["state"] = "Research"
|
||||
lore["flavour"] = EK.gain_text
|
||||
@@ -108,6 +113,7 @@
|
||||
var/datum/eldritch_knowledge/EK = known[X]
|
||||
lore["name"] = EK.name
|
||||
lore["cost"] = EK.cost
|
||||
lore["sacs"] = EK.sacs_needed
|
||||
lore["disabled"] = TRUE
|
||||
lore["path"] = EK.route
|
||||
lore["state"] = "Researched"
|
||||
|
||||
@@ -165,6 +165,25 @@
|
||||
new /obj/effect/reality_smash(chosen_location)
|
||||
ReworkNetwork()
|
||||
|
||||
/**
|
||||
*CIT CHANGE
|
||||
*
|
||||
*Creates a singular reality smash
|
||||
*Credit to slimelust
|
||||
*/
|
||||
|
||||
/datum/reality_smash_tracker/proc/RandomSpawnSmash(var/deferred = FALSE)
|
||||
var/turf/chosen_location = get_safe_random_station_turf()
|
||||
//we also dont want them close to each other, at least 1 tile of separation
|
||||
var/obj/effect/reality_smash/what_if_i_have_one = locate() in range(1, chosen_location)
|
||||
var/obj/effect/broken_illusion/what_if_i_had_one_but_got_used = locate() in range(1, chosen_location)
|
||||
var/tries = 10
|
||||
while((what_if_i_have_one || what_if_i_had_one_but_got_used) && tries-- > 0)
|
||||
chosen_location = get_safe_random_station_turf()
|
||||
new /obj/effect/reality_smash(chosen_location)
|
||||
if(!deferred)
|
||||
ReworkNetwork()
|
||||
|
||||
/**
|
||||
* Adds a mind to the list of people that can see the reality smashes
|
||||
*
|
||||
@@ -200,15 +219,23 @@
|
||||
/obj/effect/broken_illusion/Initialize()
|
||||
. = ..()
|
||||
addtimer(CALLBACK(src,.proc/show_presence),15 SECONDS)
|
||||
addtimer(CALLBACK(src,.proc/remove_presence),195 SECONDS)
|
||||
|
||||
var/image/I = image('icons/effects/eldritch.dmi',src,null,OBJ_LAYER)
|
||||
I.override = TRUE
|
||||
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/silicons, "pierced_reality", I)
|
||||
|
||||
/obj/effect/broken_illusion/Destroy()
|
||||
GLOB.reality_smash_track.RandomSpawnSmash()
|
||||
return ..()
|
||||
|
||||
///Makes this obj appear out of nothing
|
||||
/obj/effect/broken_illusion/proc/show_presence()
|
||||
animate(src,alpha = 255,time = 15 SECONDS)
|
||||
|
||||
/obj/effect/broken_illusion/proc/remove_presence()
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/broken_illusion/attack_hand(mob/living/user, list/modifiers)
|
||||
if(!ishuman(user))
|
||||
return ..()
|
||||
|
||||
@@ -44,46 +44,6 @@
|
||||
if(target.stat == DEAD)
|
||||
to_chat(user,"<span class='warning'>[target.real_name] is dead. Bring them onto a transmutation rune!</span>")
|
||||
|
||||
/datum/action/innate/heretic_shatter
|
||||
name = "Shattering Offer"
|
||||
desc = "After a brief delay, you will be granted salvation from a dire situation at the cost of your blade. (Teleports you to a random safe turf on your current z level after a windup, but destroys your blade.)"
|
||||
background_icon_state = "bg_ecult"
|
||||
button_icon_state = "shatter"
|
||||
icon_icon = 'icons/mob/actions/actions_ecult.dmi'
|
||||
check_flags = MOBILITY_HOLD|MOBILITY_MOVE|MOBILITY_USE
|
||||
var/mob/living/carbon/human/holder
|
||||
var/obj/item/melee/sickly_blade/sword
|
||||
|
||||
/datum/action/innate/heretic_shatter/Grant(mob/user, obj/object)
|
||||
sword = object
|
||||
holder = user
|
||||
//i know what im doing
|
||||
return ..()
|
||||
|
||||
/datum/action/innate/heretic_shatter/IsAvailable()
|
||||
if(IS_HERETIC(holder) || IS_HERETIC_MONSTER(holder))
|
||||
return ..()
|
||||
else
|
||||
return FALSE
|
||||
|
||||
/datum/action/innate/heretic_shatter/Activate()
|
||||
if(do_after(holder,10, target = holder))
|
||||
if(!sword || QDELETED(sword))
|
||||
return
|
||||
if(!IsAvailable()) //Never trust the user.
|
||||
return
|
||||
var/swordz = (get_turf(sword))?.z //SHOULD usually have a turf but if it doesn't better be prepared.
|
||||
if(!swordz)
|
||||
to_chat(holder, "<span class='warning'>[sword] flickers but remains in place, as do you...</span>")
|
||||
return
|
||||
var/turf/safe_turf = find_safe_turf(zlevels = swordz, extended_safety_checks = TRUE)
|
||||
if(!safe_turf)
|
||||
to_chat(holder, "<span class='warning'>[sword] flickers but remains in place, as do you...</span>")
|
||||
return
|
||||
do_teleport(holder,safe_turf,forceMove = TRUE,channel=TELEPORT_CHANNEL_MAGIC)
|
||||
to_chat(holder,"<span class='warning'>You feel a gust of energy flow through your body... the Rusted Hills heard your call...</span>")
|
||||
qdel(sword)
|
||||
|
||||
/obj/item/melee/sickly_blade
|
||||
name = "sickly blade"
|
||||
desc = "A sickly green crescent blade, decorated with an ornamental eye. You feel like you're being watched..."
|
||||
@@ -101,11 +61,6 @@
|
||||
throwforce = 10
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "tore", "lacerated", "ripped", "diced", "rended")
|
||||
var/datum/action/innate/heretic_shatter/linked_action
|
||||
|
||||
/obj/item/melee/sickly_blade/Initialize()
|
||||
. = ..()
|
||||
linked_action = new(src)
|
||||
|
||||
/obj/item/melee/sickly_blade/attack(mob/living/target, mob/living/user)
|
||||
if(!(IS_HERETIC(user) || IS_HERETIC_MONSTER(user)))
|
||||
@@ -120,13 +75,17 @@
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/item/melee/sickly_blade/pickup(mob/user)
|
||||
. = ..()
|
||||
linked_action.Grant(user, src)
|
||||
|
||||
/obj/item/melee/sickly_blade/dropped(mob/user, silent)
|
||||
. = ..()
|
||||
linked_action.Remove(user, src)
|
||||
/obj/item/melee/sickly_blade/attack_self(mob/user)
|
||||
var/turf/safe_turf = find_safe_turf(zlevels = z, extended_safety_checks = TRUE)
|
||||
if(IS_HERETIC(user) || IS_HERETIC_MONSTER(user))
|
||||
if(do_teleport(user, safe_turf, forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC))
|
||||
to_chat(user,"<span class='warning'>As you shatter [src], you feel a gust of energy flow through your body. The Rusted Hills heard your call...</span>")
|
||||
else
|
||||
to_chat(user,"<span class='warning'>You shatter [src], but your plea goes unanswered.</span>")
|
||||
else
|
||||
to_chat(user,"<span class='warning'>You shatter [src].</span>")
|
||||
playsound(src, "shatter", 70, TRUE) //copied from the code for smashing a glass sheet onto the ground to turn it into a shard
|
||||
qdel(src)
|
||||
|
||||
/obj/item/melee/sickly_blade/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
. = ..()
|
||||
@@ -141,6 +100,11 @@
|
||||
else
|
||||
eldritch_knowledge_datum.on_ranged_attack_eldritch_blade(target,user,click_parameters)
|
||||
|
||||
/obj/item/melee/sickly_blade/examine(mob/user)
|
||||
. = ..()
|
||||
if(IS_HERETIC(user) || IS_HERETIC_MONSTER(user))
|
||||
. += "<span class='notice'><B>A heretic (or a servant of one) can shatter this blade to teleport to a random, mostly safe location by activating it in-hand.</B></span>"
|
||||
|
||||
/obj/item/melee/sickly_blade/rust
|
||||
name = "rusted blade"
|
||||
desc = "This crescent blade is decrepit, wasting to rust. Yet still it bites, ripping flesh and bone with jagged, rotten teeth."
|
||||
@@ -243,6 +207,7 @@
|
||||
// slightly worse than normal cult robes
|
||||
armor = list("melee" = 30, "bullet" = 30, "laser" = 30,"energy" = 30, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
pocket_storage_component_path = /datum/component/storage/concrete/pockets/void_cloak
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/hooded/cultrobes/void/ToggleHood()
|
||||
if(!iscarbon(loc))
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
var/gain_text = ""
|
||||
///Cost of knowledge in souls
|
||||
var/cost = 0
|
||||
///Required sacrifices to unlock
|
||||
var/sacs_needed = 0
|
||||
///Next knowledge in the research tree
|
||||
var/list/next_knowledge = list()
|
||||
///What knowledge is incompatible with this. This will simply make it impossible to research knowledges that are in banned_knowledge once this gets researched.
|
||||
@@ -230,7 +232,6 @@
|
||||
atoms -= H
|
||||
H.gib()
|
||||
|
||||
|
||||
///////////////
|
||||
///Base lore///
|
||||
///////////////
|
||||
|
||||
@@ -109,10 +109,15 @@
|
||||
gain_text = "When the Glory of the Lantern scorches and sears their skin, nothing will protect them from the ashes."
|
||||
desc = "Fire off five streams of fire from your hand, each setting ablaze targets hit and scorching them upon contact."
|
||||
cost = 2
|
||||
sacs_needed = 3
|
||||
spell_to_add = /obj/effect/proc_holder/spell/pointed/nightwatchers_rite
|
||||
next_knowledge = list(/datum/eldritch_knowledge/final/ash_final)
|
||||
route = PATH_ASH
|
||||
|
||||
/datum/eldritch_knowledge/spell/nightwatchers_rite/on_gain(mob/user)
|
||||
. = ..()
|
||||
priority_announce("Large heat signatures discovered! A swelling fiery horror is coming..", sound = 'sound/misc/notice1.ogg')
|
||||
|
||||
/datum/eldritch_knowledge/ash_blade_upgrade
|
||||
name = "Fiery Blade"
|
||||
gain_text = "Blade in hand, he swung and swung as the ash fell from the skies. His city, his people... all burnt to cinders, and yet life still remained in his charred body."
|
||||
@@ -181,6 +186,7 @@
|
||||
desc = "Bring 3 corpses onto a transmutation rune, you will become immune to fire, the vacuum of space, cold and other enviromental hazards and become overall sturdier to all other damages. You will gain a spell that passively creates ring of fire around you as well ,as you will gain a powerful ability that lets you create a wave of flames all around you."
|
||||
required_atoms = list(/mob/living/carbon/human)
|
||||
cost = 5
|
||||
sacs_needed = 8
|
||||
route = PATH_ASH
|
||||
var/list/trait_list = list(TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE)
|
||||
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
gain_text = "The Uncanny Man, who walks alone in the valley between the worlds... I was able to summon his aid."
|
||||
desc = "You can now summon a Raw Prophet by transmutating a pair of eyes, a left arm and a pool of blood. Raw prophets have increased seeing range, as well as X-Ray vision, but they are very fragile."
|
||||
cost = 1
|
||||
required_atoms = list(/obj/item/organ/eyes,/obj/item/bodypart/l_arm,/obj/item/bodypart/r_arm,/obj/effect/decal/cleanable/blood)
|
||||
required_atoms = list(/obj/item/organ/eyes,/obj/item/bodypart/l_arm,/obj/effect/decal/cleanable/blood)
|
||||
mob_to_summon = /mob/living/simple_animal/hostile/eldritch/raw_prophet
|
||||
next_knowledge = list(/datum/eldritch_knowledge/flesh_blade_upgrade,/datum/eldritch_knowledge/rune_carver,/datum/eldritch_knowledge/curse/paralysis)
|
||||
route = PATH_FLESH
|
||||
@@ -217,6 +217,7 @@
|
||||
desc = "Bring 3 bodies onto a transmutation rune to shed your human form and ascend to untold power."
|
||||
required_atoms = list(/mob/living/carbon/human)
|
||||
cost = 5
|
||||
sacs_needed = 8
|
||||
route = PATH_FLESH
|
||||
|
||||
/datum/eldritch_knowledge/final/flesh_final/on_finished_recipe(mob/living/user, list/atoms, loc)
|
||||
@@ -257,6 +258,11 @@
|
||||
gain_text = "The ignorant mind that inhabits their feeble bodies will crumble when they acknowledge - willingly or not, the truth."
|
||||
desc = "By forcing the knowledge of the Mansus upon my foes, I can show them things that would drive any normal man insane."
|
||||
cost = 2
|
||||
sacs_needed = 3
|
||||
spell_to_add = /obj/effect/proc_holder/spell/targeted/touch/mad_touch
|
||||
next_knowledge = list(/datum/eldritch_knowledge/final/flesh_final)
|
||||
route = PATH_FLESH
|
||||
|
||||
/datum/eldritch_knowledge/spell/touch_of_madness/on_gain(mob/user)
|
||||
. = ..()
|
||||
priority_announce("The stench of rotting flesh fills the air... An approaching abomination has been detected!", sound = 'sound/misc/notice1.ogg')
|
||||
|
||||
@@ -159,15 +159,21 @@
|
||||
desc = "Applying your knowledge of rust to the human body, a knowledge that could decay your foes from the inside out, resulting in organ failure, vomiting, or eventual death through the peeling of rotting flesh."
|
||||
gain_text = "Rust, decay, it's all the same. All that remains is application."
|
||||
cost = 2
|
||||
sacs_needed = 3
|
||||
spell_to_add = /obj/effect/proc_holder/spell/targeted/touch/grasp_of_decay
|
||||
next_knowledge = list(/datum/eldritch_knowledge/final/rust_final)
|
||||
route = PATH_RUST
|
||||
|
||||
/datum/eldritch_knowledge/spell/grasp_of_decay/on_gain(mob/user)
|
||||
. = ..()
|
||||
priority_announce("A foul wind is blowing... The floor creaks with rust as something sinister approaches!", sound = 'sound/misc/notice1.ogg')
|
||||
|
||||
/datum/eldritch_knowledge/final/rust_final
|
||||
name = "Rustbringer's Oath"
|
||||
desc = "Bring three corpses onto a transmutation rune. After you finish the ritual, rust will now automatically spread from the rune. Your healing on rust is also tripled, while you become more resilient overall."
|
||||
gain_text = "Champion of rust. Corruptor of steel. Fear the dark for the Rustbringer has come! Rusted Hills, CALL MY NAME!"
|
||||
cost = 5
|
||||
sacs_needed = 8
|
||||
required_atoms = list(/mob/living/carbon/human)
|
||||
route = PATH_RUST
|
||||
|
||||
|
||||
@@ -160,15 +160,21 @@
|
||||
gain_text = "This world will be my stage, and nothing will be out of my reach."
|
||||
desc = "Gain the ability to mark a 7x7 area as your domain after a short delay. Creatures in your domain are slowed and branded with a void mark, allowing you to quickly teleport to them and slash them, further inhibiting their ability to move."
|
||||
cost = 2
|
||||
sacs_needed = 3
|
||||
spell_to_add = /obj/effect/proc_holder/spell/aoe_turf/domain_expansion
|
||||
next_knowledge = list(/datum/eldritch_knowledge/final/void_final)
|
||||
route = PATH_VOID
|
||||
|
||||
/datum/eldritch_knowledge/spell/domain_expansion/on_gain(mob/user)
|
||||
. = ..()
|
||||
priority_announce("Echos of the lost in space are heard... An ominous presence is being detected! ", sound = 'sound/misc/notice1.ogg')
|
||||
|
||||
/datum/eldritch_knowledge/final/void_final
|
||||
name = "Waltz at the End of Time"
|
||||
desc = "Bring 3 corpses onto the transmutation rune. After you finish the ritual you will automatically silence people around you and will summon a snow storm around you."
|
||||
gain_text = "The world falls into darkness. I stand in an empty plane, small flakes of ice fall from the sky. The Aristocrat stands before me, he motions to me. We will play a waltz to the whispers of dying reality, as the world is destroyed before our eyes."
|
||||
cost = 5
|
||||
sacs_needed = 8
|
||||
required_atoms = list(/mob/living/carbon/human)
|
||||
route = PATH_VOID
|
||||
///soundloop for the void theme
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
name = "syndicate pinpointer"
|
||||
desc = "A handheld tracking device that locks onto certain signals. It's configured to switch tracking modes once it detects the activation signal of a nuclear device."
|
||||
icon_state = "pinpointer_syndicate"
|
||||
item_state = "pinpointer_black"
|
||||
|
||||
/obj/item/pinpointer/syndicate_cyborg // Cyborg pinpointers just look for a random operative.
|
||||
name = "cyborg syndicate pinpointer"
|
||||
|
||||
@@ -492,7 +492,7 @@
|
||||
var/targetAmount = 100
|
||||
|
||||
/datum/objective/revenant/New()
|
||||
targetAmount = rand(350,600)
|
||||
targetAmount = rand(150,300)
|
||||
explanation_text = "Absorb [targetAmount] points of essence from humans."
|
||||
..()
|
||||
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
/datum/antagonist/space_dragon
|
||||
name = "Space Dragon"
|
||||
roundend_category = "space dragons"
|
||||
antagpanel_category = "Space Dragon"
|
||||
job_rank = ROLE_SPACE_DRAGON
|
||||
show_in_antagpanel = TRUE
|
||||
show_name_in_check_antagonists = TRUE
|
||||
var/list/datum/mind/carp = list()
|
||||
|
||||
/datum/antagonist/space_dragon/greet()
|
||||
to_chat(owner, "<b>Endless time and space we have moved through. We do not remember from where we came, we do not know where we will go. All space belongs to us.\n\
|
||||
Space is an empty void, of which our kind is the apex predator, and there was little to rival our claim to this title.\n\
|
||||
But now, we find intruders spread out amongst our claim, willing to fight our teeth with magics unimaginable, their dens like lights flicking in the depths of space.\n\
|
||||
Today, we will snuff out one of those lights.</b>")
|
||||
to_chat(owner, "<span class='boldwarning'>You have five minutes to find a safe location to place down the first rift. If you take longer than five minutes to place a rift, you will be returned from whence you came.\n\
|
||||
Alt click to cause a gust around you!</span>")
|
||||
owner.announce_objectives()
|
||||
SEND_SOUND(owner.current, sound('sound/magic/demon_attack1.ogg'))
|
||||
|
||||
/datum/antagonist/space_dragon/proc/forge_objectives()
|
||||
var/datum/objective/summon_carp/summon = new()
|
||||
summon.dragon = src
|
||||
objectives += summon
|
||||
|
||||
/datum/antagonist/space_dragon/on_gain()
|
||||
forge_objectives()
|
||||
. = ..()
|
||||
|
||||
/datum/objective/summon_carp
|
||||
var/datum/antagonist/space_dragon/dragon
|
||||
explanation_text = "Summon and protect the rifts to flood the station with carp."
|
||||
|
||||
/datum/antagonist/space_dragon/roundend_report()
|
||||
var/list/parts = list()
|
||||
var/datum/objective/summon_carp/S = locate() in objectives
|
||||
if(S.check_completion())
|
||||
parts += "<span class='redtext big'>The [name] has succeeded! Station space has been reclaimed by the space carp!</span>"
|
||||
parts += printplayer(owner)
|
||||
var/objectives_complete = TRUE
|
||||
if(objectives.len)
|
||||
parts += printobjectives(objectives)
|
||||
for(var/datum/objective/objective in objectives)
|
||||
if(!objective.check_completion())
|
||||
objectives_complete = FALSE
|
||||
break
|
||||
if(objectives_complete)
|
||||
parts += "<span class='greentext big'>The [name] was successful!</span>"
|
||||
else
|
||||
parts += "<span class='redtext big'>The [name] has failed!</span>"
|
||||
parts += "<span class='header'>The [name] was assisted by:</span>"
|
||||
parts += printplayerlist(carp)
|
||||
return "<div class='panel redborder'>[parts.Join("<br>")]</div>"
|
||||
|
||||
/datum/antagonist/space_dragon/admin_add(datum/mind/new_owner, mob/admin)
|
||||
// pick the spawn loc
|
||||
var/list/spawn_locs = list()
|
||||
for(var/obj/effect/landmark/carpspawn/carp_spawn in GLOB.landmarks_list)
|
||||
if(!isturf(carp_spawn.loc))
|
||||
stack_trace("Carp spawn found not on a turf: [carp_spawn.type] on [isnull(carp_spawn.loc) ? "null" : carp_spawn.loc.type]")
|
||||
continue
|
||||
spawn_locs += carp_spawn.loc
|
||||
if(!spawn_locs.len)
|
||||
message_admins("No valid spawn locations found, aborting...")
|
||||
return MAP_ERROR
|
||||
|
||||
// spawn our dragon
|
||||
var/mob/living/simple_animal/hostile/space_dragon/S = new(pick(spawn_locs))
|
||||
// gib or delete the old mob here
|
||||
new_owner.current.gib()
|
||||
// alternativelly, isntead of using the code above to pick a location, we can gib the mob, then spawn the dragon where it died for a goresome transformation
|
||||
|
||||
//mind transfer and role setup
|
||||
new_owner.transfer_to(S)
|
||||
new_owner.assigned_role = "Space Dragon"
|
||||
new_owner.special_role = "Space Dragon"
|
||||
|
||||
playsound(S, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
|
||||
. = ..()
|
||||
return SUCCESSFUL_SPAWN
|
||||
@@ -244,6 +244,7 @@
|
||||
name = "contractor pinpointer"
|
||||
desc = "A handheld tracking device that locks onto certain signals. Ignores suit sensors, but is much less accurate."
|
||||
icon_state = "pinpointer_syndicate"
|
||||
item_state = "pinpointer_black"
|
||||
minimum_range = 25
|
||||
has_owner = TRUE
|
||||
ignore_suit_sensor_level = TRUE
|
||||
|
||||
@@ -145,7 +145,7 @@
|
||||
if("VICTIM")
|
||||
var/mob/living/carbon/human/T = target
|
||||
var/datum/antagonist/cult/C = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE)
|
||||
if(C?.cult_team.is_sacrifice_target(T.mind))
|
||||
if(C && C.cult_team.is_sacrifice_target(T.mind))
|
||||
if(iscultist(user))
|
||||
to_chat(user, "<span class='cult'><b>\"This soul is mine.</b></span> <span class='cultlarge'>SACRIFICE THEM!\"</span>")
|
||||
else
|
||||
|
||||
@@ -252,6 +252,10 @@
|
||||
name = "Barnyard Curse"
|
||||
spell_type = /obj/effect/proc_holder/spell/pointed/barnyardcurse
|
||||
|
||||
/datum/spellbook_entry/cluwne
|
||||
name = "Cluwne Curse"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/cluwnecurse
|
||||
|
||||
/datum/spellbook_entry/charge
|
||||
name = "Charge"
|
||||
spell_type = /obj/effect/proc_holder/spell/targeted/charge
|
||||
|
||||
@@ -166,6 +166,13 @@
|
||||
)
|
||||
parents = list("font-awesome.css" = 'html/font-awesome/css/all.min.css')
|
||||
|
||||
/datum/asset/simple/namespaced/tgfont
|
||||
assets = list(
|
||||
"tgfont.eot" = 'tgui/packages/tgfont/dist/tgfont.eot',
|
||||
"tgfont.woff2" = 'tgui/packages/tgfont/dist/tgfont.woff2',
|
||||
)
|
||||
parents = list("tgfont.css" = 'tgui/packages/tgfont/dist/tgfont.css')
|
||||
|
||||
/datum/asset/spritesheet/chat
|
||||
name = "chat"
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
air_contents.set_volume(volume)
|
||||
air_contents.set_temperature(T20C)
|
||||
if(gas_type)
|
||||
air_contents.set_moles(AIR_CONTENTS)
|
||||
air_contents.set_moles(gas_type, AIR_CONTENTS)
|
||||
name = "[name] ([GLOB.meta_gas_names[gas_type]])"
|
||||
setPipingLayer(piping_layer)
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
/obj/machinery/atmospherics/components/unary/tank/air/New()
|
||||
..()
|
||||
var/datum/gas_mixture/air_contents = airs[1]
|
||||
air_contents.set_moles(/datum/gas/oxygen, AIR_CONTENTS * 0.2)
|
||||
air_contents.set_moles(/datum/gas/nitrogen, AIR_CONTENTS * 0.8)
|
||||
air_contents.set_moles(/datum/gas/oxygen, AIR_CONTENTS * 0.21)
|
||||
air_contents.set_moles(/datum/gas/nitrogen, AIR_CONTENTS * 0.79)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/tank/carbon_dioxide
|
||||
gas_type = /datum/gas/carbon_dioxide
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
var/static/list/blacklisted_error = typecacheof(list(
|
||||
/obj/structure/closet/crate/secure,
|
||||
/obj/structure/closet/crate/large,
|
||||
/obj/structure/closet/secure_closet/goodies
|
||||
/obj/structure/closet/secure_closet/cargo
|
||||
))
|
||||
if(is_type_in_list(container, blacklisted_error))
|
||||
P.errors &= ~MANIFEST_ERROR_ITEM
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
/datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account)
|
||||
var/obj/structure/closet/crate/C
|
||||
if(paying_account)
|
||||
if(ispath(crate_type, /obj/structure/closet/secure_closet/goodies)) // lets ensure private orders don't come in crates when the original one comes in lockers
|
||||
C = new /obj/structure/closet/secure_closet/goodies/owned(A, paying_account) // that would lead to infinite money exploits
|
||||
if(ispath(crate_type, /obj/structure/closet/secure_closet/cargo)) // lets ensure private orders don't come in crates when the original one comes in lockers
|
||||
C = new /obj/structure/closet/secure_closet/cargo/owned(A, paying_account) // that would lead to infinite money exploits
|
||||
else
|
||||
C = new /obj/structure/closet/crate/secure/owned(A, paying_account)
|
||||
C.name = "[crate_name] - Purchased by [paying_account.account_holder]"
|
||||
|
||||
@@ -14,56 +14,56 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/materials/cardboard50
|
||||
crate_type = /obj/structure/closet/secure_closet/goodies
|
||||
crate_type = /obj/structure/closet/secure_closet/cargo
|
||||
name = "50 Cardboard Sheets"
|
||||
desc = "Create a bunch of boxes."
|
||||
cost = 300 //thrice their export value
|
||||
contains = list(/obj/item/stack/sheet/cardboard/fifty)
|
||||
|
||||
/datum/supply_pack/materials/glass50
|
||||
crate_type = /obj/structure/closet/secure_closet/goodies
|
||||
crate_type = /obj/structure/closet/secure_closet/cargo
|
||||
name = "50 Glass Sheets"
|
||||
desc = "Let some nice light in with fifty glass sheets!"
|
||||
cost = 300 //double their export value
|
||||
contains = list(/obj/item/stack/sheet/glass/fifty)
|
||||
|
||||
/datum/supply_pack/materials/metal50
|
||||
crate_type = /obj/structure/closet/secure_closet/goodies
|
||||
crate_type = /obj/structure/closet/secure_closet/cargo
|
||||
name = "50 Metal Sheets"
|
||||
desc = "Any construction project begins with a good stack of fifty metal sheets!"
|
||||
cost = 300 //double their export value
|
||||
contains = list(/obj/item/stack/sheet/metal/fifty)
|
||||
|
||||
/datum/supply_pack/materials/plasteel20
|
||||
crate_type = /obj/structure/closet/secure_closet/goodies
|
||||
crate_type = /obj/structure/closet/secure_closet/cargo
|
||||
name = "20 Plasteel Sheets"
|
||||
desc = "Reinforce the station's integrity with twenty plasteel sheets!"
|
||||
cost = 4000
|
||||
contains = list(/obj/item/stack/sheet/plasteel/twenty)
|
||||
|
||||
/datum/supply_pack/materials/plastic50
|
||||
crate_type = /obj/structure/closet/secure_closet/goodies
|
||||
name = "50 Plastic Sheets"
|
||||
/datum/supply_pack/materials/plastic20
|
||||
crate_type = /obj/structure/closet/secure_closet/cargo
|
||||
name = "20 Plastic Sheets"
|
||||
desc = "Build a limitless amount of toys with fifty plastic sheets!"
|
||||
cost = 200 // double their export
|
||||
contains = list(/obj/item/stack/sheet/plastic/twenty)
|
||||
|
||||
/datum/supply_pack/materials/sandstone30
|
||||
crate_type = /obj/structure/closet/secure_closet/goodies
|
||||
crate_type = /obj/structure/closet/secure_closet/cargo
|
||||
name = "30 Sandstone Blocks"
|
||||
desc = "Neither sandy nor stoney, these thirty blocks will still get the job done."
|
||||
cost = 150 // five times their export
|
||||
contains = list(/obj/item/stack/sheet/mineral/sandstone/thirty)
|
||||
|
||||
/datum/supply_pack/materials/wood20
|
||||
crate_type = /obj/structure/closet/secure_closet/goodies
|
||||
crate_type = /obj/structure/closet/secure_closet/cargo
|
||||
name = "20 Wood Planks"
|
||||
desc = "Turn cargo's boring metal groundwork into beautiful panelled flooring and much more with twenty wooden planks!"
|
||||
cost = 400 // 6-7 planks shy from having equal import/export prices
|
||||
contains = list(/obj/item/stack/sheet/mineral/wood/twenty)
|
||||
|
||||
/datum/supply_pack/materials/rcdammo
|
||||
crate_type = /obj/structure/closet/secure_closet/goodies
|
||||
crate_type = /obj/structure/closet/secure_closet/cargo
|
||||
name = "Large RCD ammo Single-Pack"
|
||||
desc = "A single large compressed RCD matter pack, to help with any holes or projects people might be working on."
|
||||
cost = 600
|
||||
|
||||
@@ -370,7 +370,7 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/supply_pack/misc/carpet
|
||||
crate_type = /obj/structure/closet/secure_closet/goodies
|
||||
crate_type = /obj/structure/closet/secure_closet/cargo
|
||||
name = "Classic Carpet Single-Pack"
|
||||
desc = "Plasteel floor tiles getting on your nerves? This 50 units stack of extra soft carpet will tie any room together."
|
||||
cost = 200
|
||||
|
||||
@@ -76,6 +76,18 @@
|
||||
if(!silent)
|
||||
to_chat(user, "<span class='warning'>With [src] off of your arms, you feel less ready to punch things.</span>")
|
||||
|
||||
/obj/item/clothing/gloves/fingerless/pugilist/crafted
|
||||
unique_reskin = list("Short" = "armwraps",
|
||||
"Extended" = "armwraps_extended"
|
||||
)
|
||||
|
||||
/obj/item/clothing/gloves/fingerless/pugilist/crafted/reskin_obj(mob/M)
|
||||
. = ..()
|
||||
if(icon_state == "armwraps_extended")
|
||||
item_state = "armwraps_extended"
|
||||
else
|
||||
return
|
||||
|
||||
/obj/item/clothing/gloves/fingerless/pugilist/chaplain
|
||||
name = "armwraps of unyielding resolve"
|
||||
desc = "A series of armwraps, soaked in holy water. Makes you pretty keen to smite evil magic users."
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
/obj/item/clothing/mask/gas/cluwne
|
||||
name = "clown wig and mask"
|
||||
desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask."
|
||||
flags_cover = MASKCOVERSEYES
|
||||
icon_state = "cluwne"
|
||||
item_state = "cluwne"
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
clothing_flags = ALLOWINTERNALS
|
||||
item_flags = ABSTRACT | DROPDEL
|
||||
flags_inv = HIDEEARS|HIDEEYES
|
||||
var/voicechange = TRUE
|
||||
var/last_sound = 0
|
||||
var/delay = 15
|
||||
|
||||
/obj/item/clothing/mask/gas/cluwne/Initialize()
|
||||
.=..()
|
||||
ADD_TRAIT(src, TRAIT_NODROP, CLOTHING_TRAIT)
|
||||
ADD_TRAIT(src, CURSED_ITEM_TRAIT, CLOTHING_TRAIT)
|
||||
|
||||
/obj/item/clothing/mask/gas/cluwne/proc/play_laugh1()
|
||||
if(world.time - delay > last_sound)
|
||||
playsound (src, 'sound/voice/cluwnelaugh1.ogg', 30, 1)
|
||||
last_sound = world.time
|
||||
|
||||
/obj/item/clothing/mask/gas/cluwne/proc/play_laugh2()
|
||||
if(world.time - delay > last_sound)
|
||||
playsound (src, 'sound/voice/cluwnelaugh2.ogg', 30, 1)
|
||||
last_sound = world.time
|
||||
|
||||
/obj/item/clothing/mask/gas/cluwne/proc/play_laugh3()
|
||||
if(world.time - delay > last_sound)
|
||||
playsound (src, 'sound/voice/cluwnelaugh3.ogg', 30, 1)
|
||||
last_sound = world.time
|
||||
|
||||
/obj/item/clothing/mask/gas/cluwne/equipped(mob/user, slot) //when you put it on
|
||||
var/mob/living/carbon/C = user
|
||||
if((C.wear_mask == src) && (voicechange))
|
||||
play_laugh1()
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/mask/gas/cluwne/handle_speech(datum/source, list/speech_args)
|
||||
if(voicechange)
|
||||
if(prob(5)) //the brain isn't fully gone yet...
|
||||
speech_args[SPEECH_MESSAGE] = pick("HELP ME!!","PLEASE KILL ME!!","I WANT TO DIE!!", "END MY SUFFERING", "I CANT TAKE THIS ANYMORE!!" ,"SOMEBODY STOP ME!!")
|
||||
play_laugh2()
|
||||
if(prob(3))
|
||||
speech_args[SPEECH_MESSAGE] = pick("HOOOOINKKKKKKK!!", "HOINK HOINK HOINK HOINK!!","HOINK HOINK!!","HOOOOOOIIINKKKK!!") //but most of the time they cant speak,
|
||||
play_laugh3()
|
||||
else
|
||||
speech_args[SPEECH_MESSAGE] = pick("HEEEENKKKKKK!!", "HONK HONK HONK HONK!!","HONK HONK!!","HOOOOOONKKKK!!") //More sounds,
|
||||
play_laugh1()
|
||||
return SPEECH_MESSAGE
|
||||
|
||||
/obj/item/clothing/mask/gas/cluwne/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
if(!ishuman(user))
|
||||
return
|
||||
if(slot == SLOT_WEAR_MASK)
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.dna.add_mutation(CLUWNEMUT)
|
||||
return
|
||||
|
||||
/obj/item/clothing/mask/gas/cluwne/happy_cluwne
|
||||
name = "Happy Cluwne Mask"
|
||||
desc = "The mask of a poor cluwne that has been scrubbed of its curse by the Nanotrasen supernatural machinations division. Guaranteed to be %99 curse free and %99.9 not haunted. "
|
||||
item_flags = ABSTRACT
|
||||
var/can_cluwne = FALSE
|
||||
var/is_cursed = FALSE //i don't care that this is *slightly* memory wasteful, it's just one more byte and it's not like some madman is going to spawn thousands of these
|
||||
var/is_very_cursed = FALSE
|
||||
|
||||
/obj/item/clothing/mask/gas/cluwne/happy_cluwne/Initialize()
|
||||
.=..()
|
||||
if(prob(1)) //this function pre-determines the logic of the cluwne mask. applying and reapplying the mask does not alter or change anything
|
||||
is_cursed = TRUE
|
||||
is_very_cursed = FALSE
|
||||
else if(prob(0.1))
|
||||
is_cursed = FALSE
|
||||
is_very_cursed = TRUE
|
||||
|
||||
/obj/item/clothing/mask/gas/cluwne/happy_cluwne/attack_self(mob/user)
|
||||
voicechange = !voicechange
|
||||
to_chat(user, "<span class='notice'>You turn the voice box [voicechange ? "on" : "off"]!</span>")
|
||||
if(voicechange)
|
||||
play_laugh1()
|
||||
|
||||
/obj/item/clothing/mask/gas/cluwne/happy_cluwne/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
if(!ishuman(user))
|
||||
return
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(slot == SLOT_WEAR_MASK)
|
||||
if(is_cursed && can_cluwne) //logic predetermined
|
||||
log_admin("[key_name(H)] was made into a cluwne by [src]")
|
||||
message_admins("[key_name(H)] got cluwned by [src]")
|
||||
to_chat(H, "<span class='userdanger'>The masks straps suddenly tighten to your face and your thoughts are erased by a horrible green light!</span>")
|
||||
H.dropItemToGround(src)
|
||||
H.cluwneify()
|
||||
qdel(src)
|
||||
else if(is_very_cursed && can_cluwne)
|
||||
var/turf/T = get_turf(src)
|
||||
var/mob/living/simple_animal/hostile/floor_cluwne/S = new(T)
|
||||
S.Acquire_Victim(user)
|
||||
log_admin("[key_name(user)] summoned a floor cluwne using the [src]")
|
||||
message_admins("[key_name(user)] summoned a floor cluwne using the [src]")
|
||||
to_chat(H, "<span class='warning'>The mask suddenly slips off your face and... slides under the floor?</span>")
|
||||
to_chat(H, "<i>...dneirf uoy ot gnoleb ton seod tahT</i>")
|
||||
@@ -0,0 +1,29 @@
|
||||
/obj/item/clothing/shoes/clown_shoes/cluwne
|
||||
desc = "The prankster's standard-issue clowning shoes. Damn, they're huge!"
|
||||
name = "clown shoes"
|
||||
icon_state = "cluwne"
|
||||
item_state = "cluwne"
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
item_flags = DROPDEL
|
||||
var/footstep = 1
|
||||
|
||||
/obj/item/clothing/shoes/clown_shoes/cluwne/Initialize()
|
||||
.=..()
|
||||
ADD_TRAIT(src, TRAIT_NODROP, CLOTHING_TRAIT)
|
||||
ADD_TRAIT(src, CURSED_ITEM_TRAIT, CLOTHING_TRAIT)
|
||||
|
||||
/obj/item/clothing/shoes/clown_shoes/cluwne/step_action()
|
||||
if(footstep > 1)
|
||||
playsound(src, "clownstep", 50, 1)
|
||||
footstep = 0
|
||||
else
|
||||
footstep++
|
||||
|
||||
/obj/item/clothing/shoes/clown_shoes/cluwne/equipped(mob/user, slot)
|
||||
. = ..()
|
||||
if(!ishuman(user))
|
||||
return
|
||||
if(slot == SLOT_SHOES)
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.dna.add_mutation(CLUWNEMUT)
|
||||
return
|
||||
@@ -255,6 +255,13 @@
|
||||
item_state = "maidapron"
|
||||
minimize_when_attached = FALSE
|
||||
|
||||
/obj/item/clothing/accessory/sleevecrop
|
||||
name = "one sleeved crop top"
|
||||
desc = "Off the shoulder crop top, for those nights out partying."
|
||||
icon_state = "sleevecrop"
|
||||
item_state = "sleevecrop"
|
||||
minimize_when_attached = FALSE
|
||||
|
||||
//////////
|
||||
//Medals//
|
||||
//////////
|
||||
@@ -466,6 +473,7 @@
|
||||
////////////////
|
||||
//HA HA! NERD!//
|
||||
////////////////
|
||||
|
||||
/obj/item/clothing/accessory/pocketprotector
|
||||
name = "pocket protector"
|
||||
desc = "Can protect your clothing from ink stains, but you'll look like a nerd if you're using one."
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
/obj/item/clothing/under/cluwne
|
||||
name = "clown suit"
|
||||
desc = "<i>'HONK!'</i>"
|
||||
icon_state = "greenclown"
|
||||
item_state = "greenclown"
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
|
||||
item_flags = DROPDEL
|
||||
can_adjust = 0
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/cluwne/Initialize()
|
||||
.=..()
|
||||
ADD_TRAIT(src, TRAIT_NODROP, CLOTHING_TRAIT)
|
||||
ADD_TRAIT(src, CURSED_ITEM_TRAIT, CLOTHING_TRAIT)
|
||||
|
||||
/obj/item/clothing/under/cluwne/equipped(mob/living/carbon/user, slot)
|
||||
if(!ishuman(user))
|
||||
return
|
||||
if(slot == SLOT_W_UNIFORM)
|
||||
var/mob/living/carbon/human/H = user
|
||||
H.dna.add_mutation(CLUWNEMUT)
|
||||
return ..()
|
||||
@@ -56,7 +56,7 @@
|
||||
desc = "Just looking at it makes you want to buy an SKS, go into the woods, and -operate-."
|
||||
icon_state = "tactifool"
|
||||
item_state = "bl_suit"
|
||||
has_sensor = TRUE
|
||||
has_sensor = HAS_SENSORS
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 5)
|
||||
|
||||
/obj/item/clothing/under/syndicate/cosmetic/skirt
|
||||
@@ -64,6 +64,7 @@
|
||||
icon_state = "tactifool_skirt"
|
||||
fitted = FEMALE_UNIFORM_TOP
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
can_adjust = FALSE
|
||||
|
||||
/obj/item/clothing/under/syndicate/sniper
|
||||
name = "Tactical turtleneck suit"
|
||||
|
||||
@@ -102,9 +102,14 @@
|
||||
desc = "An uniform worn by command officers since 2420s."
|
||||
icon_state = "orv_com"
|
||||
|
||||
/obj/item/clothing/under/trek/engsec/orv
|
||||
/obj/item/clothing/under/trek/eng/orv
|
||||
desc = "An uniform worn by operations officers since 2420s."
|
||||
icon_state = "orv_ops"
|
||||
icon_state = "orv_eng"
|
||||
|
||||
/obj/item/clothing/under/trek/sec/orv
|
||||
desc = "An uniform worn by security officers since 2420s."
|
||||
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30, "wound" = 10)
|
||||
icon_state = "orv_sec"
|
||||
|
||||
/obj/item/clothing/under/trek/medsci/orv
|
||||
desc = "An uniform worn by medsci officers since 2420s."
|
||||
@@ -114,13 +119,20 @@
|
||||
//honestly no idea why i added specified comm. uniforms but w/e
|
||||
/obj/item/clothing/under/trek/command/orv/captain
|
||||
name = "captain uniform"
|
||||
desc = "An uniform worn by captains since 2550s."
|
||||
desc = "An uniform worn by captains and commanders since 2550s."
|
||||
icon_state = "orv_com_capt"
|
||||
|
||||
/obj/item/clothing/under/trek/command/orv/engsec
|
||||
name = "operations command uniform"
|
||||
desc = "An uniform worn by operations command officers since 2550s."
|
||||
icon_state = "orv_com_ops"
|
||||
/obj/item/clothing/under/trek/command/orv/eng
|
||||
name = "engineering command uniform"
|
||||
desc = "An uniform worn by Chief Engineers since 2550s."
|
||||
icon_state = "orv_com_eng"
|
||||
|
||||
/obj/item/clothing/under/trek/command/orv/sec
|
||||
name = "security command uniform"
|
||||
armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 10)
|
||||
desc = "An uniform worn by Heads of Security since 2550s."
|
||||
icon_state = "orv_com_sec"
|
||||
|
||||
|
||||
/obj/item/clothing/under/trek/command/orv/medsci
|
||||
name = "medsci command uniform"
|
||||
@@ -131,13 +143,11 @@
|
||||
name = "adjutant uniform"
|
||||
desc = "An uniform worn by adjutants <i>(assistants)</i> since 2550s."
|
||||
icon_state = "orv_ass"
|
||||
item_state = "gy_suit"
|
||||
|
||||
/obj/item/clothing/under/trek/orv/service
|
||||
name = "service uniform"
|
||||
desc = "An uniform worn by service officers since 2550s."
|
||||
icon_state = "orv_srv"
|
||||
item_state = "g_suit"
|
||||
|
||||
//The Motion Picture
|
||||
/obj/item/clothing/under/trek/fedutil
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
/datum/round_event_control/cat_surgeon
|
||||
name = "Cat Surgeon"
|
||||
typepath = /datum/round_event/cat_surgeon
|
||||
max_occurrences = 1
|
||||
weight = 10
|
||||
|
||||
|
||||
/datum/round_event/cat_surgeon/start()
|
||||
var/list/spawn_locs = list()
|
||||
for(var/X in GLOB.xeno_spawn)
|
||||
spawn_locs += X
|
||||
|
||||
if(!spawn_locs.len)
|
||||
message_admins("No valid spawn locations found, aborting...")
|
||||
return MAP_ERROR
|
||||
|
||||
var/turf/T = get_turf(pick(spawn_locs))
|
||||
var/mob/living/simple_animal/hostile/cat_butcherer/S = new(T)
|
||||
playsound(S, 'sound/misc/catscream.ogg', 50, 1, -1)
|
||||
message_admins("A cat surgeon has been spawned at [COORD(T)][ADMIN_JMP(T)]")
|
||||
log_game("A cat surgeon has been spawned at [COORD(T)]")
|
||||
return SUCCESSFUL_SPAWN
|
||||
@@ -0,0 +1,23 @@
|
||||
/datum/round_event_control/floor_cluwne
|
||||
name = "Floor Cluwne"
|
||||
typepath = /datum/round_event/floor_cluwne
|
||||
max_occurrences = 1
|
||||
min_players = 20
|
||||
weight = 10
|
||||
|
||||
|
||||
/datum/round_event/floor_cluwne/start()
|
||||
var/list/spawn_locs = list()
|
||||
for(var/X in GLOB.xeno_spawn)
|
||||
spawn_locs += X
|
||||
|
||||
if(!spawn_locs.len)
|
||||
message_admins("No valid spawn locations found, aborting...")
|
||||
return MAP_ERROR
|
||||
|
||||
var/turf/T = get_turf(pick(spawn_locs))
|
||||
var/mob/living/simple_animal/hostile/floor_cluwne/S = new(T)
|
||||
playsound(S, 'sound/misc/bikehorn_creepy.ogg', 50, 1, -1)
|
||||
message_admins("A floor cluwne has been spawned at [COORD(T)][ADMIN_JMP(T)]")
|
||||
log_game("A floor cluwne has been spawned at [COORD(T)]")
|
||||
return SUCCESSFUL_SPAWN
|
||||
@@ -0,0 +1,45 @@
|
||||
/datum/round_event_control/space_dragon
|
||||
name = "Spawn Space Dragon"
|
||||
typepath = /datum/round_event/ghost_role/space_dragon
|
||||
weight = 8
|
||||
max_occurrences = 1
|
||||
min_players = 20
|
||||
|
||||
/datum/round_event/ghost_role/space_dragon
|
||||
minimum_required = 1
|
||||
role_name = "Space Dragon"
|
||||
announceWhen = 10
|
||||
|
||||
/datum/round_event/ghost_role/space_dragon/announce(fake)
|
||||
priority_announce("A large organic energy flux has been recorded near of [station_name()], please stand-by.", "Lifesign Alert")
|
||||
|
||||
/datum/round_event/ghost_role/space_dragon/spawn_role()
|
||||
var/list/spawn_locs = list()
|
||||
for(var/obj/effect/landmark/carpspawn/carp_spawn in GLOB.landmarks_list)
|
||||
if(!isturf(carp_spawn.loc))
|
||||
stack_trace("Carp spawn found not on a turf: [carp_spawn.type] on [isnull(carp_spawn.loc) ? "null" : carp_spawn.loc.type]")
|
||||
continue
|
||||
spawn_locs += carp_spawn.loc
|
||||
if(!spawn_locs.len)
|
||||
message_admins("No valid spawn locations found, aborting...")
|
||||
return MAP_ERROR
|
||||
|
||||
var/list/candidates = get_candidates(ROLE_SPACE_DRAGON, null, ROLE_SPACE_DRAGON)
|
||||
if(!candidates.len)
|
||||
return NOT_ENOUGH_PLAYERS
|
||||
|
||||
var/mob/dead/selected = pick_n_take(candidates)
|
||||
|
||||
var/datum/mind/player_mind = new /datum/mind(selected.key)
|
||||
player_mind.active = TRUE
|
||||
|
||||
var/mob/living/simple_animal/hostile/space_dragon/S = new(pick(spawn_locs))
|
||||
player_mind.transfer_to(S)
|
||||
player_mind.assigned_role = "Space Dragon"
|
||||
player_mind.special_role = "Space Dragon"
|
||||
player_mind.add_antag_datum(/datum/antagonist/space_dragon)
|
||||
playsound(S, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1)
|
||||
message_admins("[ADMIN_LOOKUPFLW(S)] has been made into a Space Dragon by an event.")
|
||||
log_game("[key_name(S)] was spawned as a Space Dragon by an event.")
|
||||
spawned_mobs += S
|
||||
return SUCCESSFUL_SPAWN
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 85 KiB |
@@ -391,6 +391,15 @@
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1)
|
||||
tastes = list("meat" = 3, "smokey sauce" = 1)
|
||||
foodtype = MEAT
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/goliathcalamari
|
||||
name = "goliath calamari"
|
||||
desc = "ACKCHYUALLY, this isn't calamari, guys!"
|
||||
icon_state = "goliathcalamari"
|
||||
bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 3, /datum/reagent/consumable/capsaicin = 1)
|
||||
list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/nutriment/vitamin = 5, /datum/reagent/consumable/capsaicin = 2)
|
||||
tastes = list("rock" = 1, "meat" = 1)
|
||||
foodtype = MEAT
|
||||
|
||||
////////////// Cubes //////////
|
||||
|
||||
|
||||
@@ -213,3 +213,12 @@
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/salad/gumbo
|
||||
subcategory = CAT_MEAT
|
||||
|
||||
/datum/crafting_recipe/food/goliathcalamari
|
||||
name = "Goliath Calamari"
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/food/snacks/meat/slab/goliath = 2,
|
||||
/datum/reagent/consumable/cooking_oil = 10
|
||||
)
|
||||
result = /obj/item/reagent_containers/food/snacks/goliathcalamari
|
||||
subcategory = CAT_MEAT
|
||||
|
||||
@@ -266,6 +266,8 @@
|
||||
desc = "A wooden rod about the size of your forearm with a snake carved around it, winding it's way up the sides of the rod. Something about it seems to inspire in you the responsibilty and duty to help others."
|
||||
icon = 'icons/obj/lavaland/artefacts.dmi'
|
||||
icon_state = "asclepius_dormant"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
|
||||
var/activated = FALSE
|
||||
var/usedHand
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
|
||||
/obj/item/storage/bag/money/Initialize()
|
||||
. = ..()
|
||||
if(prob(20))
|
||||
icon_state = "moneybagalt"
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.max_w_class = WEIGHT_CLASS_NORMAL
|
||||
STR.max_items = 40
|
||||
|
||||
@@ -101,6 +101,13 @@
|
||||
matrixed_sections = MATRIX_RED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/lablight
|
||||
name = "Dog, Floppy (Light)"
|
||||
icon_state = "lablight"
|
||||
color_src = MATRIXED
|
||||
matrixed_sections = MATRIX_RED
|
||||
icon = 'modular_citadel/icons/mob/mam_ears.dmi'
|
||||
|
||||
/datum/sprite_accessory/ears/human/eevee
|
||||
name = "Eevee"
|
||||
icon_state = "eevee"
|
||||
@@ -351,10 +358,15 @@
|
||||
matrixed_sections = MATRIX_RED_GREEN
|
||||
|
||||
/datum/sprite_accessory/ears/mam_ears/lab
|
||||
name = "Dog, Long"
|
||||
name = "Dog, Floppy"
|
||||
icon_state = "lab"
|
||||
matrixed_sections = MATRIX_RED
|
||||
|
||||
/datum/sprite_accessory/ears/mam_ears/lablight
|
||||
name = "Dog, Floppy (Light)"
|
||||
icon_state = "lablight"
|
||||
matrixed_sections = MATRIX_RED
|
||||
|
||||
/datum/sprite_accessory/ears/mam_ears/murid
|
||||
name = "Murid"
|
||||
icon_state = "murid"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user