Files
Paradise/code/datums/components
Luc b33d6aa080 Tipping vending machines for freebies and/or crushes (#20060)
* Initial commit

* Add RNG tip behavior, including free items.

* Add some additional checks

* Small cleanups

* Add squishing, drop normal damage to 40

* Haha, unless? (this is how it is on tg)

* Datumizes vendor tips, part one

* Datumizing, part 2

* Remove unused

* Remove old "key" var

* Fix .proc call

* double dwarf damage

* Update code/game/machinery/vendors/vending.dm

Thanks, sean

Co-authored-by: S34N <12197162+S34NW@users.noreply.github.com>

* Add a warning hit

* squish component review

* update visible message

* remove extra defines

* charlie review

* Add explosion tilts, some slight cleanups

* Review changes
- Tweaks self knockover damage slightly to not be the same as crit damage
- farie's reviews

* Unindent, clean up crit logic

* Refactor some code out of main vendor proc
also re-adds the head-popping crit lol

* making linter happy :)

* Removes global list in favor of static one

---------

Co-authored-by: S34N <12197162+S34NW@users.noreply.github.com>
2023-03-04 09:22:07 +01:00
..
2022-11-08 23:08:40 +00:00
2022-11-08 23:08:40 +00:00
2022-11-08 23:08:40 +00:00
2022-11-08 23:08:40 +00:00
2022-11-08 23:08:40 +00:00
2022-12-19 23:44:07 +00:00
2022-11-08 23:08:40 +00:00
2022-11-08 23:08:40 +00:00
2022-11-08 23:08:40 +00:00
2023-02-28 14:38:27 -06:00
2022-11-08 23:08:40 +00:00
2022-11-08 23:08:40 +00:00
2022-11-08 23:08:40 +00:00
2022-11-08 23:08:40 +00:00
2022-11-08 23:08:40 +00:00
2022-11-08 23:08:40 +00: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\dcs\signals.dm