mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-27 15:18:09 +01:00
Manualbiome (#11216)
This commit is contained in:
@@ -1,35 +1,37 @@
|
||||
# "Landmark" Shuttles Conversion
|
||||
|
||||
This guide helps with updating maps and shuttle datums from the old "area" based system to the "landmark" based system.
|
||||
|
||||
## Summary
|
||||
The old shuttle datum worked with areas (`/area`). You are probably familiar with every shuttle having a few cookie-cutter shaped areas it travels between.
|
||||
|
||||
The old shuttle datum worked with areas (`/area`). You are probably familiar with every shuttle having a few cookie-cutter shaped areas it travels between.
|
||||
When the shuttle "moved" it was translated from its current area to the destination area. The areas had to be _exactly_ the same shape so
|
||||
that each turf in the origin area got translated to the equivalent place at the target.\
|
||||
that each turf in the origin area got translated to the equivalent place at the target.\
|
||||
Since _all possible_ destinations had to have a dedicated area (and areas in BYOND can't overlap) this means it is impossible for two shuttles to travel to the same spot, even at different times.
|
||||
|
||||
In the new system shuttle destinations are represented by "landmark" objects (`/obj/effect/shuttle_landmark`).
|
||||
When a shuttle is "moved" it is translated from its current landmark to the destination landmark, with each turf keeping its same position _relative_ to the landmarks.
|
||||
In other words, whatever a turf's x/y/z offsets are from the origin landmark, it will be moved to the same x/y/z offset from the destination landmark.
|
||||
In other words, whatever a turf's x/y/z offsets are from the origin landmark, it will be moved to the same x/y/z offset from the destination landmark.
|
||||
|
||||
## Landmark Objects
|
||||
|
||||
Shuttle destinations are represented by `/obj/effect/shuttle_landmark` objects on the map.
|
||||
|
||||
* `name` - Pretty name of the nav point, used on overmap and in messages and console UI.
|
||||
* `landmark_tag` - Globally unique ID, used by everything else to refer to this landmark.
|
||||
* `docking_controller` - ID of the controller on the dock side (initialize to id_tag, becomes reference). Leave null if not applicable.
|
||||
* `base_area` - Type path of the `/area` that should be here when a shuttle is *not* present.
|
||||
* `base_turf` - Type path of the `/turf` that should be here when a shuttle is *not* present.
|
||||
* `shuttle_restricted` - If not null, only the named shuttle is allowed to use this landmark. (TODO: Overmap functionality)
|
||||
* `flags` - Bitfield - defaults to `SLANDMARK_FLAG_AUTOSET`, can be any combination of:
|
||||
* `SLANDMARK_FLAG_AUTOSET` (1) - If set, will initialize base_area and base_turf to same as where it was spawned at.
|
||||
* `SLANDMARK_FLAG_ZERO_G` (2) - If set, Zero-G shuttles moved here will lose gravity unless the area has ambient gravity.
|
||||
* `special_dock_targets` - Used to configure shuttles with multiple docking controllers on the shuttle. Map of shuttle `name` -> `id_tag` of the docking controller it should use for this landmark. (Think of a shuttle with airlocks on both sides, each with their own controller. This would tell it which side to use.)
|
||||
|
||||
- `name` - Pretty name of the nav point, used on overmap and in messages and console UI.
|
||||
- `landmark_tag` - Globally unique ID, used by everything else to refer to this landmark.
|
||||
- `docking_controller` - ID of the controller on the dock side (initialize to id_tag, becomes reference). Leave null if not applicable.
|
||||
- `base_area` - Type path of the `/area` that should be here when a shuttle is _not_ present.
|
||||
- `base_turf` - Type path of the `/turf` that should be here when a shuttle is _not_ present.
|
||||
- `shuttle_restricted` - If not null, only the named shuttle is allowed to use this landmark. (TODO: Overmap functionality)
|
||||
- `flags` - Bitfield - defaults to `SLANDMARK_FLAG_AUTOSET`, can be any combination of:
|
||||
- `SLANDMARK_FLAG_AUTOSET` (1) - If set, will initialize base_area and base_turf to same as where it was spawned at.
|
||||
- `SLANDMARK_FLAG_ZERO_G` (2) - If set, Zero-G shuttles moved here will lose gravity unless the area has ambient gravity.
|
||||
- `special_dock_targets` - Used to configure shuttles with multiple docking controllers on the shuttle. Map of shuttle `name` -> `id_tag` of the docking controller it should use for this landmark. (Think of a shuttle with airlocks on both sides, each with their own controller. This would tell it which side to use.)
|
||||
|
||||
## Shuttle Types
|
||||
|
||||
|
||||
### Ferry Shuttles
|
||||
|
||||
These shuttles go back and forth between two locations (normally called "station" and "offsite").
|
||||
Examples: Mining shuttle, Arrivals Shuttle, etc.
|
||||
|
||||
@@ -38,24 +40,22 @@ New Type Path: `/datum/shuttle/autodock/ferry`
|
||||
|
||||
##### New Vars:
|
||||
|
||||
Name|Type|Required?|Info
|
||||
---|---|---|---
|
||||
shuttle_area |`/area` typepath(s)|Yes| Can be a single path or list of paths.
|
||||
| Name | Type | Required? | Info |
|
||||
| ------------ | ------------------- | --------- | -------------------------------------- |
|
||||
| shuttle_area | `/area` typepath(s) | Yes | Can be a single path or list of paths. |
|
||||
|
||||
##### Replaced vars:
|
||||
|
||||
Old|New|Required?|Info
|
||||
:---:|:---:|:---:|---
|
||||
area_station |landmark_station |Yes|Tag of the landmark for the "station" location.
|
||||
area_offsite |landmark_offsite |Yes|Tag of the landmark for the "offsite" location.
|
||||
area_transition |landmark_transition |No|Tag of the landmark for the "transition" location used during long_jump()
|
||||
dock_target_station |On landmark |No|`id_tag` docking controller *on the dock* has been moved to the `docking_controller` var on the landmark_station landmark obj.
|
||||
dock_target_offsite |On landmark |No|`id_tag` docking controller *on the dock* has been moved to the `docking_controller` var on the landmark_offsite landmark obj.
|
||||
|
||||
|
||||
|
||||
| Old | New | Required? | Info |
|
||||
| :-----------------: | :-----------------: | :-------: | ------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| area_station | landmark_station | Yes | Tag of the landmark for the "station" location. |
|
||||
| area_offsite | landmark_offsite | Yes | Tag of the landmark for the "offsite" location. |
|
||||
| area_transition | landmark_transition | No | Tag of the landmark for the "transition" location used during long_jump() |
|
||||
| dock_target_station | On landmark | No | `id_tag` docking controller _on the dock_ has been moved to the `docking_controller` var on the landmark_station landmark obj. |
|
||||
| dock_target_offsite | On landmark | No | `id_tag` docking controller _on the dock_ has been moved to the `docking_controller` var on the landmark_offsite landmark obj. |
|
||||
|
||||
### Multi Shuttles
|
||||
|
||||
These shuttles go between a list of configured locations, one of which is its starting location.
|
||||
Examples: Skipjack, Syndicate Shuttle
|
||||
|
||||
@@ -64,61 +64,64 @@ New Type Path: `/datum/shuttle/autodock/multi`
|
||||
|
||||
##### New Vars:
|
||||
|
||||
Name|Type|Required?|Info
|
||||
---|---|---|---
|
||||
shuttle_area |`/area` typepath(s)|Yes| Can be a single path or list of paths.
|
||||
| Name | Type | Required? | Info |
|
||||
| ------------ | ------------------- | --------- | -------------------------------------- |
|
||||
| shuttle_area | `/area` typepath(s) | Yes | Can be a single path or list of paths. |
|
||||
|
||||
##### Replaced vars:
|
||||
|
||||
Old|New|Required?|Info
|
||||
:---:|:---:|:---:|---
|
||||
origin |current_location |Yes|Tag of the landmark where the shuttle is at startup.
|
||||
interim |landmark_transition |No|Tag of the landmark for the "transition" location used during long_jump()
|
||||
start_location |N/A |No|No longer necessary, automatically determined from the value of `origin`
|
||||
destinations |destination_tags |Yes|List of destinations the shuttle can travel to. Used to be associative list of *name* -> *area typepath*, now is normal list of landmark tag ids. Name is now read from the landmark obj.
|
||||
destination_dock_targets|On landmarks |No|Used to be associative list of *name* -> *id_tag* for which docking controller *on the dock* to use at each destination. This is now specified by the `docking_controller` var on each landmark obj.
|
||||
|
||||
|
||||
| Old | New | Required? | Info |
|
||||
| :----------------------: | :-----------------: | :-------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| origin | current_location | Yes | Tag of the landmark where the shuttle is at startup. |
|
||||
| interim | landmark_transition | No | Tag of the landmark for the "transition" location used during long_jump() |
|
||||
| start_location | N/A | No | No longer necessary, automatically determined from the value of `origin` |
|
||||
| destinations | destination_tags | Yes | List of destinations the shuttle can travel to. Used to be associative list of _name_ -> _area typepath_, now is normal list of landmark tag ids. Name is now read from the landmark obj. |
|
||||
| destination_dock_targets | On landmarks | No | Used to be associative list of _name_ -> _id_tag_ for which docking controller _on the dock_ to use at each destination. This is now specified by the `docking_controller` var on each landmark obj. |
|
||||
|
||||
### Web Shuttles
|
||||
These shuttles travel along a network of locations connected by routes. Instead of being able to travel to any of its destinations, it can only travel to destinations connected by a route to its current location. Added by Polaris as an upgrade to Multi Shuttles.
|
||||
|
||||
These shuttles travel along a network of locations connected by routes. Instead of being able to travel to any of its destinations, it can only travel to destinations connected by a route to its current location. Added by Polaris as an upgrade to Multi Shuttles.
|
||||
Note: While cool, it is likely that the upcoming "overmap" shuttles will be even cooler, and may eventually replace some web shuttles.
|
||||
Examples: Southern Cross' Ninja Shuttle, Tether's Excursion Shuttle
|
||||
Examples: Southern Cross' Ninja Shuttle, Tether's Excursion Shuttle
|
||||
|
||||
Old Type Path: `/datum/shuttle/web_shuttle`\
|
||||
New Type Path: `/datum/shuttle/autodock/web_shuttle`
|
||||
|
||||
##### New Vars:
|
||||
|
||||
Name|Type|Required?|Info
|
||||
---|---|---|---
|
||||
shuttle_area |`/area` typepath(s)|Yes| Can be a single path or list of paths.
|
||||
| Name | Type | Required? | Info |
|
||||
| ------------ | ------------------- | --------- | -------------------------------------- |
|
||||
| shuttle_area | `/area` typepath(s) | Yes | Can be a single path or list of paths. |
|
||||
|
||||
##### Replaced vars:
|
||||
|
||||
Old|New|Required?|Info
|
||||
:---:|:---:|:---:|---
|
||||
current_area |current_location |Yes|Tag of the landmark where the shuttle is at startup.
|
||||
| Old | New | Required? | Info |
|
||||
| :----------: | :--------------: | :-------: | ---------------------------------------------------- |
|
||||
| current_area | current_location | Yes | Tag of the landmark where the shuttle is at startup. |
|
||||
|
||||
#### Web Destination Configuration (`/datum/shuttle_destination`)
|
||||
The network of routes for each web shuttle is configured by defining datums. These are mostly unchanged but use landmarks instead of areas now.
|
||||
|
||||
The network of routes for each web shuttle is configured by defining datums. These are mostly unchanged but use landmarks instead of areas now.
|
||||
|
||||
##### Replaced vars:
|
||||
|
||||
Old|New|Required?|Info
|
||||
:---:|:---:|:---:|---
|
||||
my_area |my_landmark |Yes|Tag of the landmark associated with this destination.
|
||||
preferred_interim_area |preferred_interim_tag |No|Tag of the landmark for the "transition" location used during long_jump()
|
||||
dock_target |On landmark |No|`id_tag` docking controller *on the dock* has been moved to the `docking_controller` var on the my_landmark landmark obj.
|
||||
| Old | New | Required? | Info |
|
||||
| :--------------------: | :-------------------: | :-------: | ------------------------------------------------------------------------------------------------------------------------- |
|
||||
| my_area | my_landmark | Yes | Tag of the landmark associated with this destination. |
|
||||
| preferred_interim_area | preferred_interim_tag | No | Tag of the landmark for the "transition" location used during long_jump() |
|
||||
| dock_target | On landmark | No | `id_tag` docking controller _on the dock_ has been moved to the `docking_controller` var on the my_landmark landmark obj. |
|
||||
|
||||
### Misc Shuttle Types
|
||||
|
||||
Other shuttle types that are either unused or unchanged in particular.
|
||||
|
||||
#### Escape Pods
|
||||
|
||||
Special case of ferry shuttles that use escape pod berth controllers.
|
||||
Type path changed from `/datum/shuttle/ferry/escape_pod` to `/datum/shuttle/autodock/ferry/escape_pod`
|
||||
Type path changed from `/datum/shuttle/ferry/escape_pod` to `/datum/shuttle/autodock/ferry/escape_pod`
|
||||
Follow same instructions as for other ferry shuttles.
|
||||
|
||||
#### Multidock Ferry Shuttles
|
||||
|
||||
`/datum/shuttle/ferry/multidock` was a variant of ferry shuttles that could use a different docking port at each location.
|
||||
Obsolete since is now natively supported by all dockable shuttles.
|
||||
|
||||
Reference in New Issue
Block a user