Files
Bubberstation/code/datums/components
SkyratBot c358ff3f6f [MIRROR] Allow spawner component to be instantiated with an empty list [MDB IGNORE] (#23598)
* Allow spawner component to be instantiated with an empty list (#78188)

## About The Pull Request

Supplementary to ffd3edc22b

Fixes #78172
The spawner component could be added to arbitrary items by admins but
would always throw an error because it was passed an empty list. Admins
were not capable of providing anything _other_ than an empty list to it
on init, due to limitations in our interface.
We (I but I had help) broke this in #73645 by removing the default
"spawns carp" list.
It is still silly for it to default to spawning carp, but instead it can
now be instantiated with an empty list without breaking, and an admin
can then VV it to further modify the list to what they actually want it
to do.

## Changelog

🆑
admin: Admins can add/remove the spawner component from arbitrary items
again.
/🆑

* Allow spawner component to be instantiated with an empty list

---------

Co-authored-by: Jacquerel <hnevard@gmail.com>
2023-09-09 16:55:12 -04: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