Files
Bubberstation/code/datums/components
Jacquerel 52ed369990 Improve Ice Whelp behaviour (#90771)
## About The Pull Request

Fixes #90767
This PR redesigns ice whelps somewhat

As before they have two fire breath attacks, one of which is a line and
one of which is a point blank AOE
Unlike before, the aspect of forecasting that the attack is coming is
now part of the ability and not a component only used by ice whelps (I
didn't like the component) and comes with visuals


![dreamseeker_cANE799XYB](https://github.com/user-attachments/assets/bd10926f-d136-40dd-8d21-8a8e9c14bafa)

![dreamseeker_O8hjbivgT0](https://github.com/user-attachments/assets/21f78e1b-727b-438a-b013-a6f9d8c210f8)

Also unlike before, the line breath is longer and comes out faster
(because it's frankly pretty trivial to avoid) and the point blank
effect has been upgraded to effect every tile in a circular area within
3 spaces of the drake

The drake will now use the "every nearby tile" attack if you are close
by when its abilities come off cooldown, and the longer ranged one if
you're not

## Why It's Good For The Game

This fixes Ice Drakes using their breath attack literally once and never
again and might make them slightly more interesting to fight
Their slow speed and inaccurate targeting I think still means that
they're not very threatening on their own, but that'd need a more
substantial redesign to fix

## Changelog

🆑
balance: Ice Whelps now switch between their breath attacks depending on
the situation
fix: Ice Whelps will use their breath attacks more than once per
encounter
/🆑
2025-05-04 14:41:50 -07:00
..
2025-04-08 12:07:21 -07:00
2024-10-09 02:03:50 +02:00
2024-05-16 19:54:00 -07:00
2024-05-16 19:54:00 -07:00
2025-04-05 22:27:05 +02:00
2024-08-21 17:07:02 +12:00
2025-02-22 13:24:53 +00:00
2025-01-22 20:50:07 -07:00
2025-01-28 03:12:59 +01:00
2024-07-15 16:28:41 +01:00
2024-05-16 19:54:00 -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 its 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