Commit Graph

4070 Commits

Author SHA1 Message Date
SkyratBot 8752ac8abd [MIRROR] Fixes mortars grinding and juicing [MDB IGNORE] (#23617)
* Fixes mortars grinding and juicing (#78212)

## About The Pull Request

Mortal and pestle failed to grind items, as the proc passed over the
item itself, instead of the reagent holder. This PR fixes that.

## Why It's Good For The Game

Its good to have a way to grind some chemicals and fruits without an
All-in One Grinder.
Fixes #78205

## Changelog

🆑
fix: Mortar and pestle can grind stuff again
/🆑

* Fixes mortars grinding and juicing

---------

Co-authored-by: Profakos <profakos@gmail.com>
2023-09-10 13:38:03 -04:00
SkyratBot d36db059b0 [MIRROR] Rice Dough can be made in a beaker [MDB IGNORE] (#23611)
* Rice Dough can be made in a beaker (#78062)

## About The Pull Request

Rice dough can be made in a beaker using 20u of Rice Flour and 10u of
Water. 10u of Rice Flour is made from 5u of Rice and 5u of Flour. Rice
dough can still be crafted manually using the crafting menu and the
original recipe.
## Why It's Good For The Game

Cooks can sometimes get swamped with work, especially on a high-pop
shift or when there are no botanists. By making rice dough more
convenient to make, cooks don't need to spend as much time in the
crafting menu.
Rice Flour is made from mixing equal parts Rice and Flour. Since no
recipe other than Rice dough uses both Rice and Flour in it's Recipe, it
should be fine to turn those regents into the intermediate reagent "Rice
Flour".
Fixes #77966
## Changelog
🆑
qol: Rice Dough may be made in beaker instead of being crafted, but the
rice and flour must be added first
/🆑

* Rice Dough can be made in a beaker

---------

Co-authored-by: blueDev2 <89804215+blueDev2@users.noreply.github.com>
2023-09-10 03:16:07 -07:00
SkyratBot 6620bffa84 [MIRROR] Collected food fixes [MDB IGNORE] (#23596)
* Collected food fixes (#78190)

I went through the code and tried to find all of the remaining places we
forgot to update the arguments passed into `item/food/Initialize` after
more arguments were added to it, because there were a couple and they
caused things to stop working.
Most notably, golems were unable to eat anything because nothing would
correctly spawn "golem food".

_Additionally_ we were using a bunch of named arguments in new whenever
crafting or cooking food. This runtimed, causing the food not to init
properly.
_On top of that_ a late code review on a recent PR processed a list into
a string_assoc_list twice causing it to become null.

Finally, we were trying to check the food preferences of examining
ghosts or dogs or other non-human mobs. We shouldn't do that.

I also added a unit test for moth and golem food in the hopes that we'll
notice them breaking.

* Collected food fixes

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-09 10:32:37 -04:00
SkyratBot 4d9bed607f [MIRROR] Fixing this dead mouse related harddel [MDB IGNORE] (#23569)
* Fixing this dead mouse related harddel (#78150)

## About The Pull Request

Fixes https://github.com/tgstation/tgstation/issues/78085

Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23510
Fixes https://github.com/Skyrat-SS13/Skyrat-tg/issues/23506

![image](https://github.com/tgstation/tgstation/assets/13398309/fab09657-12e8-4fb8-9e84-05ef48c9d55e)

When the foodening added some args to the constructor of
`/obj/item/food` some instances of the constructor being passed stuff
got overlooked and were not updated.

This resulted in a mob ref potentially being passed in to
`starting_reagent_purity` in some cases, ultimately resulting in this
harddel.

@ SyncIt21 this is exactly the reason I was being so paranoid with #77946
the other day. Tracking constructor uses down can be such a pain when
they aren't prefaced with a type, and are almost guaranteed to get
overlooked during refactors if the compiler does not say anything about
it.

I hate DM.

edit: and I just tested this only to find a second bug with the ice
cream. I can confirm that it is in fact working now after fixing that
one too.

<details><summary>evil ice cream</summary>

![image](https://github.com/tgstation/tgstation/assets/13398309/46cd85cd-1051-46d9-9642-0275af098dbe)

</details>

## Why It's Good For The Game

Fixing a harddel that was causing many CI failures

## Changelog

🆑
fix: fixes creamatorium not producing any suspicious ice cream, and
fixes a dead mouse related harrdel
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>

* Fixing this dead mouse related harddel

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: Jacquerel <hnevard@ gmail.com>
2023-09-07 18:39:21 -04:00
SkyratBot c27a9f4576 [MIRROR] Fixed reagent grinding (and juicing?) [MDB IGNORE] (#23534)
* Fixed reagent grinding (and juicing?) (#78136)

## About The Pull Request

Resolves #78063

The Foodening refactored grinding and juicing in the reagent grinder,
but there were a few mistakes along the way. Most notably, items that
gave extra reagents when ground were not doing that (such as peptides in
livers) due to an error in adding those reagents. This error has been
corrected.

I've also fixed the code for juicing, which was erroneously passing a
beaker as its own reagents datum, though I couldn't tell if this
actually had any negative effects. Somehow. Better safe than sorry.
## Why It's Good For The Game

It's good to get everything you're supposed to get when you grind stuff.
The main source of peptides being inadvertently removed also made
cytology harder, and cytology really doesn't need to be made _more_
inconvenient.
## Changelog
🆑
fix: Fixed all-in-one grinders not giving all the correct reagents when
grinding.
/🆑

* Fixed reagent grinding (and juicing?)

---------

Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
2023-09-05 12:59:03 -04:00
SkyratBot 87bfa7a61a [MIRROR] Fixes typo 'transfered', olive oil reaction repath [MDB IGNORE] (#23469)
* Fixes typo 'transfered', olive oil reaction repath

* Modular

* Update condiment.dm

* Update recipes_guide.dm

* Update _cup.dm

---------

Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-04 08:49:33 -04:00
SkyratBot f0b265b6bb [MIRROR] Foodening [MDB IGNORE] (#23440)
* Foodening

* Update chem_dispenser.dm

* Juicening?

* Update big_mortar.dm

* Adds crafting complexities to modular foods

* Olive oil repath

* Cooking oil repath

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-09-03 20:47:17 -04:00
SkyratBot 2a250b66ea [MIRROR] Move some job related achievements into the job achievement category [MDB IGNORE] (#23494)
* Move some job related achievements into the job achievement category (#78092)

## About The Pull Request

Read title, this only affects the UI and not the database as far as I am
aware
## Why It's Good For The Game

The jobs category is painfully empty, only being home to four
achievements total. Meanwhile we have a ton of achievements inside the
miscellaneous category, a lot of which are not miscellaneous
achievements at all. Right now I just wanna focus on moving around
achievements from existing category to existing category though. This
improves achievement category spread overall by a small but necessary
amount.
## Changelog
🆑 distributivgesetz
code: Moved some job-related achievements from the misc category to the
jobs category.
/🆑

* Move some job related achievements into the job achievement category

---------

Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
2023-09-03 15:28:56 -04:00
SkyratBot 55cbf493f7 [MIRROR] Adds a sound effect for hypospray/medipen injections [MDB IGNORE] (#23493)
* Adds a sound effect for hypospray/medipen injections (#77979)

## About The Pull Request

Adds a sound effect for hypospray/medipen injections. Doesn't affect
sleepy pens or HMS injectors

Sound is sourced from the open source CM codebase.

## Why It's Good For The Game

> Adds a sound effect for hypospray/medipen injections. Doesn't affect
sleepy pens or HMS injectors

Satisfactory, visceral feedback of injection. Sounds nice. Makes stealth
injections less noticeable, I guess, not that there's any good
candidates for that with medipens.

## Changelog

🆑
sound: Adds a sound effect for hypospray/medipen injections. Doesn't
affect sleepy pens or HMS injectors
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>

* Adds a sound effect for hypospray/medipen injections

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
2023-09-03 13:20:25 -04:00
SkyratBot 716ce9234e [MIRROR] Fixes meth explosion occurring in the body [MDB IGNORE] (#23439)
* Fixes meth explosion occurring in the body (#77995)

## About The Pull Request
The meth explosion isn't supposed to happen in a body, but it does
anyway. This PR fixes that, so no more meth explosion syringes (sorry!)
## Why It's Good For The Game
Fixes #77909
## Changelog
🆑
fix: Meth will no longer explode when reacting in a body
/🆑

* Fixes meth explosion occurring in the body

---------

Co-authored-by: Nick <42454181+Momo8289@users.noreply.github.com>
2023-08-31 14:26:54 -07:00
SkyratBot 4de7f7fc10 [MIRROR] Removes biotype check from stamloss on probital [MDB IGNORE] (#23406)
* Removes biotype check from stamloss on probital (#77862)

## About The Pull Request

Should fix probital spamming chat messages and infinitely sleeping
plasmamen and such when overdosed.

If desired, I can also remove biotype checks from all other instances of
reagent stamloss, I did this simply such that it's now 100% a fix PR.
## Why It's Good For The Game

Expecting to powergame only to be infinitely slept with a nice helping
of chat spam isn't all that nice.
## Changelog
🆑
fix: Probital overdose no longer causes plasmamen and other inorganics
to receive the longest nap in their lives.
/🆑

* Removes biotype check from stamloss on probital

---------

Co-authored-by: RikuTheKiller <88713943+RikuTheKiller@users.noreply.github.com>
2023-08-30 16:30:28 -04:00
SkyratBot 59f3e93468 [MIRROR] Change capacity of big fuel tank from 250 back to 5000 [MDB IGNORE] (#23353)
* Change capacity of big fuel tank from 250 back to 5000 (#77923)

## About The Pull Request

Changes big welding fuel tank capacity from 250 (which was calculated
from SHEET_MATERIAL_AMOUNT for some reason) back to 5000.

## Why It's Good For The Game

Fixes big fuel tank capacity and, by extension, its explosion radius.

* Change capacity of big fuel tank from 250 back to 5000

---------

Co-authored-by: MrDas <62486730+Das15@users.noreply.github.com>
2023-08-26 23:50:50 -04:00
SkyratBot 0f0c69aa26 [MIRROR] Replaces or removes miscellaneous sources of clone damage from the game [MDB IGNORE] (#23309)
* Replaces or removes miscellaneous sources of clone damage from the game (#77832)

## About The Pull Request

Might as well go over all of them here.

1. Holoparasites deal half of the damage they take as clone damage to
their summoner when they are knocked out. Now it deals damage to the
brain instead.
2. Prion peptides used to deal a little bit of clone damage every
reagent tick. Now they do it to the brain.
3. When transforming back to human from a slime via a shapeshift spell,
the total damage you have gets flat converted into clone damage. Now it
gets flat converted to toxin damage.
4. Black stabilized slimes let you drain health from other people if you
latched onto them, dealing clone damage to whoever you latched onto,
same as slimes used to do. This has been converted to brute damage.

## Why It's Good For The Game

Explanation from #77569:

> Clone damage is a damage type that shouldn't exist anymore, it's a
relic left from the era of cloning and it's so specific of a damage type
that it rarely gets used as a result. It really should be a type of
affliction (wound etc) instead of its own damage counter.

Only a few left to go, cosmic heretic lore, the greed ruin and the
decloner gun. Then we can remove clone damage completely.

## Changelog
🆑
del: Removes miscellaneous sources of clone damage from the game.
/🆑

* Replaces or removes miscellaneous sources of clone damage from the game

---------

Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
2023-08-24 18:54:00 -07:00
SkyratBot 715015d879 [MIRROR] Fix sleep status effect not processing [MDB IGNORE] (#23266)
* Fix sleep status effect not processing (#77637)

## About The Pull Request
Some fixes in #77219 brought up some weirdness with the sleep status
effect. Healium would perma-sleep people, and sleeping in general lost
the ability to heal minor wounds.

## Why It's Good For The Game
Fix bugs, wow healium is abusable right now

* Fix sleep status effect not processing

---------

Co-authored-by: FlufflesTheDog <piecopresident@gmail.com>
2023-08-22 19:11:38 -04:00
SkyratBot 7e464f49af [MIRROR] updates martian can sprites, fixes misc text and bugs in wellcheers [MDB IGNORE] (#23228)
* updates martian can sprites, fixes misc text and bugs in wellcheers (#77757)

## About The Pull Request
this is kind of a miscellaneous pile of fixes for soda.dmi, rolled up
with a larger resprite of the new cans that were added with #75988. you
can see everything visually changed (other than inhands) in the image
below

![image](https://github.com/tgstation/tgstation/assets/110322848/4c28f0c7-3975-4510-9958-9eef7f913051)
and then the inhands here:

![image](https://github.com/tgstation/tgstation/assets/110322848/03967e6e-6551-40d5-b2ec-7f27fabbc175)
also changes wellcheers mood event text, and the mood switch to be based
on sanity instead. apparently the mood test allowed for foolproof
traitor testing, which is not ideal. this hopefully fixes that.
## Why It's Good For The Game
the new martian drinks used the previous style of cans, which was
updated in #77424. this makes them consistent with that style.
everything else is minor things i missed or forgot to do in that PR.
also things that enable traitor testing are not great, even if they're
niche and require amputation to pull off.
## Changelog
🆑
fix: wellcheers is now based on sanity rather than mood
image: resprites martian cans
image: adds inhands for martian cans and wellcheers
image: minor tweaks to other cans
spellcheck: updates wellcheers mood text
/🆑

* updates martian can sprites, fixes misc text and bugs in wellcheers

---------

Co-authored-by: Lamb <110322848+CoiledLamb@users.noreply.github.com>
2023-08-20 22:01:18 -04:00
SkyratBot 3e2e59d862 [MIRROR] Fixes beakers disappearing when switching in chem heater [MDB IGNORE] (#23229)
* Fixes beakers disappearing when switching in chem heater (#77770)

## About The Pull Request
Fixes #77762

The function to replace beakers in the Chem Heater unregistered the
signal from the beaker after removing it, causing it to break and the
beaker to disappear. This fixes that by unregistering the signal first.
## Why It's Good For The Game
Beakers don't disappear when you try to swap them in the Chem Heater
anymore.
## Changelog
🆑
fix: fixed beakers disappearing when swapped in a chem heater
/🆑

* Fixes beakers disappearing when switching in chem heater

---------

Co-authored-by: Ical <86125936+Ical92@users.noreply.github.com>
2023-08-20 22:01:08 -04:00
SkyratBot d21e06104f [MIRROR] Dunking handle_atom_del() in the trash bin. [MDB IGNORE] (#23183)
* Dunking handle_atom_del() in the trash bin.

* Update _box_magazine.dm

* Modular paths

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-18 12:17:04 -04:00
SkyratBot fe76790608 [MIRROR] Adds numerous boozepowers to the martian drinks. [MDB IGNORE] (#23161)
* Adds numerous boozepowers to the martian drinks. (#77605)

## About The Pull Request

my family owns a liquor store so i made a bit of each of these and rated
them all on a scale of 1-100 on how fucked up they were likely to make
you for boozepower

These were all set at '20' boozepower for some reason. This fixes that.
## Why It's Good For The Game

fixes #77566
## Changelog
🆑
fix: fixes all the martian drinks having 20 boozepower
/🆑

---------

Co-authored-by: oilysnake <63020759+oilysnake@ users.noreply.github.com>

* Adds numerous boozepowers to the martian drinks.

---------

Co-authored-by: DeerJesus <willgiscool@gmail.com>
Co-authored-by: oilysnake <63020759+oilysnake@ users.noreply.github.com>
2023-08-17 17:28:37 -04:00
SkyratBot a2ac6b6873 [MIRROR] Removes Liver Damage From Spider Toxins, Reduces Injection Amount for Tangle Spider [MDB IGNORE] (#23128)
* Removes Liver Damage From Spider Toxins, Reduces Injection Amount for Tangle Spider (#77550)

## About The Pull Request

This PR adds a new value to toxins called liver_damage_multiplier. As
you might have guessed, this value modifies how much liver damage
processing the toxin will do, and it is default at 1. Spider toxins now
have this value set to 0, as having their toxins murdering livers isn't
an intentional part of their gameplay loop.

Tangle spiders also now inject half the amount of acid they used to. It
was actually really strong compared to the other toxin types and wasn't
intentional according to Seth.

## Why It's Good For The Game

Liver damage is very strong when it comes to spiders, but it isn't
considered at all in their balancing. Removing it makes the actual toxin
damage the threat and not the liver damage.

Tangle Spider isn't supposed to have high toxin damage, but because of
it injecting acid, it did more damage than the other spider types and
was requested to be have the injection amount reduced by Seth.

## Changelog
🆑
balance: Hunter and viper spider toxins no longer deal liver damage.
balance: Tangle spider's acid injection per bite reduced from 5 to 2.5.
/🆑

* Removes Liver Damage From Spider Toxins, Reduces Injection Amount for Tangle Spider

---------

Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
2023-08-16 18:20:41 -04:00
SkyratBot ac5d85a080 [MIRROR] Fix spaceacillin's infection processing not applying to corpses [MDB IGNORE] (#23118)
* Fix spaceacillin's infection processing not applying to corpses (#77635)

## About The Pull Request
Spaceacillin used to be able to be able to treat infections on the dead
as well as the living, and got unintentionally changed in #76393. Simply
brings back old functionality
## Why It's Good For The Game
Fix bugs!
## Changelog
🆑
fix: Spaceacillin will once again provide antiviral effects for the
deceased
/🆑

* Fix spaceacillin's infection processing not applying to corpses

---------

Co-authored-by: FlufflesTheDog <piecopresident@gmail.com>
2023-08-16 09:49:02 -04:00
SkyratBot d5b783feaf [MIRROR] Chemistry Heaters can now be unwrenched [MDB IGNORE] (#23113)
* Chemistry Heaters can now be unwrenched (#77612)

## About The Pull Request
Chemistry heaters can now be unwrenched. now you can steal the ENTIRE
chemistry setup
## Why It's Good For The Game
The dispenser and the chem master can be unwrenched, so I've made it
more consistent, especially considering the sprite of the reaction
chamber just has two tiny legs attaching it to the ground.

## Changelog
🆑
qol: the chemistry heater can now be unwrenched.
/🆑

* Chemistry Heaters can now be unwrenched

---------

Co-authored-by: Vincent983 <124026007+Vincent983@users.noreply.github.com>
2023-08-16 02:14:14 -04:00
SkyratBot d2b4b475cb [MIRROR] Spiders don't automatically grant an antag datum [MDB IGNORE] (#23029)
* Spiders don't automatically grant an antag datum (#77523)

## About The Pull Request

Fixes #77501

Spider egg ghost role spawners grant the spider antag datum, rather than
the act of being a spider.
This means that gold core, mapstart, polymorph belt, and other spiders
will not have an antagonist datum.

While doing this I also made a new abstract `mob/living/basic/spider`
type which all three kinds of spider life stage (`spiderling`, `young`,
`giant`) extend from, because there was a gross amount of copied code.
Now there isn't.

Also the Flesh Spider and Event Midwife eggs now simply hatch adult
spiders instead of child ones.
This is because there is no reason for either of these to have a two
minute wait time before they get going. Midwife spiders spawned by the
event should just start spidering immediately, and Flesh Spiders are
made by changelings and shouldn't be effected by measures introduced to
balance the spider gamemode.
Eggs which are laid during a round and _can_ hatch into midwife spiders
still hatch baby spiders.

Also I swapped some white pixels on the animation of the ambush
spiderling for a different colour because they looked bad.

## Why It's Good For The Game

While the policy is always "if you turn yourself into something, you're
not an antagonist" the presence of the antag datum still confuses
people. Plus that code was gross and I didn't like it.

## Changelog

🆑
fix: Giant Spiders only have an antag datum if created by the round
event.
balance: Flesh spider eggs hatch into adult spiders instead of baby
spiders.
balance: The eggs spawned by the start of the spider infestation event
hatch into adult Midwife spiders instead of baby ones.
/🆑

* Spiders don't automatically grant an antag datum

* Modular paths

* Modular paths

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-08-12 00:17:56 -04:00
SkyratBot b82a1d0a3a [MIRROR] Adds hauntium as a reagent with new fun uses. [MDB IGNORE] (#23027)
* Adds hauntium as a reagent with new fun uses. (#77471)

## About The Pull Request
Adds the material hauntium as a reagent, along with bringing some unique
effects with the reagent.

There are a few new ways to get it other than just the camera obscura as
before, such as grinding certain ghostly things.

Unique effects it brings:

- It works in metalgen (I believe the metalgen recipe is still broken as
of making this) to make hauntium infused metalgen.

https://github.com/tgstation/tgstation/assets/58376695/121ca6b2-00b7-4203-bc6a-48976b1af802

- Any object touched by the chem will temporarily have the haunted
effect, letting it teleport around randomly and even attack people.

https://github.com/tgstation/tgstation/assets/58376695/103aeee5-ed3e-4fdd-85e4-ac7338823c46

- If you put it in your body, it hurts your "soul" (soul being heart and
mood)

![image](https://github.com/tgstation/tgstation/assets/58376695/34182a4c-face-4fe7-b170-a7b10122a14d)
...unless you are morbid or undead, in which it gives a slight mood
boost and acts like an addiction-less drug
## Why It's Good For The Game
Hauntium previously was super niche and not very useful other than
making funny haunted toolboxes from it. This expands it's usage and
makes it a lot more interesting. I also know a good few people who have
also wished this was available to use in metalgen and now you can!
## Changelog
🆑
add: Lets you grind things into a hauntium reagent which works similarly
to the solid form but is versatile and has some unique effects.

/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>

* Adds hauntium as a reagent with new fun uses.

---------

Co-authored-by: die_amond <58376695+dieamond13@users.noreply.github.com>
Co-authored-by: Ghom <42542238+Ghommie@ users.noreply.github.com>
2023-08-11 23:49:29 -04:00
SkyratBot d5655c3c55 [MIRROR] Adds Summon Simians & Buffs/QoLs Mutate [MDB IGNORE] (#22970)
* Adds Summon Simians & Buffs/QoLs Mutate (#77196)

## About The Pull Request

Adds Summon Simians, a spell that summons four monkeys or lesser
gorillas, with the amount increasing per upgrade. The monkeys have
various fun gear depending on how lucky you get and how leveled the
spell is. If the spell is maximum level, it only summons normal
gorillas.

Added further support for nonhuman robed casting: Monkeys, cyborgs, and
drones can all now cast robed spells as long as they're wearing a
wizardly hat as well.

Made monkeys able to wield things again.

Wizard Mutate spell works on non-human races. It also gives you
Gigantism now (funny). If the Race can't support tinted bodyparts, your
whole sprite is temporarily turned green.

Made Laser eyes projectiles a subtype of actual lasers, which has
various properties such as on-hit effects and upping the damage to 30.

Improved some monkey AI code.

## Why It's Good For The Game

> Adds Summon Simians, a spell that summons four monkeys or lesser
gorillas, with the amount increasing per upgrade. The monkeys have
various fun gear depending on how lucky you get and how leveled the
spell is. If the spell is maximum level, it only summons normal
gorillas.

It's criminal we don't have a monky spell, and this is a really fun spin
on it. Total chaos, but total monky chaos. It's surprisingly strong,
but! it can very well backfire if you stay near the angry monkeys too
long and your protection fades away. Unless you become a monkey
yourself!!

> Wizard Mutate spell works on non-human races.

This spell is great but it's hampered by the mutation's human
requirement, which is reasonable in normal gameplay. Wizards don't need
to care about that, and the human restriction hinders a lot of possible
gimmicks, so off it goes. Also, wizard hulk does't cause chunky fingers
for similar reasons

> Made Laser eyes projectiles a subtype of actual lasers, which has
various properties such as on-hit effects and upping the damage to 30.

Don't really caer about the damage so much, this is more so that it has
effects such as on-hit visuals. Can lower the damage if required, but
honestly anything that competes against troll mjolnir is good.

> Added further support for nonhuman robed casting: Monkeys, cyborgs,
and drones can all now cast robed spells as long as they're wearing a
wizardly hat as well.

SS13 is known for 'The Dev Team Thinks of Everything' and I believe this
is a sorely lacking part of this or something. It's funny.
I want to see a monkey wizard.

> Made monkeys able to wield things again.

I really don't know why this was a thing and it was breaking my axe and
spear wielding primal monkeys. Like, why?

## Changelog

🆑
add: Adds Summon Simians, a spell that summons four monkeys or lesser
gorillas, with the amount increasing per upgrade. The monkeys have
various fun gear depending on how lucky you get and how leveled the
spell is. If the spell is maximum level, it only summons normal
gorillas.
balance: Wizard Mutate spell works on non-human races. It also gives you
Gigantism now (funny). If the Race can't support tinted bodyparts, your
whole sprite is temporarily turned green.
balance: Made Laser eyes projectiles a subtype of actual lasers, which
has various properties such as on-hit effects and upping the damage to
30.
add: Added further support for nonhuman robed casting: Monkeys, cyborgs,
and drones can all now cast robed spells as long as they're wearing a
wizardly hat as well.
balance: Made monkeys able to wield two-handed things again.
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>

* Adds Summon Simians & Buffs/QoLs Mutate

* Updates our modular file to take this into account (I hate that this exists)

---------

Co-authored-by: carlarctg <53100513+carlarctg@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-08-11 14:42:17 -04:00
Bloop 3782e4b710 [MISSED MIRROR] Martian Food: A Taste of the Red Planet (#75988) (#23013)
Martian Food: A Taste of the Red Planet (#75988)

## About The Pull Request
Adds a selection of new foods and drinks based around Mars.
More information on Mars can be found here:
https://github.com/tgstation/common_core/blob/master/Interesting%20Planets/Human%20Space/The%20Sol%20System.md
To summarise for the general audience, Mars is a vital colony of the
Terran Federation, having been primarily settled (at least originally)
by Cybersun Industries to harvest its lucrative supplies of plasma, the
second largest in human space behind Lavaland. This has given Mars a
diverse culture evolving from the mostly East Asian colonists, and their
food reflects this.

Thanks to Melbert for their work on the soup portion of this PR.

The food:
Martian cuisine draws upon the culinary traditions of East Asia, and
adds in fusion cuisine from the later colonists. Expect classics such as
ramen, curry, noodles and donburi, as well as new takes on the formula
like the Croque-Martienne, Peanut Butter Ice Cream Mochi, and the
Kitzushi- chilli cheese and rice inside a fried tofu casing. Oh, and
lots of pineapple. The Martians love pineapple:

![image](https://github.com/tgstation/tgstation/assets/58124831/c9ae33a1-e03a-4f94-8ce0-8ad124e88e8d)
Also included are some foods for Ethereals, which may or may not be
hinting at something I've got planned...

The drinks:
Four new base drinks make their way to the game, bringing with them a
host of new cocktails: enjoy new ventures in bartending with Coconut
Rum, Shochu/Soju, Yuyake (our favourite legally-distinct melon liqueur),
and Mars' favourite alcoholic beverage, rice beer. Each is available in
the dispenser, as well as bottles in the booze-o-mat:

![image](https://github.com/tgstation/tgstation/assets/58124831/914a6e2a-7ef5-4791-ae31-d08fa9211083)

The recipes:
To make your (and the wiki editors) lives easier, please find below the
recipes for both foods and drinks:
Food: https://hackmd.io/@EOBGames/BkVFU0w9Y
Drinks: https://hackmd.io/@EOBGames/rJ1OhnsJ2
## Why It's Good For The Game
Another lot of variety for the chef and bartender, as well as continuing
the work started with lizard and moth food in getting Common Core into
the game in a tangible and fun way.
## Changelog
🆑 EOBGames, MrMelbert
add: Mars celebrates the 250th anniversary of the Martian Concession
this year, and this has brought Martian cuisine to new heights of
popularity. Find a new selection of Martian foods and drinks available
in your crafting menu today!
/🆑

---------

Co-authored-by: EOBGames <58124831+EOBGames@users.noreply.github.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
2023-08-11 14:40:49 -04:00
SkyratBot a17d0f1ee3 [MIRROR] T [MDB IGNORE] (#23010)
* T

* Update drink_reagents.dm

* Update drink_reagents.dm

---------

Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-11 08:06:05 -04:00
SkyratBot b2a6889563 [MIRROR] resprites all soda cans, adds wellcheers juice [MDB IGNORE] (#22955)
* resprites all soda cans, adds wellcheers juice

* Update code/datums/mood_events/drink_events.dm

---------

Co-authored-by: Lamb <110322848+CoiledLamb@users.noreply.github.com>
Co-authored-by: Pinta <68373373+softcerv@users.noreply.github.com>
2023-08-08 23:22:24 -04:00
SkyratBot 7c68b51b6c [MIRROR] Nukies Update 7: Hats (Also massive uplink standardization, weapon kits and ammo changes) [MDB IGNORE] (#22937)
* Nukies Update 7: Hats (Also massive uplink standardization, weapon kits and ammo changes)

* Update nukeops.dm

* Update clownops.dm

* Modular fixes

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-08-08 12:38:40 -04:00
SkyratBot 07863df30f [MIRROR] New skinne colors [MDB IGNORE] (#22928)
* New skinne colors (#77400)

## About The Pull Request

Adds 4 new skin tones. Speedmerg.

## Why It's Good For The Game

There are currently a whopping FOUR dark skin tones, as opposed to the
eight light ones. This adds four new darker skin tones :)
<details>
<summary> Some super awesome screenshots </summary>
"Chestnut" mixed1

![image](https://github.com/tgstation/tgstation/assets/141452834/993889cc-48cf-4d3d-b6d8-c1ae9d583097)
"Walnut" mixed2

![image](https://github.com/tgstation/tgstation/assets/141452834/c9a682f0-c0a1-4766-942e-a1c3df68434b)
"Coffee" mixed3

![image](https://github.com/tgstation/tgstation/assets/141452834/f5a86dac-9112-435b-b945-f4f4da3377fb)
"Macadamia" mixed4

![image](https://github.com/tgstation/tgstation/assets/141452834/b85b02cf-8ad0-4a62-8b60-45094edb4e7f)

All of my friends!

![image](https://github.com/tgstation/tgstation/assets/141452834/57010d8a-125d-46e5-a28f-db75cf523413)

</details>

## Changelog
🆑
add: 4 New skin tones, hooray!
/🆑

* New skinne colors

---------

Co-authored-by: goobliner <141452834+goobliner@users.noreply.github.com>
2023-08-07 17:22:23 -04:00
SkyratBot ac192a1481 [MIRROR] Fixes champagne froth icon missing [MDB IGNORE] (#22903)
* Fixes champagne froth icon missing (#77389)

## About The Pull Request

#71810 split up `drinks.dmi` and moved froth effects to
`drink_effects.dmi` but `make_froth()` was referencing the drink's
`icon` aka `drinks.dmi`.

## Why It's Good For The Game

froth was killed after a month of it existing and nobody noticed this is
so sad can we hit 50 lilkes

## Changelog

🆑
fix: fixed missing froth sprites
/🆑

* Fixes champagne froth icon missing

---------

Co-authored-by: Sealed101 <cool.bullseye@yandex.ru>
2023-08-06 18:37:31 -04:00
SkyratBot f659ffc866 [MIRROR] New sprites for bottles [MDB IGNORE] (#22886)
* New sprites for bottles (#77365)

![image](https://github.com/tgstation/tgstation/assets/3625094/db3c8f35-5943-4ed6-9e53-9ea52013a0d1)

## About The Pull Request

Updates sprites of many bottles.

Combined effort of three:
Most of these are donated by Kryson.
I tweaked them and added the missing bottles.
Zeckle provided the base for the Voltaic Wine Bottle.

![image](https://github.com/tgstation/tgstation/assets/3625094/6dc078a9-c492-4a75-9f51-bc35f6a4141e)

Unholy water now has a separate sprite:

![image](https://github.com/tgstation/tgstation/assets/3625094/6f7f8a2a-cbf6-47e5-b276-556ad35db964)

Also made the holy grenade use the holy flask sprite:

https://github.com/tgstation/tgstation/assets/3625094/00d272ea-867d-4fdd-b4fb-807accdec49b

## Why It's Good For The Game

They look more consistent with other 3/4 items.

## Changelog

🆑 Kryson, MTandi, Zeckle (Mike)
image: New bottles and holy grenade sprites
/🆑

* New sprites for bottles

---------

Co-authored-by: Andrew <mt.forspam@gmail.com>
2023-08-05 10:37:20 -04:00
Zergspower 88bf87fa4e [MANUAL MIRROR] Robotic organ and disease improvements (#22631)
* Robotic organ and disease improvements (#76766)

## About The Pull Request

In the code description for the `ORGAN_ROBOTIC` flag, it says that
robotic organs are not supposed to decay or regenerate health. I went
and fixed this and added some more "robotic" behavior.

New changes for robotic organs:
- No longer heal damage passively
- No longer gain health from revival
- No longer heal in the smart organ fridge
- No longer heal from pluoxium
- Robotic ears no longer heal from ear healing items (earmuffs, etc.)
- Robotic eyes are immune to changeling blind stings
- Robotic eyes no longer heal from occuline

New changes for diseases:
- Some diseases now require an organ to work. A robotic organ will give
immunity to the disease symptom unless the disease has "Inorganic
Biology".
- The transmission methods for diseases require organs to work but
robotic organs are immune. (except inorganic biology) Airborne disease
transmission require lungs. Ingested (drunk or eaten) disease
transmission requires a stomach. Blood (inject or patch) disease
transmission requires a heart.
- Organs removed from a mob that is afflicted with a disease will be
infectious while handling or transplanting it. (again, robotic organs
are immune unless inorganic biology is present) Certain admin spawned or
special diseases are exempt from this transmission method.
- A stomach is required for nebula nausea, gastritium, carpellosis,
metabolic boost, vomit, weight loss, death sandwich poisoning,
- Lungs are required for choking, asphyxiation, cough, cold9, oxygen
restoration, sneezing, flu, cold, spanish flu, tuberculosis
- A liver is required for tissue hydration, plasma fixation, parasitic
infection
- Ears are required for deafness, sensory restoration
- A heart is required for toxolysis, heart failure
- Eyes are required for sensory restoration, hyphema
- A tongue is required for voice change, parrot possession, pierrot
throat
- Wizarditis no longer requires a head (wtf?) to function

## Why It's Good For The Game

Robotic organs should behave as intended. Not naturally healing (like
organic organs) was supposed to be their downside to counteract their
their ability to not decay upon death.

## Changelog

🆑
fix: Fix robotic organs to not gain health passively, from revival,
smart organ fridge, pluxium, occuline, and earmuffs.
add: Some diseases now require the appropriate internal organ to work. A
robotic organ will give immunity to the disease symptom unless the
disease has "Inorganic Biology".
add: Disease transmission methods now require an internal organ to be
successful. Robotic organs give immunity. (except inorganic biology)
Airborne disease transmission require lungs. Ingested (drunk or eaten)
disease transmission requires a stomach. Blood (inject or patch) disease
transmission requires a heart.
add: Organs removed from a mob that is afflicted with a disease will be
infectious while handling or transplanting it. (again, robotic organs
are immune unless inorganic biology is present) Certain admin spawned or
special diseases are exempt from this transmission method.
add: A stomach is required for nebula nausea, gastritium, carpellosis,
metabolic boost, vomit, weight loss, death sandwich poisoning
add: Lungs are required for choking, asphyxiation, cough, cold9, oxygen
restoration, sneezing, flu, cold, spanish flu, tuberculosis
add: A liver is required for tissue hydration, plasma fixation,
parasitic infection
add: Ears are required for deafness, sensory restoration
add: A heart is required for toxolysis, heart failure
add: Eyes are required for sensory restoration, hyphema
add: A tongue is required for voice change, pierrot throat
bal: Remove head requirement for wizarditis disease
/🆑

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

* Modular parts

* Printing time

* Hah typos

* I cant spell

* Golden Shower feedback

* Posi-Time

* Update modular_skyrat/modules/synths/code/bodyparts/brain.dm

---------

Co-authored-by: Tim <timothymtorres@gmail.com>
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
2023-08-04 15:07:07 -04:00
SkyratBot 72b1a979ff [MIRROR] Improves the RPG loot wizard event. [MDB IGNORE] (#22800)
* Improves the RPG loot wizard event. (#77218)

## About The Pull Request
As the title says. Adds a bunch more stat changes to various different
items and a somewhat simple way of modifying them whilst minimizing
side-effects as much as possible.
Added a new negative curse of polymorph suffix that can randomly
polymorph you once you pick up the item.
Curse of hunger items won't start on items that are not on a turf.
Curse of polymorph will only activate when equipped.

Bodyparts, two-handed melees, bags, guns and grenades, to name a few,
have a bunch of type-specific stat changes depending on their quality.

Some items won't gain fantasy suffixes during the RPG loot event, like
stacks, chairs and paper, to make gamifying the stats a bit harder.
I'm sure there'll still be other ways to game the event, but it's not
that big of a deal since these are the easiest ways to game it.
High level items also have a cool unusual effect aura

## Why It's Good For The Game
Makes the RPG item event cooler. Right now, it's a bit lame since
everything only gains force value and wound bonus on attack. This makes
the statistic increases more type-based and make it interesting to use

It's okay for some items to be powerful since this is a wizard event and
a very impactful one too. By making the curse of hunger items not spawn
on people, it'll also make it a less painful event too.

## Changelog
🆑
add: Expanded the RPG loot wizard event by giving various different
items their own statistic boost.
/🆑

---------

Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>

* Improves the RPG loot wizard event.

---------

Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com>
Co-authored-by: Watermelon914 <3052169-Watermelon914@ users.noreply.gitlab.com>
2023-07-31 20:02:03 -04:00
SkyratBot 60df7291ce [MIRROR] [READY] Fishing and aquarium expansion. [MDB IGNORE] (#22731)
* [READY] Fishing and aquarium expansion.

* Update general.dm

* Update production_skill.dm

* Merge conflict

* Merge branch 'upstream-merge-76531' of https://github.com/Skyrat-SS13/Skyrat-tg into upstream-merge-76531

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
Co-authored-by: Bloop <13398309+vinylspiders@users.noreply.github.com>
2023-07-27 18:41:43 -04:00
SkyratBot 46ee262598 [MIRROR] made the bee a basic insect [MDB IGNORE] (#22652)
* made the bee a basic insect (#76971)

## About The Pull Request
the bee now a baisc insect he will now go to find his home and he will
go and pollinated the plants and helped the queen make children by
polliniting the plants and he will. the queen will leve the hive more
rarely than the normal bees so she can stay in the hive to make kids

## Why It's Good For The Game
the bee now is a basic insect so it means he have a better ai

## Changelog
🆑
balance: the bee now can fly over the machines so its easy for him to go
to the hydroponics machine
fix: player bees now will not be stuck inside the hive if he entered it,
they can now leave it
fix: fixed a har deleted when the hive is deleted all the bees still
have a refence to the hive now its fixed
fix: now when a player interacted with the bee hive the bees will now
leave the hive to defend the hive (it was glitched)
refactor: the bees now are a basic insect.
/🆑

* made the bee a basic insect

* Merge conflict

---------

Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-24 01:21:59 -04:00
SkyratBot e9eccf3b0b [MIRROR] Removes the word "chemical" from "chemical patch" [MDB IGNORE] (#22610)
* Removes the word "chemical" from "chemical patch" (#76966)

## About The Pull Request
In #76011, I bitched and moaned about how the ChemMaster gives patches a
huge ass name. I've talked to other Medical Doctor mains and I also
heard bitching about the word "chemical", which is just a pain in the
ass. It seems many of us just end up removing it because it's so
repetitive and makes the patch's name long fnr. I don't think the word
"chemical" is really needed in there since you can clearly tell it's a
chemical patch just by looking at the word "patch" and the sprite.

I don't think this should affect anything else in the game in a negative
way. In that same issue, it was suggested that the cap for names was
increased instead, but this also solves the issue of the word "chemical"
taking up so much space in the patch's name without touching unknown
lands.
## Why It's Good For The Game
Less words, more healing!
## Changelog
🆑
qol: The word "chemical" has been removed from "chemical patch" when
printing patches
/🆑

* Removes the word "chemical" from "chemical patch"

---------

Co-authored-by: Justice <42555530+Justice12354@users.noreply.github.com>
2023-07-21 13:55:06 -04:00
SkyratBot 032f45f939 [MIRROR] Adds a new positive quirk, "Spacer Born". [MDB IGNORE] (#22520)
* Adds a new positive quirk, "Spacer Born".

* Update quirks.dm

* Update quirks.dm

oops

* No combining with oversized quirk

* Update quirks.dm

this is why I don't edit in the web app

* Removes HUMAN_ONLY flag

---------

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <vinylspiders@gmail.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-21 00:57:28 -04:00
SkyratBot 8782f19258 [MIRROR] Stabilizes code that flicks overlays to view/all clients [MDB IGNORE] (#22601)
* Stabilizes code that flicks overlays to view/all clients (#76937)

## About The Pull Request

Rather then using images and displaying them with client.images, we can
instead simply make an object, give it the passed in image/MA's
appearance, and then vis_contents it where we want.

If you want to animate things, you can just use the atom we return from
the proc call.

This ends up costing about 25% of the best case scenario (one guy
online)
It will save more time with more users, but it also allows us to avoid
the hypersuffering that is passing GLOB.clients into the flick proc. So
I think I'm happy enough with this.

For context, here's average per call cost for flick_overlay_view() right
now.
It winds between 5e-5 and 1e-4. With these changes we should pretty
consistently hit the low end of this, because none of our work really
varies all that much.

![flick_avg](https://github.com/tgstation/tgstation/assets/58055496/3483e022-9cc5-490a-be5e-eb79f4e2110b)

(I was using sswardrobe for this, but it ends up being a lot slower so
like, why yaknow)
```
/atom/movable/flick_visual
        New: 3.65625ms
        Provide: 7.4375ms
        Qdel: 9.4375ms
        Stash: 9.46875ms
```

## Why It's Good For The Game

Using our tools should not make your code eat cpu time for no reason.
Hearers is expensive, iterating clients is expensive, let's not be
expensive.

* Stabilizes code that flicks overlays to view/all clients

* Not every client needs to see this

* and these could be using SECONDS

* grr DM

* Convert these modular files to seconds too

* Update dance_machine.dm

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
2023-07-20 18:59:09 -04:00
Bloop a9c80a29a3 [MISSED MIRROR] Implements a macro for checking mind traits (#76548) (#22447)
* Implements a macro for checking mind traits (#76548)

![image](https://github.com/tgstation/tgstation/assets/82850673/f85d0556-1806-40bf-92b8-597e46ccb4af)
Seeing this pattern repeated over various sections of code was starting
to piss me off

Lessens chance to cause errors with mind traits, ensures consistent
behavior, makes it easier to change how mind traits work if necessary.

hopefully not player facing

---------

Co-authored-by: san7890 <the@san7890.com>

* modular stuff

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
2023-07-18 21:32:47 -04:00
GoldenAlpharex e5f29e7999 [MIRROR] SPECIES NUKING 2023 EXTRA: Makes skin tones a trait instead of a species variable [MDB IGNORE] (#22571)
* SPECIES NUKING 2023 EXTRA: Makes skin tones a trait instead of a species variable (#76410)

very similar to https://github.com/tgstation/tgstation/pull/76297, much
simpler though
removes the uses_skintones variable for similar reasons

Species variables are less useful and modular than traits.
If for some reason we ever add a mechanic that for some reason makes
your character use skin tones instead of whatever their original color
is, it will be much simpler to be handled.

not player facing

* Fixes all of the remaining issues

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
2023-07-18 18:38:59 -04:00
SkyratBot 3fd2f8134b [MIRROR] Optimization pass focused on foam code (saves about 30% of cpu usage I think) [MDB IGNORE] (#22530)
* Optimization pass focused on foam code (saves about 30% of cpu usage I think) (#76104)

## About The Pull Request

Foam is crummy at high load rn, both because it runs on a low priority
background subsystem, and because it wastes a bit of time.
Let's reduce usage (while speeding up a bunch of other stuff too), and
give it more cpu generally.

[Optimizes reagent processing
somewhat](https://github.com/tgstation/tgstation/commit/d409bd4afc3c208cd6f00ff406e1e9f78d5ac5ad)

Turns out most of the cost of foam is the reagents it carries, and the
varying effects they have
I'm doing my best here to optimize them without touching "user space"
too much

That means doing things like prechecking if we're gonna spawn on top of
an existing decal (from glitter, flour, etc), and using that same proc
to also avoid spawning on unacceptable turfs (I had to convert
inheritance to a bitflag system to make this work, but I think that's ok
since we want it imparative anyhow)

It's actually nice for code quality too, since it lets me clean up code
that was using raw locates and weird var pong.
god I wish I had implied types man

[Optimizes foam spreading in its most accursed aspect, reagent
copying](https://github.com/tgstation/tgstation/commit/5cc56a64ad1a22ba7467cb0446b9558560259437)

Holy shit reagent code is a lot.

I'm doing a bunch of small things here. istype in init -> typecache,
removing procs that are called once and loop over a list we JUST looped
over (ph and the caching for reactions in particular)

I am mainly trying to optimize copy_to here, since that's what foam
spams
As a part of this, I removed a pair of update_total and handle_reactions
calls that were done on the reagents we are copying FROM

I have no god damn idea why you would want to do that, but if anything
is relying on the copy proc modifying the source, then that code
deserves to break

Speaking of, I cleaned up handle_reaction's main filter loop a lot,
removed a lot of redundant vars and changed it from a full loop w
tracker vars to an early exit pattern

This meant using a loop label, which is unfortunate, but this is the
fastest method, and it does end up cleaning up the code significantly,
Which is nice

Oh also I made the required_other var function even if there is no atom
attached to the reaction, since I don't see why it wouldn't

This last bit is gonna get a bit esoteric so bear with me

Failing calls (which are most of them) to handle_reactions are going to
be fastest if they need to check as few reactions as possible

One reagent in a reaction's required list is marked as the "primary",
and thus gets to trigger checking it.
We need all the reagents to react anyhow, so we might as well only check
if we have one particular one to avoid double checking

Anyhow, in order to make most calls the fastest, we want these reactions
distributed as evenly as possible across all our reagents.
The current way of doing this is just taking the first reagent in the
requirements list and using it, which is not ideal

Instead of that, lets figure out how many reactions each reagent is in,
then divy reactions up based off that and the currently divvied
reactions

This doubles the reagent index count, and takes the most common reagent,
water, from 67 reactions to I think like 22

Does some other general cleaning in reagent code too, etc etc etc

[Fixes runtimes from the forced gravity element being applied more then
once](https://github.com/tgstation/tgstation/commit/941d0676114fd455a585f2c65ffc79b81e8438b7)

I feel like this element should take a trait source or something to make
them potentially unique, it's too easy to accidentally override one with
another

[Removes connect_loc usage in atmos_sensitive, replaces it with direct
reg/unreg](https://github.com/tgstation/tgstation/commit/de1c76029d5c49dff152f0ea168b9e6c4a4a04aa)

I only really used it because I liked the componentization, but it costs
like 0.2 seconds off init alone which is really stupid, so let's just do
this the very slightly harder way

[Micros foam code slightly by inlining a LinkBlockedWithAccess
call](https://github.com/tgstation/tgstation/commit/744da3694cd4a85b3bdf44d754de57d7570bdd1c)

This is in the space of like 0.05 seconds kinda save so I can put it
back if you'd like, the double loop just felt silly

[Changes how foam processes
slightly](https://github.com/tgstation/tgstation/commit/ee5e633e3256fe7df229af71d78424d502459c16)

Rather then treating spreading and processing as separate actions, we do
both in sync.
This makes foam fade faster when spreading, which is good cause the
whole spread but unclearing foam thing looks silly.
It also avoids the potential bad ending of foam spreading into itself,
backwards and forwards. This is better I promise.

[Bumps fluid priority closer to heavy eaters, moves it off
background](https://github.com/tgstation/tgstation/commit/811797f09db7b060f75f15ad06d0ce8982375f47)

Also fixes a bug where foam would travel under public access airlocks.

## Why It's Good For The Game

Saves a lot of cpu just in general, from both init and live.
In theory makes foam faster, tho I'd have to test that on live at
highpop to see if I've actually succeeded or not. Guess we'll see.

* Optimization pass focused on foam code (saves about 30% of cpu usage I think)

---------

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Bloop <vinylspiders@gmail.com>
2023-07-18 16:49:51 -04:00
GoldenAlpharex db83be17da [MANUAL MIRROR] SPECIES NUKING 2023: Head flags 2: Electric Boogaloo (#76298) [MDB IGNORE] (#22506)
SPECIES NUKING 2023: Head flags 2: Electric Boogaloo (#76298)

Continues the work I started on
https://github.com/tgstation/tgstation/pull/76074
Fixes https://github.com/tgstation/tgstation/issues/73782

Implements a bunch of wrapper procs for hair style, facial hair style,
etc etc the whole nine yards.
Fixes many issues, especially with gradients because I did sloppy tired
code that didn't work there.
Makes head/get_limb_icon() not a disgusting mess (well, at least makes
it less of a disgusting mess).

Actually makes hair and lips depend entirely on the bodypart.

🆑
refactor: Head rendering code has been updated significantly... Again.
Please report any issues with hair, facial hair, lipstick and such.
/🆑

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
2023-07-16 18:16:12 -04:00
SkyratBot 2f552919c1 [MIRROR] Icons folder cleaning wave two [MDB IGNORE] (#22454)
* Icons folder cleaning wave two

* Merge conflict resolution

* Modular path hell

* hmm

* Update 2022-10.yml

* Another modular thing

---------

Co-authored-by: YesterdaysPromise <122572637+YesterdaysPromise@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-16 00:41:18 -04:00
SkyratBot 3fe9b06d4c [MIRROR] Imports and Contraband 2: Landfill Gacha Addiction (I put trash randomizers into cargo crates and called it content) [MDB IGNORE] (#22475)
* Imports and Contraband 2: Landfill Gacha Addiction (I put trash randomizers into cargo crates and called it content)

* Merge conflict

---------

Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-15 22:29:49 -04:00
Bloop a6dc498a14 [MISSED MIRROR] Alcoholic quirk (#76510) (#22464)
Alcoholic quirk (#76510)

So you're telling me we have a smoker quirk and we DON'T have an
alcoholic quirk?
What a travesty! Time to fix that.

This quirk is essentially equivalent to smoker, but instead of a
favorite brand you get a favorite *brandy* (as in, favorite type of
booze).

![image](https://github.com/tgstation/tgstation/assets/82850673/f3883f76-414a-48a8-8f69-76f1bc01d020)

More quirk variety with decent roleplay value.
What will we do with a drunken sailor?

🆑
add: Added Alcoholic as a negative quirk.
/🆑

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
2023-07-15 19:27:24 -04:00
Bloop 65882f0b9a Some thrown liquid logic improvement (#22453)
* Makes liquids spill on the tile adjacent to a wall when thrown, lets them ricochet off other objects as well

* Just adds some documentation

This file could use it

* Thrown reagents should always expose the tile they hit, even if the liquid lands elsewhere
2023-07-15 14:50:48 -07:00
Zergspower bb3d041572 [Manual Mirror Fix] Removes shitty "status" variable on organs, makes them use organ_flag (#22480)
* Removes shitty "status" variable on organs, makes them use organ_flags instead (#76350)

Title.

Seriously this shit pisses me off, why are ORGAN_SYNTHETIC and
ORGAN_ROBOTIC two different things?

not applicable unless i fucked up

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>

* Modulars

* Some merge skew

* More diffs

---------

Co-authored-by: ChungusGamer666 <82850673+ChungusGamer666@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-15 17:27:49 -04:00
SkyratBot e264ee3644 [MIRROR] Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts [MDB IGNORE] (#22469)
* Adds an extra malf AI ability: Remote emagging. Also tidies up emag code and coverts a lot of things to balloon alerts

* Update communications.dm

* Modular override

* Some modular adjustments, removes 'emagged' vars in favor of obj_flags

* whoops, mobs don't have obj_flags.

---------

Co-authored-by: nikothedude <59709059+nikothedude@users.noreply.github.com>
Co-authored-by: Giz <vinylspiders@gmail.com>
2023-07-15 16:46:17 -04:00
SkyratBot 84b9842c6d [MIRROR] Lets you enter fakedeath when dead [MDB IGNORE] (#22331)
Lets you enter fakedeath when dead

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Bloop <vinylspiders@gmail.com>
2023-07-15 13:41:12 -07:00
SkyratBot f742e8ea18 [MIRROR] Fixes metalgen generation [MDB IGNORE] (#22474)
* Fixes metalgen generation (#76830)

I'm not sure how this ever worked

closes #75619

![image](https://github.com/tgstation/tgstation/assets/7501474/fff439c5-4719-4a11-934d-4c296865b6ea)

🆑
fix: Metalgen recipe generation works again
/🆑

* Fixes metalgen generation

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2023-07-15 12:47:04 -04:00