## About The Pull Request
This PR mainly adds more fish and more fishing spots to the game, while
refactoring a few aspects of the fishing minigame.
Listing out with the new fish:
- Arctic char: mainly filler content for the ice hole fishing spot
- Sockeye Salmon: ditto but also provides better fillets that boost the
quality of resulting food items when cooked or used in recipes
- Soulfish: joke content, found by the cursed spring ruin
- Skin Crab: also a joke found by the cursed spring
- Bump-Fish: filler for the sand fishing spot
- Burrower Crab: ditto, reusing a fish sprite I made last year
- Sand Surfer: ditto
- Three-Eyed Goldfish: It's a reference, doh
- Stingray: A modestly weaponizable fish (whoops I've forgot to set the
hit sounds), it possess a few traits that make it deliver bits of venom
each time you hit someone with it
- Swordfish: Huge-ass fish that may require two hands to wield (or not,
if the RNG wants to make it smaller). Stats-wise, it's more or less the
equivalent of the captain sabre, if not stronger (and more unwieldy due
to size and weight). Becomes weaker when dead. Also gives better quality
fillets.
- Chainsawfish: A mutation of the goldfish with some size, weight and
traits requirements, but can also be found on emagged fishing portals.
Stronger than the swordfish, it behaves sort of like a chainsaw, with
the similar tool behaviour and var values. Also becomes weaker when
dead.
As for the fishing spots, you can now fish on sand turfs, at the cursed
springs or on ice. Rivers/jungle water now has its own fishing spot
datum, and no longer uses the generic fishing portal one. To fish on
ice, you first have to carve a hole with a pick or a shovel.
I've also refactored the fish "AI" hardcoded stuff used in the fishing
minigame into their own datums, which let me add a few fancier ways to
how the fish moves during the minigame (i.e. the soulfish moving at 1
FPS or the chainsawfish getting faster and faster).
As for the sword and chainsaw fish, their potential strength is balanced
out by the need of keeping them alive, as well as the potential
cumbersomeness, two-handed wielding and potential slowdown from the
excessive weight of the fish (Thank you Big Slappy for the inspiration).
Other minor changes include: Pufferfish giving better quality fillets
(too bad they're poisonous, I'll go and make a skillchip to let cooks
safely separate the poisonous liver from the fillets); McGill The
lawyer's goldfish) having a 15% of being three-eyed; the aforementioned
slowdown from fish weight and two-handed carry from fish size; a couple
new fish icons (the ones that hint you on what you're trying to catch)
for the fishing minigame; a few adjustments to prevent self-reproducing
fish from ignoring the population cap and let fish with a stable
population of 1 to crossbreed (also gotta make a different PR to let it
happen rarely without the crossbreeding trait).
This PR is still a WIP, gotta test it several times.
## Why It's Good For The Game
Fishing is something I've been working on for about a year now, but
there are still a few places where it's kinda lackluster, like there's
not enough diverse fishing spots or useful fish (I'll be working on a
separate PR to make the logistic of a carrying a fish around without
letting it die a tad easier). Also, look at these sprites:

Can you guess which is which?
## Changelog
For the sake of not dumping players with niche information 90% of the
players won't understand, I'll keep the CL pretty generic
🆑
add: Added twelve new fish types to the game. Some are cool, other are
not, some come with their own special traits and some are straight-up
weapons.
add: Added more fishing spots to the game. Sand, ice, rivers, the cursed
spring...
balance: A few fish like salmon, swordfish and pufferfish (poisonous
btw) now give better quality fillets when butchered, which can improve
the quality of food that uses them even further.
balance: Excessive fish weight will make the fish slowier to carry,
while excessive size may make it require two hands.
balance: Adjusted size, weight and cooldowns of several fish, for the
better.
/🆑
## About The Pull Request
Adds anosmia quirk. Anosmia, also known as smell blindness, is the loss
of the ability to detect one or more smells.
I tried to find all smells action and (most likely) update all of them,
unfortunately I can't change descriptions for this quirk.
## Why It's Good For The Game
Some characters will be able to not feel smells
That affect:
* Gases feelings and alerts (CO2, Plasma, miasm) - you don't feel them
* Bakery and cooking
* Changeling ability to feel other changelings by smell
* Some unimportant spans
## About The Pull Request
this pr transforms cats into basic pets! cats now have some new
behavior. they can carry fish and hunted mice in their mouths to deliver
it to kittens, and kittens will eat them.


if a kitten sees you holding food, it will point at you and meow loudly
until u give it the food.
becareful when putting male cats near each other, there is a small
chance they get into a heated argument and meow loudly at each other
until one of them flees.
also added a new small cat house for cats. cats will use these homes if
u build one near them (using 5 wood planks)

Chefs can craft the cake cat and breadcat. these are useful cats because
they can help the chef around in the kitchen. they will turn stoves and
grills off when food is ready, so they dont burn. and the cake cat will
help the chef decorate his donuts
## Why It's Good For The Game
refactors cats into basic mobs and gives them a deeper ai
## Changelog
🆑
refactor: cats are now basic pets. please report any bugs.
add: the cake cat and bread cat can now help the chef around in the
kitchen
/🆑
## About The Pull Request
One of the post-foodening cleanup PRs inadvertently prevented warm
donk-pockets from getting the omnizine they were supposed to have. This
PR fixes it by adding a new argument to the microwaveable and bakeable
elements, which donk-pockets now use. The new argument has also been
added to the grillable element for future use.
## Why It's Good For The Game
Bugs aren't good.
## Changelog
🆑
fix: Warm donk-pockets should now have omnizine in them again.
/🆑
still on break so i didn't think too hard about this one
## About The Pull Request
Prevents food interactions from clearing the resulting food's reagents
if the result is a bad recipe.
Blackbox logging is also iffy here, some of them log it even if the
resulting food is a burned mess, some don't. It's weird!
## Why It's Good For The Game
Fixes#78400
<details><summary>Makes one car moth happy</summary>

</details>
Did you know the appendix has bad_food reagent in it?
699d09ca33/code/modules/surgery/organs/internal/appendix/_appendix.dm (L5-L15)
## Changelog
🆑
fix: fixed bad food not having bad food reagents
/🆑
## About The Pull Request
Fixes#78672
Not all baked foods have reagents

but when it does then we can clear them and transfer reagents from the
original object to the final baked product
## Changelog
🆑
fix: Aloe and other baked foods that don't have reagents can be baked
again without turning to ash
/🆑
---------
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
<!-- 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
Introduced by #78322

Using the wrong var (uwupsie, path var instead of object var) meant an
early runtime. The early runtime meant the code path never qdel'd parent
on the bakeable reagent.

So every oven process, the dough would cook into bread without being
consumed.
Every oven process, the bread would cook into badrecipe without being
consumed.
Every often process, the badrecipe would cook into more badrecipe
without being consumed.
Every time this happened, it made ash.
After about ~250 oven processing ticks on Terry, 17k ash was Initialised
in a certain kitchen and it would crash anyone that walked near it.

(Yes, I crashed my client opening this list)
Replication steps are as simple as... Putting dough in an oven on a
tray, closing the oven and waiting 10 minutes for the kitchen to be a
client crash zone. Also lags the server due to the code paths involved.
Like 17k ash creating 129 million proc calls to replace_decal.


That should probably be optimised at some point.
Due to how destructive this bug is with client crashes and significant
server lag, plus the VERY strong potential for this to happen purely by
accident (just putting dough in the oven and forgetting) I'm marking
this high priority.
<!-- Describe The Pull Request. Please be sure every change is
documented or this can delay review and even discourage maintainers from
merging your PR! -->
## Why It's Good For The Game
Forgetting to take dough out of the oven no longer progresses the server
to a crash-worthy state.
<!-- 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. -->
## 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. -->
🆑
fix: Forgetting to take dough out of the oven no longer progresses the
server to a crash-worthy state with infinite bread and ash and burned
food products for all.
/🆑
<!-- 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. -->
## About The Pull Request
A prior PR added some new initialize arguments to the food subtype which
did not strictly need to be there, this caused a large number of bugs as
a result of places which already had extra initialize arguments not
correctly accounting for these new ones.
As a result I have removed these again in favour of performing the
required operations in a different way (one of these arguments was
seemingly used for butter purity and literally nothing else), for this
food and also some of its subtypes.
In some other cases where it _did_ make sense to have arguments in
`initialize` I also added them to `new` so they can be passed by name.
This will hopefully make the food more maintainable if in the future if
someone does something similar, and solve any remaining bugs related to
"not passing the arguments properly".
## Changelog
Hopefully not player facing
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.
## About The Pull Request
Currently, burning food is handled in the following way (for the sake of
brevity I'll explain it with baking but it's essentially the exact same
with grilling):
- If a recipe has a baking recipe added in it's `make_bakeable`, then it
will produce that when baked.
- If it does not have a recipe added, but `burns_in_oven` is TRUE, then
it will have a negative baking recipe for "burned mess" added by the
parent of `make_bakeable`, and be turned to that after 20 to 25 seconds.
- If it has neither, it will instantly be set on fire.
What this PR does is, basically, remove the check for
`burns_in_oven/burns_on_grill` and make food always have a negative
burned mess recipe unless overriden by an actual recipe.
Also modified the examines a bit to better fit food that hasn't
necessarily been baked/grilled before but would still turn to a burnt
mess if put in either.
## Why It's Good For The Game
My issues with the way it currently works are:
1. The "default" case is one that largely doesn't make sense for food.
Most things would logically just get turned to a burnt mess after being
overcooked for some time rather than combusting the very moment you
close the range.
2. If you make any cooking item the result of a baking recipe, then you
must also remember to make its `burns_in_oven` var true, because
otherwise it will be set on fire as soon as it finishes baking, making
it impossible to cook. (See issue #77377) This is pretty bad because
it's easy not to notice or add these vars, given that they're a bit out
of the way mechanically and...
3. ...the var names are very unintuitive. In practical terms all
`burns_in_oven` and `burns_in_grill` do is add a timer before the item
is ruined, not actually cause or prevent the ruining.
By removing these vars and their function we deal with all three, as
turning into a burnt mess is now the default outcome for food that
shouldn't be baked/grilled and coders adding food/recipes don't need to
worry about the confusingly-named vars.
Also, as mentioned before, fixes#77377.
## Changelog
🆑
fix: boiled rice doesn't burn instantly after being baked
code: simplifies the way burning food is handled, grilled/baked food now
turns to a burnt mess rather than being set on fire, unless they have a
baking/grilling recipe
/🆑
## About The Pull Request
Signals were initially only usable with component listeners, which while
no longer the case has lead to outdated documentation, names, and a
similar location in code.
This pr pulls the two apart. Partially because mso thinks we should, but
also because they really aren't directly linked anymore, and having them
in this midstate just confuses people.
[Renames comp_lookup to listen_lookup, since that's what it
does](102b79694f)
[Moves signal procs over to their own
file](33d07d01fd)
[Renames the PREQDELETING and QDELETING comsigs to drop the parent bit
since they can hook to more then just comps
now](335ea4ad08)
[Does something similar to the attackby comsigs (PARENT ->
ATOM)](210e57051d)
[And finally passes over the examine
signals](65917658fb)
## Why It's Good For The Game
Code makes more sense, things are better teased apart, s just good imo
## Changelog
🆑
refactor: Pulled apart the last vestiges of names/docs directly linking
signals to components
/🆑
This tracks the seconds per tick of a subsystem, however note that it is
not completely accurate, as subsystems can be delayed, however it's
useful to have this number as a multiplier or ratio, so that if in
future someone changes the subsystem wait time code correctly adjusts
how fast it applies effects
regexes used
git grep --files-with-matches --name-only 'DT_PROB' | xargs -l sed -i
's/DT_PROB/SPT_PROB/g'
git grep --files-with-matches --name-only 'delta_time' | xargs -l sed -i
's/delta_time/seconds_per_tick/g'
The wording of microwable/grillable/processable outputs now takes into
accounts plurals.
For example, the examine text for an onion slice is now: "The onion
slices can be baked into _some_ onion rings", rather than "an onion
rings".
- Examining microwavable things now uses "can be", rather than "could
be"; the same verb as bakeable and griddlable.
- Processing atoms now uses `plural_s()` rather than just a flat `/s`,
which is unreliable.
- The use of `<b>` tags has been changed to `span_bold()`.
🆑 coiax
fix: A chef who is beheaded, and the head stitched on another body will
still see their food as their own.
/🆑
## Why It's Good For The Game
Having food ownership be based on the mind, rather than the mob, makes
it resilient to body-swap, mind-swap, podcloning (cloning!?),
situations. Because even though you may have been reduced to just a
head, that stew is still yours, you still made it.
## About The Pull Request
Adds baking and grilling results to the blackbox. Microwaved and crafted
foods were being logged here, but the logging messages were lost when we
got the grilling and baking components.
## Why It's Good For The Game
More food logging yeehaw
## Changelog
No player-facing changes
Co-authored-by: tattle <article.disaster@gmail.com>
Makes the code compatible with 515.1594+
Few simple changes and one very painful one.
Let's start with the easy:
* puts call behind `LIBCALL` define, so call_ext is properly used in 515
* Adds `NAMEOF_STATIC(_,X)` macro for nameof in static definitions since
src is now invalid there.
* Fixes tgui and devserver. From 515 onward the tmp3333{procid} cache
directory is not appened to base path in browser controls so we don't
check for it in base js and put the dev server dummy window file in
actual directory not the byond root.
* Renames the few things that had /final/ in typepath to ultimate since
final is a new keyword
And the very painful change:
`.proc/whatever` format is no longer valid, so we're replacing it with
new nameof() function. All this wrapped in three new macros.
`PROC_REF(X)`,`TYPE_PROC_REF(TYPE,X)`,`GLOBAL_PROC_REF(X)`. Global is
not actually necessary but if we get nameof that does not allow globals
it would be nice validation.
This is pretty unwieldy but there's no real alternative.
If you notice anything weird in the commits let me know because majority
was done with regex replace.
@tgstation/commit-access Since the .proc/stuff is pretty big change.
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
About The Pull Request
Adds a skillchip to the chef's vendor. This vendor allows the chef to kiss their food to deliver a chef's kiss.
Chef's kissing your food will add the "love" reagent to the food, which makes people much happier when they eat it. Be careful, overdosing on love can cause heart attacks.
Refactors microwaving.
Separates microwaving out of the edible component and makes it its own element, like grillable and bakeable.
Also removes some magic numbers from microwave code.
Code improvements all around baking and grilling code.
Refactors edible component inheritance.
Inheriting the edible component is now a viable way to cleanly add food types, flags, and callbacks. This makes it much much easier to change the values of an edible item without adding hacky signals / procs / getcomponent.
Why It's Good For The Game
Emergent chef gameplay.
Being able to further enhance your food with mood buffs.
Better code.
Changelog
cl Melbert
add: Chefs can now make food with love. They can purchase a skillchip from their vendor which enhances their kiss emote. Using your kiss on food you create will add a special reagent to it which makes it nicer.
refactor: Separated Microwavable from the Edible component, refactored microwave act to accompany this
refactor: Refactored how grilled items are generated
refactor: Refactored how silver slime food items are generated
refactor: Refactored how edible items inherit new edible statuses
code: Removed some magic numbers from microwaves
code: General code improvements for grillable / bakeable / etc
/cl