Files
Bubberstation/code/datums/components
Jacquerel f491c747f6 [no GBP] Goliaths use TRAIT_NO_GLIDE instead of a movement cooldown element (#77370)
## About The Pull Request

Fikou noticed that Goliaths change their targets semi-randomly, this is
because the element I was using to curtail their movement caused the AI
pathfinding to fail and cancel the current action.
While investigating this I also realised that just "not gliding" makes
more sense than what I was doing anyway, and has fewer weird side
effects (like being unable to move diagonally).

At some point it would probably be sensible to figure out what speeds
make gliding look stupid and automatically apply this trait to
characters (maybe only basic ones rather than humans?) moving that
slowly, however I will do that in a future PR.

## Why It's Good For The Game

More reliable AI behaviour.
Better QoL when actually playing as a Goliath.

## Changelog

🆑
fix: Goliaths no longer intermittently reset their target and retarget
something else.
fix: Goliaths can once again step diagonally.
/🆑
2023-08-05 15:11:51 +02:00
..
2023-06-26 22:16:08 -06:00
2023-06-23 10:10:08 +02:00
2023-08-04 12:35:53 -06:00
2023-06-14 19:32:08 -07:00
2023-07-12 18:52:02 -06:00
2023-07-12 18:52:02 -06:00
2023-05-21 21:37:10 -06: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