Files
Bubberstation/code/datums/components
TemporalOroboros 111676c9b7 Acid Component (#53273)
Makes acid levels a component.
    Merges the acid effect object into the component.
    Reworks acids decay rates slightly.
    Rebalances xenos acid spit so that they can still melt through walls.

Misc. associated changes:

    Adds defines for a lot of the acid associated constants.
    Documents clean types and adds CLEAN_TYPE_ACID
    Adds and implements a return bitflag for COMSIG_COMPONENT_CLEAN_ACT
    Adds a looping sound for acid.
    Makes /atom/proc/acid_act return a boolean.
    Fixes waterclosets creating a new reagent holder datum every time they are used.
    Removes waterclosets regenerating reagents on-use and restricts their reaction volume to 5 units.
    Adds and implements a couple reagent signals.
    Renames a few vars so Rohesie can stop telling me to rename more vars.
2020-09-05 16:18:55 -03:00
..
2020-09-05 16:18:55 -03:00
2020-08-29 23:33:47 -03:00
2020-09-05 16:18:55 -03:00
2020-09-05 16:18:55 -03:00
2020-09-05 16:18:55 -03:00
2019-10-09 01:50:16 -07:00
2020-09-05 16:18:55 -03:00
2020-09-05 16:18:55 -03:00
2020-08-28 14:26:37 -07:00
2020-09-05 16:18:55 -03:00
2020-08-19 13:24:20 +12:00
2020-08-28 14:26:37 -07:00
2020-08-23 02:05:35 +02:00
2020-09-05 16:18:55 -03:00
2020-08-24 13:56:07 -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.

See this thread for an introduction to the system as a whole.

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