Files
Yogstation/code/modules/mob/mob.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

1282 lines
39 KiB
Plaintext

/**
* Delete a mob
*
* Removes mob from the following global lists
* * GLOB.mob_list
* * GLOB.dead_mob_list
* * GLOB.alive_mob_list
* * GLOB.all_clockwork_mobs
* * GLOB.mob_directory
*
* Unsets the focus var
*
* Clears alerts for this mob
*
* Resets all the observers perspectives to the tile this mob is on
*
* qdels any client colours in place on this mob
*
* Ghostizes the client attached to this mob
*
* Parent call
*
* Returns QDEL_HINT_HARDDEL (don't change this)
*/
/mob/Destroy()//This makes sure that mobs with clients/keys are not just deleted from the game.
remove_from_mob_list()
remove_from_dead_mob_list()
remove_from_alive_mob_list()
remove_from_mob_suicide_list()
focus = null
if(length(progressbars))
stack_trace("[src] destroyed with elements in its progressbars list")
progressbars = null
for (var/alert in alerts)
clear_alert(alert, TRUE)
if(observers?.len)
for(var/mob/dead/observe as anything in observers)
observe.reset_perspective(null)
qdel(hud_used)
QDEL_LIST(client_colours)
ghostize() //False, since we're deleting it currently
if(mind?.current == src) //Let's just be safe yeah? This will occasionally be cleared, but not always. Can't do it with ghostize without changing behavior
mind.current = null
return ..()
/**
* Intialize a mob
*
* Sends global signal COMSIG_GLOB_MOB_CREATED
*
* Adds to global lists
* * GLOB.mob_list
* * GLOB.mob_directory (by tag)
* * GLOB.dead_mob_list - if mob is dead
* * GLOB.alive_mob_list - if the mob is alive
*
* Other stuff:
* * Sets the mob focus to itself
* * Generates huds
* * If there are any global alternate apperances apply them to this mob
* * set a random nutrition level
* * Intialize the movespeed of the mob
*/
/mob/Initialize()
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_MOB_CREATED, src)
add_to_mob_list()
if(stat == DEAD)
remove_from_alive_mob_list()
else
add_to_alive_mob_list()
set_focus(src)
prepare_huds()
for(var/v in GLOB.active_alternate_appearances)
if(!v)
continue
var/datum/atom_hud/alternate_appearance/AA = v
AA.onNewMob(src)
set_nutrition(rand(NUTRITION_LEVEL_START_MIN, NUTRITION_LEVEL_START_MAX))
. = ..()
update_config_movespeed()
update_movespeed(TRUE)
/**
* Generate the tag for this mob
*
* This is simply "mob_"+ a global incrementing counter that goes up for every mob
*/
/mob/GenerateTag()
tag = "mob_[next_mob_id++]"
/**
* Prepare the huds for this atom
*
* Goes through hud_possible list and adds the images to the hud_list variable (if not already
* cached)
*/
/atom/proc/prepare_huds()
hud_list = list()
for(var/hud in hud_possible)
var/hint = hud_possible[hud]
switch(hint)
if(HUD_LIST_LIST)
hud_list[hud] = list()
else
var/image/I = image('icons/mob/hud.dmi', src, "")
I.appearance_flags = RESET_COLOR|RESET_TRANSFORM
hud_list[hud] = I
/**
* Some kind of debug verb that gives atmosphere environment details
*/
/mob/proc/Cell()
set category = "Misc.Server Debug"
set hidden = 1
if(!loc)
return 0
var/datum/gas_mixture/environment = loc.return_air()
var/t = span_notice("Coordinates: [x],[y] \n")
t += span_danger("Temperature: [environment.return_temperature()] \n")
for(var/id in environment.get_gases())
if(environment.get_moles(id))
t+=span_notice("[GLOB.meta_gas_info[id][META_GAS_NAME]]: [environment.get_moles(id)] \n")
to_chat(usr, t)
/**
* Return the desc of this mob for a photo
*/
/mob/proc/get_photo_description(obj/item/camera/camera)
return "a ... thing?"
/**
* Show a message to this mob (visual)
*/
/mob/proc/show_message(msg, type, alt_msg, alt_type, avoid_highlighting = FALSE)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2)
if(!client)
return
msg = copytext_char(msg, 1, MAX_MESSAGE_LEN)
if(type)
if(type & 1 && eye_blind )//Vision related
if(!alt_msg)
return
else
msg = alt_msg
type = alt_type
if(type & 2 && !can_hear())//Hearing related
if(!alt_msg)
return
else
msg = alt_msg
type = alt_type
if(type & 1 && eye_blind)
return
// voice muffling
if(stat == UNCONSCIOUS)
if(type & 2) //audio
to_chat(src, "<I>... You can almost hear something ...</I>")
else
to_chat(src, msg, avoid_highlighting = avoid_highlighting)
/**
* Generate a visible message from this atom
*
* Show a message to all player mobs who sees this atom
*
* Show a message to the src mob (if the src is a mob)
*
* Use for atoms performing visible actions
*
* message is output to anyone who can see, e.g. "The [src] does something!"
*
* Vars:
* * self_message (optional) is what the src mob sees e.g. "You do something!"
* * blind_message (optional) is what blind people will hear e.g. "You hear something!"
* * vision_distance (optional) define how many tiles away the message can be seen.
* * ignored_mob (optional) doesn't show any message to a given mob if TRUE.
*/
/atom/proc/visible_message(message, self_message, blind_message, vision_distance = DEFAULT_MESSAGE_RANGE, list/ignored_mobs, visible_message_flags = NONE)
var/turf/T = get_turf(src)
if(!T)
return
if(!islist(ignored_mobs))
ignored_mobs = list(ignored_mobs)
var/list/hearers = get_hearers_in_view(vision_distance, src) //caches the hearers and then removes ignored mobs.
hearers -= ignored_mobs
if(self_message)
hearers -= src
var/raw_msg = message
if(visible_message_flags & EMOTE_MESSAGE)
message = "<b>[src]</b> [message]"
for(var/mob/M in hearers)
if(!M.client)
continue
//This entire if/else chain could be in two lines but isn't for readibilties sake.
var/msg = message
if(M.see_invisible < invisibility)//if src is invisible to M
msg = blind_message
else if(T != loc && T != src) //if src is inside something and not a turf.
msg = blind_message
else if(M.lighting_alpha > LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE && T.is_softly_lit() && !in_range(T,M)) //if it is too dark.
msg = blind_message
if(!msg)
continue
if(visible_message_flags & EMOTE_MESSAGE && runechat_prefs_check(M, visible_message_flags) && !is_blind(M))
M.create_chat_message(src, raw_message = raw_msg, runechat_flags = visible_message_flags)
M.show_message(msg, MSG_VISUAL, blind_message, MSG_AUDIBLE)
/mob/visible_message(message, self_message, blind_message, vision_distance = DEFAULT_MESSAGE_RANGE, list/ignored_mobs, visible_message_flags = NONE)
. = ..()
if(self_message)
show_message(self_message, MSG_VISUAL, blind_message, MSG_AUDIBLE)
/**
* Show a message to all mobs in earshot of this atom
*
* Use for objects performing audible actions
*
* vars:
* * message is the message output to anyone who can hear.
* * deaf_message (optional) is what deaf people will see.
* * hearing_distance (optional) is the range, how many tiles away the message can be heard.
*/
/atom/proc/audible_message(message, deaf_message, hearing_distance = DEFAULT_MESSAGE_RANGE, self_message, audible_message_flags = NONE)
var/list/hearers = get_hearers_in_view(hearing_distance, src)
if(self_message)
hearers -= src
var/raw_msg = message
if(audible_message_flags & EMOTE_MESSAGE)
message = "<b>[src]</b> [message]"
for(var/mob/M in hearers)
if(audible_message_flags & EMOTE_MESSAGE && runechat_prefs_check(M, audible_message_flags) && M.can_hear())
M.create_chat_message(src, raw_message = raw_msg, runechat_flags = audible_message_flags)
M.show_message(message, MSG_AUDIBLE, deaf_message, MSG_VISUAL)
/mob/audible_message(message, deaf_message, hearing_distance = DEFAULT_MESSAGE_RANGE, self_message, audible_message_flags = NONE)
. = ..()
if(self_message)
show_message(self_message, MSG_AUDIBLE, deaf_message, MSG_VISUAL)
///Returns the client runechat visible messages preference according to the message type.
/atom/proc/runechat_prefs_check(mob/target, visible_message_flags = NONE)
if(!target.client?.prefs.read_preference(/datum/preference/toggle/enable_runechat))
return FALSE
if (!target.client?.prefs.read_preference(/datum/preference/toggle/enable_runechat_non_mobs))
return FALSE
if(visible_message_flags & EMOTE_MESSAGE && !target.client.prefs.read_preference(/datum/preference/toggle/see_rc_emotes))
return FALSE
return TRUE
/mob/runechat_prefs_check(mob/target, visible_message_flags = NONE)
if(!target.client?.prefs.read_preference(/datum/preference/toggle/enable_runechat))
return FALSE
if(visible_message_flags & EMOTE_MESSAGE && !target.client.prefs.read_preference(/datum/preference/toggle/see_rc_emotes))
return FALSE
return TRUE
///Get the item on the mob in the storage slot identified by the id passed in
/mob/proc/get_item_by_slot(slot_id)
return null
///Is the mob restrained
/mob/proc/restrained(ignore_grab)
return
///Is the mob incapacitated
/mob/proc/incapacitated(ignore_restraints = FALSE, ignore_grab = FALSE, check_immobilized = FALSE)
return
/**
* This proc is called whenever someone clicks an inventory ui slot.
*
* Mostly tries to put the item into the slot if possible, or call attack hand
* on the item in the slot if the users active hand is empty
*/
/mob/proc/attack_ui(slot)
var/obj/item/W = get_active_held_item()
if(istype(W))
if(equip_to_slot_if_possible(W, slot,0,0,0))
return 1
if(!W)
// Activate the item
var/obj/item/I = get_item_by_slot(slot)
if(istype(I))
I.attack_hand(src)
return 0
/**
* Try to equip an item to a slot on the mob
*
* This is a SAFE proc. Use this instead of equip_to_slot()!
*
* set qdel_on_fail to have it delete W if it fails to equip
*
* set disable_warning to disable the 'you are unable to equip that' warning.
*
* unset redraw_mob to prevent the mob icons from being redrawn at the end.
*/
/mob/proc/equip_to_slot_if_possible(obj/item/W, slot, qdel_on_fail = FALSE, disable_warning = FALSE, redraw_mob = TRUE, bypass_equip_delay_self = FALSE, initial = FALSE)
if(!istype(W))
return FALSE
if(!W.mob_can_equip(src, null, slot, disable_warning, bypass_equip_delay_self))
if(qdel_on_fail)
qdel(W)
else
if(!disable_warning)
to_chat(src, span_warning("You are unable to equip that!"))
return FALSE
equip_to_slot(W, slot, redraw_mob, initial) //This proc should not ever fail.
return TRUE
/**
* Actually equips an item to a slot (UNSAFE)
*
* This is an UNSAFE proc. It merely handles the actual job of equipping. All the checks on
* whether you can or can't equip need to be done before! Use mob_can_equip() for that task.
*
*In most cases you will want to use equip_to_slot_if_possible()
*/
/mob/proc/equip_to_slot(obj/item/W, slot)
return
/**
* Equip an item to the slot or delete
*
* This is just a commonly used configuration for the equip_to_slot_if_possible() proc, used to
* equip people when the round starts and when events happen and such.
*
* Also bypasses equip delay checks, since the mob isn't actually putting it on.
*/
/mob/proc/equip_to_slot_or_del(obj/item/W, slot, initial = FALSE)
return equip_to_slot_if_possible(W, slot, TRUE, TRUE, FALSE, TRUE, initial)
/**
* Auto equip the passed in item the appropriate slot based on equipment priority
*
* puts the item "W" into an appropriate slot in a human's inventory
*
* returns 0 if it cannot, 1 if successful
*/
/mob/proc/equip_to_appropriate_slot(obj/item/W)
if(!istype(W))
return 0
var/slot_priority = W.slot_equipment_priority
if(!slot_priority)
slot_priority = list( \
SLOT_BACK, SLOT_WEAR_ID,\
SLOT_W_UNIFORM, SLOT_WEAR_SUIT,\
SLOT_WEAR_MASK, SLOT_HEAD, SLOT_NECK,\
SLOT_SHOES, SLOT_GLOVES,\
SLOT_EARS, SLOT_GLASSES,\
SLOT_BELT, SLOT_S_STORE,\
SLOT_L_STORE, SLOT_R_STORE,\
SLOT_GENERC_DEXTROUS_STORAGE\
)
for(var/slot in slot_priority)
if(equip_to_slot_if_possible(W, slot, 0, 1, 1)) //qdel_on_fail = 0; disable_warning = 1; redraw_mob = 1
return 1
return 0
/**
* Reset the attached clients perspective (viewpoint)
*
* reset_perspective() set eye to common default : mob on turf, loc otherwise
* reset_perspective(thing) set the eye to the thing (if it's equal to current default reset to mob perspective)
*/
/mob/proc/reset_perspective(atom/A)
if(client)
if(A)
if(ismovable(A))
//Set the the thing unless it's us
if(A != src)
client.perspective = EYE_PERSPECTIVE
client.eye = A
else
client.eye = client.mob
client.perspective = MOB_PERSPECTIVE
else if(isturf(A))
//Set to the turf unless it's our current turf
if(A != loc)
client.perspective = EYE_PERSPECTIVE
client.eye = A
else
client.eye = client.mob
client.perspective = MOB_PERSPECTIVE
else
//Do nothing
else
//Reset to common defaults: mob if on turf, otherwise current loc
if(isturf(loc))
client.eye = client.mob
client.perspective = MOB_PERSPECTIVE
else
client.perspective = EYE_PERSPECTIVE
client.eye = loc
return 1
/// Show the mob's inventory to another mob
/mob/proc/show_inv(mob/user)
return
/**
* Examine a mob
*
* mob verbs are faster than object verbs. See
* [this byond forum post](https://secure.byond.com/forum/?post=1326139&page=2#comment8198716)
* for why this isn't atom/verb/examine()
*/
/mob/verb/examinate(atom/A as mob|obj|turf in view()) //It used to be oview(12), but I can't really say why
set name = "Examine"
set category = "IC"
if(isturf(A) && !(sight & SEE_TURFS) && !(A in view(client ? client.view : world.view, src)))
// shift-click catcher may issue examinate() calls for out-of-sight turfs
return
if(is_blind(src) && !blind_examine_check(A))
return
face_atom(A)
var/list/result
if(client)
if(istype(src, /mob/living/silicon/ai) && istype(A, /mob/living/carbon/human)) //Override for AI's examining humans
var/mob/living/carbon/human/H = A
result = H.examine_simple(src)
else
LAZYINITLIST(client.recent_examines)
if(!(isnull(client.recent_examines[A]) || client.recent_examines[A] < world.time)) // originally this wasn't an assoc list, but sometimes the timer failed and atoms stayed in a client's recent_examines, so we check here manually
var/extra_info = A.examine_more(src)
result = extra_info
if(!result)
client.recent_examines[A] = world.time + EXAMINE_MORE_WINDOW
result = A.examine(src)
addtimer(CALLBACK(src, .proc/clear_from_recent_examines, A), RECENT_EXAMINE_MAX_WINDOW)
handle_eye_contact(A)
else
result = A.examine(src) // if a tree is examined but no client is there to see it, did the tree ever really exist?
if(result.len)
for(var/i in 1 to (length(result) - 1))
result[i] = "[result[i]]\n"
to_chat(src, examine_block("<span class='infoplain'>[result.Join()]</span>"))
SEND_SIGNAL(src, COMSIG_MOB_EXAMINATE, A)
/mob/proc/clear_from_recent_examines(atom/A)
if(QDELETED(A) || !client)
return
LAZYREMOVE(client.recent_examines, A)
/mob/proc/blind_examine_check(atom/examined_thing)
return TRUE
/mob/living/blind_examine_check(atom/examined_thing)
//need to be next to something and awake
if(!Adjacent(examined_thing) || incapacitated())
to_chat(src, span_warning("Something is there, but you can't see it!"))
return FALSE
var/active_item = get_active_held_item()
if(active_item && active_item != examined_thing)
to_chat(src, span_warning("Your hands are too full to examine this!"))
return FALSE
//you can only initiate exaimines if you have a hand, it's not disabled, and only as many examines as you have hands
/// our active hand, to check if it's disabled/detatched
var/obj/item/bodypart/active_hand = has_active_hand()? get_active_hand() : null
if(!active_hand || active_hand.bodypart_disabled || LAZYLEN(do_afters) >= get_num_arms())
to_chat(src, span_warning("You don't have a free hand to examine this!"))
return FALSE
//you can only queue up one examine on something at a time
if(examined_thing in do_afters)
return FALSE
to_chat(src, span_notice("You start feeling around for something..."))
visible_message(span_notice(" [name] begins feeling around for \the [examined_thing.name]..."))
/// how long it takes for the blind person to find the thing they're examining
var/examine_delay_length = rand(1 SECONDS, 2 SECONDS)
if(isobj(examined_thing))
examine_delay_length *= 1.5
else if(ismob(examined_thing) && examined_thing != src)
examine_delay_length *= 2
if(examine_delay_length > 0 && !do_after(src, examine_delay_length, examined_thing))
to_chat(src, span_notice("You can't get a good feel for what is there."))
return FALSE
//now we touch the thing we're examining
/// our current intent, so we can go back to it after touching
var/previous_intent = a_intent
a_intent = INTENT_HELP
examined_thing.attack_hand(src)
a_intent = previous_intent
return TRUE
/**
* handle_eye_contact() is called when we examine() something. If we examine an alive mob with a mind who has examined us in the last 2 seconds within 5 tiles, we make eye contact!
*
* Note that if either party has their face obscured, the other won't get the notice about the eye contact
* Also note that examine_more() doesn't proc this or extend the timer, just because it's simpler this way and doesn't lose much.
* The nice part about relying on examining is that we don't bother checking visibility, because we already know they were both visible to each other within the last second, and the one who triggers it is currently seeing them
*/
/mob/proc/handle_eye_contact(mob/living/examined_mob)
return
/mob/living/handle_eye_contact(mob/living/examined_mob)
if(!istype(examined_mob) || src == examined_mob || examined_mob.stat >= UNCONSCIOUS || !client)
return
var/imagined_eye_contact = FALSE
if(!LAZYACCESS(examined_mob.client?.recent_examines, src))
// even if you haven't looked at them recently, if you have the shift eyes trait, they may still imagine the eye contact
if(HAS_TRAIT(examined_mob, TRAIT_SHIFTY_EYES) && prob(10 - get_dist(src, examined_mob)))
imagined_eye_contact = TRUE
else
return
if(get_dist(src, examined_mob) > EYE_CONTACT_RANGE)
return
// check to see if their face is blocked or, if not, a signal blocks it
if(examined_mob.is_face_visible() && SEND_SIGNAL(src, COMSIG_MOB_EYECONTACT, examined_mob, TRUE) != COMSIG_BLOCK_EYECONTACT)
var/msg = span_smallnotice("You make eye contact with [examined_mob].")
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, src, msg), 3) // so the examine signal has time to fire and this will print after
if(!imagined_eye_contact && is_face_visible() && SEND_SIGNAL(examined_mob, COMSIG_MOB_EYECONTACT, src, FALSE) != COMSIG_BLOCK_EYECONTACT)
var/msg = span_smallnotice("[src] makes eye contact with you.")
addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, examined_mob, msg), 3)
/**
* Point at an atom
*
* mob verbs are faster than object verbs. See
* [this byond forum post](https://secure.byond.com/forum/?post=1326139&page=2#comment8198716)
* for why this isn't atom/verb/pointed()
*
* note: ghosts can point, this is intended
*
* visible_message will handle invisibility properly
*
* overridden here and in /mob/dead/observer for different point span classes and sanity checks
*/
/mob/verb/pointed(atom/A as mob|obj|turf in view())
set name = "Point To"
set category = "Object"
if(!src || !isturf(src.loc) || !(A in view(src.loc)))
return FALSE
if(istype(A, /obj/effect/temp_visual/point))
return FALSE
var/turf/tile = get_turf(A)
if (!tile)
return FALSE
var/turf/our_tile = get_turf(src)
var/obj/visual = new /obj/effect/temp_visual/point(our_tile, invisibility)
animate(visual, pixel_x = (tile.x - our_tile.x) * world.icon_size + A.pixel_x, pixel_y = (tile.y - our_tile.y) * world.icon_size + A.pixel_y, time = 0.17 SECONDS, easing = EASE_OUT)
return TRUE
///Can this mob resist (default FALSE)
/mob/proc/can_resist()
return FALSE //overridden in living.dm
///Spin this mob around it's central axis
/mob/proc/spin(spintime, speed)
set waitfor = 0
var/D = dir
if((spintime < 1)||(speed < 1)||!spintime||!speed)
return
while(spintime >= speed)
sleep(speed)
switch(D)
if(NORTH)
D = EAST
if(SOUTH)
D = WEST
if(EAST)
D = SOUTH
if(WEST)
D = NORTH
setDir(D)
spintime -= speed
///Update the pulling hud icon
/mob/proc/update_pull_hud_icon()
if(hud_used)
if(hud_used.pull_icon)
hud_used.pull_icon.update_icon(src)
///Update the resting hud icon
/mob/proc/update_rest_hud_icon()
if(hud_used)
if(hud_used.rest_icon)
hud_used.rest_icon.update_icon(src)
/**
* Verb to activate the object in your held hand
*
* Calls attack self on the item and updates the inventory hud for hands
*/
/mob/verb/mode()
set name = "Activate Held Object"
set category = "Object"
set src = usr
if(HAS_TRAIT(src, TRAIT_NOINTERACT)) // INTERCEPTED
to_chat(src, span_danger("You can't interact with anything right now!"))
return
if(ismecha(loc))
return
if(incapacitated())
return
var/obj/item/I = get_active_held_item()
if(I)
I.attack_self(src)
update_inv_hands()
/**
* Get the notes of this mob
*
* This actually gets the mind datums notes
*/
/mob/verb/memory()
set name = "Notes"
set category = "IC"
set desc = "View your character's notes memory."
if(mind)
mind.show_memory(src)
else
to_chat(src, "You don't have a mind datum for some reason, so you can't look at your notes, if you had any.")
/**
* Add a note to the mind datum
*/
/mob/verb/add_memory(msg as message)
set name = "Add Note"
set category = "IC"
if(memory_amt > 50)
return
if(memory_amt == 50)
log_game("[key_name(src)] might be trying to crash the server by spamming memories, rate-limiting them.")
message_admins("[ADMIN_LOOKUPFLW(src)] [ADMIN_KICK(usr)] might be trying to crash the server by spamming memories, rate-limiting them.</span>")
memory_amt++
msg = copytext_char(msg, 1, MAX_MESSAGE_LEN)
msg = sanitize(msg)
if(mind)
mind.store_memory(msg)
else
to_chat(src, "You don't have a mind datum for some reason, so you can't add a note to it.")
/**
* Allows you to respawn, abandoning your current mob
*
* This sends you back to the lobby creating a new dead mob
*
* Only works if flag/norespawn is allowed in config
*/
/mob/verb/abandon_mob()
set name = "Respawn"
set category = "OOC"
if (CONFIG_GET(flag/norespawn) && (!check_rights_for(usr.client, R_ADMIN) || tgui_alert(usr, "Respawn configs disabled. Do you want to use your permissions to circumvent it?", "Respawn", list("Yes", "No")) != "Yes"))
return
if ((stat != DEAD || !( SSticker )))
to_chat(usr, span_boldnotice("You must be dead to use this!"))
return
log_game("[key_name(usr)] used abandon mob.")
to_chat(usr, span_boldnotice("Please roleplay correctly!"))
if(!client)
log_game("[key_name(usr)] AM failed due to disconnect.")
return
client.screen.Cut()
client.screen += client.void
if(!client)
log_game("[key_name(usr)] AM failed due to disconnect.")
return
var/mob/dead/new_player/M = new /mob/dead/new_player()
if(!client)
log_game("[key_name(usr)] AM failed due to disconnect.")
qdel(M)
return
M.key = key
// M.Login() //wat
return
/**
* Sometimes helps if the user is stuck in another perspective or camera
*/
/mob/verb/cancel_camera()
set name = "Cancel Camera View"
set category = "OOC"
reset_perspective(null)
unset_machine()
//suppress the .click/dblclick macros so people can't use them to identify the location of items or aimbot
/mob/verb/DisClick(argu = null as anything, sec = "" as text, number1 = 0 as num , number2 = 0 as num)
set name = ".click"
set hidden = TRUE
set category = null
return
/mob/verb/DisDblClick(argu = null as anything, sec = "" as text, number1 = 0 as num , number2 = 0 as num)
set name = ".dblclick"
set hidden = TRUE
set category = null
return
/**
* Topic call back for any mob
*
* * Unset machines if "mach_close" sent
* * refresh the inventory of machines in range if "refresh" sent
* * handles the strip panel equip and unequip as well if "item" sent
*/
/mob/Topic(href, href_list)
if(href_list["mach_close"])
var/t1 = text("window=[href_list["mach_close"]]")
unset_machine()
src << browse(null, t1)
if(href_list["refresh"])
if(machine && in_range(src, usr))
show_inv(machine)
if(href_list["item"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY))
var/slot = text2num(href_list["item"])
var/hand_index = text2num(href_list["hand_index"])
var/obj/item/what
if(hand_index)
what = get_item_for_held_index(hand_index)
slot = list(slot,hand_index)
else
what = get_item_by_slot(slot)
if(what)
if(!(what.item_flags & ABSTRACT))
usr.stripPanelUnequip(what,src,slot)
else
usr.stripPanelEquip(what,src,slot)
if(usr.machine == src)
if(Adjacent(usr))
show_inv(usr)
else
usr << browse(null,"window=mob[REF(src)]")
// The src mob is trying to strip an item from someone
// Defined in living.dm
/mob/proc/stripPanelUnequip(obj/item/what, mob/who)
return
// The src mob is trying to place an item on someone
// Defined in living.dm
/mob/proc/stripPanelEquip(obj/item/what, mob/who)
return
/**
* Controls if a mouse drop succeeds (return null if it doesnt)
*/
/mob/MouseDrop(mob/M)
. = ..()
if(M != usr)
return
if(usr == src)
return
if(!Adjacent(usr))
return
if(isAI(M))
return
/mob/MouseDrop_T(atom/dropping, atom/user)
. = ..()
if(ismob(dropping) && dropping != user && user == src)
var/mob/M = dropping
M.show_inv(user)
/**
* Handle the result of a click drag onto this mob
*
* For mobs this just shows the inventory
*/
///Is the mob muzzled (default false)
/mob/proc/is_muzzled()
return 0
/// Adds this list to the output to the stat browser
/mob/proc/get_status_tab_items()
. = list()
var/list/objectives = mind?.get_all_objectives()
if(LAZYLEN(objectives))
var/obj_count = 1
. += "<B>Objectives:</B>"
for(var/datum/objective/objective in mind?.get_all_objectives())
. += "<B>[obj_count]</B>: <font color=[objective.check_completion() ? "green" : "red"]>[objective.explanation_text][objective.check_completion() ? " (COMPLETED)" : ""]</font>"
obj_count++
/mob/proc/get_proc_holders()
. = list()
if(mind)
. += get_spells_for_statpanel(mind.spell_list)
. += get_spells_for_statpanel(mob_spell_list)
/**
* Convert a list of spells into a displyable list for the statpanel
*
* Shows charge and other important info
*/
/mob/proc/get_spells_for_statpanel(list/spells)
var/list/L = list()
for(var/obj/effect/proc_holder/spell/S in spells)
if(S.can_be_cast_by(src))
switch(S.charge_type)
if(SPELL_CHARGE_TYPE_RECHARGE)
L[++L.len] = list("[S.panel]", "[S.charge_counter/10.0]/[S.charge_max/10]", S.name, REF(S))
if(SPELL_CHARGE_TYPE_CHARGES)
L[++L.len] = list("[S.panel]", "[S.charge_counter]/[S.charge_max]", S.name, REF(S))
if(SPELL_CHARGE_TYPE_HOLDERVAR)
L[++L.len] = list("[S.panel]", "[S.holder_var_type] [S.holder_var_amount]", S.name, REF(S))
return L
#define MOB_FACE_DIRECTION_DELAY 1
// facing verbs
/**
* Returns true if a mob can turn to face things
*
* Conditions:
* * client.last_turn > world.time
* * not dead or unconscious
* * not anchored
* * no transform not set
* * we are not restrained
*/
/mob/proc/canface()
if(world.time < client.last_turn)
return FALSE
if(stat == DEAD || stat == UNCONSCIOUS)
return FALSE
if(anchored)
return FALSE
if(notransform)
return FALSE
if(restrained())
return FALSE
return TRUE
///Checks mobility move as well as parent checks
/mob/living/canface()
if(!(mobility_flags & MOBILITY_MOVE))
return FALSE
return ..()
/mob/setShift(dir)
if (!canface())
return FALSE
is_shifted = TRUE
return ..()
///This might need a rename but it should replace the can this mob use things check
/mob/proc/IsAdvancedToolUser()
return FALSE
/mob/proc/swap_hand()
return
/mob/proc/activate_hand(selhand)
return
/mob/proc/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) //For sec bot threat assessment
return 0
///Get the ghost of this mob (from the mind)
/mob/proc/get_ghost(even_if_they_cant_reenter, ghosts_with_clients)
if(mind)
return mind.get_ghost(even_if_they_cant_reenter, ghosts_with_clients)
///Force get the ghost from the mind
/mob/proc/grab_ghost(force)
if(mind)
return mind.grab_ghost(force = force)
///Notify a ghost that it's body is being cloned
/mob/proc/notify_ghost_cloning(var/message = "Someone is trying to revive you. Re-enter your corpse if you want to be revived!", var/sound = 'sound/effects/genetics.ogg', var/atom/source = null, flashwindow)
var/mob/dead/observer/ghost = get_ghost()
if(ghost)
ghost.notify_cloning(message, sound, source, flashwindow)
return ghost
///Add a spell to the mobs spell list
/mob/proc/AddSpell(obj/effect/proc_holder/spell/S)
mob_spell_list += S
S.action?.Grant(src)
///Remove a spell from the mobs spell list
/mob/proc/RemoveSpell(obj/effect/proc_holder/spell/spell)
if(!spell)
return
for(var/X in mob_spell_list)
var/obj/effect/proc_holder/spell/S = X
if(istype(S, spell))
mob_spell_list -= S
qdel(S)
if(client)
client << output(null, "statbrowser:check_spells")
///Return any anti magic atom on this mob that matches the magic type
/mob/proc/anti_magic_check(magic = TRUE, holy = FALSE, tinfoil = FALSE, chargecost = 1, self = FALSE)
return
/**
* Buckle to another mob
*
* You can buckle on mobs if you're next to them since most are dense
*
* Turns you to face the other mob too
*/
/mob/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE)
if(M.buckled)
return 0
var/turf/T = get_turf(src)
if(M.loc != T)
var/old_density = density
density = FALSE
var/can_step = step_towards(M, T)
density = old_density
if(!can_step)
return 0
return ..()
///Call back post buckle to a mob to offset your visual height
/mob/post_buckle_mob(mob/living/M)
var/height = M.get_mob_buckling_height(src)
M.pixel_y = initial(M.pixel_y) + height
if(M.layer < layer)
M.layer = layer + 0.1
///Call back post unbuckle from a mob, (reset your visual height here)
/mob/post_unbuckle_mob(mob/living/M)
M.layer = initial(M.layer)
M.pixel_y = initial(M.pixel_y)
///returns the height in pixel the mob should have when buckled to another mob.
/mob/proc/get_mob_buckling_height(mob/seat)
if(isliving(seat))
var/mob/living/L = seat
if(L.mob_size <= MOB_SIZE_SMALL) //being on top of a small mob doesn't put you very high.
return 0
return 9
///can the mob be buckled to something by default?
/mob/proc/can_buckle()
return 1
///can the mob be unbuckled from something by default?
/mob/proc/can_unbuckle()
return 1
///Can the mob interact() with an atom?
/mob/proc/can_interact_with(atom/A)
return IsAdminGhost(src) || Adjacent(A)
///Can the mob use Topic to interact with machines
/mob/proc/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
return
///Can this mob use storage
/mob/proc/canUseStorage()
return FALSE
/**
* Check if the other mob has any factions the same as us
*
* If exact match is set, then all our factions must match exactly
*/
/mob/proc/faction_check_mob(mob/target, exact_match)
if(exact_match) //if we need an exact match, we need to do some bullfuckery.
var/list/faction_src = faction.Copy()
var/list/faction_target = target.faction.Copy()
if(!("[REF(src)]" in faction_target)) //if they don't have our ref faction, remove it from our factions list.
faction_src -= "[REF(src)]" //if we don't do this, we'll never have an exact match.
if(!("[REF(target)]" in faction_src))
faction_target -= "[REF(target)]" //same thing here.
return faction_check(faction_src, faction_target, TRUE)
return faction_check(faction, target.faction, FALSE)
/*
* Compare two lists of factions, returning true if any match
*
* If exact match is passed through we only return true if both faction lists match equally
*/
/proc/faction_check(list/faction_A, list/faction_B, exact_match)
var/list/match_list
if(exact_match)
match_list = faction_A&faction_B //only items in both lists
var/length = LAZYLEN(match_list)
if(length)
return (length == LAZYLEN(faction_A)) //if they're not the same len(gth) or we don't have a len, then this isn't an exact match.
else
match_list = faction_A&faction_B
return LAZYLEN(match_list)
return FALSE
/**
* Fully update the name of a mob
*
* This will update a mob's name, real_name, mind.name, GLOB.data_core records, pda, id and traitor text
*
* Calling this proc without an oldname will only update the mob and skip updating the pda, id and records ~Carn
*/
/mob/proc/fully_replace_character_name(oldname,newname)
log_message("[src] name changed from [oldname] to [newname]", LOG_OWNERSHIP)
if(!newname)
return 0
log_played_names(ckey,newname)
real_name = newname
name = newname
if(mind)
mind.name = newname
if(mind.key)
log_played_names(mind.key,newname) //Just in case the mind is unsynced at the moment.
if(oldname)
//update the datacore records! This is goig to be a bit costly.
replace_records_name(oldname,newname)
//update our pda and id if we have them on our person
replace_identification_name(oldname,newname)
for(var/datum/mind/T in SSticker.minds)
for(var/datum/objective/obj in T.get_all_objectives())
// Only update if this player is a target
if(obj.target && obj.target.current && obj.target.current.real_name == name)
obj.update_explanation_text()
return 1
///Updates GLOB.data_core records with new name , see mob/living/carbon/human
/mob/proc/replace_records_name(oldname,newname)
return
///update the ID name of this mob
/mob/proc/replace_identification_name(oldname,newname)
var/list/searching = GetAllContents()
var/search_id = 1
var/search_pda = 1
for(var/A in searching)
if( search_id && istype(A, /obj/item/card/id) )
var/obj/item/card/id/ID = A
if(ID.registered_name == oldname)
ID.registered_name = newname
ID.update_label()
if(istype(ID.loc, /obj/item/computer_hardware/card_slot))
var/obj/item/computer_hardware/card_slot/CS = ID.loc
CS.holder?.update_label()
if(ID.registered_account?.account_holder == oldname)
ID.registered_account.account_holder = newname
if(!search_pda)
break
search_id = 0
else if( search_pda && istype(A, /obj/item/pda) )
var/obj/item/pda/PDA = A
if(PDA.owner == oldname)
PDA.owner = newname
PDA.update_label()
if(!search_id)
break
search_pda = 0
/mob/proc/update_stat()
return
/mob/proc/update_health_hud()
return
/// Changes the stamina HUD based on new information
/mob/proc/update_stamina_hud()
return
///Update the lighting plane and sight of this mob (sends COMSIG_MOB_UPDATE_SIGHT)
/mob/proc/update_sight()
SEND_SIGNAL(src, COMSIG_MOB_UPDATE_SIGHT)
sync_lighting_plane_alpha()
///Set the lighting plane hud alpha to the mobs lighting_alpha var
/mob/proc/sync_lighting_plane_alpha()
if(hud_used)
var/atom/movable/screen/plane_master/lighting/L = hud_used.plane_masters["[LIGHTING_PLANE]"]
if (L)
L.alpha = lighting_alpha
///Update the mouse pointer of the attached client in this mob
/mob/proc/update_mouse_pointer()
if (!client)
return
client.mouse_pointer_icon = initial(client.mouse_pointer_icon)
if (ismecha(loc))
var/obj/mecha/M = loc
if(M.mouse_pointer)
client.mouse_pointer_icon = M.mouse_pointer
else if (istype(loc, /obj/vehicle/sealed))
var/obj/vehicle/sealed/E = loc
if(E.mouse_pointer)
client.mouse_pointer_icon = E.mouse_pointer
///This mob is abile to read books
/mob/proc/is_literate()
return FALSE
///Can this mob read (is literate and not blind)
/mob/proc/can_read(obj/O)
if(is_blind(src))
to_chat(src, span_warning("As you are trying to read [O], you suddenly feel very stupid!"))
return
if(!is_literate())
to_chat(src, span_notice("You try to read [O], but can't comprehend any of it."))
return
return TRUE
///Can this mob hold items
/mob/proc/can_hold_items()
return FALSE
///Get the id card on this mob
/mob/proc/get_idcard(hand_first)
return
/mob/proc/get_id_in_hand()
return
/**
* Get the mob VV dropdown extras
*/
/mob/vv_get_dropdown()
. = ..()
VV_DROPDOWN_SEPERATOR
VV_DROPDOWN_OPTION(VV_HK_GIB, "Gib")
VV_DROPDOWN_OPTION(VV_HK_GIVE_SPELL, "Give Spell")
VV_DROPDOWN_OPTION(VV_HK_REMOVE_SPELL, "Remove Spell")
VV_DROPDOWN_OPTION(VV_HK_GIVE_DISEASE, "Give Disease")
VV_DROPDOWN_OPTION(VV_HK_GODMODE, "Toggle Godmode")
VV_DROPDOWN_OPTION(VV_HK_DROP_ALL, "Drop Everything")
VV_DROPDOWN_OPTION(VV_HK_REGEN_ICONS, "Regenerate Icons")
VV_DROPDOWN_OPTION(VV_HK_PLAYER_PANEL, "Show player panel")
VV_DROPDOWN_OPTION(VV_HK_BUILDMODE, "Toggle Buildmode")
VV_DROPDOWN_OPTION(VV_HK_DIRECT_CONTROL, "Assume Direct Control")
VV_DROPDOWN_OPTION(VV_HK_OFFER_GHOSTS, "Offer Control to Ghosts")
VV_DROPDOWN_OPTION(VV_HK_SET_AFK_TIMER, "Set AFK Timer")
/mob/vv_do_topic(list/href_list)
. = ..()
if(href_list[VV_HK_REGEN_ICONS] && check_rights(R_VAREDIT))
regenerate_icons()
if(href_list[VV_HK_PLAYER_PANEL])
usr.client.holder.show_player_panel(src)
if(href_list[VV_HK_GODMODE] && check_rights(R_ADMIN))
usr.client.cmd_admin_godmode(src)
if(href_list[VV_HK_GIVE_SPELL] && check_rights(R_VAREDIT))
usr.client.give_spell(src)
if(href_list[VV_HK_REMOVE_SPELL] && check_rights(R_VAREDIT))
usr.client.remove_spell(src)
if(href_list[VV_HK_GIVE_DISEASE] && check_rights(R_VAREDIT))
usr.client.give_disease(src)
if(href_list[VV_HK_GIB] && check_rights(R_FUN))
usr.client.cmd_admin_gib(src)
if(href_list[VV_HK_BUILDMODE] && check_rights(R_BUILDMODE))
togglebuildmode(src)
if(href_list[VV_HK_DROP_ALL] && check_rights(R_ADMIN))
usr.client.cmd_admin_drop_everything(src)
if(href_list[VV_HK_DIRECT_CONTROL] && check_rights(R_VAREDIT))
usr.client.cmd_assume_direct_control(src)
if(href_list[VV_HK_OFFER_GHOSTS] && check_rights(R_ADMIN))
offer_control(src)
if(href_list[VV_HK_SET_AFK_TIMER] && check_rights(R_ADMIN))
if(!mind)
to_chat(usr, "This cannot be used on mobs without a mind")
return
var/timer = input("Input AFK length in minutes, 0 to cancel the current timer", text("Input")) as num|null
if(timer == null) // Explicit null check for cancel, rather than generic truthyness, so 0 is handled differently
return
deltimer(mind.afk_verb_timer)
mind.afk_verb_used = FALSE
if(!timer)
return
mind.afk_verb_used = TRUE
mind.afk_verb_timer = addtimer(VARSET_CALLBACK(mind, afk_verb_used, FALSE), timer MINUTES, TIMER_STOPPABLE);
/**
* extra var handling for the logging var
*/
/mob/vv_get_var(var_name)
switch(var_name)
if("logging")
return debug_variable(var_name, logging, 0, src, FALSE)
. = ..()
/mob/vv_auto_rename(new_name)
//Do not do parent's actions, as we *usually* do this differently.
fully_replace_character_name(real_name, new_name)
usr.client.vv_update_display(src, "name", new_name)
usr.client.vv_update_display(src, "real_name", real_name || "No real name")
///Show the language menu for this mob
/mob/verb/open_language_menu()
set name = "Open Language Menu"
set category = "IC"
var/datum/language_holder/H = get_language_holder()
H.open_language_menu(usr)
///Adjust the nutrition of a mob
/mob/proc/adjust_nutrition(var/change) //Honestly FUCK the oldcoders for putting nutrition on /mob someone else can move it up because holy hell I'd have to fix SO many typechecks
nutrition = max(0, nutrition + change)
///Force set the mob nutrition
/mob/proc/set_nutrition(var/change) //Seriously fuck you oldcoders.
nutrition = max(0, change)
///Set the movement type of the mob and update it's movespeed
/mob/setMovetype(newval)
. = ..()
update_movespeed(FALSE)