Files
Bubberstation/code/datums/components
SkyratBot 7c8ebfc761 [MIRROR] Fix disky teleporting itself off the emergency shuttle on transit. [MDB IGNORE] (#8614)
* Fix disky teleporting itself off the emergency shuttle on transit. (#61786)

Fixes #61782

Did a minor cleanup in the stationloving component to better represent what the proc the destination_in_bounds proc actually did. It is now atom_in_bounds since it's called after the atom has moved and works on the atom's turf. This doesn't fix the problem, but it obfuscated things a bit since it was deceptively named.

The issue is that when the e-shuttle leaves the station, for every turf on the shuttle it first moves the turf's contents to hyperspace, then moves the turf to hyperspace, then changes the area. Since the player holding disky enters Hyperspace first then has the shuttle turf constructed around them, disky teleports back to the station because it enters a non-whitelisted location.

Instead of whitelisting Hyperspace, I changed the order of operations to turf transfer, area transfer and finally atom transfer. This fixes the issue (as now disky moves from z=2 to z=12 /area/shuttle/escape, where escape shuttle is whitelisted instead of z=12 /area/transit, where /area/transit is not whitelisted).

* Fix disky teleporting itself off the emergency shuttle on transit.

Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
2021-10-05 23:54:16 +01:00
..
2021-09-24 18:25:29 +01:00
2021-09-25 04:17:06 +01:00
2021-06-09 10:44:59 +12:00
2021-09-30 19:54:11 -04:00
2021-09-19 22:24:40 +01: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