Files
Yogstation/code/modules/projectiles/projectile.dm
Skrem_7 029bca0eaf Skrem is Less Dumb Edition: Modern Medievalism: Bows, Arrows, and Cloaks, oh my! (#17982)
* first bow powercreep edition

* first patch

* description updates

* added the stuff

* follow-up edits

* very mild voicebox updates

* all the stuff

* some value/wording changes + shifts shadow cloak to nukies

* halve bow slowdown

* aaaa

* uhoh

* cloak charge rate changes

* remove redundant line

* upgrades break bow damage to middle finger

* spellbook adjustments

* tribal armor tweaks (I'm looking at you pathfinder cloak and you're gonna get slapped soon)

* aaa

* more stuff

* agh

* done?

* minor tweaks + craftable gloves

* adds bone crossbow crafting recipe

* maybe fix cornflakes

* Squashed commit of the following:

commit 414af05928
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 18 22:05:17 2023 -0500

    Automatic changelog generation #17965 [ci skip]

commit 4dbd995239
Author: adamsong <adamsong@users.noreply.github.com>
Date:   Sat Feb 18 22:05:15 2023 -0500

    Fix apply_innate_effects not getting mob refs like its supposed to, fixes veil health not being modified (#17965)

commit 8f9f915f69
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 18 22:04:08 2023 -0500

    Automatic changelog generation #17970 [ci skip]

commit 50ed5323a5
Author: ynot01 <ynot000001@gmail.com>
Date:   Sat Feb 18 22:04:06 2023 -0500

    Easier wounds on unclosed surgery sites (#17970)

    * Update _bodyparts.dm

    * Update code/modules/surgery/bodyparts/_bodyparts.dm

commit 9c4d0652db
Author: Changelogs <action@github.com>
Date:   Sat Feb 18 14:07:01 2023 +0000

    Automatic changelog compile [ci skip]

commit 03aae8b4cf
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 18 01:58:51 2023 -0500

    Automatic changelog generation #17934 [ci skip]

commit 2761924c1b
Author: ynot01 <ynot000001@gmail.com>
Date:   Sat Feb 18 01:58:49 2023 -0500

    pvp enabled (#17934)

commit cfe754a9a5
Author: Changelogs <action@github.com>
Date:   Sat Feb 18 06:10:32 2023 +0000

    Automatic changelog compile [ci skip]

commit 491ba04913
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 17 18:08:00 2023 -0500

    Automatic changelog generation #17949 [ci skip]

commit a65d885b53
Author: ynot01 <ynot000001@gmail.com>
Date:   Fri Feb 17 18:07:57 2023 -0500

    Fixes energy sword dupe exploit (#17949)

    * Update SuperBeepsky.dm

    * Update code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm

    Co-authored-by: TheGamerdk <5618080+TheGamerdk@users.noreply.github.com>

    * Update SuperBeepsky.dm

    ---------

    Co-authored-by: TheGamerdk <5618080+TheGamerdk@users.noreply.github.com>

commit 7a8a6689b6
Author: Changelogs <action@github.com>
Date:   Fri Feb 17 22:17:32 2023 +0000

    Automatic changelog compile [ci skip]

commit e43f06f61c
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 17 15:41:43 2023 -0500

    Automatic changelog generation #17924 [ci skip]

commit a4229d8acb
Author: ynot01 <ynot000001@gmail.com>
Date:   Fri Feb 17 15:41:40 2023 -0500

    [BOUNTY] Holy Light sect, dedicated to healing (#17924)

    * you defy the light

    * revive and be less bad flavor

    * Update code/modules/religion/religion_sects.dm

    Co-authored-by: Molti <108117184+Moltijoe@users.noreply.github.com>

    ---------

    Co-authored-by: Molti <108117184+Moltijoe@users.noreply.github.com>

commit ad64a89f0a
Author: ktlwjec <122807629+ktlwjec0@users.noreply.github.com>
Date:   Fri Feb 17 18:04:42 2023 +0000

    removes plate from greeneggsandham (#17883)

commit b0c3ca40a8
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 17 10:59:34 2023 -0500

    Automatic changelog generation #17969 [ci skip]

commit eefceef5ed
Author: wejengin2 <48154165+wejengin2@users.noreply.github.com>
Date:   Fri Feb 17 16:59:31 2023 +0100

    [box] fixes opacity on psych doors (#17969)

    * windows

    * opac

commit 4b75b528ee
Author: Changelogs <action@github.com>
Date:   Fri Feb 17 14:07:57 2023 +0000

    Automatic changelog compile [ci skip]

commit 0a5d72beaf
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 17 01:56:41 2023 -0500

    Automatic changelog generation #17880 [ci skip]

commit f6ed8e4b0b
Author: adamsong <adamsong@users.noreply.github.com>
Date:   Fri Feb 17 01:56:39 2023 -0500

    Makes vote weight and preferred map actually work (#17880)

commit 22657a9023
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 17 01:50:20 2023 -0500

    Automatic changelog generation #17901 [ci skip]

commit 783f444541
Author: Aquizit <70451213+Aquizit@users.noreply.github.com>
Date:   Fri Feb 17 00:50:17 2023 -0600

    Adds new access define for Secure Tech Storage (#17901)

    * creates secure tech storage define, gives it to CE and adds it to appropriate lists

    * sets new access to secure tech storage doors

    * added secure tech storage to ID modification access

    * reverting map changes, will be changed in another pr per wej

commit b306a6f4c3
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 17 01:33:16 2023 -0500

    Automatic changelog generation #17935 [ci skip]

commit 32cdd383e4
Author: SapphicOverload <93578146+SapphicOverload@users.noreply.github.com>
Date:   Fri Feb 17 01:33:14 2023 -0500

    Malfunctioning AIs no longer need to kill androids or synthetics (#17935)

    * Update objective.dm

    * Update Malf_Modules.dm

commit d83cc04e94
Author: Changelogs <action@github.com>
Date:   Fri Feb 17 06:11:59 2023 +0000

    Automatic changelog compile [ci skip]

commit b89713fa7c
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 16 22:40:04 2023 -0500

    Automatic changelog generation #17861 [ci skip]

commit 818973e1e9
Author: wejengin2 <48154165+wejengin2@users.noreply.github.com>
Date:   Fri Feb 17 04:40:02 2023 +0100

    fixes some issues in infiltrator base (#17861)

    * huh

    * man

    * adds griddle

    * that's really funny but fuck you

    ---------

    Co-authored-by: Byemoh <baiomurang@gmail.com>

commit af417335c1
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 16 22:32:01 2023 -0500

    Automatic changelog generation #17942 [ci skip]

commit 4e6037ec58
Author: wejengin2 <48154165+wejengin2@users.noreply.github.com>
Date:   Fri Feb 17 04:31:58 2023 +0100

    [box] Fixes some map issues (#17942)

    * eo

    * more

    * more fixes

    * damn

    * cargo double lights

    * rogue cable and wrong id on ai core door

    * derwalls a random rwall

    * tile

commit 2e52265500
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 16 20:08:21 2023 -0500

    Automatic changelog generation #17917 [ci skip]

commit 6ebf0318d9
Author: Theos <theubernyan@gmail.com>
Date:   Thu Feb 16 20:08:18 2023 -0500

    Removes the knockout from high level bloodsucker mesmerize since it makes the ability weaker (#17917)

    * Removes the knockout from high level bloodsucker mesmerize since it makes the ability weaker

    * Update mesmerize.dm

    * killing you

commit 7d664d3af5
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 16 20:06:53 2023 -0500

    Automatic changelog generation #17918 [ci skip]

commit dc8148dcb1
Author: ynot01 <ynot000001@gmail.com>
Date:   Thu Feb 16 20:06:51 2023 -0500

    Update roundend.dm (#17918)

commit a46d618224
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 16 20:06:21 2023 -0500

    Automatic changelog generation #17928 [ci skip]

commit f04bc81f0c
Author: LazennG <58535870+LazennG@users.noreply.github.com>
Date:   Thu Feb 16 17:06:18 2023 -0800

    Update kinetic_crusher.dm (#17928)

commit 18fa2ae7af
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 16 20:05:51 2023 -0500

    Automatic changelog generation #17946 [ci skip]

commit 6857bacb76
Author: SapphicOverload <93578146+SapphicOverload@users.noreply.github.com>
Date:   Thu Feb 16 20:05:48 2023 -0500

    Update mousetrap.dm (#17946)

commit 1751af026c
Author: Changelogs <action@github.com>
Date:   Thu Feb 16 22:17:07 2023 +0000

    Automatic changelog compile [ci skip]

commit e005525535
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 16 12:19:45 2023 -0500

    Automatic changelog generation #17922 [ci skip]

commit bc8ae716ab
Author: Ling <lingbleed@gmail.com>
Date:   Thu Feb 16 18:19:42 2023 +0100

    Fixes Atmos fire fighting backpack (#17922)

commit e04fc1b6a8
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 16 12:18:03 2023 -0500

    Automatic changelog generation #17939 [ci skip]

commit 93daa6c361
Author: ynot01 <ynot000001@gmail.com>
Date:   Thu Feb 16 12:18:00 2023 -0500

    Bloodsucker Brawn knockdown patch (#17939)

    * Update brawn.dm

    * Update brawn.dm

    * Update brawn.dm

commit 1ef9484767
Author: Changelogs <action@github.com>
Date:   Thu Feb 16 14:09:56 2023 +0000

    Automatic changelog compile [ci skip]

commit eaff1fdb1b
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 16 05:52:39 2023 -0500

    Automatic changelog generation #17936 [ci skip]

commit 3d42d664bc
Author: adamsong <adamsong@users.noreply.github.com>
Date:   Thu Feb 16 05:52:36 2023 -0500

    Fixes editing bans in game (#17936)

    * Fixes editing bans in game

    * Fixes other error

commit 69ea8d6ca9
Author: Changelogs <action@github.com>
Date:   Thu Feb 16 06:11:47 2023 +0000

    Automatic changelog compile [ci skip]

commit 4e6a16b426
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 16 00:37:02 2023 -0500

    Automatic changelog generation #17923 [ci skip]

commit 2a7da8c107
Author: ynot01 <ynot000001@gmail.com>
Date:   Thu Feb 16 00:37:00 2023 -0500

    fixes clown sect not healing (#17923)

commit 890bc91805
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 15 20:56:34 2023 -0500

    Automatic changelog generation #17945 [ci skip]

commit b2b39d3ed8
Author: TheRyeGuyWhoWillNowDie <70169560+TheRyeGuyWhoWillNowDie@users.noreply.github.com>
Date:   Wed Feb 15 20:56:32 2023 -0500

    Update revolution.dm (#17945)

commit ec2cbd2c89
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 15 20:48:13 2023 -0500

    Automatic changelog generation #17864 [ci skip]

commit cd14d86ed6
Author: Theos <theubernyan@gmail.com>
Date:   Wed Feb 15 20:48:10 2023 -0500

    Buffs the ebow to be faster (#17864)

    * ebow buff??

    * obliterate ebow polonium

    * reduced cooldown

commit df7f9bc020
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 15 20:47:28 2023 -0500

    Automatic changelog generation #17870 [ci skip]

commit 232aa3fa55
Author: ynot01 <ynot000001@gmail.com>
Date:   Wed Feb 15 20:47:26 2023 -0500

    Update bloodsuckers.dm (#17870)

commit d679caad3c
Author: Changelogs <action@github.com>
Date:   Wed Feb 15 22:17:39 2023 +0000

    Automatic changelog compile [ci skip]

commit 9678f1f65a
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 15 14:58:11 2023 -0500

    Automatic changelog generation #17930 [ci skip]

commit 039792ea37
Author: Byemoh <baiomurang@gmail.com>
Date:   Wed Feb 15 13:58:09 2023 -0600

    NVS Gax Incinerator Expansion (#17930)

commit a0fe3e174c
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 15 11:04:14 2023 -0500

    Automatic changelog generation #17941 [ci skip]

commit a263586d88
Author: wejengin2 <48154165+wejengin2@users.noreply.github.com>
Date:   Wed Feb 15 17:04:08 2023 +0100

    eee (#17941)

commit f8b90faa17
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 15 10:11:12 2023 -0500

    Automatic changelog generation #17721 [ci skip]

commit 1d22d7da18
Author: ynot01 <ynot000001@gmail.com>
Date:   Wed Feb 15 10:11:07 2023 -0500

    Long Awaited Psychiatrist Rework (#17721)

    * PART FIVE

    * Update brain_trauma.dm

    * Update examine.dm

    * Update mild.dm

    * Update brain_trauma.dm

    * Update brain_trauma.dm

    * anomalous floating lightswitch

    * undo unintended map changes

    I am sorry I don't know what happened to asteroid station I don't know what changed on the AI satellite I am sorry mapper man

    * can no longer cure things u shouldnt

    wound traumas
    traumas that require the aheal staff
    traumas that come from quirks

    * wej

    * wej 2

    * Update YogStation.dmm

    * Update brain_trauma.dm

    * Update brain_trauma.dm

    * Update brain_trauma.dm

commit 85de433d2d
Author: Changelogs <action@github.com>
Date:   Wed Feb 15 14:08:21 2023 +0000

    Automatic changelog compile [ci skip]

commit a8bd8c2280
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 15 07:32:49 2023 -0500

    Automatic changelog generation #17916 [ci skip]

commit 3b587559a5
Author: Molti <108117184+Moltijoe@users.noreply.github.com>
Date:   Wed Feb 15 06:32:46 2023 -0600

    Who approved this (#17916)

commit 6828c4758d
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 15 06:58:56 2023 -0500

    Automatic changelog generation #17914 [ci skip]

commit 3e3ab2b4d6
Author: ktlwjec <122807629+ktlwjec0@users.noreply.github.com>
Date:   Wed Feb 15 11:58:53 2023 +0000

    fixes processor recipes (#17914)

commit 601ce3f675
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 15 06:41:26 2023 -0500

    Automatic changelog generation #17888 [ci skip]

commit bf8867a331
Author: Molti <108117184+Moltijoe@users.noreply.github.com>
Date:   Wed Feb 15 05:41:24 2023 -0600

    no hardcritdamage (#17888)

commit e1a500ec62
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 15 05:28:58 2023 -0500

    Automatic changelog generation #17781 [ci skip]

commit 874db73a73
Author: ynot01 <ynot000001@gmail.com>
Date:   Wed Feb 15 05:28:55 2023 -0500

    Revert commit 64a6c3a (#17781)

    This reverts 64a6c3ac21

commit 734d6ec0fc
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 15 05:28:03 2023 -0500

    Automatic changelog generation #17772 [ci skip]

commit 30d564c8dc
Author: Manatee <74586965+MajManatee@users.noreply.github.com>
Date:   Wed Feb 15 04:28:00 2023 -0600

    A vain attempt to make the minigun more viable (#17772)

    * mmm minigun

    * Update minigun.dm

commit e7542e1f55
Author: Changelogs <action@github.com>
Date:   Wed Feb 15 06:11:58 2023 +0000

    Automatic changelog compile [ci skip]

commit b5ed98fe7c
Author: Ling <lingbleed@gmail.com>
Date:   Wed Feb 15 02:18:53 2023 +0100

    Fix crew monitor runtime (#17921)

commit 4c7b5535b6
Author: Changelogs <action@github.com>
Date:   Tue Feb 14 14:08:13 2023 +0000

    Automatic changelog compile [ci skip]

commit cfb81a4b91
Author: Yogbot-13 <admin@yogstation.net>
Date:   Tue Feb 14 04:06:15 2023 -0500

    Automatic changelog generation #17919 [ci skip]

commit 5268119ca6
Author: ynot01 <ynot000001@gmail.com>
Date:   Tue Feb 14 04:06:12 2023 -0500

    Update recharger.dm (#17919)

commit 06acbae28d
Author: Changelogs <action@github.com>
Date:   Tue Feb 14 06:12:20 2023 +0000

    Automatic changelog compile [ci skip]

commit 369dba9990
Author: Changelogs <action@github.com>
Date:   Mon Feb 13 22:17:26 2023 +0000

    Automatic changelog compile [ci skip]

commit a8b8df1868
Author: Yogbot-13 <admin@yogstation.net>
Date:   Mon Feb 13 16:51:13 2023 -0500

    Automatic changelog generation #17887 [ci skip]

commit 991c54d7e3
Author: wejengin2 <48154165+wejengin2@users.noreply.github.com>
Date:   Mon Feb 13 22:51:10 2023 +0100

    yeah (#17887)

commit d9aec4444d
Author: Changelogs <action@github.com>
Date:   Mon Feb 13 06:12:20 2023 +0000

    Automatic changelog compile [ci skip]

commit bad039c45f
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sun Feb 12 17:52:39 2023 -0500

    Automatic changelog generation #17897 [ci skip]

commit f251ff8187
Author: Skrem_7 <98909416+Skrem7@users.noreply.github.com>
Date:   Sun Feb 12 17:52:36 2023 -0500

    better metashield (#17897)

commit 1c7d28f658
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sun Feb 12 17:51:22 2023 -0500

    Automatic changelog generation #17889 [ci skip]

commit 4f4d2d8bbb
Author: LazennG <58535870+LazennG@users.noreply.github.com>
Date:   Sun Feb 12 14:51:19 2023 -0800

    cooldown actions isavailable now calls parent pro (#17889)

commit 5e3f4b08a7
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sun Feb 12 17:50:40 2023 -0500

    Automatic changelog generation #17894 [ci skip]

commit 062f0a2fd5
Author: Manatee <74586965+MajManatee@users.noreply.github.com>
Date:   Sun Feb 12 16:50:37 2023 -0600

    augh (#17894)

commit 494bbd1982
Author: ynot01 <ynot000001@gmail.com>
Date:   Sun Feb 12 07:41:24 2023 -0500

    Update yogstation.dme (#17903)

commit 596b836652
Author: Changelogs <action@github.com>
Date:   Sun Feb 12 06:10:28 2023 +0000

    Automatic changelog compile [ci skip]

commit dc689f3715
Author: TheGamerdk <5618080+TheGamerdk@users.noreply.github.com>
Date:   Sun Feb 12 01:30:21 2023 +0100

    Moves some config settings around which should make debug builds from github run faster (#17900)

          * config update

    * opos

commit 80284d7ca0
Author: Changelogs <action@github.com>
Date:   Sat Feb 11 22:15:52 2023 +0000

    Automatic changelog compile [ci skip]

commit 56e85c55c3
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 13:38:04 2023 -0500

    Automatic changelog generation #17833 [ci skip]

commit 80afe50f46
Author: ynot01 <ynot000001@gmail.com>
Date:   Sat Feb 11 13:38:01 2023 -0500

    Darkspawn is now a midround instead of a gamemode (#17833)

    * dspawn midround

    * disable

    * performance

    * move sec counting down

    * disable nightmare

    * changes S to H

    * runtime safety

    * H and D to var names

commit 435823b827
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 12:49:50 2023 -0500

    Automatic changelog generation #17878 [ci skip]

commit fa4b2b98a3
Author: ynot01 <ynot000001@gmail.com>
Date:   Sat Feb 11 12:49:47 2023 -0500

    You can no longer change directions while dead (#17878)

    * Update bindings_atom.dm

    * Update bindings_atom.dm

    * Update bindings_atom.dm

commit 75cfed640f
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 12:17:44 2023 -0500

    Automatic changelog generation #17842 [ci skip]

commit 291a70fb8f
Author: Molti <108117184+Moltijoe@users.noreply.github.com>
Date:   Sat Feb 11 11:17:42 2023 -0600

    Removes appendix from darkspawn (#17842)

    * no appendix please

    * just uses nohunger

    * thing

    * might as well remove it from shadowpeople

    they have enough going against them as is

commit 1cc076d57a
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 12:14:44 2023 -0500

    Automatic changelog generation #17828 [ci skip]

commit fef1aed09b
Author: Molti <108117184+Moltijoe@users.noreply.github.com>
Date:   Sat Feb 11 11:14:42 2023 -0600

    IPC martial buffs (#17828)

    * IPC martial tweak

    * update the movespeed

    * it's the mob that does it

    * bit more uplink stuff

    * no other guns

commit bf62a065f5
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 12:01:19 2023 -0500

    Automatic changelog generation #17824 [ci skip]

commit 20c67e451b
Author: ynot01 <ynot000001@gmail.com>
Date:   Sat Feb 11 12:01:16 2023 -0500

    Antag Reputation Redux (#17824)

    * antag repwork

    * check centcom specifically

    * GLOB.player_list

    * Update antag_rep.txt

    * Update antag_rep.txt

    * better loop

    * set miner to 6

    * set AI to 6

    * cook 5

    * psyfch 5

commit 866c4f0e97
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 11:39:29 2023 -0500

    Automatic changelog generation #17814 [ci skip]

commit 64726b0798
Author: Redd <36747151+ReddicusDragon@users.noreply.github.com>
Date:   Sat Feb 11 11:39:26 2023 -0500

    Changes lizard hiss and increases staff, mentor, and donor retention by allowing felinids to hiss. (#17814)

    * adds sound

    * felinids can hiss

    * felinids can purr

    * You can no longer purr at people

    NanoTrasen has noticed an increase in harassment complaints from stations that employ felinids. The reports indicate that felinids would purr at people. NanoTrasen has since banned workplace purring at people.

    * removes purring

    * update lizard hiss

commit b956f2caae
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 11:36:59 2023 -0500

    Automatic changelog generation #17809 [ci skip]

commit 00769859a2
Author: Molti <108117184+Moltijoe@users.noreply.github.com>
Date:   Sat Feb 11 10:36:57 2023 -0600

    Nanite heart buff (#17809)

commit 87bd1794db
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 11:36:15 2023 -0500

    Automatic changelog generation #17805 [ci skip]

commit f286bdb997
Author: SapphicOverload <93578146+SapphicOverload@users.noreply.github.com>
Date:   Sat Feb 11 11:36:12 2023 -0500

    you are a good (#17805)

commit a737b7291e
Author: Ling <lingbleed@gmail.com>
Date:   Sat Feb 11 17:35:33 2023 +0100

    Fix a ton of harddels (#17803)

    * Fix a ton of harddels

    * Out of scope

    * Stupid

commit f77eb885d9
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 11:34:47 2023 -0500

    Automatic changelog generation #17724 [ci skip]

commit 8f4993ae0b
Author: Molti <108117184+Moltijoe@users.noreply.github.com>
Date:   Sat Feb 11 10:34:45 2023 -0600

    Miners wormhole jaunter location shuffle (#17724)

    * Gives mining medic a jaunter

    * in the outfit rather than the locker

    ---------

    Co-authored-by: Jamie D <993128+JamieD1@users.noreply.github.com>

commit a6779b3a77
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 11:27:41 2023 -0500

    Automatic changelog generation #17778 [ci skip]

commit 402e2d775a
Author: Xander3359 <66163761+Xander3359@users.noreply.github.com>
Date:   Sat Feb 11 11:27:38 2023 -0500

    One handed crusher (With new sprites) (#17778)

    * 1-Handed Crusher

    The crusher can now be held in 1 hand, wield it to use it.

    * one-handed crusher

    one-handed crusher

    * Update dynamic.json

commit fa67c930d0
Author: Jamie D <993128+JamieD1@users.noreply.github.com>
Date:   Sat Feb 11 16:23:06 2023 +0000

    Update dynamic_rulesets_roundstart.dm

commit 0e05a643a6
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 11:20:01 2023 -0500

    Automatic changelog generation #17720 [ci skip]

commit 738aac2d74
Author: Manatee <74586965+MajManatee@users.noreply.github.com>
Date:   Sat Feb 11 10:19:59 2023 -0600

    Revert "replaces chasm spawn from tendrils with lava (#17340)" (#17720)

    This reverts commit d0abdd2d33.

commit 0679f56ea6
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 11:19:12 2023 -0500

    Automatic changelog generation #17609 [ci skip]

commit a5660a07e6
Author: Theos <theubernyan@gmail.com>
Date:   Sat Feb 11 11:19:10 2023 -0500

    Increase wizard playercount from 27 to 34 so its not syndicate station 2 (the second one) (#17609)

    * Increase wizard playercount from 27 to 37 so its not syndicate station 2 (the second one)

    * Update wizard.dm

    * Update dynamic_rulesets_roundstart.dm

commit d1ec159cf3
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 10:50:38 2023 -0500

    Automatic changelog generation #17610 [ci skip]

commit f49b009b1d
Author: BurgerLUA <8602857+BurgerLUA@users.noreply.github.com>
Date:   Sat Feb 11 07:50:35 2023 -0800

    Increase nuke op from 27 to 37 so its not syndicate station 3 (the third one) (#17610)

commit 75b0447f82
Author: Changelogs <action@github.com>
Date:   Sat Feb 11 14:07:34 2023 +0000

    Automatic changelog compile [ci skip]

commit ab07a0c5ca
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 04:18:21 2023 -0500

    Automatic changelog generation #17739 [ci skip]

commit ed09aa658d
Author: Manatee <74586965+MajManatee@users.noreply.github.com>
Date:   Sat Feb 11 03:18:18 2023 -0600

    Removes mod disks from loot pool, and makes them orderable from cargo. Also adds a KA crate. (#17739)

    * fug

    * no more disks

commit f6cd327077
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 04:07:17 2023 -0500

    Automatic changelog generation #17873 [ci skip]

commit 09a038e850
Author: LazennG <58535870+LazennG@users.noreply.github.com>
Date:   Sat Feb 11 01:07:15 2023 -0800

    no more curveballs (#17873)

commit 186fedce46
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 04:05:05 2023 -0500

    Automatic changelog generation #17865 [ci skip]

commit 422a595d6c
Author: Skrem_7 <98909416+Skrem7@users.noreply.github.com>
Date:   Sat Feb 11 04:05:02 2023 -0500

    makes darkspawn mindshield text a little less cringe (#17865)

    * makes this text a little less cringe

    * i love repetition of sound

commit c4217e2080
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sat Feb 11 04:04:45 2023 -0500

    Automatic changelog generation #17867 [ci skip]

commit 20fc9d7f33
Author: Theos <theubernyan@gmail.com>
Date:   Sat Feb 11 04:04:42 2023 -0500

    Reduces drakeling attack cooldowns slightly to match the mining equipment they are meant to upgrade (#17867)

commit fdf31d11a7
Author: Changelogs <action@github.com>
Date:   Sat Feb 11 06:10:17 2023 +0000

    Automatic changelog compile [ci skip]

commit 6b0ddaf194
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 20:45:30 2023 -0500

    Automatic changelog generation #17863 [ci skip]

commit 484a70bdc6
Author: Skrem_7 <98909416+Skrem7@users.noreply.github.com>
Date:   Fri Feb 10 20:45:27 2023 -0500

    hammer fix (#17863)

commit c3f4bee6a9
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 20:43:51 2023 -0500

    Automatic changelog generation #17866 [ci skip]

commit 44d935e116
Author: Mqiib <43766432+Mqiib@users.noreply.github.com>
Date:   Fri Feb 10 20:43:49 2023 -0500

    Unfucks darkspawn veils but they're still weaker (#17866)

    * brtuh

    * Update yogstation/code/game/gamemodes/darkspawn/veil.dm

    whoops

    Co-authored-by: Molti <108117184+Moltijoe@users.noreply.github.com>

    ---------

    Co-authored-by: Molti <108117184+Moltijoe@users.noreply.github.com>

commit 80045a2877
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 19:56:54 2023 -0500

    Automatic changelog generation #17770 [ci skip]

commit 40564ae7f4
Author: githubuser4141 <61243846+githubuser4141@users.noreply.github.com>
Date:   Sat Feb 11 13:56:51 2023 +1300

    Buffs the MK-II Ripley's speed (#17770)

    * dir

    * Update mecha_defense.dm

    * Update uplink_items.dm

    * Update uplink_items.dm

    * Update uplink_items.dm

    * Update ripley.dm

    * Update ripley.dm

    * Update uplink_items.dm

commit bece519a8b
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 18:45:30 2023 -0500

    Automatic changelog generation #17784 [ci skip]

commit 4a499be90f
Author: Skrem_7 <98909416+Skrem7@users.noreply.github.com>
Date:   Fri Feb 10 18:45:27 2023 -0500

    True semi-auto shotguns + racking medium/heavy ballistics requires both hands + removes outdated stechkin animations (#17784)

    * shotguns actually semi-auto now

    * updates desc

    * removes stechkin animations

    * fixes rack sound

    * Update code/modules/projectiles/guns/ballistic.dm

    Co-authored-by: tattax <71668564+tattax@users.noreply.github.com>

    * slight fixes

    ---------

    Co-authored-by: tattax <71668564+tattax@users.noreply.github.com>

commit 24ad52b6bd
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 18:22:35 2023 -0500

    Automatic changelog generation #17835 [ci skip]

commit 053f8bf856
Author: Redd <36747151+ReddicusDragon@users.noreply.github.com>
Date:   Fri Feb 10 18:22:32 2023 -0500

    Typo fix (#17835)

    * Update swarmer.dm

    * Update scripture_scripts.dm

    * Update golems.dm

    * Update pen.dm

    * Update touch_attacks.dm

    * Update uplink_items.dm

    * Update explosive_fist.dm

    * Update garden_warfare.dm

    * Update stealth.dm

    * Update uplink_item.dm

    * Update code/modules/mob/living/carbon/human/species_types/golems.dm

    Co-authored-by: ynot01 <ynot000001@gmail.com>

    * Update scripture_scripts.dm

    ---------

    Co-authored-by: ynot01 <ynot000001@gmail.com>

commit d0e1c6f1f9
Author: Ling <lingbleed@gmail.com>
Date:   Sat Feb 11 00:09:14 2023 +0100

    Actually fixes gas mixer sprite for real this time (#17840)

commit 66545d3bee
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 18:07:46 2023 -0500

    Automatic changelog generation #17847 [ci skip]

commit b04412e57e
Author: Molti <108117184+Moltijoe@users.noreply.github.com>
Date:   Fri Feb 10 17:07:42 2023 -0600

    Removes #1 cause of suicide in Lizards (#17847)

    * CarkFetishContent

    * 20 minutes and chat message

    * no dead lizards

    * optimization

commit c6ab8818ff
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 18:01:32 2023 -0500

    Automatic changelog generation #17854 [ci skip]

commit 0c13569569
Author: Molti <108117184+Moltijoe@users.noreply.github.com>
Date:   Fri Feb 10 17:01:20 2023 -0600

    Gives mining medic a laptop to keep track of bodycams (#17854)

    * Gives mining medic a laptop

    * upgraded network card

commit 9a3512a44b
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 17:59:29 2023 -0500

    Automatic changelog generation #17836 [ci skip]

commit 606c9ced8f
Author: Aquizit <70451213+Aquizit@users.noreply.github.com>
Date:   Fri Feb 10 16:59:27 2023 -0600

    Adds Personnel HUD Type, gives HoP and Cap a pair of sunglasses with it (#17836)

    * adds personnel hud type, sunglasses for HoP and Cap with it

    * renames CMO shades for HoP/Cap, made new shades for CMO

    * forgot to make the sunglasses tint blue

commit fc4a64ed52
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 17:58:53 2023 -0500

    Automatic changelog generation #17871 [ci skip]

commit ab089cfae7
Author: ynot01 <ynot000001@gmail.com>
Date:   Fri Feb 10 17:58:51 2023 -0500

    Cult tiles now block atmos like everyone though it did (#17871)

    * Update reinf_floor.dm

    * Update cult_structures.dm

    * Update cult_structures.dm

commit 20af730457
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 17:58:27 2023 -0500

    Automatic changelog generation #17819 [ci skip]

commit 3e918a5658
Author: Mqiib <43766432+Mqiib@users.noreply.github.com>
Date:   Fri Feb 10 17:58:25 2023 -0500

    Unstupidify (#17819)

commit 411c213dcd
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 17:58:11 2023 -0500

    Automatic changelog generation #17818 [ci skip]

commit 919a2686b6
Author: Ling <lingbleed@gmail.com>
Date:   Fri Feb 10 23:58:08 2023 +0100

    Prevents wormholes from spawning in syndicate shuttles (#17818)

commit b66d0720bb
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 17:56:47 2023 -0500

    Automatic changelog generation #17811 [ci skip]

commit b9eb469042
Author: Molti <108117184+Moltijoe@users.noreply.github.com>
Date:   Fri Feb 10 16:56:44 2023 -0600

    Reduces body temp increase from being on fire (#17811)

    * Greatly reduces heat from being on fire

    * even less

commit cdb38b84fd
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 17:49:43 2023 -0500

    Automatic changelog generation #17804 [ci skip]

commit 1f02d82d27
Author: ynot01 <ynot000001@gmail.com>
Date:   Fri Feb 10 17:49:41 2023 -0500

    from fortnite (#17804)

    do the thing

commit 0c64a222c8
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 17:47:18 2023 -0500

    Automatic changelog generation #17801 [ci skip]

commit f6bf19009f
Author: Ezhan <39889035+Ethan4303@users.noreply.github.com>
Date:   Fri Feb 10 17:47:15 2023 -0500

    rotates the gas simulator in yogstation turbine (#17801)

commit 7c9b4054a0
Author: ynot01 <ynot000001@gmail.com>
Date:   Fri Feb 10 17:46:46 2023 -0500

    Protects events from being faked random by admins (#17790)

    * Update _event.dm

    * Update _event.dm

commit cf793830ec
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 17:46:06 2023 -0500

    Automatic changelog generation #17785 [ci skip]

commit 15bb9f53b7
Author: Skrem_7 <98909416+Skrem7@users.noreply.github.com>
Date:   Fri Feb 10 17:46:03 2023 -0500

    adds a spare mag to oddjob kit (#17785)

commit c69563273b
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 17:45:23 2023 -0500

    Automatic changelog generation #17769 [ci skip]

commit 367cf38f16
Author: ynot01 <ynot000001@gmail.com>
Date:   Fri Feb 10 17:45:20 2023 -0500

    Purchasable autosurgeon for 5TC (#17769)

    * syndi cat

    * Update uplink_items.dm

commit 247a50bc9f
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 17:43:58 2023 -0500

    Automatic changelog generation #17735 [ci skip]

commit 167ab6af2b
Author: SapphicOverload <93578146+SapphicOverload@users.noreply.github.com>
Date:   Fri Feb 10 17:43:55 2023 -0500

    Multilingual quirk can no longer give you centcom encrypted language and costs 2 points instead of 3 (#17735)

    * guh

    * Update good.dm

commit bb77f2d6a3
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 17:22:33 2023 -0500

    Automatic changelog generation #17856 [ci skip]

commit f13f241426
Author: Redd <36747151+ReddicusDragon@users.noreply.github.com>
Date:   Fri Feb 10 17:22:31 2023 -0500

    Revert "Removes felinid language (#17825)" (#17856)

    This reverts commit e75cb0ad00.

commit c53b3bc784
Author: Changelogs <action@github.com>
Date:   Fri Feb 10 22:17:13 2023 +0000

    Automatic changelog compile [ci skip]

commit bf214dad30
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 15:57:59 2023 -0500

    Automatic changelog generation #17832 [ci skip]

commit 0144098f5c
Author: Addust <80979251+Addust@users.noreply.github.com>
Date:   Fri Feb 10 20:57:56 2023 +0000

    Gives onehalf a blue oxygen tank instead of a red one inside the safe (#17832)

    yes

commit 84c1ff3331
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 13:08:39 2023 -0500

    Automatic changelog generation #17881 [ci skip]

commit e2ce0336ff
Author: wejengin2 <48154165+wejengin2@users.noreply.github.com>
Date:   Fri Feb 10 19:08:36 2023 +0100

    ye (#17881)

commit 596ac490f7
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 12:29:57 2023 -0500

    Automatic changelog generation #17812 [ci skip]

commit 2047871e5b
Author: Molti <108117184+Moltijoe@users.noreply.github.com>
Date:   Fri Feb 10 11:29:53 2023 -0600

    Adds a chemical that purges nanites (#17812)

    * NaniteRemovalChemical

    * rename

    * Update code/modules/reagents/chemistry/reagents/medicine_reagents.dm

    Co-authored-by: Ling <lingbleed@gmail.com>

    ---------

    Co-authored-by: Ling <lingbleed@gmail.com>

commit bb0d420b09
Author: wejengin2 <48154165+wejengin2@users.noreply.github.com>
Date:   Fri Feb 10 16:04:20 2023 +0100

    Massacres the unused maps. (#17764)

    * someone has to do it

    * camels

    * order

    * ok no

commit 0424f5f5e4
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 09:40:37 2023 -0500

    Automatic changelog generation #17823 [ci skip]

commit 611fc49e0b
Author: Jamie D <993128+JamieD1@users.noreply.github.com>
Date:   Fri Feb 10 14:40:33 2023 +0000

    e (#17823)

commit adda8bc9a0
Author: TheGamerdk <5618080+TheGamerdk@users.noreply.github.com>
Date:   Fri Feb 10 15:17:47 2023 +0100

    Update unique_donator_items.dm (#17874)

commit 3a8ad081f9
Author: Changelogs <action@github.com>
Date:   Fri Feb 10 14:08:30 2023 +0000

    Automatic changelog compile [ci skip]

commit ff2f15a395
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 05:01:24 2023 -0500

    Automatic changelog generation #17848 [ci skip]

commit 58a00ef32d
Author: Waterpig <49160555+Majkl-J@users.noreply.github.com>
Date:   Fri Feb 10 11:01:21 2023 +0100

    Adds barricading of airlocks and doors (#17848)

    * I like wood 😩

    * Makes them faster to remove

    * 😩

    * I hate molti

    Co-authored-by: Molti <108117184+Moltijoe@users.noreply.github.com>

    ---------

    Co-authored-by: Molti <108117184+Moltijoe@users.noreply.github.com>

commit 726c31fd2f
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 04:29:51 2023 -0500

    Automatic changelog generation #17807 [ci skip]

commit 9d4d28edd3
Author: Redd <36747151+ReddicusDragon@users.noreply.github.com>
Date:   Fri Feb 10 04:29:48 2023 -0500

    Removes corn syrup from catsip (#17807)

commit a995a0e6fd
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 04:28:25 2023 -0500

    Automatic changelog generation #17831 [ci skip]

commit d35292c3d4
Author: Ling <lingbleed@gmail.com>
Date:   Fri Feb 10 10:28:20 2023 +0100

    RPD now builds even when clicked on another pipe (#17831)

commit 51fd6de808
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 03:53:48 2023 -0500

    Automatic changelog generation #17852 [ci skip]

commit 9f91e2edf7
Author: Manatee <74586965+MajManatee@users.noreply.github.com>
Date:   Fri Feb 10 02:53:45 2023 -0600

    les go (#17852)

commit a55a6d4297
Author: Changelogs <action@github.com>
Date:   Fri Feb 10 06:11:39 2023 +0000

    Automatic changelog compile [ci skip]

commit 380e400cb3
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 01:04:58 2023 -0500

    Automatic changelog generation #17837 [ci skip]

commit 861567f4db
Author: Byemoh <baiomurang@gmail.com>
Date:   Fri Feb 10 00:04:56 2023 -0600

    Update airlock.dm (#17837)

commit 08cec4a012
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 01:01:14 2023 -0500

    Automatic changelog generation #17813 [ci skip]

commit 5cf47b2580
Author: ynot01 <ynot000001@gmail.com>
Date:   Fri Feb 10 01:01:12 2023 -0500

    Update hologram.dm (#17813)

commit ef783cb856
Author: Yogbot-13 <admin@yogstation.net>
Date:   Fri Feb 10 00:58:35 2023 -0500

    Automatic changelog generation #17834 [ci skip]

commit a00b6ce757
Author: ynot01 <ynot000001@gmail.com>
Date:   Fri Feb 10 00:58:33 2023 -0500

    Update medbeam.dm (#17834)

commit d5b72b2259
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 9 20:22:06 2023 -0500

    Automatic changelog generation #17723 [ci skip]

commit 4a6973a465
Author: Byemoh <baiomurang@gmail.com>
Date:   Thu Feb 9 19:22:03 2023 -0600

    Falling into a chasm doesn't delete your body and someone can fish you up (#17723)

    * eeeee

    * e

    * map

    * break

    * eeeee

    * cope

    * Update chasm.dm

commit 229d6664ef
Author: Changelogs <action@github.com>
Date:   Thu Feb 9 22:17:48 2023 +0000

    Automatic changelog compile [ci skip]

commit f606eaac8e
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 9 10:41:20 2023 -0500

    Automatic changelog generation #17670 [ci skip]

commit 26ad93fd58
Author: ynot01 <ynot000001@gmail.com>
Date:   Thu Feb 9 10:41:17 2023 -0500

    Big Heretic revamp (finally) (#17670)

    * heresy

    * Update eldritch_book.dm

    * heat resistant lizards

    * 5 tile range only!

    * delete the shield dummy!

    * Update eldritch_items.dm

    * new sounds

    * Update eldritch_antag.dm

    * Update eldritch_items.dm

    * sanity

    * Update code/modules/antagonists/eldritch_cult/eldritch_book.dm

    Co-authored-by: Ling <lingbleed@gmail.com>

    ---------

    Co-authored-by: Ling <lingbleed@gmail.com>

commit 2264d7e6bc
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 9 10:36:18 2023 -0500

    Automatic changelog generation #17795 [ci skip]

commit 6e401075bd
Author: TheGamerdk <5618080+TheGamerdk@users.noreply.github.com>
Date:   Thu Feb 9 16:36:15 2023 +0100

    It now takes 6 seconds to cremate someone, and 3 seconds to break out if they're conscious (#17795)

    * Update morgue.dm

    * Update morgue.dm

    * Update code/game/objects/structures/morgue.dm

    * Update code/game/objects/structures/morgue.dm

commit c28d359784
Author: Yogbot-13 <admin@yogstation.net>
Date:   Thu Feb 9 10:27:17 2023 -0500

    Automatic changelog generation #17766 [ci skip]

commit a0c31d2aee
Author: Skrem_7 <98909416+Skrem7@users.noreply.github.com>
Date:   Thu Feb 9 10:27:13 2023 -0500

    brrrt (#17766)

commit 9ff2bc445a
Author: Changelogs <action@github.com>
Date:   Thu Feb 9 06:11:19 2023 +0000

    Automatic changelog compile [ci skip]

commit d268cadeda
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 8 18:44:13 2023 -0500

    Automatic changelog generation #17806 [ci skip]

commit c223e28c9d
Author: Ling <lingbleed@gmail.com>
Date:   Thu Feb 9 00:44:11 2023 +0100

    Fix 'id in pda' pref (#17806)

commit 44decca884
Author: Changelogs <action@github.com>
Date:   Wed Feb 8 22:16:57 2023 +0000

    Automatic changelog compile [ci skip]

commit d750b905dd
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 8 13:17:57 2023 -0500

    Automatic changelog generation #17777 [ci skip]

commit 00a527192b
Author: Manatee <74586965+MajManatee@users.noreply.github.com>
Date:   Wed Feb 8 12:17:54 2023 -0600

    More snowflake items - Boxta (#17777)

    * all non spritework

    * Quirky first hat

    * mmm sprites

commit f028dd3418
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 8 12:31:26 2023 -0500

    Automatic changelog generation #17825 [ci skip]

commit e75cb0ad00
Author: Redd <36747151+ReddicusDragon@users.noreply.github.com>
Date:   Wed Feb 8 12:31:23 2023 -0500

    Removes felinid language (#17825)

    * Removes felinid language from silicons

    * Removes multilingual (felinid) trait

    * Removes felinid from being granted upon using cat ears

    * Redd moment

    * removes felinid from tongue's possible language base.

    * removes felinid from telecomms

    * removes felinid from language holders

    * removes the felinid language as it provides a material benefit to donors

    * gives felinids the english language holder

    * removes felinid language icon

commit 060c415b04
Author: Changelogs <action@github.com>
Date:   Wed Feb 8 14:08:15 2023 +0000

    Automatic changelog compile [ci skip]

commit 7345f0e82d
Author: Yogbot-13 <admin@yogstation.net>
Date:   Wed Feb 8 05:39:07 2023 -0500

    Automatic changelog generation #17846 [ci skip]

commit 3e51ef4f8b
Author: Molti <108117184+Moltijoe@users.noreply.github.com>
Date:   Wed Feb 8 04:39:03 2023 -0600

    Update lavaland_surface_maze.dmm (#17846)

commit e7823cfc39
Author: Changelogs <action@github.com>
Date:   Wed Feb 8 06:11:43 2023 +0000

    Automatic changelog compile [ci skip]

commit d927ebc03d
Author: Yogbot-13 <admin@yogstation.net>
Date:   Tue Feb 7 20:39:04 2023 -0500

    Automatic changelog generation #17802 [ci skip]

commit 0fd7dcfc9d
Author: cuackles <68789204+cuackles@users.noreply.github.com>
Date:   Tue Feb 7 22:39:01 2023 -0300

    monkey energy no longer becomes invisible when crushed (#17802)

    * Update janitor.dmi

    * Update janitor.dmi

    * Update janitor.dmi

commit 61601d937e
Author: Yogbot-13 <admin@yogstation.net>
Date:   Tue Feb 7 19:57:01 2023 -0500

    Automatic changelog generation #17791 [ci skip]

commit 902e743274
Author: BurgerLUA <8602857+BurgerLUA@users.noreply.github.com>
Date:   Tue Feb 7 16:56:58 2023 -0800

    MALF is no longer continuous (#17791)

commit 81c0963f74
Author: TheGamerdk <5618080+TheGamerdk@users.noreply.github.com>
Date:   Wed Feb 8 01:56:07 2023 +0100

    Update adminhelp.dm (#17783)

commit 95947d2fe2
Author: Yogbot-13 <admin@yogstation.net>
Date:   Tue Feb 7 19:53:00 2023 -0500

    Automatic changelog generation #17742 [ci skip]

commit f83723c389
Author: Ling <lingbleed@gmail.com>
Date:   Wed Feb 8 01:52:57 2023 +0100

    Ports SSfoam and SSsmoke (#17742)

    * Ports SSfoam and SSsmoke

    * Remove dupe define

commit 9bb63a7577
Author: Yogbot-13 <admin@yogstation.net>
Date:   Tue Feb 7 19:52:22 2023 -0500

    Automatic changelog generation #17738 [ci skip]

commit 0cf7ecf050
Author: Ling <lingbleed@gmail.com>
Date:   Wed Feb 8 01:52:19 2023 +0100

    Actually adds passive vent to RPD (#17738)

    * Actually adds passive vent to RPD

    * Fixed and re-added passive vents

commit 5b9d198f6f
Author: Yogbot-13 <admin@yogstation.net>
Date:   Tue Feb 7 18:37:58 2023 -0500

    Automatic changelog generation #17816 [ci skip]

commit 148e80f8ec
Author: ynot01 <ynot000001@gmail.com>
Date:   Tue Feb 7 18:37:55 2023 -0500

    Fixes foam darts not doing any stamina damage (#17816)

    * Update foam_dart.dm

    * Update foam_dart.dm

commit 42165a9806
Author: Changelogs <action@github.com>
Date:   Tue Feb 7 22:17:04 2023 +0000

    Automatic changelog compile [ci skip]

commit b9f7613d59
Author: Yogbot-13 <admin@yogstation.net>
Date:   Tue Feb 7 14:59:58 2023 -0500

    Automatic changelog generation #17748 [ci skip]

commit 1cfbe0fd48
Author: Byemoh <baiomurang@gmail.com>
Date:   Tue Feb 7 13:59:54 2023 -0600

    adds det's sunglasses and shit on his desk on gax and other misc stuff (#17748)

    * eeeeeeeeee

    * shudders

    * readds stuff

commit 3947b4ac5a
Author: Yogbot-13 <admin@yogstation.net>
Date:   Tue Feb 7 11:46:17 2023 -0500

    Automatic changelog generation #17799 [ci skip]

commit c3cfad4913
Author: ynot01 <ynot000001@gmail.com>
Date:   Tue Feb 7 11:46:14 2023 -0500

    weird (#17799)

commit 8de1275a99
Author: Changelogs <action@github.com>
Date:   Tue Feb 7 14:08:44 2023 +0000

    Automatic changelog compile [ci skip]

commit 198c9f89aa
Author: Yogbot-13 <admin@yogstation.net>
Date:   Tue Feb 7 06:52:05 2023 -0500

    Automatic changelog generation #17822 [ci skip]

commit 63928e7f87
Author: Jamie D <993128+JamieD1@users.noreply.github.com>
Date:   Tue Feb 7 11:52:02 2023 +0000

    Update game_options.txt (#17822)

commit 7daad46a71
Author: Yogbot-13 <admin@yogstation.net>
Date:   Tue Feb 7 05:15:44 2023 -0500

    Automatic changelog generation #17776 [ci skip]

commit b01613407a
Author: Byemoh <baiomurang@gmail.com>
Date:   Tue Feb 7 04:15:40 2023 -0600

    Alternate Gax Arrivals design for free miner ship (#17776)

    * Update GaxStation.dmm

    * Update GaxStation.dmm

    * e

commit 23abc5abd2
Author: Changelogs <action@github.com>
Date:   Tue Feb 7 06:11:41 2023 +0000

    Automatic changelog compile [ci skip]

commit d170eab0aa
Author: Yogbot-13 <admin@yogstation.net>
Date:   Mon Feb 6 19:03:32 2023 -0500

    Automatic changelog generation #17797 [ci skip]

commit 1aac303800
Author: Redd <36747151+ReddicusDragon@users.noreply.github.com>
Date:   Mon Feb 6 19:03:29 2023 -0500

    Updates inventory procs to allow silent pickup (#17797)

    * adds make_sound parameter to put_in_hands, first step to making items able to be picked up with or without sound

    * adds make_sound parameter to put_in_active_hand, second step in allowing items to be picked up with or without sound

    * adds make_sound parameter to put_in_hand, third step

    * redd moment

    * weeeeeeee

    * NukeOps nuke code papers spawning are now silent

commit 57283fa900
Author: Yogbot-13 <admin@yogstation.net>
Date:   Mon Feb 6 18:17:08 2023 -0500

    Automatic changelog generation #17712 [ci skip]

commit b2c06b0866
Author: Byemoh <baiomurang@gmail.com>
Date:   Mon Feb 6 17:17:05 2023 -0600

    Lavaland Corn Maze Ruin (#17712)

    * eeee

    * yep

    * Update lavaruinblacklist.txt

    ---------

    Co-authored-by: wejengin2 <48154165+wejengin2@users.noreply.github.com>

commit 0d00d7457c
Author: Changelogs <action@github.com>
Date:   Mon Feb 6 22:16:37 2023 +0000

    Automatic changelog compile [ci skip]

commit 7955f64f79
Author: Yogbot-13 <admin@yogstation.net>
Date:   Mon Feb 6 10:52:52 2023 -0500

    Automatic changelog generation #17582 [ci skip]

commit 8df29b5392
Author: 00ze-cyclone <96987868+00ze-cyclone@users.noreply.github.com>
Date:   Mon Feb 6 16:52:48 2023 +0100

    Uranium eating aegun, second try (#17582)

    * new aegun

    * it just work

    * Update code/modules/projectiles/guns/energy/energy_gun.dm

    Co-authored-by: Molti <108117184+Moltijoe@users.noreply.github.com>

    * Add files via upload

    * dfuisqbdusq

    ---------

    Co-authored-by: Molti <108117184+Moltijoe@users.noreply.github.com>

commit 498e4e6ae4
Author: Changelogs <action@github.com>
Date:   Mon Feb 6 14:09:30 2023 +0000

    Automatic changelog compile [ci skip]

commit e37654707e
Author: Yogbot-13 <admin@yogstation.net>
Date:   Mon Feb 6 07:43:42 2023 -0500

    Automatic changelog generation #17768 [ci skip]

commit 5725a33174
Author: ynot01 <ynot000001@gmail.com>
Date:   Mon Feb 6 07:43:39 2023 -0500

    Foam darts now deal stamina damage if you're holding a toy foam gun (#17768)

    * Update foam_dart.dm

    * Update foam_dart.dm

commit d7f3ee4734
Author: Yogbot-13 <admin@yogstation.net>
Date:   Mon Feb 6 06:38:11 2023 -0500

    Automatic changelog generation #17707 [ci skip]

commit a6c0573423
Author: Mqiib <43766432+Mqiib@users.noreply.github.com>
Date:   Mon Feb 6 06:38:08 2023 -0500

    Shimmyjimmies ion bolts to be less "why are they like that" and more "hey that kinda makes sense" (#17707)

    * NEW IONS

    * forgor

    * hos gun shooty

commit cc868113c1
Author: Changelogs <action@github.com>
Date:   Sun Feb 5 22:15:50 2023 +0000

    Automatic changelog compile [ci skip]

commit 0343eb61c8
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sun Feb 5 14:37:43 2023 -0500

    Automatic changelog generation #17749 [ci skip]

commit e9bb5b6679
Author: ynot01 <ynot000001@gmail.com>
Date:   Sun Feb 5 14:37:41 2023 -0500

    Adds the rest of the roundstart race languages to multilingual quirks (#17749)

    * Update good.dm

    * Update code/datums/traits/good.dm

    Co-authored-by: 00ze-cyclone <96987868+00ze-cyclone@users.noreply.github.com>

    ---------

    Co-authored-by: 00ze-cyclone <96987868+00ze-cyclone@users.noreply.github.com>

commit 00d55013b1
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sun Feb 5 12:14:21 2023 -0500

    Automatic changelog generation #17779 [ci skip]

commit 85661c5d71
Author: LazennG <58535870+LazennG@users.noreply.github.com>
Date:   Sun Feb 5 09:14:18 2023 -0800

    buster arm patch (#17779)

commit 20b3adaae3
Author: Changelogs <action@github.com>
Date:   Sun Feb 5 14:07:35 2023 +0000

    Automatic changelog compile [ci skip]

commit 123638a50e
Author: Yogbot-13 <admin@yogstation.net>
Date:   Sun Feb 5 01:21:47 2023 -0500

    Automatic changelog generation #17774 [ci skip]

commit 707b8379f9
Author: ktlwjec <122807629+ktlwjec0@users.noreply.github.com>
Date:   Sun Feb 5 06:21:45 2023 +0000

    blue burger uses patty (#17774)

commit 6ba5dd3f5f
Author: Changelogs <action@github.com>
Date:   Sun Feb 5 06:10:13 2023 +0000

    Automatic changelog compile [ci skip]

* Revert "Squashed commit of the following:"

This reverts commit 294dc43cff.

* makes anomaly quiver printable

* running it back

* DIE ICON CORNFLAKES DIE

* Revert "DIE ICON CORNFLAKES DIE"

This reverts commit a5294ffab4.

* if this does not work I will scream

* i forgor lazenn redid this

* linter fixes?

* weh

* adds returning variable to break bow

* fixes quiver/hardlight outlines

* resets dmi files

* hello?

* indentation my beloathed

* icons? please don't github

* fixes gumballs/lollipops

* fixes foam force shotguns

* Revert "fixes foam force shotguns"

This reverts commit 37d079dc91.

* fixes foam force for real

* tidies up some sprites

* agh

* fixes bone-tipped nocked sprite

* makes it so beanbag "slugs" don't look like syringes

* fixes in-hand bone-tipped

* removes message_admins from debugging (oops)

* fixes an oversight with bone crossbow crafting

* aaa

* agh

* Agh x2

* should fix icon cornflakes

* killing

* holy shit i think i learned something today

* a g h

---------

Co-authored-by: nmajask <nmajask@gmail.com>
2023-05-06 23:11:36 -05:00

736 lines
27 KiB
Plaintext

#define MOVES_HITSCAN -1 //Not actually hitscan but close as we get without actual hitscan.
#define MUZZLE_EFFECT_PIXEL_INCREMENT 17 //How many pixels to move the muzzle flash up so your character doesn't look like they're shitting out lasers.
/obj/item/projectile
name = "projectile"
icon = 'icons/obj/projectiles.dmi'
icon_state = "bullet"
density = FALSE
anchored = TRUE
item_flags = ABSTRACT
pass_flags = PASSTABLE
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
movement_type = FLYING
wound_bonus = CANT_WOUND // can't wound by default
hitsound = 'sound/weapons/pierce.ogg'
var/hitsound_wall = ""
resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
var/def_zone = "" //Aiming at
var/atom/movable/firer = null//Who shot it
var/atom/fired_from = null // the atom that the projectile was fired from (gun, turret)
var/suppressed = FALSE //Attack message
var/yo = null
var/xo = null
var/atom/original = null // the original target clicked
var/turf/starting = null // the projectile's starting turf
var/list/permutated = list() // we've passed through these atoms, don't try to hit them again
var/p_x = 16
var/p_y = 16 // the pixel location of the tile that the player clicked. Default is the center
//Fired processing vars
var/fired = FALSE //Have we been fired yet
var/paused = FALSE //for suspending the projectile midair
var/last_projectile_move = 0
var/last_process = 0
var/time_offset = 0
var/datum/point/vector/trajectory
var/trajectory_ignore_forcemove = FALSE //instructs forceMove to NOT reset our trajectory to the new location!
var/speed = 0.8 //Amount of deciseconds it takes for projectile to travel
var/Angle = 0
var/original_angle = 0 //Angle at firing
var/nondirectional_sprite = FALSE //Set TRUE to prevent projectiles from having their sprites rotated based on firing angle
var/spread = 0 //amount (in degrees) of projectile spread
animate_movement = 0 //Use SLIDE_STEPS in conjunction with legacy
var/ricochets = 0
var/ricochets_max = 2
var/ricochet_chance = 30
var/force_hit = FALSE //If the object being hit can pass ths damage on to something else, it should not do it for this bullet.
//Atom penetration, set to mobs by default
var/penetrating = FALSE
var/penetrations = INFINITY
var/penetration_type = 0 //Set to 1 if you only want to have it penetrate objects. Set to 2 if you want it to penetrate objects and mobs.
//Hitscan
var/hitscan = FALSE //Whether this is hitscan. If it is, speed is basically ignored.
var/list/beam_segments //assoc list of datum/point or datum/point/vector, start = end. Used for hitscan effect generation.
var/datum/point/beam_index
var/turf/hitscan_last //last turf touched during hitscanning.
var/tracer_type
var/muzzle_type
var/impact_type
//Fancy hitscan lighting effects!
var/hitscan_light_intensity = 1.5
var/hitscan_light_range = 0.75
var/hitscan_light_color_override
var/muzzle_flash_intensity = 3
var/muzzle_flash_range = 1.5
var/muzzle_flash_color_override
var/impact_light_intensity = 3
var/impact_light_range = 2
var/impact_light_color_override
//Homing
var/homing = FALSE
var/homing_away = FALSE // In case you want it to instead turn away from the target, useful for when the projectile is going haywire!
var/atom/homing_target
var/homing_turn_speed = 10 //Angle per tick.
var/homing_inaccuracy_min = 0 //in pixels for these. offsets are set once when setting target.
var/homing_inaccuracy_max = 0
var/homing_offset_x = 0
var/homing_offset_y = 0
var/ignore_source_check = FALSE
var/damage = 10
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here
var/nodamage = FALSE //Determines if the projectile will skip any damage inflictions
var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb
var/projectile_type = /obj/item/projectile
var/range = 50 //This will de-increment every step. When 0, it will deletze the projectile.
var/decayedRange //stores original range
var/reflect_range_decrease = 5 //amount of original range that falls off when reflecting, so it doesn't go forever
var/reflectable = NONE // Can it be reflected or not?
//Effects
var/stun = 0
var/knockdown = 0
var/paralyze = 0
var/immobilize = 0
var/unconscious = 0
var/irradiate = 0
var/stutter = 0
var/slur = 0
var/eyeblur = 0
var/drowsy = 0
var/stamina = 0
var/jitter = 0
var/dismemberment = 0 //The higher the number, the greater the bonus to dismembering. 0 will not dismember at all.
var/impact_effect_type //what type of impact effect to show when hitting something
var/log_override = FALSE //is this type spammed enough to not log? (KAs)
var/temporary_unstoppable_movement = FALSE
///How much we want to drop both wound_bonus and bare_wound_bonus (to a minimum of 0 for the latter) per tile, for falloff purposes
var/wound_falloff_tile
var/splatter = FALSE // Make a cool splatter effect even if it doesn't do brute damage
/obj/item/projectile/Initialize()
. = ..()
permutated = list()
decayedRange = range
/obj/item/projectile/proc/Range()
range--
if(wound_bonus != CANT_WOUND)
wound_bonus += wound_falloff_tile
bare_wound_bonus = max(0, bare_wound_bonus + wound_falloff_tile)
if(range <= 0 && loc)
on_range()
/obj/item/projectile/proc/on_range() //if we want there to be effects when they reach the end of their range
qdel(src)
//to get the correct limb (if any) for the projectile hit message
/mob/living/proc/check_limb_hit(hit_zone)
if(has_limbs)
return hit_zone
/mob/living/carbon/check_limb_hit(hit_zone)
if(get_bodypart(hit_zone))
return hit_zone
else //when a limb is missing the damage is actually passed to the chest
return BODY_ZONE_CHEST
/obj/item/projectile/proc/prehit(atom/target)
return TRUE
/obj/item/projectile/proc/on_hit(atom/target, blocked = FALSE)
if(fired_from)
SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_ON_HIT, firer, target, Angle)
var/turf/target_loca = get_turf(target)
var/hitx
var/hity
if(target == original)
hitx = target.pixel_x + p_x - 16
hity = target.pixel_y + p_y - 16
else
hitx = target.pixel_x + rand(-8, 8)
hity = target.pixel_y + rand(-8, 8)
if(!nodamage && (damage_type == BRUTE || damage_type == BURN) && iswallturf(target_loca) && prob(75))
var/turf/closed/wall/W = target_loca
if(impact_effect_type && !hitscan)
new impact_effect_type(target_loca, hitx, hity)
W.add_dent(WALL_DENT_SHOT, hitx, hity)
if(penetrating && (penetration_type == 1 || penetration_type == 2) && penetrations > 0)
penetrations -= 1
return BULLET_ACT_FORCE_PIERCE
return BULLET_ACT_HIT
if(!isliving(target))
if(impact_effect_type && !hitscan)
new impact_effect_type(target_loca, hitx, hity)
if(penetrating && (penetration_type == 1 || penetration_type == 2) && penetrations > 0)
penetrations -= 1
return BULLET_ACT_FORCE_PIERCE
return BULLET_ACT_HIT
var/mob/living/L = target
if(blocked != 100) // not completely blocked
if(damage && L.blood_volume && (damage_type == BRUTE || splatter))
var/mob/living/carbon/C = L
var/splatter_dir = dir
if(starting)
splatter_dir = get_dir(starting, target_loca)
if(isalien(L) || ispolysmorph(L))
new /obj/effect/temp_visual/dir_setting/bloodsplatter/xenosplatter(target_loca, splatter_dir)
else if (iscarbon(L) && !(NOBLOOD in C.dna.species.species_traits))
new /obj/effect/temp_visual/dir_setting/bloodsplatter(target_loca, splatter_dir)
else
new /obj/effect/temp_visual/dir_setting/bloodsplatter/genericsplatter(target_loca, splatter_dir)
var/obj/item/bodypart/B = L.get_bodypart(def_zone)
if(B?.status == BODYPART_ROBOTIC) // So if you hit a robotic, it sparks instead of bloodspatters
do_sparks(2, FALSE, target.loc)
if(prob(25))
new /obj/effect/decal/cleanable/oil(target_loca)
if(prob(33))
L.add_splatter_floor(target_loca)
else if(impact_effect_type && !hitscan)
new impact_effect_type(target_loca, hitx, hity)
var/organ_hit_text = ""
var/limb_hit = L.check_limb_hit(def_zone)//to get the correct message info.
if(limb_hit)
organ_hit_text = " in \the [parse_zone(limb_hit)]"
if(suppressed)
playsound(loc, hitsound, 5, 1, -1)
to_chat(L, span_userdanger("You're shot by \a [src][organ_hit_text]!"))
else
if(hitsound)
var/volume = vol_by_damage()
playsound(loc, hitsound, volume, 1, -1)
L.visible_message(span_danger("[L] is hit by \a [src][organ_hit_text]!"), \
span_userdanger("[L] is hit by \a [src][organ_hit_text]!"), null, COMBAT_MESSAGE_RANGE)
L.on_hit(src)
var/viruslist = "" // yogs - adds viruslist variable
var/reagent_note
if(reagents && reagents.reagent_list)
reagent_note = " REAGENTS:"
for(var/datum/reagent/R in reagents.reagent_list)
reagent_note += "[R.name] ([num2text(R.volume)])"
// yogs start - Checks blood for disease
if(istype(R, /datum/reagent/blood))
var/datum/reagent/blood/RR = R
for(var/datum/disease/D in RR.data["viruses"])
viruslist += " [D.name]"
if(istype(D, /datum/disease/advance))
var/datum/disease/advance/DD = D
viruslist += " \[ symptoms: "
for(var/datum/symptom/S in DD.symptoms)
viruslist += "[S.name] "
viruslist += "\]"
if(viruslist)
investigate_log("[firer] injected [src] using a projectile with [viruslist] [blocked == 100 ? "BLOCKED" : ""]", INVESTIGATE_VIROLOGY)
log_game("[firer] injected [src] using a projectile with [viruslist] [blocked == 100 ? "BLOCKED" : ""]")
// yogs end
if(ismob(firer))
log_combat(firer, L, "shot", src, reagent_note)
else
L.log_message("has been shot by [firer] with [src]", LOG_ATTACK, color="orange")
return L.apply_effects(stun, knockdown, unconscious, irradiate, slur, stutter, eyeblur, drowsy, blocked, stamina, jitter, paralyze, immobilize)
/obj/item/projectile/proc/vol_by_damage()
if(src.damage)
return clamp((src.damage) * 0.67, 30, 100)// Multiply projectile damage by 0.67, then CLAMP the value between 30 and 100
else
return 50 //if the projectile doesn't do damage, play its hitsound at 50% volume
/obj/item/projectile/proc/on_ricochet(atom/A)
return
/obj/item/projectile/proc/store_hitscan_collision(datum/point/pcache)
beam_segments[beam_index] = pcache
beam_index = pcache
beam_segments[beam_index] = null
/obj/item/projectile/Bump(atom/A)
if(!trajectory)
qdel(src)
return
var/datum/point/pcache = trajectory.copy_to()
var/turf/T = get_turf(A)
if(check_ricochet(A) && check_ricochet_flag(A) && ricochets < ricochets_max)
ricochets++
if(A.handle_ricochet(src))
on_ricochet(A)
ignore_source_check = TRUE
decayedRange = max(0, decayedRange - reflect_range_decrease)
range = decayedRange
if(hitscan)
store_hitscan_collision(pcache)
return TRUE
var/distance = get_dist(T, starting) // Get the distance between the turf shot from and the mob we hit and use that for the calculations.
def_zone = ran_zone(def_zone, max(100-(7*distance), 5)) //Lower accurancy/longer range tradeoff. 7 is a balanced number to use.
if(isturf(A) && hitsound_wall)
var/volume = clamp(vol_by_damage() + 20, 0, 100)
if(suppressed)
volume = 5
playsound(loc, hitsound_wall, volume, 1, -1)
return process_hit(T, select_target(T, A))
#define QDEL_SELF 1 //Delete if we're not UNSTOPPABLE flagged non-temporarily
#define DO_NOT_QDEL 2 //Pass through.
#define FORCE_QDEL 3 //Force deletion.
/obj/item/projectile/proc/process_hit(turf/T, atom/target, qdel_self, hit_something = FALSE) //probably needs to be reworked entirely when pixel movement is done.
if(QDELETED(src) || !T || !target) //We're done, nothing's left.
if((qdel_self == FORCE_QDEL) || ((qdel_self == QDEL_SELF) && !temporary_unstoppable_movement && !CHECK_BITFIELD(movement_type, UNSTOPPABLE)))
qdel(src)
return hit_something
permutated |= target //Make sure we're never hitting it again. If we ever run into weirdness with piercing projectiles needing to hit something multiple times.. well.. that's a to-do.
if(!prehit(target))
return process_hit(T, select_target(T), qdel_self, hit_something) //Hit whatever else we can since that didn't work.
var/result = target.bullet_act(src, def_zone)
if(result == BULLET_ACT_FORCE_PIERCE)
if(!CHECK_BITFIELD(movement_type, UNSTOPPABLE))
temporary_unstoppable_movement = TRUE
ENABLE_BITFIELD(movement_type, UNSTOPPABLE)
return process_hit(T, select_target(T), qdel_self, TRUE) //Hit whatever else we can since we're piercing through but we're still on the same tile.
else if(result == BULLET_ACT_PENETRATE) // This is slightly different from ACT_TURF in that it goes through the first thing
return process_hit(T, select_target(T), qdel_self, TRUE)
else if(result == BULLET_ACT_TURF) //We hit the turf but instead we're going to also hit something else on it.
return process_hit(T, select_target(T), QDEL_SELF, TRUE)
else //Whether it hit or blocked, we're done!
qdel_self = QDEL_SELF
hit_something = TRUE
if((qdel_self == FORCE_QDEL) || ((qdel_self == QDEL_SELF) && !temporary_unstoppable_movement && !CHECK_BITFIELD(movement_type, UNSTOPPABLE)))
qdel(src)
return hit_something
#undef QDEL_SELF
#undef DO_NOT_QDEL
#undef FORCE_QDEL
/obj/item/projectile/proc/select_target(turf/T, atom/target) //Select a target from a turf.
if((original in T) && can_hit_target(original, permutated, TRUE, TRUE))
return original
if(target && can_hit_target(target, permutated, target == original, TRUE))
return target
var/list/mob/living/possible_mobs = typecache_filter_list(T, GLOB.typecache_mob)
var/list/mob/mobs = list()
for(var/mob/living/M in possible_mobs)
if(!can_hit_target(M, permutated, M == original, TRUE))
continue
mobs += M
var/mob/M = safepick(mobs)
if(M)
return M.lowest_buckled_mob()
var/list/obj/possible_objs = typecache_filter_list(T, GLOB.typecache_machine_or_structure)
var/list/obj/objs = list()
for(var/obj/O in possible_objs)
if(!can_hit_target(O, permutated, O == original, TRUE))
continue
objs += O
var/obj/O = safepick(objs)
if(O)
return O
//Nothing else is here that we can hit, hit the turf if we haven't.
if(!(T in permutated) && can_hit_target(T, permutated, T == original, TRUE))
return T
//Returns null if nothing at all was found.
/obj/item/projectile/proc/check_ricochet()
if(prob(ricochet_chance))
return TRUE
return FALSE
/obj/item/projectile/proc/check_ricochet_flag(atom/A)
if(A.flags_1 & CHECK_RICOCHET_1)
return TRUE
return FALSE
/obj/item/projectile/proc/return_predicted_turf_after_moves(moves, forced_angle) //I say predicted because there's no telling that the projectile won't change direction/location in flight.
if(!trajectory && isnull(forced_angle) && isnull(Angle))
return FALSE
var/datum/point/vector/current = trajectory
if(!current)
var/turf/T = get_turf(src)
current = new(T.x, T.y, T.z, pixel_x, pixel_y, isnull(forced_angle)? Angle : forced_angle, SSprojectiles.global_pixel_speed)
var/datum/point/vector/v = current.return_vector_after_increments(moves * SSprojectiles.global_iterations_per_move)
return v.return_turf()
/obj/item/projectile/proc/return_pathing_turfs_in_moves(moves, forced_angle)
var/turf/current = get_turf(src)
var/turf/ending = return_predicted_turf_after_moves(moves, forced_angle)
return getline(current, ending)
/obj/item/projectile/Process_Spacemove(movement_dir = 0)
return TRUE //Bullets don't drift in space
/obj/item/projectile/process()
last_process = world.time
if(!loc || !fired || !trajectory)
fired = FALSE
return PROCESS_KILL
if(paused || !isturf(loc))
last_projectile_move += world.time - last_process //Compensates for pausing, so it doesn't become a hitscan projectile when unpaused from charged up ticks.
return
var/elapsed_time_deciseconds = (world.time - last_projectile_move) + time_offset
time_offset = 0
var/required_moves = speed > 0? FLOOR(elapsed_time_deciseconds / speed, 1) : MOVES_HITSCAN //Would be better if a 0 speed made hitscan but everyone hates those so I can't make it a universal system :<
if(required_moves == MOVES_HITSCAN)
required_moves = SSprojectiles.global_max_tick_moves
else
if(required_moves > SSprojectiles.global_max_tick_moves)
var/overrun = required_moves - SSprojectiles.global_max_tick_moves
required_moves = SSprojectiles.global_max_tick_moves
time_offset += overrun * speed
time_offset += MODULUS(elapsed_time_deciseconds, speed)
for(var/i in 1 to required_moves)
pixel_move(1, FALSE)
/obj/item/projectile/proc/fire(angle, atom/direct_target)
if(fired_from)
SEND_SIGNAL(fired_from, COMSIG_PROJECTILE_BEFORE_FIRE, src, original)
//If no angle needs to resolve it from xo/yo!
if(!log_override && firer && original)
log_combat(firer, original, "fired at", src, "from [get_area_name(src, TRUE)]")
if(direct_target)
if(prehit(direct_target))
direct_target.bullet_act(src, def_zone)
qdel(src)
return
if(isnum(angle))
setAngle(angle)
if(spread)
setAngle(Angle + ((rand() - 0.5) * spread))
var/turf/starting = get_turf(src)
if(isnull(Angle)) //Try to resolve through offsets if there's no angle set.
if(isnull(xo) || isnull(yo))
stack_trace("WARNING: Projectile [type] deleted due to being unable to resolve a target after angle was null!")
qdel(src)
return
var/turf/target = locate(clamp(starting + xo, 1, world.maxx), clamp(starting + yo, 1, world.maxy), starting.z)
setAngle(Get_Angle(src, target))
original_angle = Angle
if(!nondirectional_sprite)
var/matrix/M = new
M.Turn(Angle)
transform = M
trajectory_ignore_forcemove = TRUE
forceMove(starting)
trajectory_ignore_forcemove = FALSE
trajectory = new(starting.x, starting.y, starting.z, pixel_x, pixel_y, Angle, SSprojectiles.global_pixel_speed)
last_projectile_move = world.time
fired = TRUE
if(hitscan)
process_hitscan()
if(!(datum_flags & DF_ISPROCESSING))
START_PROCESSING(SSprojectiles, src)
pixel_move(1, FALSE) //move it now!
/obj/item/projectile/proc/setAngle(new_angle) //wrapper for overrides.
Angle = new_angle
if(!nondirectional_sprite)
var/matrix/M = new
M.Turn(Angle)
transform = M
if(trajectory)
trajectory.set_angle(new_angle)
return TRUE
/obj/item/projectile/forceMove(atom/target)
if(!isloc(target) || !isloc(loc) || !z)
return ..()
var/zc = target.z != z
var/old = loc
if(zc)
before_z_change(old, target)
. = ..()
if(trajectory && !trajectory_ignore_forcemove && isturf(target))
if(hitscan)
finalize_hitscan_and_generate_tracers(FALSE)
trajectory.initialize_location(target.x, target.y, target.z, 0, 0)
if(hitscan)
record_hitscan_start(RETURN_PRECISE_POINT(src))
if(zc)
after_z_change(old, target)
/obj/item/projectile/proc/after_z_change(atom/olcloc, atom/newloc)
/obj/item/projectile/proc/before_z_change(atom/oldloc, atom/newloc)
/obj/item/projectile/vv_edit_var(var_name, var_value)
switch(var_name)
if(NAMEOF(src, Angle))
setAngle(var_value)
return TRUE
else
return ..()
/obj/item/projectile/proc/set_pixel_speed(new_speed)
if(trajectory)
trajectory.set_speed(new_speed)
return TRUE
return FALSE
/obj/item/projectile/proc/record_hitscan_start(datum/point/pcache)
if(pcache)
beam_segments = list()
beam_index = pcache
beam_segments[beam_index] = null //record start.
/obj/item/projectile/proc/process_hitscan()
var/safety = range * 3
record_hitscan_start(RETURN_POINT_VECTOR_INCREMENT(src, Angle, MUZZLE_EFFECT_PIXEL_INCREMENT, 1))
while(loc && !QDELETED(src))
if(paused)
stoplag(1)
continue
if(safety-- <= 0)
if(loc)
Bump(loc)
if(!QDELETED(src))
qdel(src)
return //Kill!
pixel_move(1, TRUE)
/obj/item/projectile/proc/pixel_move(trajectory_multiplier, hitscanning = FALSE)
if(!loc || !trajectory)
return
last_projectile_move = world.time
if(!nondirectional_sprite && !hitscanning)
var/matrix/M = new
M.Turn(Angle)
transform = M
if(homing)
process_homing()
var/forcemoved = FALSE
for(var/i in 1 to SSprojectiles.global_iterations_per_move)
if(QDELETED(src))
return
trajectory.increment(trajectory_multiplier)
var/turf/T = trajectory.return_turf()
if(!istype(T))
qdel(src)
return
if(T.z != loc.z)
var/old = loc
before_z_change(loc, T)
trajectory_ignore_forcemove = TRUE
forceMove(T)
trajectory_ignore_forcemove = FALSE
after_z_change(old, loc)
if(!hitscanning)
pixel_x = trajectory.return_px()
pixel_y = trajectory.return_py()
forcemoved = TRUE
hitscan_last = loc
else if(T != loc)
step_towards(src, T)
hitscan_last = loc
if(!hitscanning && !forcemoved)
pixel_x = trajectory.return_px() - trajectory.mpx * trajectory_multiplier * SSprojectiles.global_iterations_per_move
pixel_y = trajectory.return_py() - trajectory.mpy * trajectory_multiplier * SSprojectiles.global_iterations_per_move
animate(src, pixel_x = trajectory.return_px(), pixel_y = trajectory.return_py(), time = 0.1 SECONDS, flags = ANIMATION_END_NOW)
Range()
/obj/item/projectile/proc/process_homing() //may need speeding up in the future performance wise.
if(!homing_target)
return FALSE
var/datum/point/PT = RETURN_PRECISE_POINT(homing_target)
PT.x += clamp(homing_offset_x, 1, world.maxx)
PT.y += clamp(homing_offset_y, 1, world.maxy)
var/angle = closer_angle_difference(Angle, angle_between_points(RETURN_PRECISE_POINT(src), PT))
setAngle(Angle + clamp(homing_away ? -angle : angle, -homing_turn_speed, homing_turn_speed))
/obj/item/projectile/proc/set_homing_target(atom/A)
if(!A || (!isturf(A) && !isturf(A.loc)))
return FALSE
homing = TRUE
homing_target = A
homing_offset_x = rand(homing_inaccuracy_min, homing_inaccuracy_max)
homing_offset_y = rand(homing_inaccuracy_min, homing_inaccuracy_max)
if(prob(50))
homing_offset_x = -homing_offset_x
if(prob(50))
homing_offset_y = -homing_offset_y
//Returns true if the target atom is on our current turf and above the right layer
//If direct target is true it's the originally clicked target.
/obj/item/projectile/proc/can_hit_target(atom/target, list/passthrough, direct_target = FALSE, ignore_loc = FALSE)
if(QDELETED(target))
return FALSE
if(!ignore_source_check && firer)
var/mob/M = firer
if(isliving(M))
var/mob/living/L = M
if((target in L.hasparasites()) && target.loc == L.loc)
return FALSE
if((target == firer) || ((target == firer.loc) && (ismecha(firer.loc) || isspacepod(firer.loc))) || (target in firer.buckled_mobs) || (istype(M) && (M.buckled == target))) //cannot shoot yourself or your mech // yogs - or your spacepod)
return FALSE
if(!ignore_loc && (loc != target.loc))
return FALSE
if(target in passthrough)
return FALSE
if(target.density) //This thing blocks projectiles, hit it regardless of layer/mob stuns/etc.
return TRUE
if(!isliving(target))
if(target.layer < PROJECTILE_HIT_THRESHHOLD_LAYER)
return FALSE
else
var/mob/living/L = target
if(!direct_target)
if(!CHECK_BITFIELD(L.mobility_flags, MOBILITY_STAND) && (L in range(1, starting))) //if we're shooting over someone who's prone and nearby bc formations are cool and not going to be unbalanced
return FALSE
if(!CHECK_BITFIELD(L.mobility_flags, MOBILITY_USE | MOBILITY_STAND | MOBILITY_MOVE) || !(L.stat == CONSCIOUS)) //If they're able to 1. stand or 2. use items or 3. move, AND they are not softcrit, they are not stunned enough to dodge projectiles passing over.
return FALSE
return TRUE
//Spread is FORCED!
/obj/item/projectile/proc/preparePixelProjectile(atom/target, atom/source, params, spread = 0)
var/turf/curloc = get_turf(source)
var/turf/targloc = get_turf(target)
trajectory_ignore_forcemove = TRUE
forceMove(get_turf(source))
trajectory_ignore_forcemove = FALSE
starting = get_turf(source)
original = target
if(targloc || !params)
yo = targloc.y - curloc.y
xo = targloc.x - curloc.x
setAngle(Get_Angle(src, targloc) + spread)
if(isliving(source) && params)
var/list/calculated = calculate_projectile_angle_and_pixel_offsets(source, params)
p_x = calculated[2]
p_y = calculated[3]
setAngle(calculated[1] + spread)
else if(targloc)
yo = targloc.y - curloc.y
xo = targloc.x - curloc.x
setAngle(Get_Angle(src, targloc) + spread)
else
stack_trace("WARNING: Projectile [type] fired without either mouse parameters, or a target atom to aim at!")
qdel(src)
/proc/calculate_projectile_angle_and_pixel_offsets(mob/user, params)
var/list/mouse_control = params2list(params)
var/p_x = 0
var/p_y = 0
var/angle = 0
if(mouse_control["icon-x"])
p_x = text2num(mouse_control["icon-x"])
if(mouse_control["icon-y"])
p_y = text2num(mouse_control["icon-y"])
if(mouse_control["screen-loc"])
//Split screen-loc up into X+Pixel_X and Y+Pixel_Y
var/list/screen_loc_params = splittext(mouse_control["screen-loc"], ",")
//Split X+Pixel_X up into list(X, Pixel_X)
var/list/screen_loc_X = splittext(screen_loc_params[1],":")
//Split Y+Pixel_Y up into list(Y, Pixel_Y)
var/list/screen_loc_Y = splittext(screen_loc_params[2],":")
var/x = text2num(screen_loc_X[1]) * 32 + text2num(screen_loc_X[2]) - 32
var/y = text2num(screen_loc_Y[1]) * 32 + text2num(screen_loc_Y[2]) - 32
//Calculate the "resolution" of screen based on client's view and world's icon size. This will work if the user can view more tiles than average.
var/list/screenview = getviewsize(user.client.view)
var/screenviewX = screenview[1] * world.icon_size
var/screenviewY = screenview[2] * world.icon_size
var/ox = round(screenviewX/2) - user.client.pixel_x //"origin" x
var/oy = round(screenviewY/2) - user.client.pixel_y //"origin" y
angle = ATAN2(y - oy, x - ox)
return list(angle, p_x, p_y)
/obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it.
. = ..()
if(isliving(AM) && !(pass_flags & PASSMOB))
var/mob/living/L = AM
if(can_hit_target(L, permutated, (AM == original)))
Bump(AM)
/obj/item/projectile/Move(atom/newloc, dir = NONE)
. = ..()
if(.)
if(temporary_unstoppable_movement)
temporary_unstoppable_movement = FALSE
DISABLE_BITFIELD(movement_type, UNSTOPPABLE)
if(fired && can_hit_target(original, permutated, TRUE))
Bump(original)
/obj/item/projectile/Destroy()
if(hitscan)
finalize_hitscan_and_generate_tracers()
STOP_PROCESSING(SSprojectiles, src)
cleanup_beam_segments()
qdel(trajectory)
return ..()
/obj/item/projectile/proc/cleanup_beam_segments()
QDEL_LIST_ASSOC(beam_segments)
beam_segments = list()
qdel(beam_index)
/obj/item/projectile/proc/finalize_hitscan_and_generate_tracers(impacting = TRUE)
if(trajectory && beam_index)
var/datum/point/pcache = trajectory.copy_to()
beam_segments[beam_index] = pcache
generate_hitscan_tracers(null, null, impacting)
/obj/item/projectile/proc/generate_hitscan_tracers(cleanup = TRUE, duration = 3, impacting = TRUE)
if(!length(beam_segments))
return
if(tracer_type)
var/tempref = REF(src)
for(var/datum/point/p in beam_segments)
generate_tracer_between_points(p, beam_segments[p], tracer_type, color, duration, hitscan_light_range, hitscan_light_color_override, hitscan_light_intensity, tempref)
if(muzzle_type && duration > 0)
var/datum/point/p = beam_segments[1]
var/atom/movable/thing = new muzzle_type
p.move_atom_to_src(thing)
var/matrix/M = new
M.Turn(original_angle)
thing.transform = M
thing.color = color
thing.set_light(muzzle_flash_range, muzzle_flash_intensity, muzzle_flash_color_override? muzzle_flash_color_override : color)
QDEL_IN(thing, duration)
if(impacting && impact_type && duration > 0)
var/datum/point/p = beam_segments[beam_segments[beam_segments.len]]
var/atom/movable/thing = new impact_type
p.move_atom_to_src(thing)
var/matrix/M = new
M.Turn(Angle)
thing.transform = M
thing.color = color
thing.set_light(impact_light_range, impact_light_intensity, impact_light_color_override? impact_light_color_override : color)
QDEL_IN(thing, duration)
if(cleanup)
cleanup_beam_segments()
/obj/item/projectile/experience_pressure_difference()
return