Files
Bubberstation/code/datums/components
tralezab 9478a07195 Componentizes/Elementalizes Pride Struck Hammer Behavior + Carp'Sie Plushie Behavior (#60728)
Title, please say hello to the element "chemical_transfer" and the component "faction_granter"

Componentized behavior is easier for admins to make events out of, more modular for code maintainability, lowers the possibility of future copy and paste, set me up with my wife, and more

One of the things I personally like the most about it is the ability for each behavior to properly be described on examine, which I loooooove!

Also, these should be fantasy affixes after the freeze is done

Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
2021-09-06 23:07:33 -07:00
..
2021-08-31 12:28:20 +01:00
2021-07-19 12:41:21 -04:00
2021-08-02 18:14:14 -07:00
2021-08-02 18:14:14 -07:00
2021-06-08 15:04:35 -07:00
2021-06-16 15:06:10 -07: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