Files
VOREStation/code/datums/components
Will f67d095338 Reagent Refinery (#17955)
* starting port

* missed one

* fixes and wip

* more cleanup

* reagent data setup

* distillation testing

* tanker dmi again

* supply pack fix

* Tiny fix

* better formatting

* metallic paints and outpost reagents

* working on refinery tutorial, reactor construction icons

* reactor activation dot

* updated for new reagent hoses

* This as well

* pump relay object

* climbing support

* less ugly trolly tanker handling

* more cleanup

* reagent pumping updated

* climbable tanker

* fixed test

* test fails

* smart centrifuge board

* pump relay art updated

* hose doesn't show message when stacking

* gas cracks and fracking

* randomly spawned gas gracks

* indentation

* fixed

* runtime fix, lore fix

* turf change respecting atmos

* args

* nevermind

* gas cracks to poi fodder

* less gamer

* compile fix

* oops

* Old ores enabled

* paint distillations

* unittest

* many more distillation reactions

* nullcheck

* guide book

* tweaks to globs

* moved designs

* techweb

* reagent tanker sale element

* proper tag

* sellable

* typo, reduced hose connectors

* show reagent

* synthfab fix

* Revert "synthfab fix"

This reverts commit b7764cfb33.

* post sale tank handling

* tweak

* oops

* another oops

* smasher recipe now valid

* condensing gas recipies

* those too

* condensing tweaks

* matching mols better

* fluid pump missing

* code review

* no rain code here

* smart centrifuge update

* small grinder patch

* grinding fix

* fix
2025-08-02 07:07:17 +02:00
..
2025-08-02 07:07:17 +02:00
2025-07-26 06:30:08 +02:00
2025-08-02 07:07:17 +02:00
2025-03-28 21:25:08 +01:00
2025-07-20 16:48:40 +02:00
2025-05-17 06:44:56 -07:00
2025-07-20 16:48:40 +02: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