Largely ported from the work done at Baystation in https://github.com/Baystation12/Baystation12/pull/17460 and later commits.
- Shuttles no longer require a separate area for each location they jump to.
Instead destinations are indicated by landmark objects, which are not necessarily exclusive to that shuttle.
This means that more than one shuttle could use the same docking port (not at the same time of course).
- Enhanced shuttle control computers to use nanoui if they didn't.
- Organizes shuttle datum code a bit better so there is less re-inventing the wheel in subtypes.
- Allows the possibility of shuttles (or destinations) that start on late-loaded maps.
- Deprecate the "extra" shuttle areas that are no longer needed and update shuttle areas in unit tests
This all required a bit of infrastructure improvements.
- ChangeArea proc, for changing the area of a turf.
- Fixed lighting overlays actually being able to be destroyed.
- Added a few utility macros and procs.
- Added "turf translation" procs which are like move_contents_to but more flexible.
* Yes, all of them.
* Also did a few corrections to redundant New() and broken Destroy() along the way
* Renamed the turf_initializer.initialize() proc to InitializeTurf to avoid confusion.
* Subsumed /area/proc/initialize into /atom/proc/initialize() - Made /area's LateInitialize to get same behavior as before.
If enabled, detects mechs/trains and blocks their movement if they are coming from any of the directions set by dir. Can currently only be enabled/disabled by radio command and airlocks are updated to utilize this.
The current setup allows mechs to move through airlocks during normal cycles, which for example lets Odysseus out to save lives.
Once a shuttle docks however, the sensors are enabled to prevent boarding.
If blocked, players receive a simple message stating that their command has been overridden.
Squashes 3 commits:
Shuttles now dock on arrival and departure
Adds docking controller to outpost, tweaks
Finishes off shuttle_console
Could use some cleanup, though.
Commented out the debug stuff.
Squashes 3 commits:
Adds a controller for single door based docks
Adds a docking controller to the research shuttle
Adds override control to airlock dock nano-ui
Squashed 10 commits:
Adds simple docking controllers
Adds docking_controllers.dm
Moves docking handshake code into its own type
Keeps docking code separate from the code for messing with airlocks and
doors.
Improves handling of invalid states
Adds docking controller to research shuttle dock
Also adds the start of a nano-ui template.
Resetting the dock controller resets the override
Adds debug verbs
Adds support for overriding docking checks
Less confusing name for the docking program