Files
Bubberstation/code/datums/components
Jacquerel a5b5bf6516 Tend Wounds works on non-human mobs (#76471)
## About The Pull Request

Tend Wounds seems to be intentionally written such that you would be
able to perform it on arbitrary mobs, however this had two problems.
- Most mobs can't rest and it requires a resting position, meaning the
surgery can only be initiated on cats and mothroaches.
- The code which picks up surgery steps existed on Carbon not Living, so
after the game tells you that you've started doing surgery on Runtime,
clicking on her with a scalpel will cause you to stab her to death. I
noticed this after a tragic kitten incident.

I have fixed both of these issues by moving surgery catching onto Living
instead of Carbon, and having the resting check only run if you are
capable of resting.

You still can't operate on Beepsky because he is made of metal. 

## Why It's Good For The Game

It can actually quite hard to heal pets who were harmed by accident,
this allows people to roleplay as veterinarians.

## Changelog

🆑
fix: You can now correctly Tend Wounds on most non-human animals.
add: You can now Remove Implants from non-human animals, just in case
Ian swallowed a macrobomb.
/🆑
2023-07-02 20:24:01 +02:00
..
2023-05-07 23:52:03 -07:00
2023-06-26 22:16:08 -06:00
2023-06-23 10:10:08 +02:00
2023-06-14 19:32:08 -07:00
2023-06-18 08:14:05 -04:00
2023-05-21 21:37:10 -06: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