mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-06-03 13:13:21 +01:00
9feb3f7362
* [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>
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.