* [no gbp] removes all duplicate armor datums (#72354)
closes#72348
Title
My bad
Heres the script I used this time if you want to
```cs
var baseDir = Environment.CurrentDirectory;
var allFiles = Directory.EnumerateFiles($@"{baseDir}\code", "*.dm", SearchOption.AllDirectories).ToList();
var known = new Dictionary<string, List<KeyValuePair<string, int>>>();
foreach (var file in allFiles)
{
var fileLines = File.ReadAllLines(file);
for (var i = 0; i < fileLines.Length; i++)
{
var line = fileLines[i];
if (line.StartsWith("/datum/armor/"))
{
var armorName = line.Replace("/datum/armor/", "").Trim();
if (!known.ContainsKey(armorName))
known[armorName] = new List<KeyValuePair<string, int>>();
var knownList = known[armorName];
knownList.Add(new KeyValuePair<string, int>(file, i));
}
}
}
Console.WriteLine($"There are {known.Sum(d => d.Value.Count)} duplicate armor datums.");
var duplicates = new Dictionary<string, List<int>>();
foreach (var (_, entries) in known)
{
var actuals = entries.Skip(1).ToList();
foreach (var actual in actuals)
{
if (!duplicates.ContainsKey(actual.Key))
duplicates[actual.Key] = new List<int>();
duplicates[actual.Key].Add(actual.Value);
}
}
Console.WriteLine($"There are {duplicates.Count} files to update.");
foreach (var (file, idxes) in duplicates)
{
var fileContents = File.ReadAllLines(file).ToList();
foreach (var idx in idxes.OrderByDescending(i => i))
{
string line;
do
{
line = fileContents[idx];
fileContents.RemoveAt(idx);
}
while (!String.IsNullOrWhiteSpace(line));
}
File.WriteAllLines(file, fileContents);
}
```
* modular
Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com>
* Converts drowsy and eye blur to status effects, striking yet another two carbon level status vars
* merge conflicts
* adjust_eye_blur and set_eye_blur_if_lower
* adjust drowsiness overdoses
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Fixes prefilled drinking glasses, and small carton icon (#72527)
Fixes a few drink container issues:
- The `/obj/item/reagent_containers/cup/glass/drinkingglass/filled`
subtypes runtimed whenever their reagents changed because of the strict
way that `/datum/component/takes_reagent_appearance` compares container
types.
- `/datum/component/takes_reagent_appearance` now allows for an
alternate type to check against `glass_style.required_container_type`
via a var called `base_container_type`. The filled glasses now set this
var to the main drinking glass type.
- As well, filled glasses didn't have their appearance set up to match
the corresponding glass style. Thus, the
`/obj/item/reagent_containers/cup/glass/drinkingglass/filled` type now
updates its appearance on initialization.
- Seperately, the small carton's appearance broke if you put a reagent
in that doesn't match a glass style, reverting to the "water_cup" icon
state which doesn't exist in the boxes.dmi file. This is because it was
a subtype of sillycup, but there is nothing gained as far as I can see
from that type relationship, so the small carton was repathed to
`/obj/item/reagent_containers/cup/glass/smallcarton`.
* Fixes prefilled drinking glasses, and small carton icon
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* Crafting/Cooking menu update
* Yeeted away all of the merge conflicts, time to fix the code
* Okay, now it compiles, and after testing, it seems to work just fine
* Actually, early addition of an upstream fix, so those that don't have hunger can still open the cooking menu
* Fixes the units tests by removing the extra comma in the Stuffed Muli Pod recipe
Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Minor detectives spawn with a candy cigarette and apple juice filled flask (#72422)
If a detective joins who is 20 or younger their cigarette is changed for
a candy one and their flask is filled with apple juice. Also adds candy
cigarettes' to the detective vendor.
Minor crew members are unable to use cigarette vendors or acquire
alcohol in game without effectively committing a crime, it doesn't make
sense for minor detectives to spawn with them. I also think that minor
characters trying to obtain narcotics can be a pretty entertaining RP
starter as a overall harmless crime and something that requires
interaction with other members of the crew.
* Minor detectives spawn with a candy cigarette and apple juice filled flask
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* Basic Mobs can run away (#71963)
## About The Pull Request
That's right I'm still atomising #71421, some day I might even post
something related to carp.
This PR adds various behaviours to basic mobs allowing them to run away,
in a couple of variations.
Mice will flee from anyone who doesn't share their factions, at all
times (so they will scatter from most humans, but not regal rats).
Rabbits and Sheep will flee from anyone who has attacked them.
Pigs will run away from people who have attacked them, but only if
they're below half health.
https://user-images.githubusercontent.com/7483112/207127135-d1737f91-d3f7-468a-ac60-7c7ae5d6623d.mp4
Mice are still plenty catchable because they don't run _very far_ (or
very fast) but I think the chase will be good enrichment.
To achieve this I had to change the signal COMSIG_CARBON_HEALTH_UPDATE
into COMSIG_LIVING_HEALTH_UPDATE but frankly the latter seems more
sensible anyway.
## Why It's Good For The Game
More behaviours to use later when designing mobs, gradually gives mobs
more things to do rather than just sort of moving aimlessly around the
area you left them in.
It'll give people hunting rats in maintenance some exercise.
## Changelog
🆑
add: Mice will now run away from you, you have to catch them if you want
to eat them. Use those traps!
add: Rabbits, Sheep, and Pigs likewise won't just sit there and let you
pulverise them if they can see an escape route.
/🆑
* Basic Mobs can run away
* Modular!
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Stranger Reagent can no longer be a componet in Metalgen (#72396)
## About The Pull Request
What is says on the tin.
Closes#72393.
## Why It's Good For The Game
Bugfix
## Changelog
🆑
fix: Stranger Reagent can no longer be a componet in Metalgen
/🆑
* Stranger Reagent can no longer be a componet in Metalgen
Co-authored-by: A miscellaneous Fern <80640114+FernandoJ8@users.noreply.github.com>
* Refactors bar drink icons into datum singletons / unit tests them (#71810)
- Refactors bar drink icons.
- Juice boxes no longer have a hard-coded list of a bunch of reagent
types in their update state, and use a system similar to bar drinks.
- Glass and shot glass icon information are no longer stored on the
drink. Instead, they are now stored in glass style datums. These datums
store name, description, icon, and icon state of a certain container +
reagent type.
- Glass styles are applied via the `takes_reagent_appearance` component.
Glasses, shot glasses, and juice boxes have this component.
- This comes with support for being able to have drink icons from
different files, rather than requiring the drinks DMI.
- The britmug is now a subtype of mug.
- 1 new icon: britmug filled.
- Various small code clean-up around drink reagents.
- Unit tests icon state setups for glass styles as well as all `/drink`
reagent container subtypes.
- Splits up the massive `drinks.dmi` into separate files.
*Disclaimer: Much of the drinking glass datums were written via script
automatically, so there may be errors present.*
- Much easier to add new drink styles, much more modular.
- It is no longer necessary for new drinks to be added to the massive
`drinks.dmi`. People working with drinks in the future can simply add
their glass style datum and point it to their file wherever it may be.
- Expandable system. Adding a new type of reagent container that works
similarly to bar drinks but for different types of icons is a breeze.
- Ensures going forward no bar drinks have invisible sprites.
🆑 Melbert
refactor: Refactored how bar drinks set their icons. Juice boxes now use
the same system.
/🆑
* Well that's all of them, unit tests prove me wrong
* now its a mapping pr lmao
* SHUT THE FUCK UP
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Funce <funce.973@gmail.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
* Make chem dispenser reagent search better (#72358)
Improving the chem dispenser reagent search by using a List.
This is my first Pull Request for tgstation. I would like to know how to
add Test for this change.
Make the Input more fun to Use by letting the player search in a reagent
list. Helps for typing complicated chemical names.
* Make chem dispenser reagent search better
Co-authored-by: Gorock <daniel-morady@web.de>
* Botany fix and clean up (#72234)
## About The Pull Request
On local server I found out that hydroponic trays had weird behaviours.
Forexample:
If you use radium on trays, the subtype of radium which is uranium would
also get in effect meaning:
You add radium to the tray and get radium AND uranium effect on it.
Radium wasnt the only reagent others would show the same effect.
So I fixed them
I also cleaned up some code bits, there were some inconsistency with the
on_hydroponics_apply proc, I made them all consistent. There was also
for some reason a duplicate on_hydroponics_apply proc for blood reagent
one of them was unfinshed
## Why It's Good For The Game
Botany will behave correctly and the code is more cleaned up
## Changelog
🆑
fix: using chemicals on botany wont have unrelated side effects
/🆑
* Botany fix and clean up
Co-authored-by: Salex08 <33989683+Salex08@users.noreply.github.com>
* Fixes some bad AddElements, Fixes incompatible element runtime error text (#72188)
## About The Pull Request
- `/datum/element/squish` cannot be applied to non-carbons, and the
falling hazard element works on all livings.
- It seems like squish could easily be changed to apply to all livings,
but out of scope.
- `/datum/element/fried_item` and `/datum/element/griled_item` weren't
being applied to the new item correctly
- This one's my bad
- Changes "Incompatible element" `CRASH` to print the element type
rather than the mob's name mistakenly
- I think this was intended, but always used the wrong arguments, and no
one noticed?
## Why It's Good For The Game
Less runtimes, features work as expected, and a more clearer runtime for
element errors
## Changelog
🆑 Melbert
fix: Silver foods correctly spawn things grilled and fried
/🆑
* Fixes some bad AddElements, Fixes incompatible element runtime error text
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes Tinacusiate being impossible to make (#72171)
## About The Pull Request
Since failchems were removed, tinacusiate has been impossible to make.
While it's also the inverse of inacusiate, the values that determine
chem purity that inacusiate has makes it practically impossible to push
the purity much below the low 40s, let alone below 30% to make
tinacusiate. This changes those values slightly so it's possible to make
when purposefully doing so, but hard to get on accident.
## Why It's Good For The Game
Makes a chem that's basically a goof actually possible to synthesise.
## Changelog
🆑
fix: Tinacusiate is now possible to make again.
/🆑
Co-authored-by: Unit2E <ccupbestcup@ protonmail.com>
* Fixes Tinacusiate being impossible to make
Co-authored-by: Unit2E <41054578+Unit2E@users.noreply.github.com>
Co-authored-by: Unit2E <ccupbestcup@ protonmail.com>
* Fix: Robotic Damage / Reagents Refactor (#71937)
This PR is a continuing refactor of and fixes bugs introduced by my
prior PR #71864

Due to many functions in reagents having been implemented on top of
prior buggy code, their new behaviors are not as expected in-game, and
as a result reagents damage/heal robotic/cybernetic bodyparts/organs
when not appropriate; bugs like healing robotic arms with Libital is
currently possible.
To fix the errant behaviors in the newly debugged code, I have added
three variables to `datum/reagent` which are used throughout reagent
code, mainly inside of `on_mob_life` etc:
- `affected_bodytype = BODYTYPE_ORGANIC` - Used if the reagent
damages/heals bodyparts (Brute/Fire) of an affected mob.
- `affected_biotype = MOB_ORGANIC` - Used if the reagent damages/heals
generic damage (Toxin/Oxygen) of an affected mob.
- `affected_organtype = ORGAN_ORGANIC` - Used if the reagent
damages/heals organ damage of an affected mob.
The diff is large, and I have refactored the readability/maintainability
around the sections of code I was modifying. At one point I chose to
perform a quality pass on reagents because I found it quite hard to
maintain reagents code in its current state. This PR also replaces many
single-letter variables with more descriptive and readable variable
names. I also found and fixed a stray tab which was located in the
flavortext of `proc/item_heal_robotic`
Due to an old bug being fixed recently by PR #71864 a lot of
healing/damaging reagents now have an effect on robotic bodyparts. This
PR corrects the issue and changes reagents to explicitly define the body
type, bio type, and organ type which they can affect with
helaing/damage. This PR replaces a lot of single-letter variable names
with more descriptive names. I also fixed a small typo in
`item_heal_robotic` which was inserting an extra tab.
🆑
fix: Fixed a stray-tab typo in "item_heal_robotic"
fix: Fixed reagents and other effects which were inappropriately
affecting robotic limbs.
code: Refactored all of reagents code to be more readable and
maintainable.
/🆑
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* Modular!
* More Modular!
Co-authored-by: Dani Glore <fantasticdragons@gmail.com>
Co-authored-by: Time-Green <timkoster1@hotmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Saycode refactor, unit tests, and fixes
* parrot
* SR tweaks
* say tests from pstream/71873
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Makes the shadowperson legion corpse pill have enough mutation toxin to turn you (#71945)
## About The Pull Request
title
## Why It's Good For The Game
the corpse is a rare enough, getting 2 to drop for its intended effect
is basically impossible odds on lavaland
## Changelog
🆑
fix: the pill dropped by the shadowperson legion corpse now has enough
mutation toxin to work
/🆑
* Makes the shadowperson legion corpse pill have enough mutation toxin to turn you
Co-authored-by: 1393F <59183821+1393F@users.noreply.github.com>
* Drinking singulo ignores supermatter hallucinations and pulls nearby objects (#71927)
## About The Pull Request
Drinking a singulo will now:
- Give immunity to supermatter hallucinations
- Pulls objects to you based on the total volume in your system (20u =
1x1, 45u = 2x2, 80u = 3x3)
- Makes a burp and supermatter rays/sound when objects are pulled
The new ingredient is:
- Vokda 5u
- Wine 5u
- Liquid Dark Matter 1u (replaces Radium)
## Why It's Good For The Game
More cool effects for drinks. Singularity is all about gravity and the
drink should have a theme around that.

## Changelog
🆑
add: Drinking singulo will now ignore supermatter hallucinations and
pull objects to you
balance: Change singulo drink recipe to require liquid dark matter
instead of radium.
/🆑
* Drinking singulo ignores supermatter hallucinations and pulls nearby objects
Co-authored-by: Tim <timothymtorres@gmail.com>
* Natural booze (#71842)
## About The Pull Request
Makes fermented booze take quality and power from the endurance and
lifespan stats of the fruit.
These are the most neglected plant stats, and usually plants that have
these high by default, do not have much nutriments.
This change makes fermented drinks a bit more desirable because your
effort is reflected in their stats. And you get better mood buff by
making them higher.
Fruit wine and other reagents get a "Natural" prefix when made through
fermentation.

I consider turning it into a more general solution so that dispensed
drinks will also have purity and if the barman wants to aim for an
absolute quality cocktail, he may want to cooperate with botany like
chef does.
## Why It's Good For The Game
Fermented drinks are now a bit special compared to the free booze
dispenser variants.
## Changelog
🆑
add: Fermented drinks give mood buffs according to the stats of
fermented fruit
/🆑
* Natural booze
Co-authored-by: Andrew <mt.forspam@gmail.com>
* Makes palladium synthate catalyst easier to create (#71797)
## About The Pull Request
As it stands, Palladium synthate catalyst is extremely hard to make
efficiently. The minimum temperature required for this reagent is set to
320K, but the issue is that Plasma, one of its ingredients, turns into
gas around 323-324K. Not only that, but the optimal temperature is set
to 600K, meaning even when its being made, it goes at a painfully slow
rate. As a result, there is an extremely slim temperature margin in
which this can be made without accidentally making plasma gas.
This PR serves to fix that issue by lowering the minimal temperature
threshold to 200K, and lowering the optimal temperature to 500K. While
you still have to pay attention while making it, at least the margin for
error is improved.
## Why It's Good For The Game
By making Palladium synthate catalyst easier to make, it expands more
options for chemists to utilize this reagent, such as in plumbing loops
or individual reactions.
## Changelog
🆑
balance: Tweaks the minimal temperature threshold and optimal
temperature for Palladium synthate catalyst.
/🆑
* Makes palladium synthate catalyst easier to create
Co-authored-by: MGOOOOOO <97645027+MGOOOOOO@users.noreply.github.com>
* Biomass generation fixed (watermelons gave 4 biomass instead of 24) (#71824)
## About The Pull Request
In the previous attempt to buff biogenerator in
https://github.com/tgstation/tgstation/pull/71563 it started using
`get_multiple_reagent_amounts()` proc which returned only the volume of
the first found reagent.
100 potency watermelons have 4 vitamins and 20 nutriments, so this proc
found 4 vitamins and returned only those.
Essentially, all this time biogen have been giving biomass for vitamins
only, and for nutrments when the plant didn't have vitamins.
## Why It's Good For The Game
They have been suffering this whole time. And cursing me for nerfing
biomass to abyss.
## Changelog
🆑
fix: biogenerator converts all plant nutriments into biomass, not just
the first found one.
/🆑
* Biomass generation fixed (watermelons gave 4 biomass instead of 24)
Co-authored-by: Andrew <mt.forspam@gmail.com>
* Removes weird saline drip code (#71543)
Ran into this while reviewing #71217
Saline drips had an invisible cup filled with 5000u of saline and
overwrote a bunch of procs to make it unremovable, instead of just using
the internal storage????? It was so weird people started using istypes
because the saline drip behaviour was just too fucking weird
No changelog, just code clean-up
* Removes weird saline drip code
Co-authored-by: Time-Green <timkoster1@hotmail.com>
* Ephedrine no longer punishes you for making it pure (#71631)
## About The Pull Request
According to the wiki, ephedrine's side effects are reduced by higher
purity.
Well, I was looking into the code to see how that worked and while I was
doing so I saw that the overdose side effects are instead increased by
higher purity. This is, as far as I know, the only case of purity doing
something negative. Purity is by design meant to make the effects of a
reagent better for it's intended purpose, not worse.
Ephedrine no longer multiplies the chances for overdose effects by it's
purity (1.33x at 100%) and instead has more severe side effects at low
purity and less severe ones at high purity. (0.66x at 100%)
## Why It's Good For The Game
Well, it makes the wiki state correct information while simultaneously
making a reagent adhere by the standards of how purity works. I don't
see any reason as for why this wouldn't be good for the game.
## Changelog
🆑
fix: Ephedrine now rewards you instead of punishing you for making it
pure.
/🆑
* Ephedrine no longer punishes you for making it pure
Co-authored-by: RikuTheKiller <88713943+RikuTheKiller@users.noreply.github.com>
* Change liver to not purge toxins rapidly (#70764)
<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->
## About The Pull Request
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
Fixes#70762
The liver was purging toxins rapidly and it didn't matter how much
poison you would inject a food / drink / cigarette with, since it would
get purged before it could buildup to toxic levels.
My changes fix this by doing the following:
- Skips toxin `on_mob_life` effects and toxin damage if it is lower than
the 3u threshold
- Metabolizes the toxin at normal rate instead of purging when under the
3u threshold (this allows toxins to buildup while
eating/drinking/smoking)
- New formula to calculate liver damage `liver_damage +=
((toxin_units/15) * toxin.toxpwr) / liver_resistance`
- Liver is damaged based on the units of toxin present and their
lethality. Liver damage **IS NOT** skipped if toxin is lower than the 3u
threshold
- Change alien liver toxin resistance value to be -33% (from -40%) and
cybernetic liver toxin resistance value to be +50% (from +20%)
---
<details>
<summary>Liver damage per second from toxins</summary>
There is a hard cap of 2 dmg per second that all the combined damage
can't go over. This should give someone suffering max liver damage about
a minute before it gets destroyed.
| Toxin | Power | 1u | 3u | 5u | 15u |
| ------------- | ------------- | ------------- | ------------- |
------------- | ------------- |
| Coffepowder | 0.5 | 0.03 dmg | 0.1 dmg | 0.16 dmg | 0.5 dmg |
| Plantbgone | 1 | 0.06 dmg | 0.2 dmg | 0.33 dmg | 1 dmg |
| Amatoxin | 2.5 | 0.15 dmg | 0.5 dmg | 0.825 dmg | 2 dmg |
</details>
## Why It's Good For The Game
<!-- Argue for the merits of your changes and how they benefit the game,
especially if they are controversial and/or far reaching. If you can't
actually explain WHY what you are doing will improve the game, then it
probably isn't good for the game in the first place. -->
Fixes broken toxin system for liver.
## Changelog
<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->
🆑
balance: Change liver to not purge toxins instantly for low amounts.
Instead the toxin effect gets skipped while it is metabolized normally,
however it still does liver damage. This fixes bite increments for food,
cigarettes, and drinks where the toxins would purge without building up
to harmful levels.
balance: Change the formula for how toxins effect livers. Livers will be
damaged based on the units of toxin present and their lethality.
balance: Change alien liver toxin resistance value to be -33% and
cybernetic liver toxin resistance value to be +50%
/🆑
<!-- Both 🆑's are required for the changelog to work! You can put
your name to the right of the first 🆑 if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
* Change liver to not purge toxins rapidly
* Update skrell.dm
* Update code/modules/surgery/organs/liver.dm
Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* IV drip injects only to injectable things (#71709)
## About The Pull Request
Previous PR https://github.com/tgstation/tgstation/pull/71217 made IV
drip work with any containers which, after a while led to some undesired
cases.
People could add reagents to medipens, making them free hypospray.
Refilling extinguishers with things other than water. And just
sabotaging pills, patches, etc.
Now IV drips inject only into injectable containers.
I added INJECTABLE flag to a few other things that were not originally
injectable - hydroponic trays, smoke machine, chem separator. May later
whitelist some other items that may be injectable by logic, but don't
lead to undesired accidents.

## Why It's Good For The Game
Free sleepy pens are not OK.
## Changelog
🆑
fix: IV drip now injects only into injectable things
/🆑
* IV drip injects only to injectable things
Co-authored-by: Andrew <mt.forspam@gmail.com>
* Brave bull now makes you brave (#71652)
## About The Pull Request
This gives people `TRAIT_FEARLESS` when they have brave bull in their
system. It will allow people to overcome their phobias and give them
liquid courage.
## Why It's Good For The Game
Brave bull is LITERAL!
## Changelog
🆑
add: Add brave bull now makes you fearless and you can ignore phobias
while it's in your system.
/🆑
* Brave bull now makes you brave
Co-authored-by: Tim <timothymtorres@gmail.com>
* Psykers (#71566)
## About The Pull Request
Finishes #66471
At burden level nine (or through a deadly genetic breakdown), you now
turn into a psyker.
This splits your skull in half and transforms it into a weird fleshy
mass. You become blind, but your skull is perfectly suited for sending
out psychic waves. You get potent psy abilities.
First one is brainwave echolocation, inspired by Gehennites (but not as
laggy).
Secondly, you get the ability of Psychic Walls, which act similarly to
wizard ones, but last shorter, and cause projectiles to ricochet off
them.
Thirdly, you get a projectile boost ability, this temporarily lets you
fire guns twice as fast and gives them homing to the target you clicked.
Lastly, you get the ability of psychic projection. This terrifies the
victim, fucking their screen up and causing them to rapidfire any gun
they have in their general direction (they'll probably miss you)
With most of the abilities being based around guns, a burden level nine
chaplain now gets a new rite, Transmogrify. This lets them turn their
null rod into a 5-shot 18 damage .77 revolver. The revolver possesses a
weaker version of antimagic (protects against mind and unholy spells,
but not wizard/cult ones). It is reloaded by a prayer action (can also
only be performed by a max burdened person).
General Video: https://streamable.com/w3kkrk
Psychic Projection Video: https://streamable.com/4ibu7o

## Why It's Good For The Game
Rewards the burdened chaplain with some pretty cool stuff for going
through hell like losing half his limbs, cause the current psychics dont
cut it as much as probably necessary, adds echolocation which can be
used for neat stuff in the future (bat organs for DNA infuser for
example).
## Changelog
🆑 Fikou, sprites from Halcyon, some old code from Basilman and
Armhulen.
refactor: Honorbound and Burdened mutations are brain traumas now.
add: Psykers. Become a psyker through the path of the burdened, or a
genetic breakdown.
add: Echolocation Component.
/🆑
Co-authored-by: tralezab <spamqetuo2@ gmail.com>
Co-authored-by: tralezab <40974010+tralezab@ users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
* Psykers
* commented out stuff is now in
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: tralezab <spamqetuo2@ gmail.com>
Co-authored-by: tralezab <40974010+tralezab@ users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
* This kills the deep fried foods holder. Refactors deep frying to just make the thing edible but still functional. (#71551)
## About The Pull Request
Refactors deepfrying, removing the gross Deep Fried Foods Holder Object
and replacing it with the edible component.
Now, deep frying a food will simply make the item edible directly. This
means it's still functional and doesn't become a dead item.
This follows the same method that grilling uses when applying its
effects. Tweaks grilling a bit so they line up better. Also, silver
foods can make grilled items.

I swear this is unrelated to the other 2 fried foods related PRs. I
started this a few weeks ago.
## Why It's Good For The Game
Tangibly better code (doesn't have to copy a million vars! Less
abusable!) at the price of removing a soulful piece of code. Also means
that deep frying an item doesn't irreversibly make it unusable / dead.
This is sad, but... damn the holder object sucks.
Unfortunate side effect is that anything that overrides `attack` to not
send signal will *not* be edible when deepfried. Maybe this encourages
better signal use?
Either that or fried foods can override `pre_attack` to hook directly
into eating. I can do that as well.
## Changelog
🆑 Melbert
refactor: Refactored deep fried foods. Deep fried foods are still
""usable"" as their normal item, but are just edible.
qol: Silver Slime stuff can spawn grilled as well as fried.
/🆑
* This kills the deep fried foods holder. Refactors deep frying to just make the thing edible but still functional.
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* fixes full mugs appearing empty in the map editor (#71599)
#71530 tried to fix them in a bit of a roundabout way of overriding the
parent's `update_icon_state()` instead of using `base_icon_state` from
the start. This fixes them properly.
🆑 ShizCalev
fix: Full mugs no longer appear empty in the map editor.
/🆑
* fixes full mugs appearing empty in the map editor
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Save 0.6-0.7s of init time by splitting registering lists of signals into its own proc, and optimizing QDELETED
* modular RegisterSignals
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Hardcrit immunity grants hearing while under the hardcrit threshold and nooartrium doesn't blind you anymore (#71525)
## About The Pull Request
Adds TRAIT_NOCRITOVERLAY to nooartrium which stops the normal critical
overlay from appearing. Damage type overlays still appear as usual.
Makes TRAIT_NOHARDCRIT give you immunity to the deafness caused by being
in hardcrit. (Which also leads into being able to hear while using
nooartrium.)
Makes nooartrium give you immunity to oxyloss knockouts. (The reason
should be obvious.)
## Why It's Good For The Game
Bugfix good.
## Changelog
🆑
fix: Nooartrium doesn't blind you anymore and keeps you conscious
regardless of oxyloss.
fix: Being immune to hardcrit makes you able to hear while you should be
in hardcrit.
/🆑
* Hardcrit immunity grants hearing while under the hardcrit threshold and nooartrium doesn't blind you anymore
Co-authored-by: RikuTheKiller <88713943+RikuTheKiller@users.noreply.github.com>
* mugs now default to spawning empty (#71530)
## About The Pull Request

## Why It's Good For The Game
the sprites wrong!!!!!!!!!!!!!! also the code comment says that the
parent /glass_mug exists to have an empty sprite but the sprite doesn't
start empty!
## Changelog
🆑
fix: roundstart empty mugs now appear to be empty
fix: nanotrasen mug no longer becomes normal mug after you drink from it
/🆑
* mugs now default to spawning empty
Co-authored-by: Sol N <116288367+flowercuco@users.noreply.github.com>
* Fixes liver failure metabolization, TRAIT_STABLELIVER and herignis. (#71367)
## About The Pull Request
fixes#71012
This PR makes it so that a failing liver can still process reagents that
don't need you to have a liver. You can now also overdose on liverless
reagents while not having a liver. (Who coded this? I just want to
talk.)
TRAIT_STABLELIVER and TRAIT_NOMETABOLISM work while you have a failing
liver.
TRAIT_STABLELIVER prevents liver failure as it should.
It also fixes herignis not working and changes it's effects. (More
potent.)
## Why It's Good For The Game
Major bugfix good.
## Changelog
🆑
fix: Metabolization works for reagents that are meant to metabolize
while your liver is failing.
fix: Higadrite, cordiolis hepatico and herignis work properly.
balance: Herignis is more potent and has an overdose threshold of 25u.
/🆑
* Fixes liver failure metabolization, TRAIT_STABLELIVER and herignis.
Co-authored-by: RikuTheKiller <88713943+RikuTheKiller@users.noreply.github.com>