Files
Bubberstation/code/datums/components
SkyratBot 0c7c1f046f [MIRROR] Orbit Poll respects Preferences + Asks for Permission to Unghost [MDB IGNORE] (#25014)
* Orbit Poll respects Preferences + Asks for Permission to Unghost (#79712)

## About The Pull Request

Fixes #79676

Ticking either the player or admin "do not consider me for ghost roles"
excludes you from the pool of candidates in an orbit ghost poll.

You will now get a `tgui_alert()` asking you if you want to accept being
put into the orbit poll role's before you accept it, putting it in line
with every other ghost role in the game. If the player doesn't accept,
the proc is re-ran with someone else on the list.
## Why It's Good For The Game

We need both of these behaviors present to keep it standard with what
players expect with ghost roles, and it is annoying to be an admin/AFK
player who gets hotswapped into one of these roles while they're doing
stuff.
## Changelog
🆑
qol: You will no longer be added to the list for ghost-orbit role polls
if you have opted out of getting antag ghost roles in your preferences.
qol: You will get a tgui_alert to accept the ghost role if you were
selected via the orbit poll, instead of it just throwing you intot he
role.
/🆑

* Orbit Poll respects Preferences + Asks for Permission to Unghost

---------

Co-authored-by: san7890 <the@san7890.com>
2023-11-14 17:11:28 -05: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