Files
Bubberstation/code/datums/components
SkyratBot 9feb3f7362 [MIRROR] [no gbp] Allows clothes to be eaten [MDB IGNORE] (#19490)
* [no gbp] Allows clothes to be eaten (#73565)

## About The Pull Request

Fixes #73546
In #73481 I made the foolish assertion that it's never correct for
someone to eat something which isn't physically nearby.
I had of course forgotten that while Moths _think_ they can eat clothes,
what they are actually eating is the abstract concept of clothes if they
were edible, functionally nothing, which exists nowhere.
By moving the check to only run when you are trying to eat a turf
(conveniently, no clothing is also a turf... yet) I allow them to return
to their delusion.

Alternate fixes and why I didn't do them:
- Always allow people to eat food which is in nullspace. This feels
pretty gross.
- Put the abstract clothes food physically inside the clothes. I assume
this wasn't done because there's some scenarios where you would be able
to remove abstract clothes food from the clothes, so that's not
desirable.
- Move the food into the actual clothes object just before taking a bite
and then put it back in nullspace again. This is silly.
- Try to make moth clothes food work in a way which doesn't involve
creating an imaginary food item in the void. I don't want to do this.

## Why It's Good For The Game

It's funny to eat clothes I guess.

## Changelog

🆑
fix: Moths can eat clothes again.
/🆑

* [no gbp] Allows clothes to be eaten

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-02-21 22:59:06 -08:00
..
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2023-01-24 14:27:00 -08:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2023-01-12 08:48:06 -05:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00
2022-11-15 06:59:06 +00:00

Datum Component System (DCS)

Concept

Loosely adapted from /vg/. This is an entity component system for adding behaviours to datums when inheritance doesn't quite cut it. By using signals and events instead of direct inheritance, you can inject behaviours without hacky overloads. It requires a different method of thinking, but is not hard to use correctly. If a behaviour can have application across more than one thing. Make it generic, make it a component. Atom/mob/obj event? Give it a signal, and forward it's arguments with a SendSignal() call. Now every component that want's to can also know about this happening.

HackMD page for an introduction to the system as a whole.

See/Define signals and their arguments in __DEFINES\components.dm