Commit Graph

20 Commits

Author SHA1 Message Date
Ghom
659e6f0ca2 Fishing expansion 2: one-year later boogaloo (#85252)
## 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:

![new
fish](https://github.com/user-attachments/assets/49c55065-32b0-44ec-ac12-74b3a1763f50)

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.
/🆑
2024-08-20 06:46:11 +02:00
NeonNik2245
931d1f7286 Adds anosmia quirk (#82206)
## 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
2024-04-09 03:21:51 -05:00
Ben10Omintrix
ce6f2724cd basic cats and mini kitchen helpers (#79800)
## 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.


![catmouse](https://github.com/tgstation/tgstation/assets/138636438/8f146be4-c7b2-41d3-8301-734be49b5efc)

![catfish](https://github.com/tgstation/tgstation/assets/138636438/f8df54f2-9183-406d-afbd-f90f415f7f3d)

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)


![cathouse](https://github.com/tgstation/tgstation/assets/138636438/9515a78c-fdfe-461b-bad2-6b497117c694)

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
/🆑
2023-11-28 21:51:37 -07:00
GPeckman
a6f52781d5 Warm donk-pockets once again have omnizine in them (#78815)
## 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.
/🆑
2023-10-08 23:10:35 -06:00
Sealed101
9e4948148d Bad food has bad food reagent again (#78747)
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>

![no habla
espanol](https://github.com/tgstation/tgstation/assets/75863639/a3f26acb-3a7c-44a6-a4de-2b67e4d56230)

</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
/🆑
2023-10-06 13:30:15 +01:00
SyncIt21
0e899b7b1d Fixes runtime when baking foods that don't have reagents. (#78675)
## About The Pull Request
Fixes #78672

Not all baked foods have reagents
![Screenshot
(313)](https://github.com/tgstation/tgstation/assets/110812394/c2b2440a-f94e-42c7-9524-7316714aef2e)

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>
2023-09-30 12:59:49 -04:00
Timberpoes
ec78c0f729 Fixes an issue with ovens that generates infinite food. (#78372)
<!-- 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


![image](https://github.com/tgstation/tgstation/assets/24975989/08cefb52-7247-433d-851c-ab59a3d890d4)

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.


![image](https://github.com/tgstation/tgstation/assets/24975989/851161fd-a79e-4140-97ba-5ca567213413)

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.


![image](https://github.com/tgstation/tgstation/assets/24975989/c8a67d60-d86e-4ef4-9461-006822cf69d0)

(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.


![image](https://github.com/tgstation/tgstation/assets/24975989/52b06984-b9ff-4450-aaf9-de3e84257077)

![image](https://github.com/tgstation/tgstation/assets/24975989/9135634b-4aaf-4954-888c-3b93ba2899c9)

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. -->
2023-09-16 00:35:38 +00:00
Jacquerel
bd9544012a Removes some food initialize arguments (#78322)
## 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
2023-09-15 16:42:50 +02:00
Jacquerel
5dddedf340 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.
2023-09-09 12:39:42 +00:00
A miscellaneous Fern
a92843744b Simplifies the way burning food is handled, kills burns_in_oven and burns_on_grill (#77570)
## 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
/🆑
2023-09-04 01:07:27 +02:00
Andrew
b1c5e5e0f6 Foodening (#77887) 2023-08-31 14:57:19 -04:00
LemonInTheDark
ae5a4f955d Pulls apart the vestiges of components still hanging onto signals (#75914)
## 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
/🆑
2023-06-09 06:14:31 +00:00
oranges
4c48966ff8 Renames delta time to be a more obvious name (#74654)
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'
2023-04-11 21:31:07 -07:00
Jack Edge
21ba2c10a8 Correct grammar, tags, procs involving food processing (#74097)
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()`.
2023-03-19 18:33:33 -06:00
Jack Edge
c98136fc4f Fix chef food ownership to follow mind (#73600)
🆑 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.
2023-02-24 14:42:55 -07:00
tattle
bcbe219973 Add baking and grilling results to the blackbox (#71632)
## 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>
2022-12-01 05:26:25 +00:00
AnturK
4d6a8bc537 515 Compatibility (#71161)
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>
2022-11-15 03:50:11 +00:00
MrMelbert
1ac4a67c27 Chefs can now kiss food they make to make it with love. (And a lot of cooking refactoring) (#70409)
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
2022-11-04 09:45:01 +13:00
Ghom
2e7f828e93 Blind can now smell what the Oven is cooking. Plus punctuation. (#62538) 2021-11-03 21:25:13 -04:00
AMonkeyThatCodes
83b21c041b Kitchen expansion part 2: Ovens (#60515)
Adds Ovens

Co-authored-by: MonkeyThatCodes <monkey>
Co-authored-by: tralezab <spamqetuo2@gmail.com>
Co-authored-by: MonkeyThatCodes <MonkeyThatCodes@deez.com>
Co-authored-by: Krysonism <robustness13@hotmail.com>
2021-08-09 12:31:16 +02:00