Ferry shuttles generally shouldn't have to worry about docking codes. Thats for exploration or antag shuttles. Therefore let them read the docking codes and dock anyway.
Given we put this on all ferry shuttles, we don't need specific code for it on the supply shuttle anymore.
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.
Originally the purpose of the docking override was to allow the shuttle
to move even if it couldn't undock properly (e.g. the doors were stuck
open), however it makes more sense just to have the shuttle take care of
that. This commit now makes the behaviour of the docking overrides line
up with it's new purpose.
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