From 760953aeba7c12669491d9371554d22dd3b6a88a Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Tue, 14 Apr 2026 17:24:50 +0200 Subject: [PATCH 1/8] =?UTF-8?q?feat(ui):=20atlas=20implant=20panel=20?= =?UTF-8?q?=E2=80=94=20system=20picker,=20orbital=20diagram,=20body=20nav?= =?UTF-8?q?=20(#834)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 3-level atlas navigation as an implant/map/atlas FULLSCREEN app (D-170 z=20): system picker (◄ ► cycle, Enter opens orbital) → orbital diagram (star centre, bodies grouped by orbit_index with moons sub-orbiting parents, stations as markers, click-to-open body or mini station panel) → body entry (data sheet, Enter stub for #835 heightmap viewer, Esc back). Composed from the ImplantPanel component library (D-169). Wires the panel into hud.tscn, adds an A-key toggle in main.gd, propagates insert_state via snapshot_consumers. Extends generate-star-map-data.py to emit per-system orbit_bodies + stations arrays (with currency_zone, atmosphere, population, terrain_reference, etc.) from systems.db; star_map_data.json regenerated deterministically. Per D-191 §6, Phase 3. --- client/data/star_map_data.json | 45183 ++++++++++++++++++++++++- client/scripts/main.gd | 6 + client/scripts/snapshot_consumers.gd | 4 + client/ui/hud.tscn | 8 +- client/ui/implant/atlas_panel.gd | 690 + client/ui/implant/atlas_panel.tscn | 18 + tooling/generate-star-map-data.py | 58 +- 7 files changed, 45662 insertions(+), 305 deletions(-) create mode 100644 client/ui/implant/atlas_panel.gd create mode 100644 client/ui/implant/atlas_panel.tscn diff --git a/client/data/star_map_data.json b/client/data/star_map_data.json index 2900d9684..451c52900 100644 --- a/client/data/star_map_data.json +++ b/client/data/star_map_data.json @@ -3,7 +3,7 @@ "generated_from": "star-map.json + systems.db + wiki/star-systems", "system_count": 301, "edge_count": 335, - "note": "Client-side star map data. Regenerate with: tooling/generate-star-map-data.py" + "note": "Client-side star map + atlas orbital data. Regenerate with: tooling/generate-star-map-data.py" }, "nodes": [ { @@ -23,11 +23,109 @@ "GJ 0" ], "star_type": "G8V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "2 habitable · 3 inhabited", "population": "1,200,000,000", "gdp": "48.0 TTr", "gttr_excerpt": "**GATEWAY** (known to astronomers as Tau Ceti, and to everyone else as \"the place you go through on the way to somewhere more interesting\") is the most connected system in the Reach, the site of its oldest research institution, and the location of a gate that goes to Earth and that nobody uses, which is exactly the sort of thing that makes a place interesting in all the wrong ways.", - "is_gateway": true + "is_gateway": true, + "orbit_bodies": [ + { + "body_id": "GJ71b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ71d-1", + "parent_body_id": "GJ71d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Verantis", + "atmosphere": "none", + "inhabited": true, + "population": 20000000, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ71c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Threshold", + "atmosphere": "standard", + "inhabited": true, + "population": 600000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ71d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Arden", + "atmosphere": "standard", + "inhabited": true, + "population": 500000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ71e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ71-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ71-oort", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ71-oort-S1", + "orbits_body_id": "GJ71-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 80000000, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 0", @@ -42,10 +140,252 @@ "GJ 71" ], "star_type": "G2V", + "currency_zone": "MIXED", "bodies": "1 habitable · 4 inhabited", "population": "10,080,000,000", "gdp": "756.0 TTr", - "gttr_excerpt": "**SOL** is where everyone came from and nobody wants to go back to, which is — if you think about it for even a moment — the most damning review a civilization has ever received." + "gttr_excerpt": "**SOL** is where everyone came from and nobody wants to go back to, which is — if you think about it for even a moment — the most damning review a civilization has ever received.", + "orbit_bodies": [ + { + "body_id": "GJ0b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": "Mercury", + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ0d-1", + "parent_body_id": "GJ0d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Luna", + "atmosphere": "none", + "inhabited": true, + "population": 350000000, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ0e-1", + "parent_body_id": "GJ0e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Phobos", + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ0f-1", + "parent_body_id": "GJ0f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Io", + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ0g-1", + "parent_body_id": "GJ0g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Titan", + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ0c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Venus", + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ0e-2", + "parent_body_id": "GJ0e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": "Deimos", + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ0f-2", + "parent_body_id": "GJ0f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": "Europa", + "atmosphere": "none", + "inhabited": true, + "population": 30000000, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ0g-2", + "parent_body_id": "GJ0g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": "Enceladus", + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ0d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Earth", + "atmosphere": "standard", + "inhabited": true, + "population": 8500000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ0f-3", + "parent_body_id": "GJ0f", + "orbit_index": 3, + "body_type": "moon", + "proper_name": "Ganymede", + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ0e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Mars", + "atmosphere": "thin", + "inhabited": true, + "population": 1200000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ0f-4", + "parent_body_id": "GJ0f", + "orbit_index": 4, + "body_type": "moon", + "proper_name": "Callisto", + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ0-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ0f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": "Jupiter", + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ0g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "gas_giant", + "proper_name": "Saturn", + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ0h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "gas_giant", + "proper_name": "Uranus", + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "ice_giant" + }, + { + "body_id": "GJ0i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "gas_giant", + "proper_name": "Neptune", + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "ice_giant" + }, + { + "body_id": "GJ0-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ0-oort-S1", + "orbits_body_id": "GJ0-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 144", @@ -62,10 +402,177 @@ "GJ 764" ], "star_type": "K2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "2 habitable · 2 inhabited", "population": "3,205,000,000", "gdp": "128.2 TTr", - "gttr_excerpt": "**RAN** is, by all accounts, a very nice place to live, provided you are the sort of person whose grandparents owned the land, and provided you do not think too carefully about why that still matters." + "gttr_excerpt": "**RAN** is, by all accounts, a very nice place to live, provided you are the sort of person whose grandparents owned the land, and provided you do not think too carefully about why that still matters.", + "orbit_bodies": [ + { + "body_id": "GJ144b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ144d-1", + "parent_body_id": "GJ144d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ144e-1", + "parent_body_id": "GJ144e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ144g-1", + "parent_body_id": "GJ144g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ144c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ144g-2", + "parent_body_id": "GJ144g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ144d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Kallast", + "atmosphere": "standard", + "inhabited": true, + "population": 2000000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ144e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Vethis", + "atmosphere": "standard", + "inhabited": true, + "population": 1200000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ144f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ144-belt", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ144g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ144-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ144d-S1", + "orbits_body_id": "GJ144d", + "station_type": "commercial", + "proper_name": "Kallast Freight Terminal", + "population": 5000000, + "governance_type": null, + "economic_role": "agricultural" + }, + { + "station_id": "GJ144-oort-S1", + "orbits_body_id": "GJ144-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 244A", @@ -84,10 +591,156 @@ "GJ 820B" ], "star_type": "A1V + DA2", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "2,800,050,000", "gdp": "210.0 TTr", - "gttr_excerpt": "**SIRIUS** is the capital of the Reach, which tells you everything you need to know about the Reach's priorities and almost nothing about the system itself, which is — and there is no gentle way to say this — a luminous hellscape orbited by tin cans full of bureaucrats." + "gttr_excerpt": "**SIRIUS** is the capital of the Reach, which tells you everything you need to know about the Reach's priorities and almost nothing about the system itself, which is — and there is no gentle way to say this — a luminous hellscape orbited by tin cans full of bureaucrats.", + "orbit_bodies": [ + { + "body_id": "GJ244Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ244Ae-1", + "parent_body_id": "GJ244Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ244Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ244Ae-2", + "parent_body_id": "GJ244Ae", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ244Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Edict", + "atmosphere": "standard", + "inhabited": true, + "population": 400000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ244Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ244A-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ244A-oort", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ244Ad-S1", + "orbits_body_id": "GJ244Ad", + "station_type": "commercial", + "proper_name": "Conclave", + "population": 50000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ244Ad-S2", + "orbits_body_id": "GJ244Ad", + "station_type": "transit", + "proper_name": "Aperture", + "population": 490000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ244Ad-S3", + "orbits_body_id": "GJ244Ad", + "station_type": "commercial", + "proper_name": "Leverage", + "population": 300000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ244Ad-S4", + "orbits_body_id": "GJ244Ad", + "station_type": "commercial", + "proper_name": "Quorum", + "population": 1610000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ244A-oort-S1", + "orbits_body_id": "GJ244A-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 559B", @@ -106,10 +759,93 @@ "GJ 251" ], "star_type": "K1V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "800,000,000", "gdp": "32.0 TTr", - "gttr_excerpt": "**ACB** is where the Lattice Commission lives, which means it is where the rules live, and also where the rules about the rules live, and also where the people who wrote the rules about the rules have been sitting in the same offices for three hundred years deciding what the rules about the rules actually mean." + "gttr_excerpt": "**ACB** is where the Lattice Commission lives, which means it is where the rules live, and also where the rules about the rules live, and also where the people who wrote the rules about the rules have been sitting in the same offices for three hundred years deciding what the rules about the rules actually mean.", + "orbit_bodies": [ + { + "body_id": "GJ559Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ559Bc-1", + "parent_body_id": "GJ559Bc", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ559Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Sede", + "atmosphere": "standard", + "inhabited": true, + "population": 750000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ559Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ559B-oort", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ559Bc-S1", + "orbits_body_id": "GJ559Bc", + "station_type": "commercial", + "proper_name": "The Stack", + "population": 50000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ559B-oort-S1", + "orbits_body_id": "GJ559B-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 725B", @@ -126,10 +862,120 @@ "GJ 764" ], "star_type": "K5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "120,000,000", "gdp": "600.0 BTr", - "gttr_excerpt": "**STRUVE** is one hop from Gateway, forty years old, and still does not have a functioning government, which makes it either the inner orbit's most exciting destination or its most frustrating, depending on whether you are the sort of person who finds ungoverned frontier systems charming or the sort of person who would like to know who to file a complaint with." + "gttr_excerpt": "**STRUVE** is one hop from Gateway, forty years old, and still does not have a functioning government, which makes it either the inner orbit's most exciting destination or its most frustrating, depending on whether you are the sort of person who finds ungoverned frontier systems charming or the sort of person who would like to know who to file a complaint with.", + "orbit_bodies": [ + { + "body_id": "GJ725Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ725Bc-1", + "parent_body_id": "GJ725Bc", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ725Be-1", + "parent_body_id": "GJ725Be", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ725Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Rush", + "atmosphere": "standard", + "inhabited": true, + "population": 120000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ725Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ725B-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ725Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "ice_giant" + }, + { + "body_id": "GJ725B-oort", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ725B-oort-S1", + "orbits_body_id": "GJ725B-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1221", @@ -144,10 +990,48 @@ "GJ 866A" ], "star_type": "DXP9", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "200", "gdp": "0.1 MTr", - "gttr_excerpt": "**1221-DXP9** does not have a name. It has a catalog number and a spectral classification, and the spectral classification is the interesting part, because it means the star is dead, unreadable, magnetic, and should not be any of those things in that combination." + "gttr_excerpt": "**1221-DXP9** does not have a name. It has a catalog number and a spectral classification, and the spectral classification is the interesting part, because it means the star is dead, unreadable, magnetic, and should not be any of those things in that combination.", + "orbit_bodies": [ + { + "body_id": "GJ1221-belt", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1221-oort", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1221-oort-S1", + "orbits_body_id": "GJ1221-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 200, + "governance_type": null, + "economic_role": "research" + } + ] }, { "system_id": "GJ 166A", @@ -162,10 +1046,105 @@ "GJ 551" ], "star_type": "K1V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "25,002,000", "gdp": "125.0 BTr", - "gttr_excerpt": "**KEID** has one gate, one biosphere, and one governing body that has spent five centuries deciding who gets to look at the second of those through the first. The arrangement has been described as conservation. It has also been described as the most exclusive residential development in the Reach, depending on whether you ask the Conservancy or the researchers who occasionally glimpse infrastructure in zones the Conservancy's public registry declines to describe." + "gttr_excerpt": "**KEID** has one gate, one biosphere, and one governing body that has spent five centuries deciding who gets to look at the second of those through the first. The arrangement has been described as conservation. It has also been described as the most exclusive residential development in the Reach, depending on whether you ask the Conservancy or the researchers who occasionally glimpse infrastructure in zones the Conservancy's public registry declines to describe.", + "orbit_bodies": [ + { + "body_id": "GJ166Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ166Ac-1", + "parent_body_id": "GJ166Ac", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ166Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Cadwal", + "atmosphere": "standard", + "inhabited": true, + "population": 25000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ166Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ166Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ166A-oort", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ166Ac-S1", + "orbits_body_id": "GJ166Ac", + "station_type": "research", + "proper_name": null, + "population": 2000, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ166A-oort-S1", + "orbits_body_id": "GJ166A-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 251", @@ -184,10 +1163,141 @@ "GJ 559B" ], "star_type": "K5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "5,120,000,000", "gdp": "384.0 TTr", - "gttr_excerpt": "**RENAISSANCE** builds the gates. Not the alien ones — those were here before anyone arrived and nobody knows how to modify them. The human ones. The span gates that move freight between stations and planets, that make local commerce possible, that keep populations from being stranded on individual orbital platforms. The Gate Corporation built most of them. It built them here." + "gttr_excerpt": "**RENAISSANCE** builds the gates. Not the alien ones — those were here before anyone arrived and nobody knows how to modify them. The human ones. The span gates that move freight between stations and planets, that make local commerce possible, that keep populations from being stranded on individual orbital platforms. The Gate Corporation built most of them. It built them here.", + "orbit_bodies": [ + { + "body_id": "GJ251b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ251c-1", + "parent_body_id": "GJ251c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ251e-1", + "parent_body_id": "GJ251e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ251c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Ruhr", + "atmosphere": "standard", + "inhabited": true, + "population": 5000000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ251e-2", + "parent_body_id": "GJ251e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ251d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ251-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ251e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ251-oort", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ251c-S1", + "orbits_body_id": "GJ251c", + "station_type": "industrial", + "proper_name": "Huygens Platform", + "population": 120000000, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ251-oort-S1", + "orbits_body_id": "GJ251-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 280A", @@ -204,10 +1314,144 @@ "GJ 3877" ], "star_type": "F5IV-V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,800,000,000", "gdp": "72.0 TTr", - "gttr_excerpt": "**PARALLAX** does not mine anything, fabricate anything, or grow anything at export scale. What it produces is harder to put in a freight container: the Reach's account of itself." + "gttr_excerpt": "**PARALLAX** does not mine anything, fabricate anything, or grow anything at export scale. What it produces is harder to put in a freight container: the Reach's account of itself.", + "orbit_bodies": [ + { + "body_id": "GJ280Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ280Ad-1", + "parent_body_id": "GJ280Ad", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ280Af-1", + "parent_body_id": "GJ280Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ280Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ280Af-2", + "parent_body_id": "GJ280Af", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ280Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Estrade", + "atmosphere": "standard", + "inhabited": true, + "population": 1800000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ280Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ280Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ280A-belt", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ280A-oort", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ280A-oort-S1", + "orbits_body_id": "GJ280A-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3522", @@ -224,10 +1468,141 @@ "GJ 764" ], "star_type": "k", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 4 inhabited", "population": "1,545,000,000", "gdp": "61.8 TTr", - "gttr_excerpt": "**SINDRI** is a mining system run by a mining corporation that is not, technically, the government, in the same way that the ocean is not, technically, the thing that makes you wet — it is merely the environment in which all wetness occurs." + "gttr_excerpt": "**SINDRI** is a mining system run by a mining corporation that is not, technically, the government, in the same way that the ocean is not, technically, the thing that makes you wet — it is merely the environment in which all wetness occurs.", + "orbit_bodies": [ + { + "body_id": "GJ3522b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3522c-1", + "parent_body_id": "GJ3522c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Kimberley", + "atmosphere": "none", + "inhabited": true, + "population": 8000000, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3522e-1", + "parent_body_id": "GJ3522e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Dampier", + "atmosphere": "none", + "inhabited": true, + "population": 5000000, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3522c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Witwatersrand", + "atmosphere": "standard", + "inhabited": true, + "population": 1500000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3522e-2", + "parent_body_id": "GJ3522e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3522d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3522-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": "Pilbara Belt", + "atmosphere": null, + "inhabited": true, + "population": 2000000, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3522e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ3522-oort", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3522c-S1", + "orbits_body_id": "GJ3522c", + "station_type": "industrial", + "proper_name": "Jhb Orbital", + "population": 30000000, + "governance_type": null, + "economic_role": "extraction" + }, + { + "station_id": "GJ3522-oort-S1", + "orbits_body_id": "GJ3522-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 380", @@ -243,10 +1618,96 @@ "GJ 674" ], "star_type": "K8V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "900,000,000", "gdp": "36.0 TTr", - "gttr_excerpt": "**GROOMBRIDGE** is where the money lives. Not the people who have money — those are distributed across the Reach in the usual patterns of Perpetual-class accumulation. The *money itself* — the instruments, the accounts, the actuarial models, the letters of credit that make it possible for a Syndic combine in the outer Reach to do business with a partner six gate hops away without either of them having to physically carry anything — lives at Groombridge, managed by financial houses that have been doing this for four centuries and see no reason to explain the details to anyone who is not a client." + "gttr_excerpt": "**GROOMBRIDGE** is where the money lives. Not the people who have money — those are distributed across the Reach in the usual patterns of Perpetual-class accumulation. The *money itself* — the instruments, the accounts, the actuarial models, the letters of credit that make it possible for a Syndic combine in the outer Reach to do business with a partner six gate hops away without either of them having to physically carry anything — lives at Groombridge, managed by financial houses that have been doing this for four centuries and see no reason to explain the details to anyone who is not a client.", + "orbit_bodies": [ + { + "body_id": "GJ380b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ380c-1", + "parent_body_id": "GJ380c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ380c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Lendel", + "atmosphere": "standard", + "inhabited": true, + "population": 900000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ380d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ380e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ380-oort", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ380-oort-S1", + "orbits_body_id": "GJ380-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3877", @@ -265,10 +1726,96 @@ "GJ 551" ], "star_type": "K5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,300,000,000", "gdp": "52.0 TTr", - "gttr_excerpt": "**TESSERA** is where the Reach keeps its memory, which would be reassuring if the people responsible for organizing that memory had not been doing it, unsupervised, for five hundred years." + "gttr_excerpt": "**TESSERA** is where the Reach keeps its memory, which would be reassuring if the people responsible for organizing that memory had not been doing it, unsupervised, for five hundred years.", + "orbit_bodies": [ + { + "body_id": "GJ3877b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3877c-1", + "parent_body_id": "GJ3877c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3877c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Corvel", + "atmosphere": "standard", + "inhabited": true, + "population": 1300000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3877d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3877e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3877-oort", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3877-oort-S1", + "orbits_body_id": "GJ3877-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 551", @@ -286,10 +1833,72 @@ "GJ 3877" ], "star_type": "M5Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "400,000,000", "gdp": "6.0 TTr", - "gttr_excerpt": "**PROXIMA** is where humanity first arrived, which makes it a place of profound historical significance and a very effective mechanism for making visitors feel guilty about asking questions." + "gttr_excerpt": "**PROXIMA** is where humanity first arrived, which makes it a place of profound historical significance and a very effective mechanism for making visitors feel guilty about asking questions.", + "orbit_bodies": [ + { + "body_id": "GJ551b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": "Ancora", + "atmosphere": "standard", + "inhabited": true, + "population": 400000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ551c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ551d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ551-oort", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ551-oort-S1", + "orbits_body_id": "GJ551-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 674", @@ -305,10 +1914,96 @@ "GJ 380" ], "star_type": "K5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "150,000,000", "gdp": "750.0 BTr", - "gttr_excerpt": "**MERIDIAN** is a boomtown. It has all the features of a boomtown — contested governance, disputed land tenure, exhausted settlers, and the specific atmosphere of a place where everyone arrived recently and nobody agrees on what they are building. It also has a feature most boomtowns lack: the money was already here when the first settlers showed up." + "gttr_excerpt": "**MERIDIAN** is a boomtown. It has all the features of a boomtown — contested governance, disputed land tenure, exhausted settlers, and the specific atmosphere of a place where everyone arrived recently and nobody agrees on what they are building. It also has a feature most boomtowns lack: the money was already here when the first settlers showed up.", + "orbit_bodies": [ + { + "body_id": "GJ674b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ674c-1", + "parent_body_id": "GJ674c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ674c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Provenance", + "atmosphere": "standard", + "inhabited": true, + "population": 150000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ674d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ674e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ674-oort", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ674-oort-S1", + "orbits_body_id": "GJ674-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 699", @@ -324,10 +2019,117 @@ "GJ 820B" ], "star_type": "sdM4", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "2,000,000,000", "gdp": "80.0 TTr", - "gttr_excerpt": "**BARNARD'S STAR** is a bedroom community for a shipyard, which is not the destiny anyone imagined for the second-closest star to Sol, but which is — in the way of most things about the gate network — what the alien builders' infrastructure made convenient rather than what human ambition would have chosen." + "gttr_excerpt": "**BARNARD'S STAR** is a bedroom community for a shipyard, which is not the destiny anyone imagined for the second-closest star to Sol, but which is — in the way of most things about the gate network — what the alien builders' infrastructure made convenient rather than what human ambition would have chosen.", + "orbit_bodies": [ + { + "body_id": "GJ699b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": "Verada", + "atmosphere": "standard", + "inhabited": true, + "population": 1900000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ699b-1", + "parent_body_id": "GJ699b", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ699e-1", + "parent_body_id": "GJ699e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ699c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ699d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ699e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "ice_giant" + }, + { + "body_id": "GJ699-oort", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ699b-S1", + "orbits_body_id": "GJ699b", + "station_type": "transit", + "proper_name": "Ramanujan Station", + "population": 100000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ699-oort-S1", + "orbits_body_id": "GJ699-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 702B", @@ -342,10 +2144,186 @@ "GJ 144" ], "star_type": "K5 Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "55,000", "gdp": "110.0 MTr", - "gttr_excerpt": "**PROMETHEUS** has one gate. One way in. One way out. The company that controls the gate also controls who lives for centuries and who does not, which is either the most important fact about the Reach or the most important fact about the Reach that nobody is allowed to investigate, depending on how you feel about distinctions without differences." + "gttr_excerpt": "**PROMETHEUS** has one gate. One way in. One way out. The company that controls the gate also controls who lives for centuries and who does not, which is either the most important fact about the Reach or the most important fact about the Reach that nobody is allowed to investigate, depending on how you feel about distinctions without differences.", + "orbit_bodies": [ + { + "body_id": "GJ702Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ702Bh-1", + "parent_body_id": "GJ702Bh", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ702Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ702Bh-2", + "parent_body_id": "GJ702Bh", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ702Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ702Bh-3", + "parent_body_id": "GJ702Bh", + "orbit_index": 3, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ702Be", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Galen", + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ702Bf", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ702Bg", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ702B-belt", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ702Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ702B-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ702Bc-S1", + "orbits_body_id": "GJ702Bc", + "station_type": "research", + "proper_name": "Site Anterior", + "population": 5000, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ702B-oort-S1", + "orbits_body_id": "GJ702B-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ702B-oort-S2", + "orbits_body_id": "GJ702B-oort", + "station_type": "research", + "proper_name": "Chiron", + "population": 50000, + "governance_type": null, + "economic_role": "research" + } + ] }, { "system_id": "GJ 820B", @@ -364,10 +2342,186 @@ "GJ 559B" ], "star_type": "K7V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 2 inhabited", "population": "1,715,000,000", "gdp": "68.6 TTr", - "gttr_excerpt": "**CYGNI B** built the Reach. Not metaphorically, not in the inspirational sense that politicians invoke at Assembly ceremonies. Literally. The stations you transit through, the freight haulers that carry your food, the gate-adjacent platforms that connect the alien infrastructure to the human kind — Cygni B fabricated them. The combines will tell you this unprompted. They will tell you where each piece is and how long it has been running. This is not propaganda. It is the culture of people whose work is the physical infrastructure of a civilization, and who feel, with some justification, that the civilization has not adequately compensated them for it." + "gttr_excerpt": "**CYGNI B** built the Reach. Not metaphorically, not in the inspirational sense that politicians invoke at Assembly ceremonies. Literally. The stations you transit through, the freight haulers that carry your food, the gate-adjacent platforms that connect the alien infrastructure to the human kind — Cygni B fabricated them. The combines will tell you this unprompted. They will tell you where each piece is and how long it has been running. This is not propaganda. It is the culture of people whose work is the physical infrastructure of a civilization, and who feel, with some justification, that the civilization has not adequately compensated them for it.", + "orbit_bodies": [ + { + "body_id": "GJ820Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ820Bc-1", + "parent_body_id": "GJ820Bc", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ820Bg-1", + "parent_body_id": "GJ820Bg", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ820B-belt", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": true, + "population": 15000000, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ820Bg-2", + "parent_body_id": "GJ820Bg", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ820Bc", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Ferrath", + "atmosphere": "standard", + "inhabited": true, + "population": 200000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ820Bg-3", + "parent_body_id": "GJ820Bg", + "orbit_index": 3, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ820Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ820Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ820Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ820Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ820B-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ820Bc-S1", + "orbits_body_id": "GJ820Bc", + "station_type": "industrial", + "proper_name": "Kihl Works", + "population": 1200000000, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ820Bc-S2", + "orbits_body_id": "GJ820Bc", + "station_type": "industrial", + "proper_name": "van Leeuwenhoek Station", + "population": 300000000, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ820B-oort-S1", + "orbits_body_id": "GJ820B-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 845", @@ -388,9 +2542,179 @@ "GJ 892" ], "star_type": "K5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "2 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**CAIRN** has seven gate apertures and no population, which is the sort of statistic that should make you curious, and then — if you are paying attention to the way every institution in the inner orbit has carefully not explained it for forty years — should make you something else." + "gttr_excerpt": "**CAIRN** has seven gate apertures and no population, which is the sort of statistic that should make you curious, and then — if you are paying attention to the way every institution in the inner orbit has carefully not explained it for forty years — should make you something else.", + "orbit_bodies": [ + { + "body_id": "GJ845b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ845d-1", + "parent_body_id": "GJ845d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ845h-1", + "parent_body_id": "GJ845h", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ845c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ845h-2", + "parent_body_id": "GJ845h", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ845d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ845h-3", + "parent_body_id": "GJ845h", + "orbit_index": 3, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ845e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ845f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ845g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ845-belt", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ845h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ845-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ845-oort-S1", + "orbits_body_id": "GJ845-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1156", @@ -408,10 +2732,189 @@ "GJ 299" ], "star_type": "K5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,220,000,000", "gdp": "48.8 TTr", - "gttr_excerpt": "**TRAVESSIA** is the most important place in the south Reach that nobody would ever visit on purpose, which is how the people who built it prefer things." + "gttr_excerpt": "**TRAVESSIA** is the most important place in the south Reach that nobody would ever visit on purpose, which is how the people who built it prefer things.", + "orbit_bodies": [ + { + "body_id": "GJ1156b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1156d-1", + "parent_body_id": "GJ1156d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1156i-1", + "parent_body_id": "GJ1156i", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1156c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1156i-2", + "parent_body_id": "GJ1156i", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1156d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Euripus", + "atmosphere": "standard", + "inhabited": true, + "population": 1200000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1156e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1156f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1156g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1156h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1156-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1156i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ1156-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1156d-S1", + "orbits_body_id": "GJ1156d", + "station_type": "commercial", + "proper_name": "Ostia", + "population": 20000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ1156-oort-S1", + "orbits_body_id": "GJ1156-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1286", @@ -429,10 +2932,168 @@ "GJ 447" ], "star_type": "K1 Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "2 habitable · 2 inhabited", "population": "580,000,000", "gdp": "8.7 TTr", - "gttr_excerpt": "**KENSHO** is the Reach's primary research cluster, which means it is the place that decides what questions get asked — and, more importantly, what questions do not get funded, which is a different kind of decision that produces no documentation and leaves no archive and has been accumulating quietly for five centuries." + "gttr_excerpt": "**KENSHO** is the Reach's primary research cluster, which means it is the place that decides what questions get asked — and, more importantly, what questions do not get funded, which is a different kind of decision that produces no documentation and leaves no archive and has been accumulating quietly for five centuries.", + "orbit_bodies": [ + { + "body_id": "GJ1286b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1286d-1", + "parent_body_id": "GJ1286d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1286h-1", + "parent_body_id": "GJ1286h", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1286c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1286h-2", + "parent_body_id": "GJ1286h", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1286d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Enso", + "atmosphere": "standard", + "inhabited": true, + "population": 500000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1286e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Mokurai", + "atmosphere": "standard", + "inhabited": true, + "population": 80000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1286f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1286g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1286-belt", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1286h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ1286-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1286-oort-S1", + "orbits_body_id": "GJ1286-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 139", @@ -449,10 +3110,201 @@ "GJ 1245A" ], "star_type": "G8V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "365,000,000", "gdp": "5.5 TTr", - "gttr_excerpt": "**OKAFOR STATION** markets itself as the north corridor's most transparent financial hub, which is accurate in the same way that a window is transparent — you can see through it clearly, provided nobody has drawn the curtains on the other side." + "gttr_excerpt": "**OKAFOR STATION** markets itself as the north corridor's most transparent financial hub, which is accurate in the same way that a window is transparent — you can see through it clearly, provided nobody has drawn the curtains on the other side.", + "orbit_bodies": [ + { + "body_id": "GJ139b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ139d-1", + "parent_body_id": "GJ139d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ139j-1", + "parent_body_id": "GJ139j", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ139c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ139j-2", + "parent_body_id": "GJ139j", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ139d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Onitsha", + "atmosphere": "thin", + "inhabited": true, + "population": 350000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ139e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ139f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ139g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ139h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ139i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ139-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ139j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ139-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ139d-S1", + "orbits_body_id": "GJ139d", + "station_type": "commercial", + "proper_name": "Timbuktu Orbital Exchange", + "population": 15000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ139-oort-S1", + "orbits_body_id": "GJ139-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 15A", @@ -467,10 +3319,117 @@ "GJ 764" ], "star_type": "M1V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "2,825,000,000", "gdp": "113.0 TTr", - "gttr_excerpt": "**LU BAN** has one gate, one neighbor, and three hundred independent manufacturers who have built an entire economy on the assumption that the neighbor will continue to let them use it. The neighbor is MVG. The assumption has held for three centuries. The manufacturers are aware that an assumption and a guarantee are different things. They have priced accordingly." + "gttr_excerpt": "**LU BAN** has one gate, one neighbor, and three hundred independent manufacturers who have built an entire economy on the assumption that the neighbor will continue to let them use it. The neighbor is MVG. The assumption has held for three centuries. The manufacturers are aware that an assumption and a guarantee are different things. They have priced accordingly.", + "orbit_bodies": [ + { + "body_id": "GJ15Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ15Ac-1", + "parent_body_id": "GJ15Ac", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ15Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Gongshu", + "atmosphere": "standard", + "inhabited": true, + "population": 2800000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ15Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ15Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ15Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ15A-oort", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ15Ac-S1", + "orbits_body_id": "GJ15Ac", + "station_type": "commercial", + "proper_name": "Humen", + "population": 25000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ15A-oort-S1", + "orbits_body_id": "GJ15A-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 338B", @@ -486,10 +3445,156 @@ "GJ 244A" ], "star_type": "K2", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "600,000,000", "gdp": "24.0 TTr", - "gttr_excerpt": "**ARBOUR** is a quiet garden world where nothing of consequence happens, which is the most consequential thing about it." + "gttr_excerpt": "**ARBOUR** is a quiet garden world where nothing of consequence happens, which is the most consequential thing about it.", + "orbit_bodies": [ + { + "body_id": "GJ338Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ338Bd-1", + "parent_body_id": "GJ338Bd", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ338Bg-1", + "parent_body_id": "GJ338Bg", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ338Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ338Bg-2", + "parent_body_id": "GJ338Bg", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ338Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Arbour", + "atmosphere": "standard", + "inhabited": true, + "population": 600000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ338Be", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ338Bf", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ338Bg", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ338Bh", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ338B-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ338B-oort-S1", + "orbits_body_id": "GJ338B-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 34A", @@ -506,10 +3611,201 @@ "GJ 667A" ], "star_type": "G0V SB", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,830,000,000", "gdp": "73.2 TTr", - "gttr_excerpt": "**TANEGASHIMA** makes things without asking what they are for, and has made enough money doing so that questioning the arrangement has become socially difficult." + "gttr_excerpt": "**TANEGASHIMA** makes things without asking what they are for, and has made enough money doing so that questioning the arrangement has become socially difficult.", + "orbit_bodies": [ + { + "body_id": "GJ34Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Ad-1", + "parent_body_id": "GJ34Ad", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ34Aj-1", + "parent_body_id": "GJ34Aj", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ34Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Aj-2", + "parent_body_id": "GJ34Aj", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ34Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Kanashiro", + "atmosphere": "standard", + "inhabited": true, + "population": 1800000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Ag", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Ah", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Ai", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ34A-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ34Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ34A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ34Ad-S1", + "orbits_body_id": "GJ34Ad", + "station_type": "industrial", + "proper_name": "Tsurumi Station", + "population": 30000000, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ34A-oort-S1", + "orbits_body_id": "GJ34A-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 34B", @@ -527,10 +3823,189 @@ "GJ 280A" ], "star_type": "K7 V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "812,000,000", "gdp": "12.2 TTr", - "gttr_excerpt": "**YONGJIN** controls the queue, and the queue is the east corridor, and everyone who moves freight into the eastern Reach has learned that the people who manage the queue are very helpful and that their helpfulness has a pattern." + "gttr_excerpt": "**YONGJIN** controls the queue, and the queue is the east corridor, and everyone who moves freight into the eastern Reach has learned that the people who manage the queue are very helpful and that their helpfulness has a pattern.", + "orbit_bodies": [ + { + "body_id": "GJ34Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Bc-1", + "parent_body_id": "GJ34Bc", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ34Bi-1", + "parent_body_id": "GJ34Bi", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ34Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Shin Incheon", + "atmosphere": "standard", + "inhabited": true, + "population": 800000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Bi-2", + "parent_body_id": "GJ34Bi", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ34Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Be", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Bf", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Bg", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ34Bh", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ34B-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ34Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ34B-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ34Bc-S1", + "orbits_body_id": "GJ34Bc", + "station_type": "commercial", + "proper_name": "Cheongmun Station", + "population": 12000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ34B-oort-S1", + "orbits_body_id": "GJ34B-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 406", @@ -549,10 +4024,258 @@ "GJ 3618" ], "star_type": "M6", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "205,000,500", "gdp": "3.1 TTr", - "gttr_excerpt": "**WOLF 359** is the node where every north corridor transit complaint eventually arrives, and where those complaints are politely processed, stamped, and filed in sequence until they become someone else's problem." + "gttr_excerpt": "**WOLF 359** is the node where every north corridor transit complaint eventually arrives, and where those complaints are politely processed, stamped, and filed in sequence until they become someone else's problem.", + "orbit_bodies": [ + { + "body_id": "GJ406b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ406g-1", + "parent_body_id": "GJ406g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ406c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ406d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ406e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ406f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ406-belt", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ406g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ406-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ406c-S1", + "orbits_body_id": "GJ406c", + "station_type": "commercial", + "proper_name": "Bondstore", + "population": 8000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ406c-S2", + "orbits_body_id": "GJ406c", + "station_type": "commercial", + "proper_name": "Coldstore", + "population": 4000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ406d-S1", + "orbits_body_id": "GJ406d", + "station_type": "commercial", + "proper_name": "Carvel", + "population": 38000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ406d-S2", + "orbits_body_id": "GJ406d", + "station_type": "commercial", + "proper_name": "Corwall", + "population": 34000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ406d-S3", + "orbits_body_id": "GJ406d", + "station_type": "commercial", + "proper_name": "The Levels", + "population": 28000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ406e-S1", + "orbits_body_id": "GJ406e", + "station_type": "commercial", + "proper_name": "Caldren", + "population": 22000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ406e-S2", + "orbits_body_id": "GJ406e", + "station_type": "commercial", + "proper_name": "Aldermoor", + "population": 6000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ406e-S3", + "orbits_body_id": "GJ406e", + "station_type": "industrial", + "proper_name": "Cresside", + "population": 5000000, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ406f-S1", + "orbits_body_id": "GJ406f", + "station_type": "commercial", + "proper_name": "Midstation", + "population": 19000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ406f-S2", + "orbits_body_id": "GJ406f", + "station_type": "commercial", + "proper_name": "Bevington", + "population": 17000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ406f-S3", + "orbits_body_id": "GJ406f", + "station_type": "commercial", + "proper_name": "Bretton", + "population": 9000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ406f-S4", + "orbits_body_id": "GJ406f", + "station_type": "commercial", + "proper_name": "Waycroft", + "population": 12000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ406g-S1", + "orbits_body_id": "GJ406g", + "station_type": "industrial", + "proper_name": "Accompong Works", + "population": 3000000, + "governance_type": null, + "economic_role": "extraction" + }, + { + "station_id": "GJ406-oort-S1", + "orbits_body_id": "GJ406-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ406-oort-S2", + "orbits_body_id": "GJ406-oort", + "station_type": "research", + "proper_name": "Lalo Watch", + "population": 500, + "governance_type": null, + "economic_role": "research" + } + ] }, { "system_id": "GJ 411", @@ -571,10 +4294,141 @@ "GJ 234A" ], "star_type": "M2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,240,000,000", "gdp": "49.6 TTr", - "gttr_excerpt": "**LALANDE** was named by accident and never bothered to change it, which is the most honest thing a transit hub has ever done." + "gttr_excerpt": "**LALANDE** was named by accident and never bothered to change it, which is the most honest thing a transit hub has ever done.", + "orbit_bodies": [ + { + "body_id": "GJ411b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ411c-1", + "parent_body_id": "GJ411c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ411c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Setúbal", + "atmosphere": "standard", + "inhabited": true, + "population": 1200000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ411d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ411e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ411f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ411g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ411-belt", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ411-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ411c-S1", + "orbits_body_id": "GJ411c", + "station_type": "commercial", + "proper_name": "Escala", + "population": 40000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ411-oort-S1", + "orbits_body_id": "GJ411-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 4274", @@ -589,10 +4443,141 @@ "GJ 687" ], "star_type": "M6 Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "15,002,000", "gdp": "75.0 BTr", - "gttr_excerpt": "**SUZHOU** is a dead-end system that chose to be a dead-end system, which makes it either the most principled or the most paranoid academic community in the Reach, depending on whether you think a founding consortium that specifically petitioned for isolation was protecting its research or protecting something else." + "gttr_excerpt": "**SUZHOU** is a dead-end system that chose to be a dead-end system, which makes it either the most principled or the most paranoid academic community in the Reach, depending on whether you think a founding consortium that specifically petitioned for isolation was protecting its research or protecting something else.", + "orbit_bodies": [ + { + "body_id": "GJ4274b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4274c-1", + "parent_body_id": "GJ4274c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ4274c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Hanwei", + "atmosphere": "thin", + "inhabited": true, + "population": 15000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4274d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4274e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4274f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4274g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4274-belt", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ4274-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ4274c-S1", + "orbits_body_id": "GJ4274c", + "station_type": "research", + "proper_name": "Jingce", + "population": 2000, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ4274-oort-S1", + "orbits_body_id": "GJ4274-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 447", @@ -608,10 +4593,129 @@ "GJ 1286" ], "star_type": "M4.5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "458,000,000", "gdp": "6.9 TTr", - "gttr_excerpt": "**ROSS 128** is an ocean world that has been studied for five hundred years, which is long enough to have documented the shallow water very thoroughly and long enough to have developed extremely elaborate reasons for not publishing what the deep water looks like." + "gttr_excerpt": "**ROSS 128** is an ocean world that has been studied for five hundred years, which is long enough to have documented the shallow water very thoroughly and long enough to have developed extremely elaborate reasons for not publishing what the deep water looks like.", + "orbit_bodies": [ + { + "body_id": "GJ447b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ447c-1", + "parent_body_id": "GJ447c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ447c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Marevna", + "atmosphere": "standard", + "inhabited": true, + "population": 450000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ447d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ447e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ447f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ447g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ447-oort", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ447c-S1", + "orbits_body_id": "GJ447c", + "station_type": "commercial", + "proper_name": "Scheveningen", + "population": 8000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ447-oort-S1", + "orbits_body_id": "GJ447-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 570A", @@ -630,10 +4734,162 @@ "GJ 559B" ], "star_type": "K4V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "400,000,000", "gdp": "6.0 TTr", - "gttr_excerpt": "**BASTION** has no habitable planets, no agricultural capacity, and 400 million people living on orbital stations eating food that arrives by freight from systems they are technically supposed to be defending. This is called strategic positioning." + "gttr_excerpt": "**BASTION** has no habitable planets, no agricultural capacity, and 400 million people living on orbital stations eating food that arrives by freight from systems they are technically supposed to be defending. This is called strategic positioning.", + "orbit_bodies": [ + { + "body_id": "GJ570Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ570Ag-1", + "parent_body_id": "GJ570Ag", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ570Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ570Ag-2", + "parent_body_id": "GJ570Ag", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ570Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ570Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ570Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ570A-belt", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ570Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ570A-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ570Ad-S1", + "orbits_body_id": "GJ570Ad", + "station_type": "military", + "proper_name": "Scapa Flow", + "population": 50000000, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ570Ad-S2", + "orbits_body_id": "GJ570Ad", + "station_type": "commercial", + "proper_name": "Quaterna", + "population": 350000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ570A-oort-S1", + "orbits_body_id": "GJ570A-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 661A", @@ -651,10 +4907,189 @@ "GJ 729" ], "star_type": "K5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "403,000,000", "gdp": "6.0 TTr", - "gttr_excerpt": "**CROWN'S HOLLOW** is the only place in the Settled Reach where you will be addressed by your correct title, whether or not you have one." + "gttr_excerpt": "**CROWN'S HOLLOW** is the only place in the Settled Reach where you will be addressed by your correct title, whether or not you have one.", + "orbit_bodies": [ + { + "body_id": "GJ661Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661Ad-1", + "parent_body_id": "GJ661Ad", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ661Ai-1", + "parent_body_id": "GJ661Ai", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ661Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661Ai-2", + "parent_body_id": "GJ661Ai", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ661Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Ys", + "atmosphere": "standard", + "inhabited": true, + "population": 400000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661Ag", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661Ah", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661A-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ661Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ661A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ661Ad-S1", + "orbits_body_id": "GJ661Ad", + "station_type": "commercial", + "proper_name": "The Orrery", + "population": 3000000, + "governance_type": null, + "economic_role": "service_mixed" + }, + { + "station_id": "GJ661A-oort-S1", + "orbits_body_id": "GJ661A-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 663A", @@ -671,10 +5106,186 @@ "GJ 845" ], "star_type": "K2:III:", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "52,000,200", "gdp": "260.0 BTr", - "gttr_excerpt": "**JOHANNSEN'S STAR** is named after the geologist who found the ore, which tells you everything about the system's priorities and saves the trouble of asking about anything else." + "gttr_excerpt": "**JOHANNSEN'S STAR** is named after the geologist who found the ore, which tells you everything about the system's priorities and saves the trouble of asking about anything else.", + "orbit_bodies": [ + { + "body_id": "GJ663Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ663Ac-1", + "parent_body_id": "GJ663Ac", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Gruvlid", + "atmosphere": "none", + "inhabited": true, + "population": 40000000, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ663Ah-1", + "parent_body_id": "GJ663Ah", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ663Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ663Ah-2", + "parent_body_id": "GJ663Ah", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ663Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ663Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ663Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ663Ag", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ663A-belt", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ663Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ663A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ663Ac-S1", + "orbits_body_id": "GJ663Ac", + "station_type": "industrial", + "proper_name": "Sigrid's Rådhuset", + "population": 12000000, + "governance_type": null, + "economic_role": "extraction" + }, + { + "station_id": "GJ663Ag-S1", + "orbits_body_id": "GJ663Ag", + "station_type": "research", + "proper_name": "Turing Survey", + "population": 200, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ663A-oort-S1", + "orbits_body_id": "GJ663A-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 664", @@ -691,10 +5302,189 @@ "GJ 66B" ], "star_type": "K5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "508,000,000", "gdp": "7.6 TTr", - "gttr_excerpt": "**CALDWELL POINT** is named after the family that runs it, which is the kind of honesty you get from people who arrived at a junction before anyone with deeper capital and have been holding the gate ever since." + "gttr_excerpt": "**CALDWELL POINT** is named after the family that runs it, which is the kind of honesty you get from people who arrived at a junction before anyone with deeper capital and have been holding the gate ever since.", + "orbit_bodies": [ + { + "body_id": "GJ664b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ664d-1", + "parent_body_id": "GJ664d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ664i-1", + "parent_body_id": "GJ664i", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ664c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ664i-2", + "parent_body_id": "GJ664i", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ664d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Farrow", + "atmosphere": "standard", + "inhabited": true, + "population": 500000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ664e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ664f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ664g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ664h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ664-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ664i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ664-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ664d-S1", + "orbits_body_id": "GJ664d", + "station_type": "commercial", + "proper_name": "Caldwell Gate", + "population": 8000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ664-oort-S1", + "orbits_body_id": "GJ664-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 729", @@ -711,10 +5501,105 @@ "GJ 661A" ], "star_type": "M3.5Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "130,000", "gdp": "260.0 MTr", - "gttr_excerpt": "**ROSS 154** was skipped by three centuries of settlement because its star has a habit of erupting, which made it dangerous for anyone who needed to go outside. The people who eventually settled here do not need to go outside. They need abundant stellar flux and heavily shielded processing facilities, which is a different set of requirements that the same star happens to satisfy perfectly." + "gttr_excerpt": "**ROSS 154** was skipped by three centuries of settlement because its star has a habit of erupting, which made it dangerous for anyone who needed to go outside. The people who eventually settled here do not need to go outside. They need abundant stellar flux and heavily shielded processing facilities, which is a different set of requirements that the same star happens to satisfy perfectly.", + "orbit_bodies": [ + { + "body_id": "GJ729b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ729c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ729d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Chornozem", + "atmosphere": "thin", + "inhabited": true, + "population": 80000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ729e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ729f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ729-oort", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ729d-S1", + "orbits_body_id": "GJ729d", + "station_type": "industrial", + "proper_name": "Svoboda", + "population": 50000, + "governance_type": null, + "economic_role": "extraction" + }, + { + "station_id": "GJ729-oort-S1", + "orbits_body_id": "GJ729-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 764", @@ -733,10 +5618,198 @@ "GJ 144" ], "star_type": "K0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "3,600,000,000", "gdp": "144.0 TTr", - "gttr_excerpt": "**NOVA ROMA** was named by the family that owns it, which tells you everything about the family and nothing you did not already suspect." + "gttr_excerpt": "**NOVA ROMA** was named by the family that owns it, which tells you everything about the family and nothing you did not already suspect.", + "orbit_bodies": [ + { + "body_id": "GJ764b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ764d-1", + "parent_body_id": "GJ764d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ764h-1", + "parent_body_id": "GJ764h", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ764c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ764h-2", + "parent_body_id": "GJ764h", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ764d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Mirafiori", + "atmosphere": "standard", + "inhabited": true, + "population": 3500000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ764h-3", + "parent_body_id": "GJ764h", + "orbit_index": 3, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ764e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ764f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ764g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ764-belt", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ764h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ764-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ764d-S1", + "orbits_body_id": "GJ764d", + "station_type": "industrial", + "proper_name": "Officina Prima", + "population": 80000000, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ764d-S2", + "orbits_body_id": "GJ764d", + "station_type": "industrial", + "proper_name": "Cantiere Chiuso", + "population": 20000000, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ764-oort-S1", + "orbits_body_id": "GJ764-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 768", @@ -753,10 +5826,225 @@ "GJ 820B" ], "star_type": "A7IV-V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "4 habitable · 2 inhabited", "population": "1,015,000,000", "gdp": "40.6 TTr", - "gttr_excerpt": "**ALTAIR** is the last place the rules apply before you go south, and the people who work here have spent five centuries processing ambiguous cargo manifests without ever assembling the individual anomalies into the composite picture they would form if anyone looked at them all at once." + "gttr_excerpt": "**ALTAIR** is the last place the rules apply before you go south, and the people who work here have spent five centuries processing ambiguous cargo manifests without ever assembling the individual anomalies into the composite picture they would form if anyone looked at them all at once.", + "orbit_bodies": [ + { + "body_id": "GJ768b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ768e-1", + "parent_body_id": "GJ768e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ768f-1", + "parent_body_id": "GJ768f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ768i-1", + "parent_body_id": "GJ768i", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ768c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ768f-2", + "parent_body_id": "GJ768f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ768i-2", + "parent_body_id": "GJ768i", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ768d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ768i-3", + "parent_body_id": "GJ768i", + "orbit_index": 3, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ768e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Solano", + "atmosphere": "standard", + "inhabited": true, + "population": 800000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ768f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": "Miralta", + "atmosphere": "standard", + "inhabited": true, + "population": 200000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ768g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ768h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ768-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ768i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ768-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ768e-S1", + "orbits_body_id": "GJ768e", + "station_type": "commercial", + "proper_name": "Paso Firme", + "population": 15000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ768-oort-S1", + "orbits_body_id": "GJ768-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 780", @@ -773,10 +6061,201 @@ "GJ 879" ], "star_type": "G5IV-Vvar", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,505,000,000", "gdp": "60.2 TTr", - "gttr_excerpt": "**PUERTO RIVERA** has survived seven variable-star cycles, which means it knows exactly how to prepare for the eighth. The question is whether it can do so before the news gets out." + "gttr_excerpt": "**PUERTO RIVERA** has survived seven variable-star cycles, which means it knows exactly how to prepare for the eighth. The question is whether it can do so before the news gets out.", + "orbit_bodies": [ + { + "body_id": "GJ780b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ780e-1", + "parent_body_id": "GJ780e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ780j-1", + "parent_body_id": "GJ780j", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ780c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ780j-2", + "parent_body_id": "GJ780j", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ780d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ780e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Coseche", + "atmosphere": "standard", + "inhabited": true, + "population": 1500000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ780f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ780g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ780h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ780i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ780-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ780j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ780-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ780e-S1", + "orbits_body_id": "GJ780e", + "station_type": "commercial", + "proper_name": "Muelle Ocho", + "population": 5000000, + "governance_type": null, + "economic_role": "agricultural" + }, + { + "station_id": "GJ780-oort-S1", + "orbits_body_id": "GJ780-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 783A", @@ -794,10 +6273,177 @@ "GJ 251" ], "star_type": "K2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "2 habitable · 2 inhabited", "population": "1,025,000,000", "gdp": "41.0 TTr", - "gttr_excerpt": "**AURELIUS** is where the Reach trains the people who run the Reach, which gives the system the specific institutional character of a place that teaches its students to think critically about power while being, itself, one of the most significant concentrations of institutional power in the network." + "gttr_excerpt": "**AURELIUS** is where the Reach trains the people who run the Reach, which gives the system the specific institutional character of a place that teaches its students to think critically about power while being, itself, one of the most significant concentrations of institutional power in the network.", + "orbit_bodies": [ + { + "body_id": "GJ783Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ783Ad-1", + "parent_body_id": "GJ783Ad", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ783Ah-1", + "parent_body_id": "GJ783Ah", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ783Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "toxic", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ783Ah-2", + "parent_body_id": "GJ783Ah", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ783Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Praxis", + "atmosphere": "standard", + "inhabited": true, + "population": 900000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ783Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Hesychia", + "atmosphere": "standard", + "inhabited": true, + "population": 120000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ783Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ783Ag", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ783A-belt", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ783Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ783A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ783Ad-S1", + "orbits_body_id": "GJ783Ad", + "station_type": "research", + "proper_name": "Via Exedra", + "population": 5000000, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ783A-oort-S1", + "orbits_body_id": "GJ783A-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 866A", @@ -813,10 +6459,105 @@ "GJ 1221" ], "star_type": "M5 e", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "45,000", "gdp": "90.0 MTr", - "gttr_excerpt": "**EZ AQR** was never developed. It was *staffed*. Gate Corporation classified it as an operational facility rather than a settlement for most of its occupied history, which meant population counts for Assembly tracking were not filed until the resident population exceeded the threshold that triggers mandatory registration. By then the community had been functionally present for two generations and simply hadn't noticed it wasn't official." + "gttr_excerpt": "**EZ AQR** was never developed. It was *staffed*. Gate Corporation classified it as an operational facility rather than a settlement for most of its occupied history, which meant population counts for Assembly tracking were not filed until the resident population exceeded the threshold that triggers mandatory registration. By then the community had been functionally present for two generations and simply hadn't noticed it wasn't official.", + "orbit_bodies": [ + { + "body_id": "GJ866Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ866Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Srok Thmei", + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ866Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ866Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ866Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ866A-oort", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ866Ad-S1", + "orbits_body_id": "GJ866Ad", + "station_type": "commercial", + "proper_name": "Robaat", + "population": 45000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ866A-oort-S1", + "orbits_body_id": "GJ866A-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 887", @@ -832,10 +6573,129 @@ "GJ 3877" ], "star_type": "M2/M3V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "608,000,000", "gdp": "9.1 TTr", - "gttr_excerpt": "**LACAILLE 9352** is the last system where the rules still apply, which makes it — depending on your direction of travel — either the last outpost of civilization or the last obstacle before you reach it." + "gttr_excerpt": "**LACAILLE 9352** is the last system where the rules still apply, which makes it — depending on your direction of travel — either the last outpost of civilization or the last obstacle before you reach it.", + "orbit_bodies": [ + { + "body_id": "GJ887b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ887c-1", + "parent_body_id": "GJ887c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ887c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Calder", + "atmosphere": "standard", + "inhabited": true, + "population": 600000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ887d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ887e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ887f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ887g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ887-oort", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ887c-S1", + "orbits_body_id": "GJ887c", + "station_type": "commercial", + "proper_name": "Southmark Hab", + "population": 8000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ887-oort-S1", + "orbits_body_id": "GJ887-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 892", @@ -851,10 +6711,162 @@ "GJ 845" ], "star_type": "K3Vvar", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 4 inhabited", "population": "80,006,500", "gdp": "400.0 BTr", - "gttr_excerpt": "**CAIRNSIDE** is a materials science program that has been running for forty years and has not yet noticed it has also become a town." + "gttr_excerpt": "**CAIRNSIDE** is a materials science program that has been running for forty years and has not yet noticed it has also become a town.", + "orbit_bodies": [ + { + "body_id": "GJ892b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ892d-1", + "parent_body_id": "GJ892d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Vacuum Fatigue Station", + "atmosphere": "none", + "inhabited": true, + "population": 400, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ892c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ892d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Cairnside", + "atmosphere": "standard", + "inhabited": true, + "population": 80000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ892e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Corrosion Bench", + "atmosphere": "thin", + "inhabited": true, + "population": 600, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ892f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": "Cryogenic Soak", + "atmosphere": "none", + "inhabited": true, + "population": 300, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ892g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ892h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ892-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ892-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ892b-S1", + "orbits_body_id": "GJ892b", + "station_type": "research", + "proper_name": "Thermal Stress Lab", + "population": 200, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ892c-S1", + "orbits_body_id": "GJ892c", + "station_type": "research", + "proper_name": "Cairnside Test Frame", + "population": 5000, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ892-oort-S1", + "orbits_body_id": "GJ892-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1", @@ -870,10 +6882,162 @@ "GJ 664" ], "star_type": "M2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 2 inhabited", "population": "12,004,260", "gdp": "60.0 BTr", - "gttr_excerpt": "**GRÜNFELD** means \"green field,\" which is what the Wave 4 founders intended to build, and which they eventually built, after two generations of soil amendment work that tested their optimism more than they had planned for." + "gttr_excerpt": "**GRÜNFELD** means \"green field,\" which is what the Wave 4 founders intended to build, and which they eventually built, after two generations of soil amendment work that tested their optimism more than they had planned for.", + "orbit_bodies": [ + { + "body_id": "GJ1b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1e-m1", + "parent_body_id": "GJ1e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Klause", + "atmosphere": "thin", + "inhabited": true, + "population": 1200, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Feldmark", + "atmosphere": "standard", + "inhabited": true, + "population": 12000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1-oort-S1", + "orbits_body_id": "GJ1-oort", + "station_type": "horizon", + "proper_name": "Grünfeld Horizon", + "population": 480, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ1c-S1", + "orbits_body_id": "GJ1c", + "station_type": "agricultural", + "proper_name": "Speicher", + "population": 2400, + "governance_type": null, + "economic_role": "agricultural" + }, + { + "station_id": "GJ1-belt-S1", + "orbits_body_id": "GJ1-belt", + "station_type": "industrial", + "proper_name": "Steinwerk", + "population": 180, + "governance_type": null, + "economic_role": "mining" + } + ] }, { "system_id": "GJ 1002", @@ -889,10 +7053,120 @@ "GJ 222A" ], "star_type": "M5-5.5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "35,000,420", "gdp": "175.0 BTr", - "gttr_excerpt": "**CAPARICA** is a shallow-ocean world that has spent three centuries becoming very good at feeding other people while being reasonably careful not to ask too much about the original contract." + "gttr_excerpt": "**CAPARICA** is a shallow-ocean world that has spent three centuries becoming very good at feeding other people while being reasonably careful not to ask too much about the original contract.", + "orbit_bodies": [ + { + "body_id": "GJ1002b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": "Caparica", + "atmosphere": "standard", + "inhabited": true, + "population": 35000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1002-belt", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1002c", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1002d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1002e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1002f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1002g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1002-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1002-oort-S1", + "orbits_body_id": "GJ1002-oort", + "station_type": "horizon", + "proper_name": "Caparica Horizon", + "population": 420, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 105A", @@ -909,10 +7183,177 @@ "GJ 34B" ], "star_type": "K3V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "2,017,800", "gdp": "4.0 BTr", - "gttr_excerpt": "**NOVÁ TRŽNICE** is the market that three neighboring systems spent three hundred years not building, because building it would have required one of them to stop being a transit hub and start being a destination, which was a reclassification none of them were prepared to make on someone else's behalf." + "gttr_excerpt": "**NOVÁ TRŽNICE** is the market that three neighboring systems spent three hundred years not building, because building it would have required one of them to stop being a transit hub and start being a destination, which was a reclassification none of them were prepared to make on someone else's behalf.", + "orbit_bodies": [ + { + "body_id": "GJ105Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ105Ae-m1", + "parent_body_id": "GJ105Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ105Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Nová Tržnice", + "atmosphere": "standard", + "inhabited": true, + "population": 2000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ105Ae-m2", + "parent_body_id": "GJ105Ae", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ105A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ105Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ105Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ105Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ105Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ105Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ105Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ105A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ105A-oort-S1", + "orbits_body_id": "GJ105A-oort", + "station_type": "horizon", + "proper_name": "Nová Tržnice Horizon", + "population": 2800, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ105A-c-S1", + "orbits_body_id": "GJ105Ac", + "station_type": "commercial", + "proper_name": "Tržní Dvůr", + "population": 15000, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 1061", @@ -930,10 +7371,120 @@ "GJ 411" ], "star_type": "M4.5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "4,200", "gdp": "8.4 MTr", - "gttr_excerpt": "**CRUX STATION** is functionally essential and legally uncertain, which is a combination the Assembly has found, after several decades of consideration, preferable to resolving." + "gttr_excerpt": "**CRUX STATION** is functionally essential and legally uncertain, which is a combination the Assembly has found, after several decades of consideration, preferable to resolving.", + "orbit_bodies": [ + { + "body_id": "GJ1061b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1061c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1061-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1061d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1061e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1061f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1061g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1061-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1061-oort-S1", + "orbits_body_id": "GJ1061-oort", + "station_type": "horizon", + "proper_name": "Crux Horizon", + "population": 4200, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1111", @@ -952,10 +7503,129 @@ "GJ 393" ], "star_type": "M6.5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,666,000", "gdp": "3.3 BTr", - "gttr_excerpt": "**ZENZELE** means \"do it yourself,\" which is not a slogan but an ethic, and the distinction is immediately apparent to anyone who asks for help and receives instead a thorough explanation of how to obtain it independently." + "gttr_excerpt": "**ZENZELE** means \"do it yourself,\" which is not a slogan but an ethic, and the distinction is immediately apparent to anyone who asks for help and receives instead a thorough explanation of how to obtain it independently.", + "orbit_bodies": [ + { + "body_id": "GJ1111b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": "Qina", + "atmosphere": "standard", + "inhabited": true, + "population": 380000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1111-belt", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1111c", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1111d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1111e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1111f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1111g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1111-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1111-oort-S1", + "orbits_body_id": "GJ1111-oort", + "station_type": "horizon", + "proper_name": "Zenzele Horizon", + "population": 1200000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ1111b-S1", + "orbits_body_id": "GJ1111b", + "station_type": "industrial", + "proper_name": "Isivikelo", + "population": 86000, + "governance_type": null, + "economic_role": "manufacturing" + } + ] }, { "system_id": "GJ 1230A", @@ -971,10 +7641,189 @@ "GJ 825" ], "star_type": "k-m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "8,003,500", "gdp": "16.0 BTr", - "gttr_excerpt": "**UUSI VANTAA** is a community that has named itself \"New\" with full awareness that it is their third new start, and is committed, this time, to the name sticking." + "gttr_excerpt": "**UUSI VANTAA** is a community that has named itself \"New\" with full awareness that it is their third new start, and is committed, this time, to the name sticking.", + "orbit_bodies": [ + { + "body_id": "GJ1230Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1230Ad-1", + "parent_body_id": "GJ1230Ad", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1230Ag-1", + "parent_body_id": "GJ1230Ag", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1230Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1230Ag-2", + "parent_body_id": "GJ1230Ag", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1230Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Talvela", + "atmosphere": "standard", + "inhabited": true, + "population": 8000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1230Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1230Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1230Ag", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ1230Ah", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1230Ai", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1230A-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1230A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1230Ad-S1", + "orbits_body_id": "GJ1230Ad", + "station_type": "transit", + "proper_name": "Toivola", + "population": 3500, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ1230A-oort-S1", + "orbits_body_id": "GJ1230A-oort", + "station_type": "horizon", + "proper_name": "Pohjola", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1245A", @@ -990,10 +7839,177 @@ "GJ 139" ], "star_type": "M5.5 V e", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "800", "gdp": "1.6 MTr", - "gttr_excerpt": "**OKORO'S CLAIM** is named after a person who is still there, which means you will meet her, and she will have already decided what she thinks of you before you finish docking." + "gttr_excerpt": "**OKORO'S CLAIM** is named after a person who is still there, which means you will meet her, and she will have already decided what she thinks of you before you finish docking.", + "orbit_bodies": [ + { + "body_id": "GJ1245Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1245Af-1", + "parent_body_id": "GJ1245Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Ugwu", + "atmosphere": "none", + "inhabited": true, + "population": 600, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1245Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1245Af-2", + "parent_body_id": "GJ1245Af", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1245Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1245Af-3", + "parent_body_id": "GJ1245Af", + "orbit_index": 3, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1245Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1245Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ1245Ag", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1245Ah", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1245A-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1245A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1245Af-1-S1", + "orbits_body_id": "GJ1245Af-1", + "station_type": "industrial", + "proper_name": "Udi", + "population": 200, + "governance_type": null, + "economic_role": "extraction" + }, + { + "station_id": "GJ1245A-oort-S1", + "orbits_body_id": "GJ1245A-oort", + "station_type": "horizon", + "proper_name": "Agwu", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1245B", @@ -1008,10 +8024,120 @@ "GJ 54" ], "star_type": "m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "15,200", "gdp": "30.4 MTr", - "gttr_excerpt": "**KOEBERG** is named after a coastal headland most of its founders had never seen and a few had never heard of, which is about as honest as place-naming gets." + "gttr_excerpt": "**KOEBERG** is named after a coastal headland most of its founders had never seen and a few had never heard of, which is about as honest as place-naming gets.", + "orbit_bodies": [ + { + "body_id": "GJ1245Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": "Glimkop", + "atmosphere": "thin", + "inhabited": true, + "population": 4200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1245Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1245B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1245Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1245Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1245Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1245Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1245B-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1245B-oort-S1", + "orbits_body_id": "GJ1245B-oort", + "station_type": "horizon", + "proper_name": "Koeberg Horizon", + "population": 11000, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 19", @@ -1027,10 +8153,198 @@ "GJ 506" ], "star_type": "G2IV", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "85,007,220", "gdp": "425.0 BTr", - "gttr_excerpt": "**SOLHEIM** is the western corridor's sunlit exception — a genuine G2 subgiant burning warm and yellow against a backdrop of red and orange M-dwarfs — and the founding generation named it honestly, which is rarer than it sounds." + "gttr_excerpt": "**SOLHEIM** is the western corridor's sunlit exception — a genuine G2 subgiant burning warm and yellow against a backdrop of red and orange M-dwarfs — and the founding generation named it honestly, which is rarer than it sounds.", + "orbit_bodies": [ + { + "body_id": "GJ19b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ19f-m1", + "parent_body_id": "GJ19f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ19c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ19f-m2", + "parent_body_id": "GJ19f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ19d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Åker", + "atmosphere": "standard", + "inhabited": true, + "population": 85000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ19-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ19e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ19f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ19g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ19h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ19i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ19j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ19-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ19-oort-S1", + "orbits_body_id": "GJ19-oort", + "station_type": "horizon", + "proper_name": "Solheim Horizon", + "population": 840, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ19d-S1", + "orbits_body_id": "GJ19d", + "station_type": "research", + "proper_name": "Lystind", + "population": 180, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ19d-S2", + "orbits_body_id": "GJ19d", + "station_type": "commercial", + "proper_name": "Kornhavn", + "population": 6200, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 191", @@ -1047,10 +8361,162 @@ "GJ 832" ], "star_type": "M0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "8,012,100", "gdp": "16.0 BTr", - "gttr_excerpt": "**KAPTEYN'S STAR** is a junction system that does not make anything, does not grow anything, and does not need to, because everything made and grown in the western corridor passes through it anyway." + "gttr_excerpt": "**KAPTEYN'S STAR** is a junction system that does not make anything, does not grow anything, and does not need to, because everything made and grown in the western corridor passes through it anyway.", + "orbit_bodies": [ + { + "body_id": "GJ191b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ191e-m1", + "parent_body_id": "GJ191e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ191c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Dageraad", + "atmosphere": "standard", + "inhabited": true, + "population": 8000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ191-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ191d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ191e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ191f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ191g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ191h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ191-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ191-oort-S1", + "orbits_body_id": "GJ191-oort", + "station_type": "horizon", + "proper_name": "Kapteyn's Star Horizon", + "population": 2400, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ191c-S1", + "orbits_body_id": "GJ191c", + "station_type": "commercial", + "proper_name": "Sluis", + "population": 8500, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ191c-S2", + "orbits_body_id": "GJ191c", + "station_type": "commercial", + "proper_name": "Faktorei", + "population": 1200, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 234A", @@ -1067,10 +8533,129 @@ "GJ 411" ], "star_type": "M4.5Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "44,800", "gdp": "89.6 MTr", - "gttr_excerpt": "**CARVALHAIS** was named for an oak grove by people who had never seen an oak tree, after a village none of them had visited, in a place none of their parents had lived, and this is considered entirely unremarkable." + "gttr_excerpt": "**CARVALHAIS** was named for an oak grove by people who had never seen an oak tree, after a village none of them had visited, in a place none of their parents had lived, and this is considered entirely unremarkable.", + "orbit_bodies": [ + { + "body_id": "GJ234Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ234Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Sobreiro", + "atmosphere": "thin", + "inhabited": true, + "population": 12000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ234A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ234Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ234Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ234Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ234Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ234A-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ234A-oort-S1", + "orbits_body_id": "GJ234A-oort", + "station_type": "horizon", + "proper_name": "Carvalhais Horizon", + "population": 28000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ234Ac-S1", + "orbits_body_id": "GJ234Ac", + "station_type": "commercial", + "proper_name": "Carvalho", + "population": 4800, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 273", @@ -1087,10 +8672,186 @@ "GJ 406" ], "star_type": "M5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "853,003,000", "gdp": "12.8 TTr", - "gttr_excerpt": "**FREMANTLE** is the place in the north arc where the institutional memory lives, which means it is indispensable, unglamorous, and staffed by people who have seen everything go wrong at least once." + "gttr_excerpt": "**FREMANTLE** is the place in the north arc where the institutional memory lives, which means it is indispensable, unglamorous, and staffed by people who have seen everything go wrong at least once.", + "orbit_bodies": [ + { + "body_id": "GJ273b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ273c-1", + "parent_body_id": "GJ273c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ273g-1", + "parent_body_id": "GJ273g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ273c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Bunbury", + "atmosphere": "standard", + "inhabited": true, + "population": 800000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ273g-2", + "parent_body_id": "GJ273g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ273d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ273e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ273f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ273g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ273h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ273-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ273-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ273c-S1", + "orbits_body_id": "GJ273c", + "station_type": "research", + "proper_name": "Guildford", + "population": 45000000, + "governance_type": null, + "economic_role": "coordination" + }, + { + "station_id": "GJ273c-S2", + "orbits_body_id": "GJ273c", + "station_type": "transit", + "proper_name": "Bayswater", + "population": 8000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ273-oort-S1", + "orbits_body_id": "GJ273-oort", + "station_type": "horizon", + "proper_name": "Onslow", + "population": 3000, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 33", @@ -1106,10 +8867,156 @@ "GJ 1156" ], "star_type": "K2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "18", "gdp": "0.0 MTr", - "gttr_excerpt": "**96 PISCIUM** has never been settled, which is remarkable mainly because it had every reasonable advantage and someone appears to have gone out of their way to ensure that didn't matter." + "gttr_excerpt": "**96 PISCIUM** has never been settled, which is remarkable mainly because it had every reasonable advantage and someone appears to have gone out of their way to ensure that didn't matter.", + "orbit_bodies": [ + { + "body_id": "GJ33b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ33e-m1", + "parent_body_id": "GJ33e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ33c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ33d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ33-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ33e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ33f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ33g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ33h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ33i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ33-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ33-oort-S1", + "orbits_body_id": "GJ33-oort", + "station_type": "horizon", + "proper_name": "96 Piscium Horizon", + "population": 18, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3618", @@ -1125,10 +9032,165 @@ "GJ 406" ], "star_type": "m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "150,000,000", "gdp": "750.0 BTr", - "gttr_excerpt": "**PEMBERTON'S LOOP** is named for a man who built a transit post at a useful crossing point and had the good sense not to name it anything more ambitious." + "gttr_excerpt": "**PEMBERTON'S LOOP** is named for a man who built a transit post at a useful crossing point and had the good sense not to name it anything more ambitious.", + "orbit_bodies": [ + { + "body_id": "GJ3618b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3618f-1", + "parent_body_id": "GJ3618f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3618c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3618f-2", + "parent_body_id": "GJ3618f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3618d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3618e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3618f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ3618g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3618h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3618-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3618-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3618c-S1", + "orbits_body_id": "GJ3618c", + "station_type": "commercial", + "proper_name": "Fenchurch", + "population": 150000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ3618-oort-S1", + "orbits_body_id": "GJ3618-oort", + "station_type": "horizon", + "proper_name": "Gravesend", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3622", @@ -1144,10 +9206,177 @@ "GJ 663A" ], "star_type": "M6.5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "415,000,000", "gdp": "6.2 TTr", - "gttr_excerpt": "**HAVNFJORD** is a world named for its coastline by people who knew exactly what they were looking for and were prepared to accept rust-red light on gray water if that was what came with it." + "gttr_excerpt": "**HAVNFJORD** is a world named for its coastline by people who knew exactly what they were looking for and were prepared to accept rust-red light on gray water if that was what came with it.", + "orbit_bodies": [ + { + "body_id": "GJ3622b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3622c-1", + "parent_body_id": "GJ3622c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3622f-1", + "parent_body_id": "GJ3622f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3622c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Hardanger", + "atmosphere": "standard", + "inhabited": true, + "population": 400000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3622f-2", + "parent_body_id": "GJ3622f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3622d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3622e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3622f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ3622g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3622h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3622-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3622-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3622c-S1", + "orbits_body_id": "GJ3622c", + "station_type": "commercial", + "proper_name": "Narvik", + "population": 15000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ3622-oort-S1", + "orbits_body_id": "GJ3622-oort", + "station_type": "horizon", + "proper_name": "Vardø", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 412A", @@ -1162,10 +9391,120 @@ "GJ 860A" ], "star_type": "M2Vvar", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "25,280", "gdp": "50.6 MTr", - "gttr_excerpt": "**MORALES' END** is named with the directional honesty of a community that has had three hundred years to make peace with being the last stop, and has." + "gttr_excerpt": "**MORALES' END** is named with the directional honesty of a community that has had three hundred years to make peace with being the last stop, and has.", + "orbit_bodies": [ + { + "body_id": "GJ412Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ412Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Tierranueva", + "atmosphere": "standard", + "inhabited": true, + "population": 25000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ412A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ412Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ412Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ412Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ412Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ412A-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ412A-oort-S1", + "orbits_body_id": "GJ412A-oort", + "station_type": "horizon", + "proper_name": "Morales' End Horizon", + "population": 280, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 412B", @@ -1180,10 +9519,144 @@ "GJ 66A" ], "star_type": "M6 e", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "85,640", "gdp": "171.3 MTr", - "gttr_excerpt": "**KORHONEN** was named after the geologist who found what was in the rock, which is appropriate, because what is in the rock is the only thing about Korhonen that anyone has ever paid to know." + "gttr_excerpt": "**KORHONEN** was named after the geologist who found what was in the rock, which is appropriate, because what is in the rock is the only thing about Korhonen that anyone has ever paid to know.", + "orbit_bodies": [ + { + "body_id": "GJ412Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ412Be-m1", + "parent_body_id": "GJ412Be", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ412Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Korhonen", + "atmosphere": "thin", + "inhabited": true, + "population": 85000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ412B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ412Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ412Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ412Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ412Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ412Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ412B-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ412B-oort-S1", + "orbits_body_id": "GJ412B-oort", + "station_type": "horizon", + "proper_name": "Korhonen Horizon", + "population": 640, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 473B", @@ -1199,10 +9672,174 @@ "GJ 667B" ], "star_type": "M7", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "200,000,500", "gdp": "3.0 TTr", - "gttr_excerpt": "**NKOSI'S BRIDGE** completes the circuit that Pemberton's Loop opens — the two Wave 2 transit posts that together make the loop a loop, each performing the same structural function from opposite sides, each named for the person who showed up with a logistics contract and decided not to leave." + "gttr_excerpt": "**NKOSI'S BRIDGE** completes the circuit that Pemberton's Loop opens — the two Wave 2 transit posts that together make the loop a loop, each performing the same structural function from opposite sides, each named for the person who showed up with a logistics contract and decided not to leave.", + "orbit_bodies": [ + { + "body_id": "GJ473Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ473Bf-1", + "parent_body_id": "GJ473Bf", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ473Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ473Bf-2", + "parent_body_id": "GJ473Bf", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ473Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ473Be", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ473Bf", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ473Bg", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ473Bh", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ473B-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ473B-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ473Bc-S1", + "orbits_body_id": "GJ473Bc", + "station_type": "commercial", + "proper_name": "Nongoma", + "population": 200000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ473Be-S1", + "orbits_body_id": "GJ473Be", + "station_type": "research", + "proper_name": "Sodwana", + "population": 500, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ473B-oort-S1", + "orbits_body_id": "GJ473B-oort", + "station_type": "horizon", + "proper_name": "Kosi", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 53A", @@ -1218,10 +9855,189 @@ "GJ 866A" ], "star_type": "G5Vp", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "450,010,100", "gdp": "6.8 TTr", - "gttr_excerpt": "**BRIDGEPOINT** got its name from an operations log entry that nobody bothered to change, which tells you most of what you need to know about how this system relates to ceremony." + "gttr_excerpt": "**BRIDGEPOINT** got its name from an operations log entry that nobody bothered to change, which tells you most of what you need to know about how this system relates to ceremony.", + "orbit_bodies": [ + { + "body_id": "GJ53Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ53Af-m1", + "parent_body_id": "GJ53Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ53Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ53Af-m2", + "parent_body_id": "GJ53Af", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ53Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Bridgepoint", + "atmosphere": "standard", + "inhabited": true, + "population": 450000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ53A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ53Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ53Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ53Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ53Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ53Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ53Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ53A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ53A-oort-S1", + "orbits_body_id": "GJ53A-oort", + "station_type": "horizon", + "proper_name": "Bridgepoint Horizon", + "population": 1600, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ53A-d-S1", + "orbits_body_id": "GJ53Ad", + "station_type": "commercial", + "proper_name": "Bridgepoint Bonded", + "population": 8500, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 54.1", @@ -1240,10 +10056,120 @@ "GJ 752A" ], "star_type": "M5.5Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,180,000", "gdp": "2.4 BTr", - "gttr_excerpt": "**RIBEIRO'S STAR** was named for the person who found it rather than the community that settled it, a distinction the founders considered important and that has shaped, in quiet ways, everything about how the place thinks of itself." + "gttr_excerpt": "**RIBEIRO'S STAR** was named for the person who found it rather than the community that settled it, a distinction the founders considered important and that has shaped, in quiet ways, everything about how the place thinks of itself.", + "orbit_bodies": [ + { + "body_id": "GJ54.1b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": "Évora", + "atmosphere": "standard", + "inhabited": true, + "population": 320000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ54.1-belt", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ54.1c", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ54.1d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ54.1e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ54.1f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ54.1g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ54.1-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ54.1-oort-S1", + "orbits_body_id": "GJ54.1-oort", + "station_type": "horizon", + "proper_name": "Ribeiro's Star Horizon", + "population": 860000, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 566A", @@ -1262,10 +10188,189 @@ "GJ 713A" ], "star_type": "G8V + K4V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "2,800,128,200", "gdp": "112.0 TTr", - "gttr_excerpt": "**HAODU** is the east corridor's commercial center, which is the polite way of saying it is the system where people with the standing to make corridor-wide decisions make them, and everyone else's standing is defined by their distance from Haodu." + "gttr_excerpt": "**HAODU** is the east corridor's commercial center, which is the polite way of saying it is the system where people with the standing to make corridor-wide decisions make them, and everyone else's standing is defined by their distance from Haodu.", + "orbit_bodies": [ + { + "body_id": "GJ566Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Ae-m1", + "parent_body_id": "GJ566Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ566Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Haodu", + "atmosphere": "standard", + "inhabited": true, + "population": 2800000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Ae-m2", + "parent_body_id": "GJ566Ae", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ566A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ566Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ566Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ566A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ566A-oort-S1", + "orbits_body_id": "GJ566A-oort", + "station_type": "horizon", + "proper_name": "Haodu Horizon", + "population": 8200, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ566A-c-S1", + "orbits_body_id": "GJ566Ac", + "station_type": "commercial", + "proper_name": "Yongli Huì", + "population": 120000, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 566B", @@ -1285,10 +10390,177 @@ "GJ 695A" ], "star_type": "K4 Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "480,128,000", "gdp": "7.2 TTr", - "gttr_excerpt": "**CONFLUÊNCIA** is the place where rivers meet, which is what its name means, which is the kind of honest naming that four hundred years of proving the description correct has transformed from a hope into a simple statement of geography." + "gttr_excerpt": "**CONFLUÊNCIA** is the place where rivers meet, which is what its name means, which is the kind of honest naming that four hundred years of proving the description correct has transformed from a hope into a simple statement of geography.", + "orbit_bodies": [ + { + "body_id": "GJ566Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Be-m1", + "parent_body_id": "GJ566Be", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ566Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Benguela", + "atmosphere": "standard", + "inhabited": true, + "population": 480000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Be-m2", + "parent_body_id": "GJ566Be", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ566B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ566Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ566Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ566Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ566B-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ566B-oort-S1", + "orbits_body_id": "GJ566B-oort", + "station_type": "horizon", + "proper_name": "Confluência Horizon", + "population": 86000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ566Bc-S1", + "orbits_body_id": "GJ566Bc", + "station_type": "industrial", + "proper_name": "Casa dos Ofícios", + "population": 42000, + "governance_type": null, + "economic_role": "manufacturing" + } + ] }, { "system_id": "GJ 628", @@ -1304,10 +10576,153 @@ "GJ 729" ], "star_type": "M4", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 2 inhabited", "population": "18,004,970", "gdp": "90.0 BTr", - "gttr_excerpt": "**BRENNAN'S DRIFT** was named for Cormac Brennan, who filed the first mineral survey, founded the consortium, and created a succession dispute so thorough it took three generations of legal argument to resolve — which is, in mining history, a perfectly respectable legacy." + "gttr_excerpt": "**BRENNAN'S DRIFT** was named for Cormac Brennan, who filed the first mineral survey, founded the consortium, and created a succession dispute so thorough it took three generations of legal argument to resolve — which is, in mining history, a perfectly respectable legacy.", + "orbit_bodies": [ + { + "body_id": "GJ628b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ628e-m1", + "parent_body_id": "GJ628e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Tobar", + "atmosphere": null, + "inhabited": true, + "population": 150, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ628c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Carraig", + "atmosphere": "standard", + "inhabited": true, + "population": 18000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ628-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ628d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ628e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ628f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ628g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ628h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ628-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ628-oort-S1", + "orbits_body_id": "GJ628-oort", + "station_type": "horizon", + "proper_name": "Brennan's Drift Horizon", + "population": 620, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ628c-S1", + "orbits_body_id": "GJ628c", + "station_type": "industrial", + "proper_name": "Cuisle", + "population": 4200, + "governance_type": null, + "economic_role": "mining" + } + ] }, { "system_id": "GJ 65A", @@ -1323,10 +10738,165 @@ "GJ 285" ], "star_type": "dM5.5e", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "80,000", "gdp": "160.0 MTr", - "gttr_excerpt": "**UV CETI** is the only system in the north arc named after its star rather than its founders, because the astronomers who arrived first understood that some places belong to their stars and everyone who came after was just visiting." + "gttr_excerpt": "**UV CETI** is the only system in the north arc named after its star rather than its founders, because the astronomers who arrived first understood that some places belong to their stars and everyone who came after was just visiting.", + "orbit_bodies": [ + { + "body_id": "GJ65Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ65Af-1", + "parent_body_id": "GJ65Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ65Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ65Af-2", + "parent_body_id": "GJ65Af", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ65Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ65Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ65Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ65Ag", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ65Ah", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ65A-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ65A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ65Ac-S1", + "orbits_body_id": "GJ65Ac", + "station_type": "research", + "proper_name": "Luyten", + "population": 80000, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ65A-oort-S1", + "orbits_body_id": "GJ65A-oort", + "station_type": "horizon", + "proper_name": "Kapteyn", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 667A", @@ -1343,10 +10913,198 @@ "GJ 873" ], "star_type": "K4V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "630,001,500", "gdp": "9.5 TTr", - "gttr_excerpt": "**NEW BALLARAT** is the kind of junction system that describes itself as the most democratic in the corridor, and has been careful, for a hundred and fifty years, not to look too closely at the Senate." + "gttr_excerpt": "**NEW BALLARAT** is the kind of junction system that describes itself as the most democratic in the corridor, and has been careful, for a hundred and fifty years, not to look too closely at the Senate.", + "orbit_bodies": [ + { + "body_id": "GJ667Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Ad-1", + "parent_body_id": "GJ667Ad", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ667Ag-1", + "parent_body_id": "GJ667Ag", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ667Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Ag-2", + "parent_body_id": "GJ667Ag", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ667Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Geelong", + "atmosphere": "standard", + "inhabited": true, + "population": 600000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Ag", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ667Ah", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Ai", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ667A-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ667A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ667Ad-S1", + "orbits_body_id": "GJ667Ad", + "station_type": "commercial", + "proper_name": "Footscray", + "population": 25000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ667Ad-S2", + "orbits_body_id": "GJ667Ad", + "station_type": "industrial", + "proper_name": "Newport", + "population": 5000000, + "governance_type": null, + "economic_role": "coordination" + }, + { + "station_id": "GJ667A-oort-S1", + "orbits_body_id": "GJ667A-oort", + "station_type": "horizon", + "proper_name": "Portland", + "population": 1500, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 667B", @@ -1364,10 +11122,210 @@ "GJ 473B" ], "star_type": "K5 V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,260,005,000", "gdp": "50.4 TTr", - "gttr_excerpt": "**KAMPALA GATE** was called Kampala for its first generation, until the fourth aperture was activated and transit operators started calling it by what it had actually become, and the name stuck because names that reflect economic reality usually do." + "gttr_excerpt": "**KAMPALA GATE** was called Kampala for its first generation, until the fourth aperture was activated and transit operators started calling it by what it had actually become, and the name stuck because names that reflect economic reality usually do.", + "orbit_bodies": [ + { + "body_id": "GJ667Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Bd-1", + "parent_body_id": "GJ667Bd", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ667Bg-1", + "parent_body_id": "GJ667Bg", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ667Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Bg-2", + "parent_body_id": "GJ667Bg", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ667Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Jinja", + "atmosphere": "standard", + "inhabited": true, + "population": 1200000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Bg-3", + "parent_body_id": "GJ667Bg", + "orbit_index": 3, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ667Be", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Bf", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Bg", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ667Bh", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Bi", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ667B-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ667B-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ667Bd-S1", + "orbits_body_id": "GJ667Bd", + "station_type": "commercial", + "proper_name": "Mengo", + "population": 45000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ667Bd-S2", + "orbits_body_id": "GJ667Bd", + "station_type": "industrial", + "proper_name": "Nakawa", + "population": 15000000, + "governance_type": null, + "economic_role": "coordination" + }, + { + "station_id": "GJ667B-oort-S1", + "orbits_body_id": "GJ667B-oort", + "station_type": "horizon", + "proper_name": "Elgon", + "population": 5000, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 66B", @@ -1382,10 +11340,156 @@ "GJ 664" ], "star_type": "K0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "4,200,320", "gdp": "8.4 BTr", - "gttr_excerpt": "**VOSS** has one gate, which opens to Caldwell Point, which is the only party interested in what Voss produces, which is an arrangement Caldwell Point finds agreeable and Voss has managed to find acceptable for three hundred years." + "gttr_excerpt": "**VOSS** has one gate, which opens to Caldwell Point, which is the only party interested in what Voss produces, which is an arrangement Caldwell Point finds agreeable and Voss has managed to find acceptable for three hundred years.", + "orbit_bodies": [ + { + "body_id": "GJ66Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ66Be-m1", + "parent_body_id": "GJ66Be", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ66Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Røros", + "atmosphere": "standard", + "inhabited": true, + "population": 4200000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ66B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ66Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ66Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ66Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ66Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ66Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ66Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ66B-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ66B-oort-S1", + "orbits_body_id": "GJ66B-oort", + "station_type": "horizon", + "proper_name": "Voss Horizon", + "population": 320, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 673", @@ -1401,10 +11505,189 @@ "GJ 406" ], "star_type": "K7V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "60,000,000", "gdp": "300.0 BTr", - "gttr_excerpt": "**LINDSTRÖM STATION** is named for a woman who authorized an ore extraction operation two hundred years ago, then had a company, then a station, then a star system, then a holding company restructuring that preserved her name while removing her descendants from any operational control." + "gttr_excerpt": "**LINDSTRÖM STATION** is named for a woman who authorized an ore extraction operation two hundred years ago, then had a company, then a station, then a star system, then a holding company restructuring that preserved her name while removing her descendants from any operational control.", + "orbit_bodies": [ + { + "body_id": "GJ673b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ673d-1", + "parent_body_id": "GJ673d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ673g-1", + "parent_body_id": "GJ673g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ673c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ673g-2", + "parent_body_id": "GJ673g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ673d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ673e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ673f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ673g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ673h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ673i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ673-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ673-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ673b-S1", + "orbits_body_id": "GJ673b", + "station_type": "industrial", + "proper_name": "Kiruna", + "population": 60000000, + "governance_type": null, + "economic_role": "extraction" + }, + { + "station_id": "GJ673-oort-S1", + "orbits_body_id": "GJ673-oort", + "station_type": "horizon", + "proper_name": "Luleå", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 68", @@ -1420,10 +11703,180 @@ "GJ 892" ], "star_type": "K1V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "4 habitable · 4 inhabited", "population": "2,000,000", "gdp": "4.0 BTr", - "gttr_excerpt": "**SCHUILHOEK** is three hundred years old, feeds itself and one neighbor, and has not filed a population update with the Concord Assembly since its centennial, which was two hundred years ago." + "gttr_excerpt": "**SCHUILHOEK** is three hundred years old, feeds itself and one neighbor, and has not filed a population update with the Concord Assembly since its centennial, which was two hundred years ago.", + "orbit_bodies": [ + { + "body_id": "GJ68b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ68e-1", + "parent_body_id": "GJ68e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ68i-1", + "parent_body_id": "GJ68i", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ68c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Zomer", + "atmosphere": "standard", + "inhabited": true, + "population": 800000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ68i-2", + "parent_body_id": "GJ68i", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ68d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Lente", + "atmosphere": "standard", + "inhabited": true, + "population": 600000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ68e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Herfst", + "atmosphere": "standard", + "inhabited": true, + "population": 400000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ68f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": "Winter", + "atmosphere": "standard", + "inhabited": true, + "population": 200000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ68g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ68h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ68-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ68i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ68-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ68-oort-S1", + "orbits_body_id": "GJ68-oort", + "station_type": "horizon", + "proper_name": "Horizon Station", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 687", @@ -1439,10 +11892,144 @@ "GJ 4274" ], "star_type": "M3.5Vvar", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "801,200", "gdp": "1.6 BTr", - "gttr_excerpt": "**MATSUE** is a working system, which is not a modest claim — in a corridor full of systems that describe themselves as working while performing elaborate functions adjacent to work, Matsue actually makes things." + "gttr_excerpt": "**MATSUE** is a working system, which is not a modest claim — in a corridor full of systems that describe themselves as working while performing elaborate functions adjacent to work, Matsue actually makes things.", + "orbit_bodies": [ + { + "body_id": "GJ687b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ687e-m1", + "parent_body_id": "GJ687e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ687c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Matsue", + "atmosphere": "standard", + "inhabited": true, + "population": 800000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ687-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ687d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ687e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ687f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ687g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ687h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ687-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ687-oort-S1", + "orbits_body_id": "GJ687-oort", + "station_type": "horizon", + "proper_name": "Matsue Horizon", + "population": 1200, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 825", @@ -1459,10 +12046,165 @@ "GJ 139" ], "star_type": "M1/M2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "500,002,000", "gdp": "7.5 TTr", - "gttr_excerpt": "**LACAILLE** is the kind of place that pays its assessments early and then files a formal protest about the methodology, and has been doing both for three hundred years without finding either behavior contradictory." + "gttr_excerpt": "**LACAILLE** is the kind of place that pays its assessments early and then files a formal protest about the methodology, and has been doing both for three hundred years without finding either behavior contradictory.", + "orbit_bodies": [ + { + "body_id": "GJ825b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ825f-1", + "parent_body_id": "GJ825f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ825c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ825f-2", + "parent_body_id": "GJ825f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ825d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ825e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ825f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ825g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ825h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ825-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ825-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ825c-S1", + "orbits_body_id": "GJ825c", + "station_type": "commercial", + "proper_name": "Arbroath", + "population": 500000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ825-oort-S1", + "orbits_body_id": "GJ825-oort", + "station_type": "horizon", + "proper_name": "Méchain", + "population": 2000, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 860A", @@ -1479,10 +12221,120 @@ "GJ 644C" ], "star_type": "M2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "85,004,200", "gdp": "425.0 BTr", - "gttr_excerpt": "**KRUGER 60** is four hundred years old and looks it, which in this context is a compliment: the infrastructure is layered, the community is rooted, and the institutional memory visible in how disputes are resolved and streets are named is the kind that only time produces and cannot be installed from a kit." + "gttr_excerpt": "**KRUGER 60** is four hundred years old and looks it, which in this context is a compliment: the infrastructure is layered, the community is rooted, and the institutional memory visible in how disputes are resolved and streets are named is the kind that only time produces and cannot be installed from a kit.", + "orbit_bodies": [ + { + "body_id": "GJ860Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ860Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Mthatha", + "atmosphere": "standard", + "inhabited": true, + "population": 85000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ860A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ860Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ860Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ860Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ860Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ860A-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ860A-oort-S1", + "orbits_body_id": "GJ860A-oort", + "station_type": "horizon", + "proper_name": "Kruger 60 Horizon", + "population": 4200, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 860B", @@ -1499,10 +12351,153 @@ "GJ 682" ], "star_type": "M6 V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "680,026,200", "gdp": "10.2 TTr", - "gttr_excerpt": "**CHANGWON** has been distributing traffic at this junction for four centuries, which is long enough to have developed very good freight warehousing and a very deep court docket." + "gttr_excerpt": "**CHANGWON** has been distributing traffic at this junction for four centuries, which is long enough to have developed very good freight warehousing and a very deep court docket.", + "orbit_bodies": [ + { + "body_id": "GJ860Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ860Be-m1", + "parent_body_id": "GJ860Be", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ860Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Changwon", + "atmosphere": "standard", + "inhabited": true, + "population": 680000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ860B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ860Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ860Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ860Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ860Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ860Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ860B-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ860B-oort-S1", + "orbits_body_id": "GJ860B-oort", + "station_type": "horizon", + "proper_name": "Changwon Horizon", + "population": 2200, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ860B-c-S1", + "orbits_body_id": "GJ860Bc", + "station_type": "commercial", + "proper_name": "Changwon Jungjae", + "population": 24000, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 876", @@ -1518,10 +12513,165 @@ "GJ 661A" ], "star_type": "M5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "25,000,000", "gdp": "125.0 BTr", - "gttr_excerpt": "**KOSKINEN'S REACH** is named for the outer edge of explored territory as seen from where Eino Koskinen stood three hundred years ago, which means the name has been accurate ever since because no one has built anything significant beyond it." + "gttr_excerpt": "**KOSKINEN'S REACH** is named for the outer edge of explored territory as seen from where Eino Koskinen stood three hundred years ago, which means the name has been accurate ever since because no one has built anything significant beyond it.", + "orbit_bodies": [ + { + "body_id": "GJ876b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ876f-1", + "parent_body_id": "GJ876f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ876c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ876f-2", + "parent_body_id": "GJ876f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ876d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ876e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ876f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ876g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ876h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ876-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ876-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ876c-S1", + "orbits_body_id": "GJ876c", + "station_type": "industrial", + "proper_name": "Kuhmo", + "population": 25000000, + "governance_type": null, + "economic_role": "extraction" + }, + { + "station_id": "GJ876-oort-S1", + "orbits_body_id": "GJ876-oort", + "station_type": "horizon", + "proper_name": "Halti", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 879", @@ -1537,10 +12687,189 @@ "GJ 780" ], "star_type": "K4Vp", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "305,000,000", "gdp": "4.6 TTr", - "gttr_excerpt": "**SINGH'S LANDING** has been telling the story of forty-two people and a malfunctioning gate ferry for four hundred years, and the story has not diminished for the telling." + "gttr_excerpt": "**SINGH'S LANDING** has been telling the story of forty-two people and a malfunctioning gate ferry for four hundred years, and the story has not diminished for the telling.", + "orbit_bodies": [ + { + "body_id": "GJ879b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ879d-1", + "parent_body_id": "GJ879d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ879g-1", + "parent_body_id": "GJ879g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ879c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ879g-2", + "parent_body_id": "GJ879g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ879d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Patiala", + "atmosphere": "standard", + "inhabited": true, + "population": 300000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ879e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ879f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ879g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ879h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ879i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ879-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ879-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ879d-S1", + "orbits_body_id": "GJ879d", + "station_type": "agricultural", + "proper_name": "Khanna", + "population": 5000000, + "governance_type": null, + "economic_role": "agriculture" + }, + { + "station_id": "GJ879-oort-S1", + "orbits_body_id": "GJ879-oort", + "station_type": "horizon", + "proper_name": "Muktsar", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1005A", @@ -1557,10 +12886,144 @@ "GJ 49" ], "star_type": "M:", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "321,800", "gdp": "643.6 MTr", - "gttr_excerpt": "**PORT DESROCHERS** was named by a French-Canadian transit specialist who followed the gate topology rather than the cultural corridor, which is either a bold cross-reach commercial move or a statement about what the north_reach's opportunities looked like compared to an undeveloped east_reach junction — and from Mathieu Desrochers's own commercial archive, it is clearly the latter." + "gttr_excerpt": "**PORT DESROCHERS** was named by a French-Canadian transit specialist who followed the gate topology rather than the cultural corridor, which is either a bold cross-reach commercial move or a statement about what the north_reach's opportunities looked like compared to an undeveloped east_reach junction — and from Mathieu Desrochers's own commercial archive, it is clearly the latter.", + "orbit_bodies": [ + { + "body_id": "GJ1005Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1005Ae-m1", + "parent_body_id": "GJ1005Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1005Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Port Desrochers", + "atmosphere": "standard", + "inhabited": true, + "population": 320000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1005A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1005Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1005Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1005Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1005Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1005Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1005A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1005A-oort-S1", + "orbits_body_id": "GJ1005A-oort", + "station_type": "horizon", + "proper_name": "Port Desrochers Horizon", + "population": 1800, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1116A", @@ -1577,10 +13040,177 @@ "GJ 408" ], "star_type": "m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "735,003,000", "gdp": "11.0 TTr", - "gttr_excerpt": "**MABASO JUNCTION** is the place in the outer north arc where people with incompatible legal frameworks stop arguing long enough to conduct business, which has been its primary industry for four hundred years." + "gttr_excerpt": "**MABASO JUNCTION** is the place in the outer north arc where people with incompatible legal frameworks stop arguing long enough to conduct business, which has been its primary industry for four hundred years.", + "orbit_bodies": [ + { + "body_id": "GJ1116Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1116Ac-1", + "parent_body_id": "GJ1116Ac", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1116Af-1", + "parent_body_id": "GJ1116Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1116Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Mabaso Prime", + "atmosphere": "standard", + "inhabited": true, + "population": 700000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1116Af-2", + "parent_body_id": "GJ1116Af", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1116Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1116Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1116Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ1116Ag", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1116Ah", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1116A-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1116A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1116Ac-S1", + "orbits_body_id": "GJ1116Ac", + "station_type": "commercial", + "proper_name": "Colesberg", + "population": 35000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ1116A-oort-S1", + "orbits_body_id": "GJ1116A-oort", + "station_type": "horizon", + "proper_name": "De Aar", + "population": 3000, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1116B", @@ -1597,10 +13227,174 @@ "GJ 631" ], "star_type": "m", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "22,008,000", "gdp": "110.0 BTr", - "gttr_excerpt": "**KRAKÓW JUNCTION** was named after a Polish city that survived centuries of conquest by becoming indispensable to whoever held the surrounding territory, which was precisely the founding generation's thinking when they looked at a three-aperture gate topology and decided to stay." + "gttr_excerpt": "**KRAKÓW JUNCTION** was named after a Polish city that survived centuries of conquest by becoming indispensable to whoever held the surrounding territory, which was precisely the founding generation's thinking when they looked at a three-aperture gate topology and decided to stay.", + "orbit_bodies": [ + { + "body_id": "GJ1116Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1116Be-m1", + "parent_body_id": "GJ1116Be", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1116Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Rynek", + "atmosphere": "standard", + "inhabited": true, + "population": 22000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1116Be-m2", + "parent_body_id": "GJ1116Be", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1116B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1116Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1116Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1116Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1116Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1116Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1116B-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1116B-oort-S1", + "orbits_body_id": "GJ1116B-oort", + "station_type": "horizon", + "proper_name": "Kraków Junction Horizon", + "population": 1800, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ1116Bc-S1", + "orbits_body_id": "GJ1116Bc", + "station_type": "commercial", + "proper_name": "Brama", + "population": 4800, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ1116Bc-S2", + "orbits_body_id": "GJ1116Bc", + "station_type": "commercial", + "proper_name": "Komora", + "population": 1400, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 1289", @@ -1617,10 +13411,177 @@ "GJ 3988" ], "star_type": "k", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "212,001,500", "gdp": "3.2 TTr", - "gttr_excerpt": "**ATHABASCA** is the last system in the north arc where the Assembly's authority has operational teeth, which is a fact the Assembly's field officers have been privately documenting and officially declining to submit for three generations." + "gttr_excerpt": "**ATHABASCA** is the last system in the north arc where the Assembly's authority has operational teeth, which is a fact the Assembly's field officers have been privately documenting and officially declining to submit for three generations.", + "orbit_bodies": [ + { + "body_id": "GJ1289b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1289c-1", + "parent_body_id": "GJ1289c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1289g-1", + "parent_body_id": "GJ1289g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1289c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Lacombe", + "atmosphere": "standard", + "inhabited": true, + "population": 200000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1289g-2", + "parent_body_id": "GJ1289g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1289d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1289e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1289f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1289g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ1289h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1289-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1289-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1289c-S1", + "orbits_body_id": "GJ1289c", + "station_type": "commercial", + "proper_name": "Wainwright", + "population": 12000000, + "governance_type": null, + "economic_role": "coordination" + }, + { + "station_id": "GJ1289-oort-S1", + "orbits_body_id": "GJ1289-oort", + "station_type": "horizon", + "proper_name": "Grimshaw", + "population": 1500, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 178", @@ -1636,10 +13597,201 @@ "GJ 638" ], "star_type": "F6V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "88,000,000", "gdp": "440.0 BTr", - "gttr_excerpt": "**ASHFIELD** is named for what the founders saw when they arrived, which was ash, and they were practical people who were not going to pretend otherwise." + "gttr_excerpt": "**ASHFIELD** is named for what the founders saw when they arrived, which was ash, and they were practical people who were not going to pretend otherwise.", + "orbit_bodies": [ + { + "body_id": "GJ178b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ178e-1", + "parent_body_id": "GJ178e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ178h-1", + "parent_body_id": "GJ178h", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ178c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ178h-2", + "parent_body_id": "GJ178h", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ178d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ178e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Cinderford", + "atmosphere": "standard", + "inhabited": true, + "population": 80000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ178f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ178g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ178h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ178i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ178j", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ178-belt", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ178-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ178e-S1", + "orbits_body_id": "GJ178e", + "station_type": "commercial", + "proper_name": "Coalport", + "population": 8000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ178-oort-S1", + "orbits_body_id": "GJ178-oort", + "station_type": "horizon", + "proper_name": "Whitmore", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 183", @@ -1655,10 +13807,120 @@ "GJ 68" ], "star_type": "M3V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "18,240", "gdp": "36.5 MTr", - "gttr_excerpt": "**WATERKANT** is a farming corridor system so settled into its own routines that the Commission liaison holds an office in the transit node and has not been asked for anything in recent memory." + "gttr_excerpt": "**WATERKANT** is a farming corridor system so settled into its own routines that the Commission liaison holds an office in the transit node and has not been asked for anything in recent memory.", + "orbit_bodies": [ + { + "body_id": "GJ183b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ183c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Rietvlei", + "atmosphere": "standard", + "inhabited": true, + "population": 18000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ183-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ183d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ183e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ183f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ183g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ183-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ183-oort-S1", + "orbits_body_id": "GJ183-oort", + "station_type": "horizon", + "proper_name": "Waterkant Horizon", + "population": 240, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 205", @@ -1674,10 +13936,156 @@ "GJ 687" ], "star_type": "M1V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "420,860", "gdp": "841.7 MTr", - "gttr_excerpt": "**KURASHIKI** was named after a historic Japanese city associated with traditional craftsmanship and artisanal quality, which is either aspirational or ironic depending on how you feel about precision industrial processing as an heir to the artisanal tradition." + "gttr_excerpt": "**KURASHIKI** was named after a historic Japanese city associated with traditional craftsmanship and artisanal quality, which is either aspirational or ironic depending on how you feel about precision industrial processing as an heir to the artisanal tradition.", + "orbit_bodies": [ + { + "body_id": "GJ205b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ205e-m1", + "parent_body_id": "GJ205e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ205c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Kurashiki", + "atmosphere": "standard", + "inhabited": true, + "population": 420000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ205e-m2", + "parent_body_id": "GJ205e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ205-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ205d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ205e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ205f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ205g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ205h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ205-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ205-oort-S1", + "orbits_body_id": "GJ205-oort", + "station_type": "horizon", + "proper_name": "Kurashiki Horizon", + "population": 860, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 213", @@ -1693,10 +14101,120 @@ "GJ 473A" ], "star_type": "M5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "35,320", "gdp": "70.6 MTr", - "gttr_excerpt": "**KAAPSE BAAI** is where the Reach's most expensive spice comes from, which the forty-two farms of the Kaapse Kruie Growers' Collective would like you to understand is not a marketing position but a physical fact about soil chemistry, light spectrum, and the specific microclimate of a volcanic eastern seaboard that cannot be decoupled and reinstalled elsewhere." + "gttr_excerpt": "**KAAPSE BAAI** is where the Reach's most expensive spice comes from, which the forty-two farms of the Kaapse Kruie Growers' Collective would like you to understand is not a marketing position but a physical fact about soil chemistry, light spectrum, and the specific microclimate of a volcanic eastern seaboard that cannot be decoupled and reinstalled elsewhere.", + "orbit_bodies": [ + { + "body_id": "GJ213b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ213c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Rooiels", + "atmosphere": "standard", + "inhabited": true, + "population": 35000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ213-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ213d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ213e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ213f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ213g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ213-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ213-oort-S1", + "orbits_body_id": "GJ213-oort", + "station_type": "horizon", + "proper_name": "Kaapse Baai Horizon", + "population": 320, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 216B", @@ -1711,10 +14229,189 @@ "GJ 673" ], "star_type": "K2 V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "43,000,000", "gdp": "215.0 BTr", - "gttr_excerpt": "**GEMINI POINT** is the only system in the north arc where the quality of the light is the primary product, which is either a triumph of aesthetic civilization or a sign that the researchers who founded it three hundred years ago never quite finished explaining their grant proposal." + "gttr_excerpt": "**GEMINI POINT** is the only system in the north arc where the quality of the light is the primary product, which is either a triumph of aesthetic civilization or a sign that the researchers who founded it three hundred years ago never quite finished explaining their grant proposal.", + "orbit_bodies": [ + { + "body_id": "GJ216Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Bd-1", + "parent_body_id": "GJ216Bd", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ216Bh-1", + "parent_body_id": "GJ216Bh", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ216Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Bh-2", + "parent_body_id": "GJ216Bh", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ216Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Doublet", + "atmosphere": "standard", + "inhabited": true, + "population": 40000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Be", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Bf", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Bg", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Bh", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ216Bi", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ216B-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ216B-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ216Bd-S1", + "orbits_body_id": "GJ216Bd", + "station_type": "research", + "proper_name": "Burnham", + "population": 3000000, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ216B-oort-S1", + "orbits_body_id": "GJ216B-oort", + "station_type": "horizon", + "proper_name": "Roche", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 222A", @@ -1730,10 +14427,180 @@ "GJ 35" ], "star_type": "G0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "2,400", "gdp": "4.8 MTr", - "gttr_excerpt": "**KAROO** is physically comfortable and institutionally precarious, a combination that produces a particular kind of community psychology that the residents have politely declined to name." + "gttr_excerpt": "**KAROO** is physically comfortable and institutionally precarious, a combination that produces a particular kind of community psychology that the residents have politely declined to name.", + "orbit_bodies": [ + { + "body_id": "GJ222Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ222Ae-m1", + "parent_body_id": "GJ222Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ222Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ222Ae-m2", + "parent_body_id": "GJ222Ae", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ222Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ222A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ222Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ222Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ222Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ222Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ222Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ222Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ222A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ222A-oort-S1", + "orbits_body_id": "GJ222A-oort", + "station_type": "horizon", + "proper_name": "Karoo Horizon", + "population": 2400, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 229", @@ -1749,10 +14616,162 @@ "GJ 809" ], "star_type": "M1/M2V", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "3,808,040", "gdp": "7.6 BTr", - "gttr_excerpt": "**PORT MÄKELÄ** was named by the Mäkelä family, who arrived in Wave 4 following a commercial dispute at Kapteyn's Star that made continued operations there uncomfortable, and who have been making the port indispensable to everyone traveling beyond that same junction ever since." + "gttr_excerpt": "**PORT MÄKELÄ** was named by the Mäkelä family, who arrived in Wave 4 following a commercial dispute at Kapteyn's Star that made continued operations there uncomfortable, and who have been making the port indispensable to everyone traveling beyond that same junction ever since.", + "orbit_bodies": [ + { + "body_id": "GJ229b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ229e-m1", + "parent_body_id": "GJ229e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ229c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Lepola", + "atmosphere": "standard", + "inhabited": true, + "population": 3800000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ229-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ229d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ229e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ229f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ229g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ229h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ229-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ229-oort-S1", + "orbits_body_id": "GJ229-oort", + "station_type": "horizon", + "proper_name": "Port Mäkelä Horizon", + "population": 640, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ229c-S1", + "orbits_body_id": "GJ229c", + "station_type": "commercial", + "proper_name": "Huoltamo", + "population": 5600, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ229c-S2", + "orbits_body_id": "GJ229c", + "station_type": "commercial", + "proper_name": "Matkamaja", + "population": 1800, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 250A", @@ -1768,10 +14787,189 @@ "GJ 588" ], "star_type": "K3V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "68,000,000", "gdp": "340.0 BTr", - "gttr_excerpt": "**CARRINGTON'S POST** is where you find the part that Gate Corp no longer makes and officially does not have, staffed by engineers who know where everything is and why nothing should be thrown away." + "gttr_excerpt": "**CARRINGTON'S POST** is where you find the part that Gate Corp no longer makes and officially does not have, staffed by engineers who know where everything is and why nothing should be thrown away.", + "orbit_bodies": [ + { + "body_id": "GJ250Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ250Ad-1", + "parent_body_id": "GJ250Ad", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ250Ag-1", + "parent_body_id": "GJ250Ag", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ250Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ250Ag-2", + "parent_body_id": "GJ250Ag", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ250Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Heaviside", + "atmosphere": "standard", + "inhabited": true, + "population": 60000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ250Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ250Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ250Ag", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ250Ah", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ250Ai", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ250A-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ250A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ250Ad-S1", + "orbits_body_id": "GJ250Ad", + "station_type": "industrial", + "proper_name": "Harwell", + "population": 8000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ250A-oort-S1", + "orbits_body_id": "GJ250A-oort", + "station_type": "horizon", + "proper_name": "Ferranti", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 285", @@ -1786,10 +14984,165 @@ "GJ 65A" ], "star_type": "M4.5Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,200", "gdp": "2.4 MTr", - "gttr_excerpt": "**FENWICK'S LANTERN** is named after a man who came to study stellar flares and stayed to grow mushrooms, which is not the career trajectory atmospheric physics prepares you for but which turned out to be exactly what the outer north arc needed." + "gttr_excerpt": "**FENWICK'S LANTERN** is named after a man who came to study stellar flares and stayed to grow mushrooms, which is not the career trajectory atmospheric physics prepares you for but which turned out to be exactly what the outer north arc needed.", + "orbit_bodies": [ + { + "body_id": "GJ285b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ285f-1", + "parent_body_id": "GJ285f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ285c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Fries", + "atmosphere": "standard", + "inhabited": true, + "population": 1200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ285f-2", + "parent_body_id": "GJ285f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ285d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ285e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ285f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ285g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ285h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ285-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ285-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ285c-S1", + "orbits_body_id": "GJ285c", + "station_type": "agricultural", + "proper_name": "Tyndall", + "population": 0, + "governance_type": null, + "economic_role": "agriculture" + }, + { + "station_id": "GJ285-oort-S1", + "orbits_body_id": "GJ285-oort", + "station_type": "horizon", + "proper_name": "Teisserenc", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 300", @@ -1804,10 +15157,165 @@ "GJ 216A" ], "star_type": "M4", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "3,000", "gdp": "6.0 MTr", - "gttr_excerpt": "**DUNMORE STILLWATER** is named for the condition of its inland seas on calm days, which is a precise act of description by people who had decided that what the water did was more important than anything they had brought with them." + "gttr_excerpt": "**DUNMORE STILLWATER** is named for the condition of its inland seas on calm days, which is a precise act of description by people who had decided that what the water did was more important than anything they had brought with them.", + "orbit_bodies": [ + { + "body_id": "GJ300b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ300f-1", + "parent_body_id": "GJ300f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ300c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Helmsdale", + "atmosphere": "standard", + "inhabited": true, + "population": 3000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ300f-2", + "parent_body_id": "GJ300f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ300d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ300e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ300f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ300g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ300h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ300-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ300-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ300c-S1", + "orbits_body_id": "GJ300c", + "station_type": "agricultural", + "proper_name": "Golspie", + "population": 0, + "governance_type": null, + "economic_role": "agriculture" + }, + { + "station_id": "GJ300-oort-S1", + "orbits_body_id": "GJ300-oort", + "station_type": "horizon", + "proper_name": "Ceduna", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3379", @@ -1824,10 +15332,156 @@ "GJ 566A" ], "star_type": "M4", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "20,400", "gdp": "40.8 MTr", - "gttr_excerpt": "**SHENWEI** was never meant to become a permanent settlement, which is a status it shares with many of the Reach's more interesting places — established for a temporary purpose, quietly outlasting the purpose, and developing a character that nobody planned for in the gap between intention and duration." + "gttr_excerpt": "**SHENWEI** was never meant to become a permanent settlement, which is a status it shares with many of the Reach's more interesting places — established for a temporary purpose, quietly outlasting the purpose, and developing a character that nobody planned for in the gap between intention and duration.", + "orbit_bodies": [ + { + "body_id": "GJ3379b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3379e-m1", + "parent_body_id": "GJ3379e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Shenwei", + "atmosphere": "none", + "inhabited": true, + "population": 18000, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3379c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3379e-m2", + "parent_body_id": "GJ3379e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3379d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3379-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3379e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3379f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3379g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3379h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3379-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3379-oort-S1", + "orbits_body_id": "GJ3379-oort", + "station_type": "horizon", + "proper_name": "Shenwei Horizon", + "population": 2400, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3820", @@ -1842,10 +15496,177 @@ "GJ 876" ], "star_type": "K2 :", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "900", "gdp": "1.8 MTr", - "gttr_excerpt": "**UUSI VANTAA** — the second system by this name, a dead end off Koskinen's Reach, which is itself a dead end — was founded by people who looked at their parent community's binary-star anxiety and periodic navigational disruptions and decided they would rather have a quiet K-type star and no neighbors at all." + "gttr_excerpt": "**UUSI VANTAA** — the second system by this name, a dead end off Koskinen's Reach, which is itself a dead end — was founded by people who looked at their parent community's binary-star anxiety and periodic navigational disruptions and decided they would rather have a quiet K-type star and no neighbors at all.", + "orbit_bodies": [ + { + "body_id": "GJ3820b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3820g-1", + "parent_body_id": "GJ3820g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3820c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3820g-2", + "parent_body_id": "GJ3820g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3820d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Sotkamo", + "atmosphere": "standard", + "inhabited": true, + "population": 900, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3820e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3820f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3820g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ3820h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3820i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3820-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3820-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3820d-S1", + "orbits_body_id": "GJ3820d", + "station_type": "industrial", + "proper_name": "Vuolijoki", + "population": 0, + "governance_type": null, + "economic_role": "extraction" + }, + { + "station_id": "GJ3820-oort-S1", + "orbits_body_id": "GJ3820-oort", + "station_type": "horizon", + "proper_name": "Puolanka", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 388", @@ -1864,10 +15685,120 @@ "GJ 299" ], "star_type": "M4.5Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "45", "gdp": "0.1 MTr", - "gttr_excerpt": "**THE LANTERN** is the most connected unsettled system in the south Reach, a five-gate hub at hop 5 through which a significant fraction of south Reach freight passes, and the fact that no one lives here is not an accident." + "gttr_excerpt": "**THE LANTERN** is the most connected unsettled system in the south Reach, a five-gate hub at hop 5 through which a significant fraction of south Reach freight passes, and the fact that no one lives here is not an accident.", + "orbit_bodies": [ + { + "body_id": "GJ388b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ388c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ388d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ388-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ388e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ388f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ388g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ388-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ388-oort-S1", + "orbits_body_id": "GJ388-oort", + "station_type": "horizon", + "proper_name": "The Lantern", + "population": 45, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3991", @@ -1883,10 +15814,153 @@ "GJ 3325" ], "star_type": "DA", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "100,001,000", "gdp": "500.0 BTr", - "gttr_excerpt": "**DUNBAR** orbits a white dwarf — the cold remnant of a star that exhausted itself long before humans reached this far — which is the kind of stellar address that concentrates the mind on what you actually came here for, since the star itself is providing almost nothing." + "gttr_excerpt": "**DUNBAR** orbits a white dwarf — the cold remnant of a star that exhausted itself long before humans reached this far — which is the kind of stellar address that concentrates the mind on what you actually came here for, since the star itself is providing almost nothing.", + "orbit_bodies": [ + { + "body_id": "GJ3991b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3991f-1", + "parent_body_id": "GJ3991f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3991c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3991d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3991e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3991f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ3991g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3991h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3991-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3991-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3991b-S1", + "orbits_body_id": "GJ3991b", + "station_type": "commercial", + "proper_name": "Haddington", + "population": 100000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ3991-oort-S1", + "orbits_body_id": "GJ3991-oort", + "station_type": "horizon", + "proper_name": "Burnmouth", + "population": 1000, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 4053", @@ -1902,10 +15976,129 @@ "GJ 827" ], "star_type": "M0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "65,013,000", "gdp": "325.1 BTr", - "gttr_excerpt": "**DZIMBAHWE** means \"great house of stone,\" which the founding generation chose deliberately, and which, four hundred years later, describes the system in both the literal and architectural senses they intended." + "gttr_excerpt": "**DZIMBAHWE** means \"great house of stone,\" which the founding generation chose deliberately, and which, four hundred years later, describes the system in both the literal and architectural senses they intended.", + "orbit_bodies": [ + { + "body_id": "GJ4053b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4053c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Masvingo", + "atmosphere": "standard", + "inhabited": true, + "population": 65000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4053-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ4053d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4053e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4053f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4053g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ4053-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ4053-oort-S1", + "orbits_body_id": "GJ4053-oort", + "station_type": "horizon", + "proper_name": "Dzimbahwe Horizon", + "population": 4800, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ4053c-S1", + "orbits_body_id": "GJ4053c", + "station_type": "industrial", + "proper_name": "Chirandu", + "population": 8200, + "governance_type": null, + "economic_role": "mining" + } + ] }, { "system_id": "GJ 438", @@ -1921,10 +16114,156 @@ "GJ 566A" ], "star_type": "K0", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "160,540", "gdp": "321.1 MTr", - "gttr_excerpt": "**RELAY 7** is the seventh waystation in a corporate freight catalog, which is not a name so much as a file reference — and it is a file reference because, three centuries ago, a community of residents discovered a charter provision that the acquiring company had not read carefully enough, and used it to win a naming dispute." + "gttr_excerpt": "**RELAY 7** is the seventh waystation in a corporate freight catalog, which is not a name so much as a file reference — and it is a file reference because, three centuries ago, a community of residents discovered a charter provision that the acquiring company had not read carefully enough, and used it to win a naming dispute.", + "orbit_bodies": [ + { + "body_id": "GJ438b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ438e-m1", + "parent_body_id": "GJ438e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ438c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Relay 7", + "atmosphere": "standard", + "inhabited": true, + "population": 160000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ438-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ438d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ438e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ438f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ438g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ438h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ438i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ438-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ438-oort-S1", + "orbits_body_id": "GJ438-oort", + "station_type": "horizon", + "proper_name": "Relay 7 Horizon", + "population": 540, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 445", @@ -1941,10 +16280,156 @@ "GJ 625" ], "star_type": "M4", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "381,600", "gdp": "763.2 MTr", - "gttr_excerpt": "**JINGHU** means mirror lake, after a still-water feature in the habitable moon's largest basin, and has since acquired an additional ironic dimension: it reflects Haodu's commercial activity but routes around Haodu's queues, which is either a mirror or a bypass depending on how much patience you have with Haodu's gate scheduling." + "gttr_excerpt": "**JINGHU** means mirror lake, after a still-water feature in the habitable moon's largest basin, and has since acquired an additional ironic dimension: it reflects Haodu's commercial activity but routes around Haodu's queues, which is either a mirror or a bypass depending on how much patience you have with Haodu's gate scheduling.", + "orbit_bodies": [ + { + "body_id": "GJ445b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ445c-m1", + "parent_body_id": "GJ445c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Jinghu", + "atmosphere": "standard", + "inhabited": true, + "population": 380000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ445c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ445c-m2", + "parent_body_id": "GJ445c", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ445-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ445d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ445e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ445f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ445g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ445h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ445-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ445-oort-S1", + "orbits_body_id": "GJ445-oort", + "station_type": "horizon", + "proper_name": "Jinghu Horizon", + "population": 1600, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 475", @@ -1960,10 +16445,201 @@ "GJ 3622" ], "star_type": "G0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "410,000,000", "gdp": "6.2 TTr", - "gttr_excerpt": "**BRAEMAR** is named for a Scottish highland town and has spent four hundred years demonstrating that pastoral identity and a successful clothing brand are harder to reconcile than either side expected." + "gttr_excerpt": "**BRAEMAR** is named for a Scottish highland town and has spent four hundred years demonstrating that pastoral identity and a successful clothing brand are harder to reconcile than either side expected.", + "orbit_bodies": [ + { + "body_id": "GJ475b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ475e-1", + "parent_body_id": "GJ475e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ475h-1", + "parent_body_id": "GJ475h", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ475c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ475h-2", + "parent_body_id": "GJ475h", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ475d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ475e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Crieff", + "atmosphere": "standard", + "inhabited": true, + "population": 400000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ475f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ475g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ475h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ475i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ475j", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ475-belt", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ475-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ475e-S1", + "orbits_body_id": "GJ475e", + "station_type": "commercial", + "proper_name": "Galashiels", + "population": 10000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ475-oort-S1", + "orbits_body_id": "GJ475-oort", + "station_type": "horizon", + "proper_name": "Durness", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 506", @@ -1979,10 +16655,198 @@ "GJ 442A" ], "star_type": "G5V", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "42,012,320", "gdp": "210.1 BTr", - "gttr_excerpt": "**DOKKUM** is named for a flat, practical Frisian town in the historical Netherlands, and the system has lived up to the reference in ways that the founding consortium probably found straightforward and everyone who has since tried to negotiate equitable terms with Solheim has found somewhat less so." + "gttr_excerpt": "**DOKKUM** is named for a flat, practical Frisian town in the historical Netherlands, and the system has lived up to the reference in ways that the founding consortium probably found straightforward and everyone who has since tried to negotiate equitable terms with Solheim has found somewhat less so.", + "orbit_bodies": [ + { + "body_id": "GJ506b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ506f-m1", + "parent_body_id": "GJ506f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ506c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ506f-m2", + "parent_body_id": "GJ506f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ506d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Oudega", + "atmosphere": "standard", + "inhabited": true, + "population": 42000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ506-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ506e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ506f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ506g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ506h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ506i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ506j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ506-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ506-oort-S1", + "orbits_body_id": "GJ506-oort", + "station_type": "horizon", + "proper_name": "Dokkum Horizon", + "population": 720, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ506d-S1", + "orbits_body_id": "GJ506d", + "station_type": "industrial", + "proper_name": "Ambacht", + "population": 8400, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ506d-S2", + "orbits_body_id": "GJ506d", + "station_type": "industrial", + "proper_name": "Werf", + "population": 3200, + "governance_type": null, + "economic_role": "manufacturing" + } + ] }, { "system_id": "GJ 526", @@ -1998,10 +16862,162 @@ "GJ 628" ], "star_type": "M3V", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "28,007,700", "gdp": "140.0 BTr", - "gttr_excerpt": "**NEUSTADT** means \"new town,\" which is the most common Germanic settlement name in the Reach, and the Wave 2 founders here used it without apology because they were building a new town and found that an accurate description." + "gttr_excerpt": "**NEUSTADT** means \"new town,\" which is the most common Germanic settlement name in the Reach, and the Wave 2 founders here used it without apology because they were building a new town and found that an accurate description.", + "orbit_bodies": [ + { + "body_id": "GJ526b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ526e-m1", + "parent_body_id": "GJ526e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ526c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Hütte", + "atmosphere": "standard", + "inhabited": true, + "population": 28000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ526-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ526d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ526e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ526f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ526g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ526h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ526-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ526-oort-S1", + "orbits_body_id": "GJ526-oort", + "station_type": "horizon", + "proper_name": "Neustadt Horizon", + "population": 580, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ526c-S1", + "orbits_body_id": "GJ526c", + "station_type": "industrial", + "proper_name": "Eisenwerk", + "population": 6800, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ526-belt-S1", + "orbits_body_id": "GJ526-belt", + "station_type": "industrial", + "proper_name": "Grube", + "population": 320, + "governance_type": null, + "economic_role": "mining" + } + ] }, { "system_id": "GJ 54", @@ -2018,10 +17034,165 @@ "GJ 829" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "180,020,400", "gdp": "900.1 BTr", - "gttr_excerpt": "**INHAMBANE** means \"the place where people look for each other,\" which is an excellent name for a system whose founding generation built silos before they built a council chamber, and whose primary contribution to the south Reach is ensuring that people in adjacent systems do not starve." + "gttr_excerpt": "**INHAMBANE** means \"the place where people look for each other,\" which is an excellent name for a system whose founding generation built silos before they built a council chamber, and whose primary contribution to the south Reach is ensuring that people in adjacent systems do not starve.", + "orbit_bodies": [ + { + "body_id": "GJ54b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ54e-m1", + "parent_body_id": "GJ54e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ54c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Machamba", + "atmosphere": "standard", + "inhabited": true, + "population": 180000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ54-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ54d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ54e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ54f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ54g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ54h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ54i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ54-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ54-oort-S1", + "orbits_body_id": "GJ54-oort", + "station_type": "horizon", + "proper_name": "Inhambane Horizon", + "population": 8400, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ54c-S1", + "orbits_body_id": "GJ54c", + "station_type": "agricultural", + "proper_name": "Armazém", + "population": 12000, + "governance_type": null, + "economic_role": "agricultural" + } + ] }, { "system_id": "GJ 588", @@ -2036,10 +17207,165 @@ "GJ 250A" ], "star_type": "M0", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "800", "gdp": "1.6 MTr", - "gttr_excerpt": "**HARROWFIELD** exists because a geologist looked at a survey report that concluded a world was not worth settling and recognized that the report was asking the wrong question." + "gttr_excerpt": "**HARROWFIELD** exists because a geologist looked at a survey report that concluded a world was not worth settling and recognized that the report was asking the wrong question.", + "orbit_bodies": [ + { + "body_id": "GJ588b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ588f-1", + "parent_body_id": "GJ588f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ588c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Kielder", + "atmosphere": "standard", + "inhabited": true, + "population": 800, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ588f-2", + "parent_body_id": "GJ588f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ588d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ588e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ588f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ588g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ588h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ588-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ588-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ588c-S1", + "orbits_body_id": "GJ588c", + "station_type": "agricultural", + "proper_name": "Falstone", + "population": 0, + "governance_type": null, + "economic_role": "agriculture" + }, + { + "station_id": "GJ588-oort-S1", + "orbits_body_id": "GJ588-oort", + "station_type": "horizon", + "proper_name": "Bellingham", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 644C", @@ -2055,10 +17381,120 @@ "GJ 860A" ], "star_type": "M7", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "8,180", "gdp": "16.4 MTr", - "gttr_excerpt": "**MOÇÂMEDES** is named for a city that was renamed, then renamed again, with the particular community that settled here choosing the oldest version because it was the one their great-grandparents had used — which, as strategies for preserving identity across interstellar distances, is about as functional as they get." + "gttr_excerpt": "**MOÇÂMEDES** is named for a city that was renamed, then renamed again, with the particular community that settled here choosing the oldest version because it was the one their great-grandparents had used — which, as strategies for preserving identity across interstellar distances, is about as functional as they get.", + "orbit_bodies": [ + { + "body_id": "GJ644Cb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": "Tombua", + "atmosphere": "thin", + "inhabited": true, + "population": 8000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ644C-belt", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ644Cc", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ644Cd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ644Ce", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ644Cf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ644Cg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ644C-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ644C-oort-S1", + "orbits_body_id": "GJ644C-oort", + "station_type": "horizon", + "proper_name": "Moçâmedes Horizon", + "population": 180, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 66A", @@ -2075,10 +17511,168 @@ "GJ 1125" ], "star_type": "K2 V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "520,002,100", "gdp": "7.8 TTr", - "gttr_excerpt": "**P ERIDANI** is named after what is in the star catalog, because three founding groups spent two generations failing to agree on anything better, and by the time any of them had enough local standing to impose a preference, the catalog designation had become the community's identity by default." + "gttr_excerpt": "**P ERIDANI** is named after what is in the star catalog, because three founding groups spent two generations failing to agree on anything better, and by the time any of them had enough local standing to impose a preference, the catalog designation had become the community's identity by default.", + "orbit_bodies": [ + { + "body_id": "GJ66Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ66Af-m1", + "parent_body_id": "GJ66Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ66Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ66Af-m2", + "parent_body_id": "GJ66Af", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ66Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "p Eridani", + "atmosphere": "standard", + "inhabited": true, + "population": 520000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ66A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ66Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ66Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ66Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ66Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ66Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ66A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ66A-oort-S1", + "orbits_body_id": "GJ66A-oort", + "station_type": "horizon", + "proper_name": "p Eridani Horizon", + "population": 2100, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 682", @@ -2095,10 +17689,144 @@ "GJ 434" ], "star_type": "M5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "281,400", "gdp": "562.8 MTr", - "gttr_excerpt": "**TAISHAN** was named after one of China's sacred mountains, an aspirational gesture from a wave_4 corporate founding consortium that wanted cultural gravitas without the specificity of a place-transplant, and whose successor entities have since merged, been acquired, and dissolved across four commercial generations while leaving behind an unresolved question about who is responsible for the contaminated ground." + "gttr_excerpt": "**TAISHAN** was named after one of China's sacred mountains, an aspirational gesture from a wave_4 corporate founding consortium that wanted cultural gravitas without the specificity of a place-transplant, and whose successor entities have since merged, been acquired, and dissolved across four commercial generations while leaving behind an unresolved question about who is responsible for the contaminated ground.", + "orbit_bodies": [ + { + "body_id": "GJ682b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ682e-m1", + "parent_body_id": "GJ682e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ682c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Taishan", + "atmosphere": "standard", + "inhabited": true, + "population": 280000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ682-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ682d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ682e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ682f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ682g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ682h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ682-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ682-oort-S1", + "orbits_body_id": "GJ682-oort", + "station_type": "horizon", + "proper_name": "Taishan Horizon", + "population": 1400, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 693", @@ -2114,10 +17842,120 @@ "GJ 3323" ], "star_type": "M5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "12,160", "gdp": "24.3 MTr", - "gttr_excerpt": "**MWANGAZA** means illumination — the quality of brightness that makes things visible and comprehensible — which the founding generation chose as a statement of aspiration because the M5 light filtering through the planet's dense, humid atmosphere produces a diffuse orange-pink glow that is nothing like clarity and everything like warmth." + "gttr_excerpt": "**MWANGAZA** means illumination — the quality of brightness that makes things visible and comprehensible — which the founding generation chose as a statement of aspiration because the M5 light filtering through the planet's dense, humid atmosphere produces a diffuse orange-pink glow that is nothing like clarity and everything like warmth.", + "orbit_bodies": [ + { + "body_id": "GJ693b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": "Kilwa", + "atmosphere": "standard", + "inhabited": true, + "population": 12000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ693-belt", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ693c", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ693d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ693e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ693f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ693g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ693-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ693-oort-S1", + "orbits_body_id": "GJ693-oort", + "station_type": "horizon", + "proper_name": "Mwangaza Horizon", + "population": 160, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 695A", @@ -2134,9 +17972,167 @@ "GJ 566B" ], "star_type": "G5IV", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 695A** is a three-gate junction with a G5 sub-giant primary and a habitable world in the middle of the temperate zone and no settlement charter, no colonial application, and no one who has stayed more than a few hours in thirty-five years of human traffic." + "gttr_excerpt": "**GJ 695A** is a three-gate junction with a G5 sub-giant primary and a habitable world in the middle of the temperate zone and no settlement charter, no colonial application, and no one who has stayed more than a few hours in thirty-five years of human traffic.", + "orbit_bodies": [ + { + "body_id": "GJ695Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ695Af-m1", + "parent_body_id": "GJ695Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ695Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ695Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ695Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ695A-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ695Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ695Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ695Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ695Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ695Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ695A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ695A-oort-S1", + "orbits_body_id": "GJ695A-oort", + "station_type": "horizon", + "proper_name": "GJ 695A Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 713A", @@ -2152,10 +18148,180 @@ "GJ 566A" ], "star_type": "F7Vvar", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "95,720", "gdp": "191.4 MTr", - "gttr_excerpt": "**SAMUELS REACH** was built on one person's recognition that a route existed, which is the founding story of many transit systems, but in Marcus Samuels's case the route he recognized was specifically the route that bypasses the Taishan junction's cargo inspections, which gives the founding story a somewhat different texture." + "gttr_excerpt": "**SAMUELS REACH** was built on one person's recognition that a route existed, which is the founding story of many transit systems, but in Marcus Samuels's case the route he recognized was specifically the route that bypasses the Taishan junction's cargo inspections, which gives the founding story a somewhat different texture.", + "orbit_bodies": [ + { + "body_id": "GJ713Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ713Af-m1", + "parent_body_id": "GJ713Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ713Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ713Af-m2", + "parent_body_id": "GJ713Af", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ713Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Samuels Reach", + "atmosphere": "standard", + "inhabited": true, + "population": 95000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ713A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ713Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ713Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ713Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ713Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ713Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ713Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ713A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ713A-oort-S1", + "orbits_body_id": "GJ713A-oort", + "station_type": "horizon", + "proper_name": "Samuels Reach Horizon", + "population": 720, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 752A", @@ -2171,10 +18337,132 @@ "GJ 54.1" ], "star_type": "M3.5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "25,001,200", "gdp": "125.0 BTr", - "gttr_excerpt": "**RIBEIRÃO** means \"big river,\" which was the obvious name, and three hundred years of organizing human life almost entirely around a river system suggests the founding generation was paying attention." + "gttr_excerpt": "**RIBEIRÃO** means \"big river,\" which was the obvious name, and three hundred years of organizing human life almost entirely around a river system suggests the founding generation was paying attention.", + "orbit_bodies": [ + { + "body_id": "GJ752Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ752Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Salvaterra", + "atmosphere": "standard", + "inhabited": true, + "population": 25000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ752A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ752Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ752Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ752Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ752Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ752Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ752A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ752A-oort-S1", + "orbits_body_id": "GJ752A-oort", + "station_type": "horizon", + "proper_name": "Ribeirão Horizon", + "population": 1200, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 754", @@ -2190,10 +18478,144 @@ "GJ 53A" ], "star_type": "M4.5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "240,940", "gdp": "481.9 MTr", - "gttr_excerpt": "**MIRYANG** is a hop-5 system that ships food inward rather than receiving it, which inverts the standard corridor dependency model and would be considered a remarkable achievement if the enclosed horticultural complexes that make it possible were not currently engaged in a resource dispute that the governing council has been declining to resolve for three growing seasons." + "gttr_excerpt": "**MIRYANG** is a hop-5 system that ships food inward rather than receiving it, which inverts the standard corridor dependency model and would be considered a remarkable achievement if the enclosed horticultural complexes that make it possible were not currently engaged in a resource dispute that the governing council has been declining to resolve for three growing seasons.", + "orbit_bodies": [ + { + "body_id": "GJ754b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ754e-m1", + "parent_body_id": "GJ754e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ754c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Miryang", + "atmosphere": "standard", + "inhabited": true, + "population": 240000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ754-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ754d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ754e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ754f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ754g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ754h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ754-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ754-oort-S1", + "orbits_body_id": "GJ754-oort", + "station_type": "horizon", + "proper_name": "Miryang Horizon", + "population": 940, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 785", @@ -2208,10 +18630,156 @@ "GJ 234A" ], "star_type": "K3V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "15,140", "gdp": "30.3 MTr", - "gttr_excerpt": "**PORTO FECHADO** means \"closed port,\" which the founders chose deliberately, with the dry humor of people who selected a dead-end system and wanted you to know before you arrived." + "gttr_excerpt": "**PORTO FECHADO** means \"closed port,\" which the founders chose deliberately, with the dry humor of people who selected a dead-end system and wanted you to know before you arrived.", + "orbit_bodies": [ + { + "body_id": "GJ785b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ785e-m1", + "parent_body_id": "GJ785e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ785c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Trancoso", + "atmosphere": "standard", + "inhabited": true, + "population": 15000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ785-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ785d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ785e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ785f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ785g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ785h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ785i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ785-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ785-oort-S1", + "orbits_body_id": "GJ785-oort", + "station_type": "horizon", + "proper_name": "Porto Fechado Horizon", + "population": 140, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 832", @@ -2231,10 +18799,183 @@ "GJ 643" ], "star_type": "M1V", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "800,121,400", "gdp": "12.0 TTr", - "gttr_excerpt": "**HANSESTADT** named itself after a medieval trading league that organized commercial cities around mutual trade protection rather than territorial sovereignty, and has spent four hundred years demonstrating that the founding merchant council understood something fundamental about how power actually works." + "gttr_excerpt": "**HANSESTADT** named itself after a medieval trading league that organized commercial cities around mutual trade protection rather than territorial sovereignty, and has spent four hundred years demonstrating that the founding merchant council understood something fundamental about how power actually works.", + "orbit_bodies": [ + { + "body_id": "GJ832b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ832e-m1", + "parent_body_id": "GJ832e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ832c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Damm", + "atmosphere": "standard", + "inhabited": true, + "population": 800000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ832e-m2", + "parent_body_id": "GJ832e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ832-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ832d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ832e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ832f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ832g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ832h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ832-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ832-oort-S1", + "orbits_body_id": "GJ832-oort", + "station_type": "horizon", + "proper_name": "Hansestadt Horizon", + "population": 12000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ832c-S1", + "orbits_body_id": "GJ832c", + "station_type": "commercial", + "proper_name": "Rathaus", + "population": 85000, + "governance_type": null, + "economic_role": "commercial" + }, + { + "station_id": "GJ832c-S2", + "orbits_body_id": "GJ832c", + "station_type": "commercial", + "proper_name": "Vogt", + "population": 18000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ832c-S3", + "orbits_body_id": "GJ832c", + "station_type": "commercial", + "proper_name": "Handelshof", + "population": 6400, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 873", @@ -2251,10 +18992,165 @@ "GJ 402" ], "star_type": "M4.5Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "15,000,000", "gdp": "75.0 BTr", - "gttr_excerpt": "**ASHWORTH JUNCTION** has three gate apertures, a transit authority that predates its civilian community, and forty years to figure out which of those things is actually in charge." + "gttr_excerpt": "**ASHWORTH JUNCTION** has three gate apertures, a transit authority that predates its civilian community, and forty years to figure out which of those things is actually in charge.", + "orbit_bodies": [ + { + "body_id": "GJ873b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ873f-1", + "parent_body_id": "GJ873f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ873c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Lavenille", + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ873f-2", + "parent_body_id": "GJ873f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ873d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ873e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ873f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ873g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ873h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ873-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ873-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ873c-S1", + "orbits_body_id": "GJ873c", + "station_type": "transit", + "proper_name": "Crick", + "population": 15000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ873-oort-S1", + "orbits_body_id": "GJ873-oort", + "station_type": "horizon", + "proper_name": "Weedon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 877", @@ -2270,10 +19166,189 @@ "GJ 880" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "2 habitable · 2 inhabited", "population": "277,001,500", "gdp": "4.2 TTr", - "gttr_excerpt": "**HOLMGREN'S PASSAGE** is named for a man who did not stop here, which is precisely the correct name for a through-route system, and which the settlers who arrived later had the good sense not to change." + "gttr_excerpt": "**HOLMGREN'S PASSAGE** is named for a man who did not stop here, which is precisely the correct name for a through-route system, and which the settlers who arrived later had the good sense not to change.", + "orbit_bodies": [ + { + "body_id": "GJ877b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ877c-1", + "parent_body_id": "GJ877c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ877g-1", + "parent_body_id": "GJ877g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ877c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Sundsvall", + "atmosphere": "standard", + "inhabited": true, + "population": 250000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ877g-2", + "parent_body_id": "GJ877g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ877d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Härnösand", + "atmosphere": "standard", + "inhabited": true, + "population": 12000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ877e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ877f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ877g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ877h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ877i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ877-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ877-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ877c-S1", + "orbits_body_id": "GJ877c", + "station_type": "commercial", + "proper_name": "Vadstena", + "population": 15000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ877-oort-S1", + "orbits_body_id": "GJ877-oort", + "station_type": "horizon", + "proper_name": "Arjeplog", + "population": 1500, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 884", @@ -2290,10 +19365,156 @@ "GJ 83.1" ], "star_type": "K5/M0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "4,206,200", "gdp": "8.4 BTr", - "gttr_excerpt": "**MATAMBA** has been deciding things for four hundred years — not by mandate, not by force, but by the accumulated weight of being the place where parties who cannot agree go when the alternative is not agreeing indefinitely." + "gttr_excerpt": "**MATAMBA** has been deciding things for four hundred years — not by mandate, not by force, but by the accumulated weight of being the place where parties who cannot agree go when the alternative is not agreeing indefinitely.", + "orbit_bodies": [ + { + "body_id": "GJ884b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ884e-m1", + "parent_body_id": "GJ884e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ884c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Mbanza", + "atmosphere": "standard", + "inhabited": true, + "population": 4200000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ884-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ884d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ884e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ884f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ884g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ884h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ884i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ884-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ884-oort-S1", + "orbits_body_id": "GJ884-oort", + "station_type": "horizon", + "proper_name": "Matamba Horizon", + "population": 6200, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 905", @@ -2310,10 +19531,120 @@ "GJ 54.1" ], "star_type": "dM6 e", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "47,800", "gdp": "95.6 MTr", - "gttr_excerpt": "**ISIBAYA** means \"enclosure\" — the kraal, the traditional bounded space where cattle were kept and family gathered and disputes were settled — and the wave 4 founders who chose the name understood that a market is a kind of kraal: a bounded space where exchange happens, where the community comes together around something it values." + "gttr_excerpt": "**ISIBAYA** means \"enclosure\" — the kraal, the traditional bounded space where cattle were kept and family gathered and disputes were settled — and the wave 4 founders who chose the name understood that a market is a kind of kraal: a bounded space where exchange happens, where the community comes together around something it values.", + "orbit_bodies": [ + { + "body_id": "GJ905b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": "Mfolozi", + "atmosphere": "standard", + "inhabited": true, + "population": 45000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ905-belt", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ905c", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ905d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ905e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ905f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ905g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ905-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ905-oort-S1", + "orbits_body_id": "GJ905-oort", + "station_type": "horizon", + "proper_name": "Isibaya Horizon", + "population": 2800, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 908", @@ -2328,10 +19659,144 @@ "GJ 17" ], "star_type": "M2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "4,320", "gdp": "8.6 MTr", - "gttr_excerpt": "**THORNFIELD STATION** has more building capacity than population, which has been true since the founding period and has never been officially explained, and the founding period was three hundred years ago." + "gttr_excerpt": "**THORNFIELD STATION** has more building capacity than population, which has been true since the founding period and has never been officially explained, and the founding period was three hundred years ago.", + "orbit_bodies": [ + { + "body_id": "GJ908b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ908e-m1", + "parent_body_id": "GJ908e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ908c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Thornfield Station", + "atmosphere": "thin", + "inhabited": true, + "population": 4200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ908-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ908d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ908e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ908f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ908g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ908h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ908-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ908-oort-S1", + "orbits_body_id": "GJ908-oort", + "station_type": "horizon", + "proper_name": "Thornfield Horizon", + "population": 120, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1125", @@ -2347,10 +19812,156 @@ "GJ 660A" ], "star_type": "K:...", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "140,480", "gdp": "281.0 MTr", - "gttr_excerpt": "**HWASEONG** is named after a walled fortress city on old Earth, which the founders chose because they wanted a name that would last and which has lasted, along with the fortress psychology the name was meant to invoke." + "gttr_excerpt": "**HWASEONG** is named after a walled fortress city on old Earth, which the founders chose because they wanted a name that would last and which has lasted, along with the fortress psychology the name was meant to invoke.", + "orbit_bodies": [ + { + "body_id": "GJ1125b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1125e-m1", + "parent_body_id": "GJ1125e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1125c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Hwaseong", + "atmosphere": "standard", + "inhabited": true, + "population": 140000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1125-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1125d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1125e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1125f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1125g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1125h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1125i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1125-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1125-oort-S1", + "orbits_body_id": "GJ1125-oort", + "station_type": "horizon", + "proper_name": "Hwaseong Horizon", + "population": 480, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1128", @@ -2366,10 +19977,165 @@ "GJ 438" ], "star_type": "m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "28,640", "gdp": "57.3 MTr", - "gttr_excerpt": "**DEVEREUX POINT** is named after a survey team leader who marked the coordinate in her log as \"the point\" — the place where the loop closed — and then left, and the first permanent settlers named it after her in the tradition of honoring people who found things they never intended to stay for." + "gttr_excerpt": "**DEVEREUX POINT** is named after a survey team leader who marked the coordinate in her log as \"the point\" — the place where the loop closed — and then left, and the first permanent settlers named it after her in the tradition of honoring people who found things they never intended to stay for.", + "orbit_bodies": [ + { + "body_id": "GJ1128b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1128d-m1", + "parent_body_id": "GJ1128d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1128c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1128d-m2", + "parent_body_id": "GJ1128d", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1128-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1128d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "gas_giant", + "proper_name": "DP-Juno", + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1128e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1128f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1128g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1128h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1128-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1128-oort-S1", + "orbits_body_id": "GJ1128-oort", + "station_type": "horizon", + "proper_name": "Devereux Point Horizon", + "population": 640, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ1128-d-S1", + "orbits_body_id": "GJ1128d", + "station_type": "commercial", + "proper_name": "Devereux Platform", + "population": 28000, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 137", @@ -2387,10 +20153,180 @@ "GJ 909A" ], "star_type": "G5Vvar", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "863,200", "gdp": "1.7 BTr", - "gttr_excerpt": "**NOVAYA ZARYA** means New Dawn, which is an aspirational name that the founding community chose deliberately and which, five generations on, the community has mostly forgotten was aspirational, because places that last long enough eventually become simply what they are rather than what they were meant to be." + "gttr_excerpt": "**NOVAYA ZARYA** means New Dawn, which is an aspirational name that the founding community chose deliberately and which, five generations on, the community has mostly forgotten was aspirational, because places that last long enough eventually become simply what they are rather than what they were meant to be.", + "orbit_bodies": [ + { + "body_id": "GJ137b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ137f-m1", + "parent_body_id": "GJ137f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ137c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ137f-m2", + "parent_body_id": "GJ137f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ137d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Novaya Zarya", + "atmosphere": "standard", + "inhabited": true, + "population": 860000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ137-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ137e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ137f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ137g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ137h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ137i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ137j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ137-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ137-oort-S1", + "orbits_body_id": "GJ137-oort", + "station_type": "horizon", + "proper_name": "Novaya Zarya Horizon", + "population": 3200, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 150", @@ -2407,10 +20343,186 @@ "GJ 320" ], "star_type": "K0IV", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "120,022,000", "gdp": "600.1 BTr", - "gttr_excerpt": "**RANA** is a junction neutral between the inner corridor and the outer west, which is not an ideological position but a business model, and the distinction is important to understand before doing anything here that assumes otherwise." + "gttr_excerpt": "**RANA** is a junction neutral between the inner corridor and the outer west, which is not an ideological position but a business model, and the distinction is important to understand before doing anything here that assumes otherwise.", + "orbit_bodies": [ + { + "body_id": "GJ150b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ150f-m1", + "parent_body_id": "GJ150f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ150c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ150f-m2", + "parent_body_id": "GJ150f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ150d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Vesper", + "atmosphere": "standard", + "inhabited": true, + "population": 120000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ150-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ150e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ150f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ150g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ150h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ150i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ150-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ150-oort-S1", + "orbits_body_id": "GJ150-oort", + "station_type": "horizon", + "proper_name": "Rana Horizon", + "population": 3200, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ150d-S1", + "orbits_body_id": "GJ150d", + "station_type": "commercial", + "proper_name": "Trivium", + "population": 14000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ150d-S2", + "orbits_body_id": "GJ150d", + "station_type": "commercial", + "proper_name": "Mansio", + "population": 4800, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 17", @@ -2427,10 +20539,180 @@ "GJ 660A" ], "star_type": "F9V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "521,400", "gdp": "1.0 BTr", - "gttr_excerpt": "**BINH TRANG** means peaceful embankment, named for the habitable world's prominent river-delta geography, and the community is in fact peaceful, in the way that a community can be peaceful when it controls the food supply for an isolated neighbor and has structured its trade agreement so that prices rise without appearing to rise." + "gttr_excerpt": "**BINH TRANG** means peaceful embankment, named for the habitable world's prominent river-delta geography, and the community is in fact peaceful, in the way that a community can be peaceful when it controls the food supply for an isolated neighbor and has structured its trade agreement so that prices rise without appearing to rise.", + "orbit_bodies": [ + { + "body_id": "GJ17b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ17f-m1", + "parent_body_id": "GJ17f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ17c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ17f-m2", + "parent_body_id": "GJ17f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ17d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Binh Trang", + "atmosphere": "standard", + "inhabited": true, + "population": 520000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ17-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ17e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ17f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ17g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ17h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ17i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ17j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ17-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ17-oort-S1", + "orbits_body_id": "GJ17-oort", + "station_type": "horizon", + "proper_name": "Binh Trang Horizon", + "population": 1400, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 2097", @@ -2446,10 +20728,120 @@ "GJ 752A" ], "star_type": "m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "40,680", "gdp": "81.4 MTr", - "gttr_excerpt": "**NASCENTE** means \"spring\" — the place where water rises from the ground, the origin point — and four hundred years of unbroken settlement have given the name a weight that the founders could only have hoped for when they chose it." + "gttr_excerpt": "**NASCENTE** means \"spring\" — the place where water rises from the ground, the origin point — and four hundred years of unbroken settlement have given the name a weight that the founders could only have hoped for when they chose it.", + "orbit_bodies": [ + { + "body_id": "GJ2097b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ2097c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Monção", + "atmosphere": "standard", + "inhabited": true, + "population": 40000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ2097-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ2097d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ2097e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ2097f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ2097g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ2097-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ2097-oort-S1", + "orbits_body_id": "GJ2097-oort", + "station_type": "horizon", + "proper_name": "Nascente Horizon", + "population": 680, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 216A", @@ -2465,10 +20857,201 @@ "GJ 706" ], "star_type": "F7V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "10,500", "gdp": "21.0 MTr", - "gttr_excerpt": "**KELBURN CROSSING** is named after a cable car route in Wellington, by a founder who apparently decided that a crossing point deserves to be named after a crossing point, which is more self-aware than most system names and has held up remarkably well for four hundred years." + "gttr_excerpt": "**KELBURN CROSSING** is named after a cable car route in Wellington, by a founder who apparently decided that a crossing point deserves to be named after a crossing point, which is more self-aware than most system names and has held up remarkably well for four hundred years.", + "orbit_bodies": [ + { + "body_id": "GJ216Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Ae-1", + "parent_body_id": "GJ216Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ216Ah-1", + "parent_body_id": "GJ216Ah", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ216Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Ah-2", + "parent_body_id": "GJ216Ah", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ216Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Wairau", + "atmosphere": "standard", + "inhabited": true, + "population": 8000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Ag", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Ah", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ216Ai", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ216Aj", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ216A-belt", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ216A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ216Ae-S1", + "orbits_body_id": "GJ216Ae", + "station_type": "transit", + "proper_name": "Kāhu", + "population": 2000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ216A-oort-S1", + "orbits_body_id": "GJ216A-oort", + "station_type": "horizon", + "proper_name": "Raukawa", + "population": 500, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 268", @@ -2484,10 +21067,153 @@ "GJ 754" ], "star_type": "M5Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "62,860", "gdp": "125.7 MTr", - "gttr_excerpt": "**YEONGWOL** is named after a Korean county historically known as somewhere travelers passed through on their way somewhere else, which the founders chose with a self-awareness that three hundred years of being exactly that have more than justified." + "gttr_excerpt": "**YEONGWOL** is named after a Korean county historically known as somewhere travelers passed through on their way somewhere else, which the founders chose with a self-awareness that three hundred years of being exactly that have more than justified.", + "orbit_bodies": [ + { + "body_id": "GJ268b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ268e-m1", + "parent_body_id": "GJ268e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ268c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ268-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ268d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ268e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ268f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ268g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ268h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ268-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ268-oort-S1", + "orbits_body_id": "GJ268-oort", + "station_type": "horizon", + "proper_name": "Yeongwol Horizon", + "population": 860, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ268-c-S1", + "orbits_body_id": "GJ268c", + "station_type": "commercial", + "proper_name": "Yeongwol Orbital", + "population": 62000, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 299", @@ -2504,10 +21230,144 @@ "GJ 388" ], "star_type": "M3.5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "3,201,100", "gdp": "6.4 BTr", - "gttr_excerpt": "**VÁRZEA** is a Portuguese word describing the seasonally flooded forest of the Amazon's river systems — not permanently wet, not reliably dry, but the territory that is one thing for part of the year and another thing for the rest — and the founding generation named it for what they found and what they intended to do with it." + "gttr_excerpt": "**VÁRZEA** is a Portuguese word describing the seasonally flooded forest of the Amazon's river systems — not permanently wet, not reliably dry, but the territory that is one thing for part of the year and another thing for the rest — and the founding generation named it for what they found and what they intended to do with it.", + "orbit_bodies": [ + { + "body_id": "GJ299b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ299e-m1", + "parent_body_id": "GJ299e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ299c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Várzea", + "atmosphere": "standard", + "inhabited": true, + "population": 3200000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ299-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ299d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ299e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ299f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ299g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ299h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ299-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ299-oort-S1", + "orbits_body_id": "GJ299-oort", + "station_type": "horizon", + "proper_name": "Várzea Horizon", + "population": 1100, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3135", @@ -2523,10 +21383,156 @@ "GJ 205" ], "star_type": "K:...", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "72,480", "gdp": "145.0 MTr", - "gttr_excerpt": "**WHITFIELD CROSSING** is named for a transit planner who identified the gate path's commercial potential and filed the development license before any larger operator noticed, and then never actually lived there, which is either a common pattern in transit infrastructure history or a commentary on what \"opportunity\" looks like from a distance." + "gttr_excerpt": "**WHITFIELD CROSSING** is named for a transit planner who identified the gate path's commercial potential and filed the development license before any larger operator noticed, and then never actually lived there, which is either a common pattern in transit infrastructure history or a commentary on what \"opportunity\" looks like from a distance.", + "orbit_bodies": [ + { + "body_id": "GJ3135b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3135e-m1", + "parent_body_id": "GJ3135e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3135c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Whitfield Crossing", + "atmosphere": "standard", + "inhabited": true, + "population": 72000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3135-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3135d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3135e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3135f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3135g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3135h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3135i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3135-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3135-oort-S1", + "orbits_body_id": "GJ3135-oort", + "station_type": "horizon", + "proper_name": "Whitfield Crossing Horizon", + "population": 480, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3323", @@ -2543,10 +21549,144 @@ "GJ 27" ], "star_type": "m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "13,200", "gdp": "26.4 MTr", - "gttr_excerpt": "**ENTRONCAMENTO** is a Portuguese railway term for the place where the lines cross, and the town of Entroncamento in Portugal was built because the network needed a node there, and the community grew around the railway yards, and the founders of this system understood they were making the same observation about their own situation." + "gttr_excerpt": "**ENTRONCAMENTO** is a Portuguese railway term for the place where the lines cross, and the town of Entroncamento in Portugal was built because the network needed a node there, and the community grew around the railway yards, and the founders of this system understood they were making the same observation about their own situation.", + "orbit_bodies": [ + { + "body_id": "GJ3323b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3323e-m1", + "parent_body_id": "GJ3323e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3323c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Entroncamento", + "atmosphere": "standard", + "inhabited": true, + "population": 12000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3323-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3323d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3323e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3323f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3323g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3323h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3323-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3323-oort-S1", + "orbits_body_id": "GJ3323-oort", + "station_type": "horizon", + "proper_name": "Entroncamento Horizon", + "population": 1200, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3325", @@ -2562,10 +21702,189 @@ "GJ 475" ], "star_type": "K:", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "208,000,000", "gdp": "3.1 TTr", - "gttr_excerpt": "**CALLOWAY REACH** was founded by Scottish settlers who brought agricultural equipment, seed stock, and a portable still, and it is not entirely clear which of those three items has been most consequential in the four hundred years since." + "gttr_excerpt": "**CALLOWAY REACH** was founded by Scottish settlers who brought agricultural equipment, seed stock, and a portable still, and it is not entirely clear which of those three items has been most consequential in the four hundred years since.", + "orbit_bodies": [ + { + "body_id": "GJ3325b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3325d-1", + "parent_body_id": "GJ3325d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3325g-1", + "parent_body_id": "GJ3325g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3325c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3325g-2", + "parent_body_id": "GJ3325g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3325d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Strathmore", + "atmosphere": "standard", + "inhabited": true, + "population": 200000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3325e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3325f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3325g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ3325h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3325i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3325-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3325-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3325d-S1", + "orbits_body_id": "GJ3325d", + "station_type": "commercial", + "proper_name": "Grantown", + "population": 8000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ3325-oort-S1", + "orbits_body_id": "GJ3325-oort", + "station_type": "horizon", + "proper_name": "Tiree", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3454", @@ -2583,10 +21902,174 @@ "GJ 832" ], "star_type": "m", + "currency_zone": "MIXED", "bodies": "0 habitable · 0 inhabited", "population": "15,200", "gdp": "30.4 MTr", - "gttr_excerpt": "**EISENTOR** means \"iron gate,\" which is what the MVG regional logistics office named this transit facility when they built it, and which accurately describes both the physical infrastructure and the institutional character of a place that eleven thousand people live in but that no government formally governs." + "gttr_excerpt": "**EISENTOR** means \"iron gate,\" which is what the MVG regional logistics office named this transit facility when they built it, and which accurately describes both the physical infrastructure and the institutional character of a place that eleven thousand people live in but that no government formally governs.", + "orbit_bodies": [ + { + "body_id": "GJ3454b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3454e-m1", + "parent_body_id": "GJ3454e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3454c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3454e-m2", + "parent_body_id": "GJ3454e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3454-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3454d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3454e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3454f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3454g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3454h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3454-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3454-oort-S1", + "orbits_body_id": "GJ3454-oort", + "station_type": "horizon", + "proper_name": "Eisentor Horizon", + "population": 4200, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ3454e-S1", + "orbits_body_id": "GJ3454e", + "station_type": "commercial", + "proper_name": "Eisenhof", + "population": 8600, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ3454e-S2", + "orbits_body_id": "GJ3454e", + "station_type": "industrial", + "proper_name": "Leitwerk", + "population": 2400, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 35", @@ -2602,10 +22085,120 @@ "GJ 86" ], "star_type": "DG", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "340,720", "gdp": "681.4 MTr", - "gttr_excerpt": "**VUURKLOOF** means \"fire ravine\" in Afrikaans, which the founding generation chose after arriving to find that the survey team had been technically accurate and personally unhelpful about the geological situation." + "gttr_excerpt": "**VUURKLOOF** means \"fire ravine\" in Afrikaans, which the founding generation chose after arriving to find that the survey team had been technically accurate and personally unhelpful about the geological situation.", + "orbit_bodies": [ + { + "body_id": "GJ35b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ35c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Vuurkloof", + "atmosphere": "thick", + "inhabited": true, + "population": 340000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ35-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ35d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ35e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ35f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ35g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ35-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ35-oort-S1", + "orbits_body_id": "GJ35-oort", + "station_type": "horizon", + "proper_name": "Vuurkloof Horizon", + "population": 720, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 357", @@ -2624,10 +22217,204 @@ "GJ 3333" ], "star_type": "K", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "350,084,400", "gdp": "5.3 TTr", - "gttr_excerpt": "**ALTMARK** was named for the original heartland of the Margraviate of Brandenburg, a region whose historical significance derived from being where something important was founded rather than from anything remarkable about the land itself — which, the founders knew, was precisely the right reference for a system they intended to make important." + "gttr_excerpt": "**ALTMARK** was named for the original heartland of the Margraviate of Brandenburg, a region whose historical significance derived from being where something important was founded rather than from anything remarkable about the land itself — which, the founders knew, was precisely the right reference for a system they intended to make important.", + "orbit_bodies": [ + { + "body_id": "GJ357b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ357e-m1", + "parent_body_id": "GJ357e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ357c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Stendal", + "atmosphere": "standard", + "inhabited": true, + "population": 350000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ357e-m2", + "parent_body_id": "GJ357e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ357-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ357d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ357e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ357f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ357g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ357h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ357i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ357-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ357-oort-S1", + "orbits_body_id": "GJ357-oort", + "station_type": "horizon", + "proper_name": "Altmark Horizon", + "population": 9800, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ357c-S1", + "orbits_body_id": "GJ357c", + "station_type": "industrial", + "proper_name": "Markwerk", + "population": 42000, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ357c-S2", + "orbits_body_id": "GJ357c", + "station_type": "commercial", + "proper_name": "Kontor", + "population": 18000, + "governance_type": null, + "economic_role": "commercial" + }, + { + "station_id": "GJ357-belt-S1", + "orbits_body_id": "GJ357-belt", + "station_type": "industrial", + "proper_name": "Walzwerk", + "population": 8200, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ357c-S3", + "orbits_body_id": "GJ357c", + "station_type": "commercial", + "proper_name": "Torwache", + "population": 6400, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3988", @@ -2643,9 +22430,119 @@ "GJ 1289" ], "star_type": "k-m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 3988** has no population, no name anyone uses, and an automated relay station that has been broadcasting navigational data for two centuries without maintenance, which is either a testament to engineering quality or a sign that no one has been close enough to notice if something changed." + "gttr_excerpt": "**GJ 3988** has no population, no name anyone uses, and an automated relay station that has been broadcasting navigational data for two centuries without maintenance, which is either a testament to engineering quality or a sign that no one has been close enough to notice if something changed.", + "orbit_bodies": [ + { + "body_id": "GJ3988b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3988-belt", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3988c", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3988d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3988e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3988f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3988g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3988-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3988-oort-S1", + "orbits_body_id": "GJ3988-oort", + "station_type": "horizon", + "proper_name": "GJ 3988 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 402", @@ -2661,10 +22558,177 @@ "GJ 873" ], "star_type": "M4:", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "85,000,000", "gdp": "425.0 BTr", - "gttr_excerpt": "**PROSPECT HILL** spent 260 years becoming exactly what it was going to become, and then a three-gate junction arrived at its doorstep and the community discovered that becoming something and being able to explain what you are to institutional newcomers are two entirely different projects." + "gttr_excerpt": "**PROSPECT HILL** spent 260 years becoming exactly what it was going to become, and then a three-gate junction arrived at its doorstep and the community discovered that becoming something and being able to explain what you are to institutional newcomers are two entirely different projects.", + "orbit_bodies": [ + { + "body_id": "GJ402b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ402c-1", + "parent_body_id": "GJ402c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ402f-1", + "parent_body_id": "GJ402f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ402c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Arkwright", + "atmosphere": "standard", + "inhabited": true, + "population": 80000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ402f-2", + "parent_body_id": "GJ402f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ402d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ402e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ402f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ402g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ402h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ402-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ402-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ402c-S1", + "orbits_body_id": "GJ402c", + "station_type": "industrial", + "proper_name": "Brindle", + "population": 5000000, + "governance_type": null, + "economic_role": "extraction" + }, + { + "station_id": "GJ402-oort-S1", + "orbits_body_id": "GJ402-oort", + "station_type": "horizon", + "proper_name": "Standish", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 408", @@ -2680,10 +22744,177 @@ "GJ 1116A" ], "star_type": "M3", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "52,000,000", "gdp": "260.0 BTr", - "gttr_excerpt": "**OUDE KRAAL** is 500 years old, which means it has had time to stop being from somewhere and become somewhere, and is no longer interested in explaining the difference to newcomers." + "gttr_excerpt": "**OUDE KRAAL** is 500 years old, which means it has had time to stop being from somewhere and become somewhere, and is no longer interested in explaining the difference to newcomers.", + "orbit_bodies": [ + { + "body_id": "GJ408b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ408c-1", + "parent_body_id": "GJ408c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ408f-1", + "parent_body_id": "GJ408f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ408c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Steynplaas", + "atmosphere": "standard", + "inhabited": true, + "population": 50000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ408f-2", + "parent_body_id": "GJ408f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ408d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ408e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ408f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ408g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ408h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ408-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ408-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ408c-S1", + "orbits_body_id": "GJ408c", + "station_type": "commercial", + "proper_name": "Uitspan", + "population": 2000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ408-oort-S1", + "orbits_body_id": "GJ408-oort", + "station_type": "horizon", + "proper_name": "Laaste", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 4285", @@ -2698,10 +22929,156 @@ "GJ 635B" ], "star_type": "m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "80,240", "gdp": "160.5 MTr", - "gttr_excerpt": "**LAM'S PROSPECT** is named after a surveyor's phrase — \"prospective resource value, pending extraction assessment\" — which three hundred years of subsequent history have proven accurate in the most qualified sense: the resource value existed, and it has been extracted at a rate that the current generation will eventually have to confront." + "gttr_excerpt": "**LAM'S PROSPECT** is named after a surveyor's phrase — \"prospective resource value, pending extraction assessment\" — which three hundred years of subsequent history have proven accurate in the most qualified sense: the resource value existed, and it has been extracted at a rate that the current generation will eventually have to confront.", + "orbit_bodies": [ + { + "body_id": "GJ4285b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4285e-m1", + "parent_body_id": "GJ4285e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Lam's Prospect", + "atmosphere": "thin", + "inhabited": true, + "population": 80000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4285c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4285e-m2", + "parent_body_id": "GJ4285e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ4285-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ4285d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4285e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ4285f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4285g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ4285h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ4285-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ4285-oort-S1", + "orbits_body_id": "GJ4285-oort", + "station_type": "horizon", + "proper_name": "Lam's Prospect Horizon", + "population": 240, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 432A", @@ -2717,10 +23094,141 @@ "GJ 1005A" ], "star_type": "K0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "240", "gdp": "0.5 MTr", - "gttr_excerpt": "**KAUR'S OBSERVATORY** is not an official name — no governing authority has ever formally assigned it — but it appears on transit booking systems because researchers returning from this position needed a short way to say \"that very good seeing position at GJ 432A\" and Dr. Harjinder Kaur's catalog is what made the seeing position famous, and the transit booking systems are indifferent to formal authority." + "gttr_excerpt": "**KAUR'S OBSERVATORY** is not an official name — no governing authority has ever formally assigned it — but it appears on transit booking systems because researchers returning from this position needed a short way to say \"that very good seeing position at GJ 432A\" and Dr. Harjinder Kaur's catalog is what made the seeing position famous, and the transit booking systems are indifferent to formal authority.", + "orbit_bodies": [ + { + "body_id": "GJ432Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ432Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ432A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ432Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ432Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ432Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ432Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ432Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ432A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ432A-oort-S1", + "orbits_body_id": "GJ432A-oort", + "station_type": "horizon", + "proper_name": "Kaur's Observatory Horizon", + "population": 180, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ432A-L4-S1", + "orbits_body_id": "GJ432Ab", + "station_type": "research", + "proper_name": "Kaur Survey Platform", + "population": 60, + "governance_type": null, + "economic_role": "research" + } + ] }, { "system_id": "GJ 434", @@ -2736,9 +23244,119 @@ "GJ 682" ], "star_type": "M1Vvar", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 434** has no name other than its catalog designation, which is itself a form of description: a variable M-dwarf that nobody has decided is worth the investment, two apertures leading to Taishan and the outer reach, and a flare cycle predictable enough to schedule around and aggressive enough that everyone does." + "gttr_excerpt": "**GJ 434** has no name other than its catalog designation, which is itself a form of description: a variable M-dwarf that nobody has decided is worth the investment, two apertures leading to Taishan and the outer reach, and a flare cycle predictable enough to schedule around and aggressive enough that everyone does.", + "orbit_bodies": [ + { + "body_id": "GJ434b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ434c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Banteay", + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ434-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ434d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ434e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ434f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ434g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ434-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ434-oort-S1", + "orbits_body_id": "GJ434-oort", + "station_type": "horizon", + "proper_name": "GJ 434 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 442A", @@ -2754,10 +23372,177 @@ "GJ 3737" ], "star_type": "G3/G5V", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "15,004,080", "gdp": "75.0 BTr", - "gttr_excerpt": "**TORSBY** was named for a Swedish town in Värmland — not a direct transplant but a deliberate echo, the difference between \"this is where I'm from\" and \"this is what home sounds like,\" which is a distinction that founding families with genuine homesickness know precisely." + "gttr_excerpt": "**TORSBY** was named for a Swedish town in Värmland — not a direct transplant but a deliberate echo, the difference between \"this is where I'm from\" and \"this is what home sounds like,\" which is a distinction that founding families with genuine homesickness know precisely.", + "orbit_bodies": [ + { + "body_id": "GJ442Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ442Af-m1", + "parent_body_id": "GJ442Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ442Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ442Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Hagfors", + "atmosphere": "standard", + "inhabited": true, + "population": 15000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ442A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ442Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ442Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ442Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ442Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ442Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ442Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ442A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ442A-oort-S1", + "orbits_body_id": "GJ442A-oort", + "station_type": "horizon", + "proper_name": "Torsby Horizon", + "population": 480, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ442Ad-S1", + "orbits_body_id": "GJ442Ad", + "station_type": "industrial", + "proper_name": "Bruk", + "population": 3600, + "governance_type": null, + "economic_role": "manufacturing" + } + ] }, { "system_id": "GJ 451A", @@ -2774,10 +23559,180 @@ "GJ 644C" ], "star_type": "G8Vp", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "620", "gdp": "1.2 MTr", - "gttr_excerpt": "**GROOMBRIDGE 1830** retained its catalog name, which is the kind of thing that happens to wave 4 settlements that arrive at a junction position with a G8 sub-dwarf primary and no particular founding aspiration beyond connecting the systems around them." + "gttr_excerpt": "**GROOMBRIDGE 1830** retained its catalog name, which is the kind of thing that happens to wave 4 settlements that arrive at a junction position with a G8 sub-dwarf primary and no particular founding aspiration beyond connecting the systems around them.", + "orbit_bodies": [ + { + "body_id": "GJ451Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ451Af-m1", + "parent_body_id": "GJ451Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ451Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thick", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ451Af-m2", + "parent_body_id": "GJ451Af", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ451Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ451A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ451Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ451Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ451Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ451Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ451Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ451Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ451A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ451A-oort-S1", + "orbits_body_id": "GJ451A-oort", + "station_type": "horizon", + "proper_name": "Groombridge 1830 Horizon", + "population": 620, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 473A", @@ -2793,10 +23748,144 @@ "GJ 423B" ], "star_type": "dM5.5eJ", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "25,480", "gdp": "51.0 MTr", - "gttr_excerpt": "**PASSAGEM** means \"passage\" in Portuguese — not the act of arriving, not the act of departing, but the act of moving through — and in four hundred years of wave 2 settlement the community has developed an extremely precise understanding of the difference." + "gttr_excerpt": "**PASSAGEM** means \"passage\" in Portuguese — not the act of arriving, not the act of departing, but the act of moving through — and in four hundred years of wave 2 settlement the community has developed an extremely precise understanding of the difference.", + "orbit_bodies": [ + { + "body_id": "GJ473Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ473Ae-m1", + "parent_body_id": "GJ473Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ473Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Passagem", + "atmosphere": "standard", + "inhabited": true, + "population": 25000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ473A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ473Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ473Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ473Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ473Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ473Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ473A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ473A-oort-S1", + "orbits_body_id": "GJ473A-oort", + "station_type": "horizon", + "proper_name": "Passagem Horizon", + "population": 480, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 49", @@ -2811,10 +23900,120 @@ "GJ 1005A" ], "star_type": "M2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "12,140", "gdp": "24.3 MTr", - "gttr_excerpt": "**DERNIER QUAI** means \"last platform,\" and the community that named it three centuries ago did so with the wry precision of people who understood exactly what they were committing to — one gate, one way in and the same way out, the end of the line off a spur from Port Desrochers." + "gttr_excerpt": "**DERNIER QUAI** means \"last platform,\" and the community that named it three centuries ago did so with the wry precision of people who understood exactly what they were committing to — one gate, one way in and the same way out, the end of the line off a spur from Port Desrochers.", + "orbit_bodies": [ + { + "body_id": "GJ49b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ49c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Baume", + "atmosphere": "standard", + "inhabited": true, + "population": 12000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ49-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ49d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ49e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ49f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ49g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ49-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ49-oort-S1", + "orbits_body_id": "GJ49-oort", + "station_type": "horizon", + "proper_name": "Dernier Quai Horizon", + "population": 140, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 502", @@ -2831,10 +24030,198 @@ "GJ 453" ], "star_type": "G0V", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "180,020,400", "gdp": "900.1 BTr", - "gttr_excerpt": "**MERIDIAN** was named by surveyors who meant a dividing line, a reference point, a place from which distances are measured — and then the corridor developed around it in a way that made the name more precisely accurate than any naming committee has the right to expect." + "gttr_excerpt": "**MERIDIAN** was named by surveyors who meant a dividing line, a reference point, a place from which distances are measured — and then the corridor developed around it in a way that made the name more precisely accurate than any naming committee has the right to expect.", + "orbit_bodies": [ + { + "body_id": "GJ502b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ502f-m1", + "parent_body_id": "GJ502f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ502c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ502f-m2", + "parent_body_id": "GJ502f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ502d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Iter", + "atmosphere": "standard", + "inhabited": true, + "population": 180000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ502-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ502e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ502f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ502g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ502h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ502i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ502j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ502-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ502-oort-S1", + "orbits_body_id": "GJ502-oort", + "station_type": "horizon", + "proper_name": "Meridian Horizon", + "population": 4600, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ502d-S1", + "orbits_body_id": "GJ502d", + "station_type": "commercial", + "proper_name": "Nodus", + "population": 12000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ502d-S2", + "orbits_body_id": "GJ502d", + "station_type": "commercial", + "proper_name": "Praesidium", + "population": 3800, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 536", @@ -2849,10 +24236,156 @@ "GJ 388" ], "star_type": "K5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "20,110", "gdp": "40.2 MTr", - "gttr_excerpt": "**RETIRO** means retreat, in the Portuguese sense of a place one withdraws *to*, not from — a garden, a private space, a place where the noise stops — and the wave 3 founders who chose the name understood they were making a promise to themselves that the K5 star and the single dead-end gate would help them keep." + "gttr_excerpt": "**RETIRO** means retreat, in the Portuguese sense of a place one withdraws *to*, not from — a garden, a private space, a place where the noise stops — and the wave 3 founders who chose the name understood they were making a promise to themselves that the K5 star and the single dead-end gate would help them keep.", + "orbit_bodies": [ + { + "body_id": "GJ536b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ536e-m1", + "parent_body_id": "GJ536e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ536c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Retiro", + "atmosphere": "standard", + "inhabited": true, + "population": 20000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ536-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ536d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ536e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ536f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ536g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ536h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ536i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ536-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ536-oort-S1", + "orbits_body_id": "GJ536-oort", + "station_type": "horizon", + "proper_name": "Retiro Horizon", + "population": 110, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 555", @@ -2869,10 +24402,153 @@ "GJ 3379" ], "star_type": "M4", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "46,800", "gdp": "93.6 MTr", - "gttr_excerpt": "**TANAKA STATION** is named after the company that built it, which is a naming convention that produces honest results: you know immediately what you're dealing with, which is a transit waystation that became a settlement when workers brought families, families needed services, and services required permanent infrastructure, and the company was absorbed before the community had a chance to rename anything." + "gttr_excerpt": "**TANAKA STATION** is named after the company that built it, which is a naming convention that produces honest results: you know immediately what you're dealing with, which is a transit waystation that became a settlement when workers brought families, families needed services, and services required permanent infrastructure, and the company was absorbed before the community had a chance to rename anything.", + "orbit_bodies": [ + { + "body_id": "GJ555b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ555e-m1", + "parent_body_id": "GJ555e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ555c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Pulau Baru", + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ555-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ555d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ555e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ555f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ555g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ555h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ555-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ555-oort-S1", + "orbits_body_id": "GJ555-oort", + "station_type": "horizon", + "proper_name": "Tanaka Station Horizon", + "population": 1800, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ555-c-S1", + "orbits_body_id": "GJ555c", + "station_type": "industrial", + "proper_name": "Tanaka Platform", + "population": 45000, + "governance_type": null, + "economic_role": "manufacturing" + } + ] }, { "system_id": "GJ 581", @@ -2888,10 +24564,153 @@ "GJ 526" ], "star_type": "M5", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "10,340", "gdp": "20.7 MTr", - "gttr_excerpt": "**RØDVIK** means \"red bay\" in Norwegian, named for the reddish geological outcroppings visible under a dim stellar light that makes red the dominant color in most of what the eye encounters here." + "gttr_excerpt": "**RØDVIK** means \"red bay\" in Norwegian, named for the reddish geological outcroppings visible under a dim stellar light that makes red the dominant color in most of what the eye encounters here.", + "orbit_bodies": [ + { + "body_id": "GJ581b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ581e-m1", + "parent_body_id": "GJ581e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ581c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Glødberg", + "atmosphere": "standard", + "inhabited": true, + "population": 8200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ581-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ581d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ581e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ581f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ581g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ581h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ581-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ581-oort-S1", + "orbits_body_id": "GJ581-oort", + "station_type": "horizon", + "proper_name": "Rødvik Horizon", + "population": 340, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ581c-S1", + "orbits_body_id": "GJ581c", + "station_type": "industrial", + "proper_name": "Samvirke", + "population": 1800, + "governance_type": null, + "economic_role": "mining" + } + ] }, { "system_id": "GJ 625", @@ -2907,10 +24726,156 @@ "GJ 445" ], "star_type": "M2", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "2 habitable · 2 inhabited", "population": "2,651,200", "gdp": "5.3 BTr", - "gttr_excerpt": "**SONGJIANG** is one of the oldest systems in its part of the corridor, settled before the east_reach's character fully solidified, and has developed the particular quality of very old institutions in a moderately old context: it has relationships with the Assembly that have passed through multiple complete cycles of proximity, friction, and managed distance, and at this point the two parties understand each other well enough to be polite without either party expecting the other to change." + "gttr_excerpt": "**SONGJIANG** is one of the oldest systems in its part of the corridor, settled before the east_reach's character fully solidified, and has developed the particular quality of very old institutions in a moderately old context: it has relationships with the Assembly that have passed through multiple complete cycles of proximity, friction, and managed distance, and at this point the two parties understand each other well enough to be polite without either party expecting the other to change.", + "orbit_bodies": [ + { + "body_id": "GJ625b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ625e-m1", + "parent_body_id": "GJ625e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ625c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Songjiang Primary", + "atmosphere": "standard", + "inhabited": true, + "population": 2000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ625e-m2", + "parent_body_id": "GJ625e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ625d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Songjiang Secondary", + "atmosphere": "standard", + "inhabited": true, + "population": 650000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ625-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ625e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ625f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ625g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ625h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ625-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ625-oort-S1", + "orbits_body_id": "GJ625-oort", + "station_type": "horizon", + "proper_name": "Songjiang Horizon", + "population": 1200, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 631", @@ -2926,10 +24891,165 @@ "GJ 1116B" ], "star_type": "K2V", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "6,803,220", "gdp": "13.6 BTr", - "gttr_excerpt": "**BAKSHI SPUR** carries the name of a surveyor who went out on a branch of the western corridor to examine what was at the end of it, found refractory minerals of commercial value, and inadvertently founded a system that has been named after his navigation note ever since." + "gttr_excerpt": "**BAKSHI SPUR** carries the name of a surveyor who went out on a branch of the western corridor to examine what was at the end of it, found refractory minerals of commercial value, and inadvertently founded a system that has been named after his navigation note ever since.", + "orbit_bodies": [ + { + "body_id": "GJ631b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ631e-m1", + "parent_body_id": "GJ631e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ631c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Kiran", + "atmosphere": "standard", + "inhabited": true, + "population": 6800000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ631-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ631d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ631e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ631f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ631g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ631h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ631i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ631-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ631-oort-S1", + "orbits_body_id": "GJ631-oort", + "station_type": "horizon", + "proper_name": "Bakshi Spur Horizon", + "population": 420, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ631c-S1", + "orbits_body_id": "GJ631c", + "station_type": "industrial", + "proper_name": "Żar", + "population": 2800, + "governance_type": null, + "economic_role": "mining" + } + ] }, { "system_id": "GJ 638", @@ -2944,10 +25064,177 @@ "GJ 178" ], "star_type": "K7V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "600", "gdp": "1.2 MTr", - "gttr_excerpt": "**GREYMANTLE** is what happens when you take people from Ashfield — a community that names things for what it sees — and send them one gate further into a world made entirely of grey, and they name it accordingly." + "gttr_excerpt": "**GREYMANTLE** is what happens when you take people from Ashfield — a community that names things for what it sees — and send them one gate further into a world made entirely of grey, and they name it accordingly.", + "orbit_bodies": [ + { + "body_id": "GJ638b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ638g-1", + "parent_body_id": "GJ638g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ638c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ638g-2", + "parent_body_id": "GJ638g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ638d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Halton", + "atmosphere": "standard", + "inhabited": true, + "population": 600, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ638e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ638f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ638g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ638h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ638i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ638-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ638-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ638d-S1", + "orbits_body_id": "GJ638d", + "station_type": "industrial", + "proper_name": "Ridley", + "population": 0, + "governance_type": null, + "economic_role": "extraction" + }, + { + "station_id": "GJ638-oort-S1", + "orbits_body_id": "GJ638-oort", + "station_type": "horizon", + "proper_name": "Corbridge", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 643", @@ -2963,10 +25250,120 @@ "GJ 832" ], "star_type": "M4", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "8,320", "gdp": "16.6 MTr", - "gttr_excerpt": "**MARKTFELD** means \"market field,\" which is the most honest name in the western corridor, given by founders who were traders before they were settlers and saw no reason to pretend otherwise." + "gttr_excerpt": "**MARKTFELD** means \"market field,\" which is the most honest name in the western corridor, given by founders who were traders before they were settlers and saw no reason to pretend otherwise.", + "orbit_bodies": [ + { + "body_id": "GJ643b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ643c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Alsfeld", + "atmosphere": "standard", + "inhabited": true, + "population": 8000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ643-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ643d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ643e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ643f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ643g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ643-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ643-oort-S1", + "orbits_body_id": "GJ643-oort", + "station_type": "horizon", + "proper_name": "Marktfeld Horizon", + "population": 320, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 644A", @@ -2982,10 +25379,144 @@ "GJ 905" ], "star_type": "M3Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "18,440", "gdp": "36.9 MTr", - "gttr_excerpt": "**MAVELA** means \"to be born\" in Zulu — in the passive, the way the language constructs something that emerges without a clear agent behind it — and the founding generation chose it because two apertures forming a loop and a world with adequate conditions seemed less like something they had built than something they had found already waiting." + "gttr_excerpt": "**MAVELA** means \"to be born\" in Zulu — in the passive, the way the language constructs something that emerges without a clear agent behind it — and the founding generation chose it because two apertures forming a loop and a world with adequate conditions seemed less like something they had built than something they had found already waiting.", + "orbit_bodies": [ + { + "body_id": "GJ644Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ644Ae-m1", + "parent_body_id": "GJ644Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ644Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Mavela", + "atmosphere": "standard", + "inhabited": true, + "population": 18000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ644A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ644Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ644Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ644Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ644Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ644Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ644A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ644A-oort-S1", + "orbits_body_id": "GJ644A-oort", + "station_type": "horizon", + "proper_name": "Mavela Horizon", + "population": 440, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 661B", @@ -3001,10 +25532,180 @@ "GJ 183" ], "star_type": "F7V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "3,620", "gdp": "7.2 MTr", - "gttr_excerpt": "**BREËVLEI** means wide marsh, which is what the survey team named it when they catalogued the primary world's broad tidal lowlands before anyone lived there, and the settlers who arrived later decided this was accurate enough to keep." + "gttr_excerpt": "**BREËVLEI** means wide marsh, which is what the survey team named it when they catalogued the primary world's broad tidal lowlands before anyone lived there, and the settlers who arrived later decided this was accurate enough to keep.", + "orbit_bodies": [ + { + "body_id": "GJ661Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661Bf-m1", + "parent_body_id": "GJ661Bf", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ661Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661Bf-m2", + "parent_body_id": "GJ661Bf", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ661Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Velddrif", + "atmosphere": "standard", + "inhabited": true, + "population": 3500, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661B-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ661Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ661Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ661Bj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ661B-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ661B-oort-S1", + "orbits_body_id": "GJ661B-oort", + "station_type": "horizon", + "proper_name": "Breëvlei Horizon", + "population": 120, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 667C", @@ -3019,10 +25720,144 @@ "GJ 3379" ], "star_type": "M2.5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "3 habitable · 1 inhabited", "population": "400", "gdp": "0.8 MTr", - "gttr_excerpt": "**GLIESE 667** kept its scientific catalog name because the founding consortium argued, convincingly, that the system was being settled specifically because of its pre-settlement astronomical reputation, and that reputation was attached to the designation in the scientific literature, and that changing it would make it harder for researchers elsewhere to find the community's publications — an argument so practically sound that even the faction wanting to honor a founding benefactor conceded it." + "gttr_excerpt": "**GLIESE 667** kept its scientific catalog name because the founding consortium argued, convincingly, that the system was being settled specifically because of its pre-settlement astronomical reputation, and that reputation was attached to the designation in the scientific literature, and that changing it would make it harder for researchers elsewhere to find the community's publications — an argument so practically sound that even the faction wanting to honor a founding benefactor conceded it.", + "orbit_bodies": [ + { + "body_id": "GJ667Cb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Cf-m1", + "parent_body_id": "GJ667Cf", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ667Cc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Cd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Ce", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Nakhon Sung", + "atmosphere": "standard", + "inhabited": true, + "population": 320, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667C-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ667Cf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ667Cg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ667Ch", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ667C-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ667C-oort-S1", + "orbits_body_id": "GJ667C-oort", + "station_type": "horizon", + "proper_name": "Gliese 667 Horizon", + "population": 80, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 680", @@ -3038,10 +25873,189 @@ "GJ 1289" ], "star_type": "K5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "2 habitable · 2 inhabited", "population": "161,000,000", "gdp": "805.0 BTr", - "gttr_excerpt": "**CARNARVON** is the kind of spur-end system where the founding family's name appears on four of the seven primary agricultural regions, and no one has ever found this remarkable enough to comment on." + "gttr_excerpt": "**CARNARVON** is the kind of spur-end system where the founding family's name appears on four of the seven primary agricultural regions, and no one has ever found this remarkable enough to comment on.", + "orbit_bodies": [ + { + "body_id": "GJ680b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ680d-1", + "parent_body_id": "GJ680d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ680g-1", + "parent_body_id": "GJ680g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ680c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ680g-2", + "parent_body_id": "GJ680g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ680d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Tulbagh", + "atmosphere": "standard", + "inhabited": true, + "population": 150000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ680e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Hermanus", + "atmosphere": "standard", + "inhabited": true, + "population": 8000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ680f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ680g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ680h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ680i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ680-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ680-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ680d-S1", + "orbits_body_id": "GJ680d", + "station_type": "agricultural", + "proper_name": "Elsenburg", + "population": 3000000, + "governance_type": null, + "economic_role": "agriculture" + }, + { + "station_id": "GJ680-oort-S1", + "orbits_body_id": "GJ680-oort", + "station_type": "horizon", + "proper_name": "Yzerfontein", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 784", @@ -3057,10 +26071,156 @@ "GJ 1128" ], "star_type": "M0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "52,520", "gdp": "105.0 MTr", - "gttr_excerpt": "**KOVÁCS LOOP** is named for the transit route it sits on, which Endre Kovács identified in the gate survey data and built his settlement around, and which bears his name because the Hungarian mechanical engineer who recognized its value is the most interesting thing about a loop-member system in a steady-state industrial economy, which is not a criticism but a description." + "gttr_excerpt": "**KOVÁCS LOOP** is named for the transit route it sits on, which Endre Kovács identified in the gate survey data and built his settlement around, and which bears his name because the Hungarian mechanical engineer who recognized its value is the most interesting thing about a loop-member system in a steady-state industrial economy, which is not a criticism but a description.", + "orbit_bodies": [ + { + "body_id": "GJ784b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ784c-m1", + "parent_body_id": "GJ784c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Kovács Loop", + "atmosphere": "standard", + "inhabited": true, + "population": 52000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ784c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ784c-m2", + "parent_body_id": "GJ784c", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ784-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ784d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ784e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ784f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ784g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ784h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ784-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ784-oort-S1", + "orbits_body_id": "GJ784-oort", + "station_type": "horizon", + "proper_name": "Kovács Loop Horizon", + "population": 520, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 809", @@ -3075,10 +26235,153 @@ "GJ 229" ], "star_type": "M2V", + "currency_zone": "MIXED", "bodies": "1 habitable · 1 inhabited", "population": "5,780", "gdp": "11.6 MTr", - "gttr_excerpt": "**SEIÐRMAÐR** is the name that Seiðrmaðr's trade partners gave it, not the name the residents chose — because the residents named the system something unmemorable in their founding charter, and trade partners were not about to use it, because the people here make things that shouldn't work as well as they do, and \"the sorcerer\" is what you call that." + "gttr_excerpt": "**SEIÐRMAÐR** is the name that Seiðrmaðr's trade partners gave it, not the name the residents chose — because the residents named the system something unmemorable in their founding charter, and trade partners were not about to use it, because the people here make things that shouldn't work as well as they do, and \"the sorcerer\" is what you call that.", + "orbit_bodies": [ + { + "body_id": "GJ809b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ809e-m1", + "parent_body_id": "GJ809e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ809c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Standort", + "atmosphere": "standard", + "inhabited": true, + "population": 4200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ809-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ809d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ809e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ809f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ809g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ809h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ809-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ809-oort-S1", + "orbits_body_id": "GJ809-oort", + "station_type": "horizon", + "proper_name": "Seiðrmaðr Horizon", + "population": 180, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ809c-S1", + "orbits_body_id": "GJ809c", + "station_type": "industrial", + "proper_name": "Feldwerk", + "population": 1400, + "governance_type": null, + "economic_role": "manufacturing" + } + ] }, { "system_id": "GJ 827", @@ -3093,10 +26396,180 @@ "GJ 4053" ], "star_type": "F6V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "10,210", "gdp": "20.4 MTr", - "gttr_excerpt": "**SOLANDAR** is a corruption of a naturalist's name worn down over three centuries by local speech until the person and the place separated and the word became its own thing, which Captain Ayanda's descendants did not correct because it seemed appropriate." + "gttr_excerpt": "**SOLANDAR** is a corruption of a naturalist's name worn down over three centuries by local speech until the person and the place separated and the word became its own thing, which Captain Ayanda's descendants did not correct because it seemed appropriate.", + "orbit_bodies": [ + { + "body_id": "GJ827b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ827f-m1", + "parent_body_id": "GJ827f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ827c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thick", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ827f-m2", + "parent_body_id": "GJ827f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ827d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Solandar", + "atmosphere": "standard", + "inhabited": true, + "population": 10000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ827-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ827e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ827f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ827g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ827h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ827i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ827j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ827-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ827-oort-S1", + "orbits_body_id": "GJ827-oort", + "station_type": "horizon", + "proper_name": "Solandar Horizon", + "population": 210, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 829", @@ -3112,10 +26585,144 @@ "GJ 54" ], "star_type": "M4", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "3,280", "gdp": "6.6 MTr", - "gttr_excerpt": "**POSTO AVANÇADO** means \"forward post\" — the place beyond the established line — and the wave 5 founders who named it forty years ago were both accurately describing their situation and slightly overestimating its romance." + "gttr_excerpt": "**POSTO AVANÇADO** means \"forward post\" — the place beyond the established line — and the wave 5 founders who named it forty years ago were both accurately describing their situation and slightly overestimating its romance.", + "orbit_bodies": [ + { + "body_id": "GJ829b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ829e-m1", + "parent_body_id": "GJ829e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ829c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Posto Avançado", + "atmosphere": "thin", + "inhabited": true, + "population": 3000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ829-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ829d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ829e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ829f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ829g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ829h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ829-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ829-oort-S1", + "orbits_body_id": "GJ829-oort", + "station_type": "horizon", + "proper_name": "Posto Avançado Horizon", + "population": 280, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 83.1", @@ -3131,10 +26738,144 @@ "GJ 884" ], "star_type": "dM8 e", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "14,460", "gdp": "28.9 MTr", - "gttr_excerpt": "**FAROL** means lighthouse, and the wave 2 founders who named it four hundred years ago were marking the edge of the settled Reach — not for the ships coming in, but for the people looking out, measuring the distance between what they had built and what lay beyond it." + "gttr_excerpt": "**FAROL** means lighthouse, and the wave 2 founders who named it four hundred years ago were marking the edge of the settled Reach — not for the ships coming in, but for the people looking out, measuring the distance between what they had built and what lay beyond it.", + "orbit_bodies": [ + { + "body_id": "GJ83.1b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ83.1e-m1", + "parent_body_id": "GJ83.1e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ83.1c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Farol", + "atmosphere": "thin", + "inhabited": true, + "population": 14000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ83.1-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ83.1d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ83.1e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ83.1f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ83.1g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ83.1h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ83.1-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ83.1-oort-S1", + "orbits_body_id": "GJ83.1-oort", + "station_type": "horizon", + "proper_name": "Farol Horizon", + "population": 460, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 880", @@ -3149,10 +26890,165 @@ "GJ 877" ], "star_type": "M2:", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,500", "gdp": "3.0 MTr", - "gttr_excerpt": "**HOLGERSEN'S LANDING** is named for where Erik Holgersen stopped, which is not a particularly inspiring origin story until you taste what the community has been doing with their isolation for three hundred years." + "gttr_excerpt": "**HOLGERSEN'S LANDING** is named for where Erik Holgersen stopped, which is not a particularly inspiring origin story until you taste what the community has been doing with their isolation for three hundred years.", + "orbit_bodies": [ + { + "body_id": "GJ880b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ880f-1", + "parent_body_id": "GJ880f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ880c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Kongsberg", + "atmosphere": "standard", + "inhabited": true, + "population": 1000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ880f-2", + "parent_body_id": "GJ880f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ880d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ880e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ880f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ880g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ880h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ880-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ880-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ880c-S1", + "orbits_body_id": "GJ880c", + "station_type": "agricultural", + "proper_name": "Leirvik", + "population": 500, + "governance_type": null, + "economic_role": "agriculture" + }, + { + "station_id": "GJ880-oort-S1", + "orbits_body_id": "GJ880-oort", + "station_type": "horizon", + "proper_name": "Hammerfest", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 896A", @@ -3169,10 +27065,144 @@ "GJ 1116B" ], "star_type": "M6Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "220,001,200", "gdp": "3.3 TTr", - "gttr_excerpt": "**NOWA HUTA** means \"new steelworks\" in Polish, after the industrial district built outside Kraków in the twentieth century — a name that carried complicated history when the founding families chose it, and that they chose deliberately, because this was a place being built from nothing to make things, and the name acknowledged the ambition and the difficulty without pretending the difficulty was not real." + "gttr_excerpt": "**NOWA HUTA** means \"new steelworks\" in Polish, after the industrial district built outside Kraków in the twentieth century — a name that carried complicated history when the founding families chose it, and that they chose deliberately, because this was a place being built from nothing to make things, and the name acknowledged the ambition and the difficulty without pretending the difficulty was not real.", + "orbit_bodies": [ + { + "body_id": "GJ896Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ896Ae-m1", + "parent_body_id": "GJ896Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ896Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Nowa Huta", + "atmosphere": "standard", + "inhabited": true, + "population": 220000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ896A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ896Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ896Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ896Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ896Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ896Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ896A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ896A-oort-S1", + "orbits_body_id": "GJ896A-oort", + "station_type": "horizon", + "proper_name": "Nowa Huta Horizon", + "population": 1200, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 103", @@ -3187,10 +27217,132 @@ "GJ 357" ], "star_type": "K7V comp SB", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "4,320", "gdp": "8.6 MTr", - "gttr_excerpt": "**BESTEVAER** is an ocean world at the end of a dead-end branch, seven hops from Gateway, where Dutch settlers arrived, looked at a planet that was mostly water, and built what their heritage demanded they build: things that float." + "gttr_excerpt": "**BESTEVAER** is an ocean world at the end of a dead-end branch, seven hops from Gateway, where Dutch settlers arrived, looked at a planet that was mostly water, and built what their heritage demanded they build: things that float.", + "orbit_bodies": [ + { + "body_id": "GJ103b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ103c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Vlieland", + "atmosphere": "standard", + "inhabited": true, + "population": 4200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ103-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ103d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ103e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ103f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ103g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ103h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ103-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ103-oort-S1", + "orbits_body_id": "GJ103-oort", + "station_type": "horizon", + "proper_name": "Bestevaer Horizon", + "population": 120, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1075", @@ -3205,10 +27357,156 @@ "GJ 435" ], "star_type": "K7V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "74,320", "gdp": "148.6 MTr", - "gttr_excerpt": "**ESPINHO** was named for a thorny coastal Portuguese town that people passed through on their way to somewhere more interesting, which the founders considered an accurate description of their intentions and which has remained accurate in ways they did not entirely anticipate." + "gttr_excerpt": "**ESPINHO** was named for a thorny coastal Portuguese town that people passed through on their way to somewhere more interesting, which the founders considered an accurate description of their intentions and which has remained accurate in ways they did not entirely anticipate.", + "orbit_bodies": [ + { + "body_id": "GJ1075b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1075d-m1", + "parent_body_id": "GJ1075d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1075c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Espinho", + "atmosphere": "standard", + "inhabited": true, + "population": 74000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1075-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1075d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1075e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1075f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1075g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1075h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1075i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1075-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1075-oort-S1", + "orbits_body_id": "GJ1075-oort", + "station_type": "horizon", + "proper_name": "Espinho Horizon", + "population": 320, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 107A", @@ -3223,10 +27521,168 @@ "GJ 660A" ], "star_type": "F7V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "180,420", "gdp": "360.8 MTr", - "gttr_excerpt": "**TÌNH YÊN** means \"peaceful,\" which the founders chose with the slight irony of settlers who had seen the world they were about to inhabit — blue-white light, cool surface, substantial ultraviolet loading — and decided the name should describe what they intended rather than what they encountered." + "gttr_excerpt": "**TÌNH YÊN** means \"peaceful,\" which the founders chose with the slight irony of settlers who had seen the world they were about to inhabit — blue-white light, cool surface, substantial ultraviolet loading — and decided the name should describe what they intended rather than what they encountered.", + "orbit_bodies": [ + { + "body_id": "GJ107Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ107Af-m1", + "parent_body_id": "GJ107Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ107Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ107Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ107Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Tình Yên", + "atmosphere": "standard", + "inhabited": true, + "population": 180000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ107A-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ107Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ107Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ107Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ107Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ107Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ107A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ107A-oort-S1", + "orbits_body_id": "GJ107A-oort", + "station_type": "horizon", + "proper_name": "Tình Yên Horizon", + "population": 420, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 117", @@ -3242,9 +27698,119 @@ "GJ 434" ], "star_type": "M1V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 117** is an empty through_route that nobody settled, not because anything was wrong with it, but because the timing was unfavorable and the populations that might have seeded a community here had somewhere closer to go." + "gttr_excerpt": "**GJ 117** is an empty through_route that nobody settled, not because anything was wrong with it, but because the timing was unfavorable and the populations that might have seeded a community here had somewhere closer to go.", + "orbit_bodies": [ + { + "body_id": "GJ117b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ117c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ117-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ117d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Doi Kaeo", + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ117e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ117f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ117g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ117-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ117-oort-S1", + "orbits_body_id": "GJ117-oort", + "station_type": "horizon", + "proper_name": "GJ 117 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1232", @@ -3260,10 +27826,153 @@ "GJ 624" ], "star_type": "k-m", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 2 inhabited", "population": "52,003,000", "gdp": "260.0 BTr", - "gttr_excerpt": "**GAMMELSTAD** means \"old town,\" and the name is accurate in ways that become apparent slowly: there are buildings in the lowland districts of the primary settlement that have been continuously occupied for four hundred years, and the people inside them are governing under a charter whose preamble predates the Assembly's current institutional form." + "gttr_excerpt": "**GAMMELSTAD** means \"old town,\" and the name is accurate in ways that become apparent slowly: there are buildings in the lowland districts of the primary settlement that have been continuously occupied for four hundred years, and the people inside them are governing under a charter whose preamble predates the Assembly's current institutional form.", + "orbit_bodies": [ + { + "body_id": "GJ1232b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1232e-m1", + "parent_body_id": "GJ1232e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Malmvik", + "atmosphere": null, + "inhabited": true, + "population": 420, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1232c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Gammla", + "atmosphere": "standard", + "inhabited": true, + "population": 52000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1232-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1232d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1232e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1232f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1232g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1232h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1232-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1232-oort-S1", + "orbits_body_id": "GJ1232-oort", + "station_type": "horizon", + "proper_name": "Gammelstad Horizon", + "population": 380, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ1232c-S1", + "orbits_body_id": "GJ1232c", + "station_type": "agricultural", + "proper_name": "Torget", + "population": 2200, + "governance_type": null, + "economic_role": "agricultural" + } + ] }, { "system_id": "GJ 1235", @@ -3280,10 +27989,132 @@ "GJ 83.1" ], "star_type": "K5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "32,800", "gdp": "65.6 MTr", - "gttr_excerpt": "**KNOTENPUNKT** is the junction at the end of a corridor that the Reach's founders were optimistic about, which makes it a four-hundred-year monument to optimism and a transit hub of genuine ongoing necessity, both simultaneously and without apparent contradiction." + "gttr_excerpt": "**KNOTENPUNKT** is the junction at the end of a corridor that the Reach's founders were optimistic about, which makes it a four-hundred-year monument to optimism and a transit hub of genuine ongoing necessity, both simultaneously and without apparent contradiction.", + "orbit_bodies": [ + { + "body_id": "GJ1235b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1235c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Wetzlar", + "atmosphere": "standard", + "inhabited": true, + "population": 28000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1235-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1235d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1235e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1235f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1235g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1235h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1235-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1235-oort-S1", + "orbits_body_id": "GJ1235-oort", + "station_type": "horizon", + "proper_name": "Knotenpunkt Horizon", + "population": 4800, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 124", @@ -3299,10 +28130,180 @@ "GJ 268" ], "star_type": "G0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "380,850", "gdp": "761.7 MTr", - "gttr_excerpt": "**HẠ LONG** was named after a bay on old Earth, a place of limestone formations rising from shallow water so unlikely they looked artificial, and the founders chose the name because HL-Tienlong's ring system of unusual density stopped them the way that landscape must have stopped people on Earth — not with awe exactly, but with the specific feeling of encountering something that does not quite fit your category for natural things." + "gttr_excerpt": "**HẠ LONG** was named after a bay on old Earth, a place of limestone formations rising from shallow water so unlikely they looked artificial, and the founders chose the name because HL-Tienlong's ring system of unusual density stopped them the way that landscape must have stopped people on Earth — not with awe exactly, but with the specific feeling of encountering something that does not quite fit your category for natural things.", + "orbit_bodies": [ + { + "body_id": "GJ124b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ124f-m1", + "parent_body_id": "GJ124f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ124c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ124f-m2", + "parent_body_id": "GJ124f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ124d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Hạ Long Prime", + "atmosphere": "standard", + "inhabited": true, + "population": 380000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ124e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ124-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ124f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": "HL-Tienlong", + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ124g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ124h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ124i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ124j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ124-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ124-oort-S1", + "orbits_body_id": "GJ124-oort", + "station_type": "horizon", + "proper_name": "Hạ Long Horizon", + "population": 850, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 169", @@ -3317,10 +28318,132 @@ "GJ 482B" ], "star_type": "M0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "6,080", "gdp": "12.2 MTr", - "gttr_excerpt": "**POSTO AVANÇADO** named itself \"forward post\" and has spent two centuries making the name accurate, which is a more unusual achievement in the deep frontier than it sounds." + "gttr_excerpt": "**POSTO AVANÇADO** named itself \"forward post\" and has spent two centuries making the name accurate, which is a more unusual achievement in the deep frontier than it sounds.", + "orbit_bodies": [ + { + "body_id": "GJ169b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ169c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Elvas", + "atmosphere": "standard", + "inhabited": true, + "population": 6000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ169-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ169d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ169e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ169f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ169g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ169h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ169-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ169-oort-S1", + "orbits_body_id": "GJ169-oort", + "station_type": "horizon", + "proper_name": "Posto Avançado Horizon", + "population": 80, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 172", @@ -3337,10 +28460,156 @@ "GJ 620.1A" ], "star_type": "K8V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "421,400", "gdp": "842.8 MTr", - "gttr_excerpt": "**KAELONG** feeds three adjacent corridor systems with a single proprietary grain variety that two centuries of selective development have made extremely good and which no one else can replicate, because the genetic archive that would tell them how is held under trade-secret protections at hop 7, which puts it well outside the range of anyone who might want to litigate the question." + "gttr_excerpt": "**KAELONG** feeds three adjacent corridor systems with a single proprietary grain variety that two centuries of selective development have made extremely good and which no one else can replicate, because the genetic archive that would tell them how is held under trade-secret protections at hop 7, which puts it well outside the range of anyone who might want to litigate the question.", + "orbit_bodies": [ + { + "body_id": "GJ172b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ172e-m1", + "parent_body_id": "GJ172e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ172c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Kaelong", + "atmosphere": "standard", + "inhabited": true, + "population": 420000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ172d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ172-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ172e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ172f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ172g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ172h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ172i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ172-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ172-oort-S1", + "orbits_body_id": "GJ172-oort", + "station_type": "horizon", + "proper_name": "Kaelong Horizon", + "population": 1400, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 208", @@ -3355,10 +28624,156 @@ "GJ 502" ], "star_type": "K7", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "840", "gdp": "1.7 MTr", - "gttr_excerpt": "**PEREIRA'S REST** was named by its founder with intent — Henrique Pereira, who spent thirty years in south_reach shipping logistics and then used what he'd saved to buy somewhere the institutions he'd worked around couldn't easily follow." + "gttr_excerpt": "**PEREIRA'S REST** was named by its founder with intent — Henrique Pereira, who spent thirty years in south_reach shipping logistics and then used what he'd saved to buy somewhere the institutions he'd worked around couldn't easily follow.", + "orbit_bodies": [ + { + "body_id": "GJ208b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ208e-m1", + "parent_body_id": "GJ208e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ208c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Remanso", + "atmosphere": "standard", + "inhabited": true, + "population": 800, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ208-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ208d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ208e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ208f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ208g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ208h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ208i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ208-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ208-oort-S1", + "orbits_body_id": "GJ208-oort", + "station_type": "horizon", + "proper_name": "Pereira's Rest Horizon", + "population": 40, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 231", @@ -3374,10 +28789,198 @@ "GJ 581" ], "star_type": "G5V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "35,007,780", "gdp": "175.0 BTr", - "gttr_excerpt": "**THORVALDSEN'S CIRCUIT** is named for a geologist who surveyed it four hundred years ago, which is fitting because the system has spent those four centuries doing what geologists do: looking at what's there, working out what it means, and revising the conclusions when the data changes." + "gttr_excerpt": "**THORVALDSEN'S CIRCUIT** is named for a geologist who surveyed it four hundred years ago, which is fitting because the system has spent those four centuries doing what geologists do: looking at what's there, working out what it means, and revising the conclusions when the data changes.", + "orbit_bodies": [ + { + "body_id": "GJ231b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ231f-m1", + "parent_body_id": "GJ231f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ231c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ231f-m2", + "parent_body_id": "GJ231f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ231d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Britta's Landing", + "atmosphere": "standard", + "inhabited": true, + "population": 35000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ231-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ231e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ231f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ231g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ231h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ231i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ231j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ231-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ231-oort-S1", + "orbits_body_id": "GJ231-oort", + "station_type": "horizon", + "proper_name": "Thorvaldsen's Circuit Horizon", + "population": 580, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ231d-S1", + "orbits_body_id": "GJ231d", + "station_type": "research", + "proper_name": "Højskolen", + "population": 4800, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ231d-S2", + "orbits_body_id": "GJ231d", + "station_type": "industrial", + "proper_name": "Smelteriet", + "population": 2400, + "governance_type": null, + "economic_role": "manufacturing" + } + ] }, { "system_id": "GJ 27", @@ -3393,10 +28996,168 @@ "GJ 3323" ], "star_type": "K0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "290,620", "gdp": "581.2 MTr", - "gttr_excerpt": "**OKAHANDJA** was named for a place in Namibia whose history with the Herero people was inseparable from treaties and their consequences, and the founding families chose it precisely because it carried weight — a name that required something of anyone who used it." + "gttr_excerpt": "**OKAHANDJA** was named for a place in Namibia whose history with the Herero people was inseparable from treaties and their consequences, and the founding families chose it precisely because it carried weight — a name that required something of anyone who used it.", + "orbit_bodies": [ + { + "body_id": "GJ27b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ27e-m1", + "parent_body_id": "GJ27e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ27c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thick", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ27e-m2", + "parent_body_id": "GJ27e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ27d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Okahandja", + "atmosphere": "standard", + "inhabited": true, + "population": 290000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ27-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ27e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ27f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ27g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ27h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ27i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ27-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ27-oort-S1", + "orbits_body_id": "GJ27-oort", + "station_type": "horizon", + "proper_name": "Okahandja Horizon", + "population": 620, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 286", @@ -3412,10 +29173,168 @@ "GJ 598" ], "star_type": "G8V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "15,480", "gdp": "31.0 MTr", - "gttr_excerpt": "**WEITBLICK** means \"far sight\" — the view from a high place, the ability to see a long distance — and from hop 7 in the deep frontier, looking back toward the Reach's center, the distance is exceptional. The question the name leaves open is whether anyone is looking back." + "gttr_excerpt": "**WEITBLICK** means \"far sight\" — the view from a high place, the ability to see a long distance — and from hop 7 in the deep frontier, looking back toward the Reach's center, the distance is exceptional. The question the name leaves open is whether anyone is looking back.", + "orbit_bodies": [ + { + "body_id": "GJ286b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ286e-m1", + "parent_body_id": "GJ286e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ286c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Arnsberg", + "atmosphere": "standard", + "inhabited": true, + "population": 15000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ286d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ286-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ286e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ286f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ286g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ286h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ286i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ286j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ286-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ286-oort-S1", + "orbits_body_id": "GJ286-oort", + "station_type": "horizon", + "proper_name": "Weitblick Horizon", + "population": 480, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 320", @@ -3431,10 +29350,165 @@ "GJ 150" ], "star_type": "K2V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "65,004,920", "gdp": "325.0 BTr", - "gttr_excerpt": "**SONNWEND** means \"solstice\" — the turning point of the sun — and the system it names is where the Compact of Westphalia's food independence either holds or doesn't, which gives the name a weight the founding agricultural consortium probably intended and perhaps did not fully anticipate." + "gttr_excerpt": "**SONNWEND** means \"solstice\" — the turning point of the sun — and the system it names is where the Compact of Westphalia's food independence either holds or doesn't, which gives the name a weight the founding agricultural consortium probably intended and perhaps did not fully anticipate.", + "orbit_bodies": [ + { + "body_id": "GJ320b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ320e-m1", + "parent_body_id": "GJ320e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ320c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Wend", + "atmosphere": "standard", + "inhabited": true, + "population": 65000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ320-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ320d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ320e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ320f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ320g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ320h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ320i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ320-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ320-oort-S1", + "orbits_body_id": "GJ320-oort", + "station_type": "horizon", + "proper_name": "Sonnwend Horizon", + "population": 720, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ320c-S1", + "orbits_body_id": "GJ320c", + "station_type": "agricultural", + "proper_name": "Kornhaus", + "population": 4200, + "governance_type": null, + "economic_role": "agricultural" + } + ] }, { "system_id": "GJ 325A", @@ -3449,10 +29523,156 @@ "GJ 137" ], "star_type": "K5 V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "95,280", "gdp": "190.6 MTr", - "gttr_excerpt": "**PURNIMA** is a tide-locked world at the end of a dead-end spur, where the light has been the same angle for four hundred million years and the settlers who arrived three hundred years ago found this beautiful and then found the geology underneath beautiful in a more commercially useful way." + "gttr_excerpt": "**PURNIMA** is a tide-locked world at the end of a dead-end spur, where the light has been the same angle for four hundred million years and the settlers who arrived three hundred years ago found this beautiful and then found the geology underneath beautiful in a more commercially useful way.", + "orbit_bodies": [ + { + "body_id": "GJ325Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ325Ae-m1", + "parent_body_id": "GJ325Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ325Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Purnima", + "atmosphere": "standard", + "inhabited": true, + "population": 95000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ325Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ325A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ325Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ325Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ325Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ325Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ325Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ325A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ325A-oort-S1", + "orbits_body_id": "GJ325A-oort", + "station_type": "horizon", + "proper_name": "Purnima Horizon", + "population": 280, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 325B", @@ -3467,9 +29687,167 @@ "GJ 3323" ], "star_type": "K6 V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 325B** has no name. The designation is a catalog artifact, the \"B\" a bookkeeping remnant of old survey conventions that assigned companion suffixes to stars in loosely associated moving groups, a classification that means nothing operationally and has never been corrected because no one who cares about such things lives here." + "gttr_excerpt": "**GJ 325B** has no name. The designation is a catalog artifact, the \"B\" a bookkeeping remnant of old survey conventions that assigned companion suffixes to stars in loosely associated moving groups, a classification that means nothing operationally and has never been corrected because no one who cares about such things lives here.", + "orbit_bodies": [ + { + "body_id": "GJ325Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ325Be-m1", + "parent_body_id": "GJ325Be", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ325Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ325Be-m2", + "parent_body_id": "GJ325Be", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ325B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ325Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ325Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ325Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ325Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ325Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ325Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ325B-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ325B-oort-S1", + "orbits_body_id": "GJ325B-oort", + "station_type": "horizon", + "proper_name": "GJ 325B Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3442", @@ -3484,10 +29862,120 @@ "GJ 211" ], "star_type": "M0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "5,065", "gdp": "10.1 MTr", - "gttr_excerpt": "**ÚLTIMO FAROL** is the last lighthouse, which is what the name says, which is exactly what the place is, and which the community takes more seriously than most communities take their names." + "gttr_excerpt": "**ÚLTIMO FAROL** is the last lighthouse, which is what the name says, which is exactly what the place is, and which the community takes more seriously than most communities take their names.", + "orbit_bodies": [ + { + "body_id": "GJ3442b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3442c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Sagres", + "atmosphere": "standard", + "inhabited": true, + "population": 5000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3442-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3442d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3442e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3442f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3442g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3442-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3442-oort-S1", + "orbits_body_id": "GJ3442-oort", + "station_type": "horizon", + "proper_name": "Último Farol Horizon", + "population": 65, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 356A", @@ -3502,10 +29990,168 @@ "GJ 643" ], "star_type": "F6V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "3,285", "gdp": "6.6 MTr", - "gttr_excerpt": "**LICHTUNG** means \"clearing\" — the gap in the forest where the light gets through — and after the succession of dim M-dwarfs that line the corridor between here and Hansestadt, the F-type primary waiting at the end genuinely earns the name." + "gttr_excerpt": "**LICHTUNG** means \"clearing\" — the gap in the forest where the light gets through — and after the succession of dim M-dwarfs that line the corridor between here and Hansestadt, the F-type primary waiting at the end genuinely earns the name.", + "orbit_bodies": [ + { + "body_id": "GJ356Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ356Ae-m1", + "parent_body_id": "GJ356Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ356Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Sonneberg", + "atmosphere": "standard", + "inhabited": true, + "population": 3200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ356Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ356A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ356Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ356Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ356Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ356Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ356Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ356Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ356A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ356A-oort-S1", + "orbits_body_id": "GJ356A-oort", + "station_type": "horizon", + "proper_name": "Lichtung Horizon", + "population": 85, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 370", @@ -3520,10 +30166,165 @@ "GJ 150" ], "star_type": "K5V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "28,001,580", "gdp": "140.0 BTr", - "gttr_excerpt": "**TRAAGWATER** means \"slow water\" — a practical descriptor written into a survey record by a Dutch-heritage settler watching the sluggish rivers and gentle tides of a water-rich world — and the name stuck because no one thought of a better one before the first generation was gone, which is how the most accurate names often happen." + "gttr_excerpt": "**TRAAGWATER** means \"slow water\" — a practical descriptor written into a survey record by a Dutch-heritage settler watching the sluggish rivers and gentle tides of a water-rich world — and the name stuck because no one thought of a better one before the first generation was gone, which is how the most accurate names often happen.", + "orbit_bodies": [ + { + "body_id": "GJ370b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ370e-m1", + "parent_body_id": "GJ370e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ370c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Laag", + "atmosphere": "standard", + "inhabited": true, + "population": 28000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ370-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ370d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ370e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ370f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ370g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ370h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ370i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ370-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ370-oort-S1", + "orbits_body_id": "GJ370-oort", + "station_type": "horizon", + "proper_name": "Traagwater Horizon", + "population": 180, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ370c-S1", + "orbits_body_id": "GJ370c", + "station_type": "agricultural", + "proper_name": "Veiling", + "population": 1400, + "governance_type": null, + "economic_role": "agricultural" + } + ] }, { "system_id": "GJ 3737", @@ -3539,10 +30340,165 @@ "GJ 414A" ], "star_type": "M4", + "currency_zone": "MARK_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "8,620", "gdp": "17.2 MTr", - "gttr_excerpt": "**NYRHEIM** means \"new home\" in Norwegian, and the name is accurate in the way that names given by people who have just arrived somewhere are always accurate: the home is genuinely new, the newness is still the defining fact about it, and what it will eventually become is still being argued about." + "gttr_excerpt": "**NYRHEIM** means \"new home\" in Norwegian, and the name is accurate in the way that names given by people who have just arrived somewhere are always accurate: the home is genuinely new, the newness is still the defining fact about it, and what it will eventually become is still being argued about.", + "orbit_bodies": [ + { + "body_id": "GJ3737b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3737e-m1", + "parent_body_id": "GJ3737e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3737c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3737e-m2", + "parent_body_id": "GJ3737e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": "Kvitfjell", + "atmosphere": "trace", + "inhabited": true, + "population": 2200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3737-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3737d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3737e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3737f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3737g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3737h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3737-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3737-oort-S1", + "orbits_body_id": "GJ3737-oort", + "station_type": "horizon", + "proper_name": "Nyrheim Horizon", + "population": 420, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ3737e-S1", + "orbits_body_id": "GJ3737e", + "station_type": "commercial", + "proper_name": "the Rig", + "population": 6000, + "governance_type": null, + "economic_role": "manufacturing" + } + ] }, { "system_id": "GJ 393", @@ -3561,10 +30517,156 @@ "GJ 54.1" ], "star_type": "M2", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "49,800", "gdp": "99.6 MTr", - "gttr_excerpt": "**ENCRUCIJADA** means crossroads in Spanish, and the founding team chose the name without irony because this was a system with five gate apertures and no settlement, and someone needed to stop finding reasons not to fix that." + "gttr_excerpt": "**ENCRUCIJADA** means crossroads in Spanish, and the founding team chose the name without irony because this was a system with five gate apertures and no settlement, and someone needed to stop finding reasons not to fix that.", + "orbit_bodies": [ + { + "body_id": "GJ393b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ393e-m1", + "parent_body_id": "GJ393e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ393c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Encrucijada", + "atmosphere": "standard", + "inhabited": true, + "population": 48000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ393e-m2", + "parent_body_id": "GJ393e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ393-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ393d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ393e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ393f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ393g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ393h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ393-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ393-oort-S1", + "orbits_body_id": "GJ393-oort", + "station_type": "horizon", + "proper_name": "Encrucijada Horizon", + "population": 1800, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 410", @@ -3579,10 +30681,165 @@ "GJ 408" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "16", "gdp": "0.0 MTr", - "gttr_excerpt": "**WAGTORING** appears in at least one regional registry as uninhabited, which is technically false, and the community responsible for the error has never corrected it, which is technically deliberate." + "gttr_excerpt": "**WAGTORING** appears in at least one regional registry as uninhabited, which is technically false, and the community responsible for the error has never corrected it, which is technically deliberate.", + "orbit_bodies": [ + { + "body_id": "GJ410b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ410f-1", + "parent_body_id": "GJ410f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ410c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ410d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ410e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ410f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ410g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ410h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ410i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ410-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ410-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ410-belt-S1", + "orbits_body_id": "GJ410-belt", + "station_type": "military", + "proper_name": "Brandwag", + "population": 16, + "governance_type": null, + "economic_role": "research" + }, + { + "station_id": "GJ410-oort-S1", + "orbits_body_id": "GJ410-oort", + "station_type": "horizon", + "proper_name": "Grens", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 423A", @@ -3598,10 +30855,168 @@ "GJ 3135" ], "star_type": "G0 Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "150,520", "gdp": "301.0 MTr", - "gttr_excerpt": "**MARUNONG** means \"skilled\" or \"knowing\" in Filipino, which the Wave 3 founders chose because they were going to live by skill in water, and three hundred years later the skill they promised is clearly visible in a shelf aquaculture system so technically sophisticated that the distinction between fishing and farming collapsed into a single discipline called *pag-alaga* — caretaking, tending — somewhere around the second generation." + "gttr_excerpt": "**MARUNONG** means \"skilled\" or \"knowing\" in Filipino, which the Wave 3 founders chose because they were going to live by skill in water, and three hundred years later the skill they promised is clearly visible in a shelf aquaculture system so technically sophisticated that the distinction between fishing and farming collapsed into a single discipline called *pag-alaga* — caretaking, tending — somewhere around the second generation.", + "orbit_bodies": [ + { + "body_id": "GJ423Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423Af-m1", + "parent_body_id": "GJ423Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ423Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Marunong", + "atmosphere": "standard", + "inhabited": true, + "population": 150000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423A-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ423Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ423Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ423Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ423A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ423A-oort-S1", + "orbits_body_id": "GJ423A-oort", + "station_type": "horizon", + "proper_name": "Marunong Horizon", + "population": 520, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 423B", @@ -3617,10 +31032,180 @@ "GJ 67" ], "star_type": "G0 Ve", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "390,820", "gdp": "781.6 MTr", - "gttr_excerpt": "**QUILOMBO** was chosen deliberately by people who knew exactly what they were choosing — a quilombo was a settlement formed by self-liberated enslaved Africans in colonial Brazil, a functioning society with its own governance, agriculture, and defense, proof that the people who had been told they were incapable of self-organization were capable of building something better than what they had been forced to participate in." + "gttr_excerpt": "**QUILOMBO** was chosen deliberately by people who knew exactly what they were choosing — a quilombo was a settlement formed by self-liberated enslaved Africans in colonial Brazil, a functioning society with its own governance, agriculture, and defense, proof that the people who had been told they were incapable of self-organization were capable of building something better than what they had been forced to participate in.", + "orbit_bodies": [ + { + "body_id": "GJ423Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423Bf-m1", + "parent_body_id": "GJ423Bf", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ423Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thick", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423Bf-m2", + "parent_body_id": "GJ423Bf", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ423Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Quilombo", + "atmosphere": "standard", + "inhabited": true, + "population": 390000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423B-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ423Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ423Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423Bj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ423B-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ423B-oort-S1", + "orbits_body_id": "GJ423B-oort", + "station_type": "horizon", + "proper_name": "Quilombo Horizon", + "population": 820, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 449", @@ -3635,10 +31220,177 @@ "GJ 136" ], "star_type": "F8V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "12,085", "gdp": "24.2 MTr", - "gttr_excerpt": "**MURAKAMI'S LANTERN** is forty years old, located at the end of a single-gate dead end seven hops from Gateway, built on a world with seismic cycles that the original survey flagged as \"manageable\" and which the people living on it have since reclassified as \"foundational constraint,\" which is the same information expressed in different registers of commitment." + "gttr_excerpt": "**MURAKAMI'S LANTERN** is forty years old, located at the end of a single-gate dead end seven hops from Gateway, built on a world with seismic cycles that the original survey flagged as \"manageable\" and which the people living on it have since reclassified as \"foundational constraint,\" which is the same information expressed in different registers of commitment.", + "orbit_bodies": [ + { + "body_id": "GJ449Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ449Af-m1", + "parent_body_id": "GJ449Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ449Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ449Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ449Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "LH-Prime", + "atmosphere": "standard", + "inhabited": true, + "population": 11000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ449-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ449Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ449Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ449Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ449Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ449Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ449-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ449-oort-S1", + "orbits_body_id": "GJ449-oort", + "station_type": "horizon", + "proper_name": "Murakami's Lantern Horizon", + "population": 85, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ449-Ae-S1", + "orbits_body_id": "GJ449Ae", + "station_type": "habitat", + "proper_name": "Balai", + "population": 1000, + "governance_type": null, + "economic_role": "residential" + } + ] }, { "system_id": "GJ 453", @@ -3655,10 +31407,186 @@ "GJ 302" ], "star_type": "K4V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "48,015,200", "gdp": "240.1 BTr", - "gttr_excerpt": "**FREIHOLT** means \"free holding\" — not a translation of any Earth place but a statement of intent, chosen by Wave 4 founders who had just watched their previous community absorbed by MVG and were naming the new one accordingly." + "gttr_excerpt": "**FREIHOLT** means \"free holding\" — not a translation of any Earth place but a statement of intent, chosen by Wave 4 founders who had just watched their previous community absorbed by MVG and were naming the new one accordingly.", + "orbit_bodies": [ + { + "body_id": "GJ453b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ453e-m1", + "parent_body_id": "GJ453e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ453c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Gemeinland", + "atmosphere": "standard", + "inhabited": true, + "population": 48000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ453e-m2", + "parent_body_id": "GJ453e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ453-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ453d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ453e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ453f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ453g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ453h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ453i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ453-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ453-oort-S1", + "orbits_body_id": "GJ453-oort", + "station_type": "horizon", + "proper_name": "Freiholt Horizon", + "population": 2400, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ453c-S1", + "orbits_body_id": "GJ453c", + "station_type": "industrial", + "proper_name": "Feinwerk", + "population": 9600, + "governance_type": null, + "economic_role": "manufacturing" + }, + { + "station_id": "GJ453c-S2", + "orbits_body_id": "GJ453c", + "station_type": "commercial", + "proper_name": "Vertragshaus", + "population": 3200, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 4A", @@ -3673,10 +31601,156 @@ "GJ 829" ], "star_type": "K2", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "62,150", "gdp": "124.3 MTr", - "gttr_excerpt": "**VELHA GUARDA** means \"old guard,\" which after four hundred years of continuous settlement is accurate in the way that understatements are accurate: technically correct, unable to convey the full weight of the thing it describes." + "gttr_excerpt": "**VELHA GUARDA** means \"old guard,\" which after four hundred years of continuous settlement is accurate in the way that understatements are accurate: technically correct, unable to convey the full weight of the thing it describes.", + "orbit_bodies": [ + { + "body_id": "GJ4Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4Ae-m1", + "parent_body_id": "GJ4Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ4Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Velha Guarda", + "atmosphere": "standard", + "inhabited": true, + "population": 62000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ4Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ4Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ4A-oort-S1", + "orbits_body_id": "GJ4A-oort", + "station_type": "horizon", + "proper_name": "Velha Guarda Horizon", + "population": 150, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 505A", @@ -3692,10 +31766,174 @@ "GJ 3454" ], "star_type": "K2V", + "currency_zone": "MARK_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "24,010,820", "gdp": "120.1 BTr", - "gttr_excerpt": "**BERGTOR** means \"mountain gate,\" which describes the surface geography accurately — elevated rocky massifs, thick crust, the wealth underground — and also, if you are inclined toward metaphor, the relationship between the people who live here and the institutions that manage what they live on top of." + "gttr_excerpt": "**BERGTOR** means \"mountain gate,\" which describes the surface geography accurately — elevated rocky massifs, thick crust, the wealth underground — and also, if you are inclined toward metaphor, the relationship between the people who live here and the institutions that manage what they live on top of.", + "orbit_bodies": [ + { + "body_id": "GJ505Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ505Ae-m1", + "parent_body_id": "GJ505Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ505Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Mass", + "atmosphere": "thin", + "inhabited": true, + "population": 24000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ505A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ505Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ505Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ505Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ505Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ505Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ505Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ505A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ505A-oort-S1", + "orbits_body_id": "GJ505A-oort", + "station_type": "horizon", + "proper_name": "Bergtor Horizon", + "population": 620, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ505Ac-S1", + "orbits_body_id": "GJ505Ac", + "station_type": "industrial", + "proper_name": "Bergwerk", + "population": 6400, + "governance_type": null, + "economic_role": "mining" + }, + { + "station_id": "GJ505Ac-S2", + "orbits_body_id": "GJ505Ac", + "station_type": "commercial", + "proper_name": "Siedlung", + "population": 3800, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 508A", @@ -3711,10 +31949,120 @@ "GJ 661B" ], "star_type": "M2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "6,140", "gdp": "12.3 MTr", - "gttr_excerpt": "**STILWATER** was named for exactly what its settlers wanted: a world that would hold still and let people farm it. It has been doing that for two hundred years and shows no signs of stopping." + "gttr_excerpt": "**STILWATER** was named for exactly what its settlers wanted: a world that would hold still and let people farm it. It has been doing that for two hundred years and shows no signs of stopping.", + "orbit_bodies": [ + { + "body_id": "GJ508Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ508Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Uithoek", + "atmosphere": "standard", + "inhabited": true, + "population": 6000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ508A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ508Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ508Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ508Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ508Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ508A-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ508A-oort-S1", + "orbits_body_id": "GJ508A-oort", + "station_type": "horizon", + "proper_name": "Stilwater Horizon", + "population": 140, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 534", @@ -3729,10 +32077,180 @@ "GJ 3333" ], "star_type": "G0IV", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "14,120", "gdp": "28.2 MTr", - "gttr_excerpt": "**STILLVAKT** means \"quiet watch\" — an early settler's description of the long winter nights under a subgiant that burns too pale and too large on the horizon — and the system has been keeping that watch quietly for three hundred years while the corridor behind it developed opinions about politics." + "gttr_excerpt": "**STILLVAKT** means \"quiet watch\" — an early settler's description of the long winter nights under a subgiant that burns too pale and too large on the horizon — and the system has been keeping that watch quietly for three hundred years while the corridor behind it developed opinions about politics.", + "orbit_bodies": [ + { + "body_id": "GJ534b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ534f-m1", + "parent_body_id": "GJ534f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ534c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ534f-m2", + "parent_body_id": "GJ534f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ534d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Urskog", + "atmosphere": "standard", + "inhabited": true, + "population": 14000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ534-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ534e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ534f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ534g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ534h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ534i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ534j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ534-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ534-oort-S1", + "orbits_body_id": "GJ534-oort", + "station_type": "horizon", + "proper_name": "Stillvakt Horizon", + "population": 120, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 541", @@ -3747,10 +32265,156 @@ "GJ 432A" ], "star_type": "K2IIIp", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "200,480", "gdp": "401.0 MTr", - "gttr_excerpt": "**CHANDRA DEEP** is named for the depth in three registers simultaneously — physical corridor depth, dead-end isolation, and the intellectual depth that the community's four-hundred-year identity is built around — and the community has spent those four centuries deciding which of the three it actually means, with the answer varying depending on whether you ask someone who stayed or someone who left." + "gttr_excerpt": "**CHANDRA DEEP** is named for the depth in three registers simultaneously — physical corridor depth, dead-end isolation, and the intellectual depth that the community's four-hundred-year identity is built around — and the community has spent those four centuries deciding which of the three it actually means, with the answer varying depending on whether you ask someone who stayed or someone who left.", + "orbit_bodies": [ + { + "body_id": "GJ541b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ541f-m1", + "parent_body_id": "GJ541f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ541c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ541d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ541e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "CD-Prime", + "atmosphere": "standard", + "inhabited": true, + "population": 200000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ541-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ541f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ541g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ541h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ541i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ541-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ541-oort-S1", + "orbits_body_id": "GJ541-oort", + "station_type": "horizon", + "proper_name": "Chandra Deep Horizon", + "population": 480, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 567", @@ -3765,10 +32429,156 @@ "GJ 896A" ], "star_type": "K2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "34,080", "gdp": "68.2 MTr", - "gttr_excerpt": "**FRAGUA** means forge in Spanish — not the industrial plant but the craftsman's workshop, the fire and the anvil, the place where raw material is worked into specific form — and the Spanish-heritage founders who arrived two hundred years ago to finish Stalownia Kowalski's equipment understood the distinction completely." + "gttr_excerpt": "**FRAGUA** means forge in Spanish — not the industrial plant but the craftsman's workshop, the fire and the anvil, the place where raw material is worked into specific form — and the Spanish-heritage founders who arrived two hundred years ago to finish Stalownia Kowalski's equipment understood the distinction completely.", + "orbit_bodies": [ + { + "body_id": "GJ567b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ567e-m1", + "parent_body_id": "GJ567e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ567c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Fragua", + "atmosphere": "standard", + "inhabited": true, + "population": 34000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ567-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ567d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ567e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ567f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ567g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ567h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ567i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ567-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ567-oort-S1", + "orbits_body_id": "GJ567-oort", + "station_type": "horizon", + "proper_name": "Fragua Horizon", + "population": 80, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 603", @@ -3783,10 +32593,168 @@ "GJ 3988" ], "star_type": "G5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "4,065", "gdp": "8.1 MTr", - "gttr_excerpt": "**MOSSBANK** is at the end of a dim corridor through an unsettled binary system, which means you have to want to be there, and the community has spent forty years sorting people into those who want to be there and those who meant to keep going." + "gttr_excerpt": "**MOSSBANK** is at the end of a dim corridor through an unsettled binary system, which means you have to want to be there, and the community has spent forty years sorting people into those who want to be there and those who meant to keep going.", + "orbit_bodies": [ + { + "body_id": "GJ603b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ603e-m1", + "parent_body_id": "GJ603e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ603c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Torridon", + "atmosphere": "standard", + "inhabited": true, + "population": 4000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ603d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ603-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ603e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ603f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ603g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ603h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ603i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ603j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ603-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ603-oort-S1", + "orbits_body_id": "GJ603-oort", + "station_type": "horizon", + "proper_name": "Mossbank Horizon", + "population": 65, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 635A", @@ -3801,10 +32769,168 @@ "GJ 357" ], "star_type": "F9IV", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "18,085", "gdp": "36.2 MTr", - "gttr_excerpt": "**STILMARK** means \"quiet border,\" which describes both the system's geography — one gate, looking directly into Altmark's five-gate commercial hub — and the institutional choice the founding cooperative made three hundred years ago and has been maintaining by inertia and genuine preference ever since." + "gttr_excerpt": "**STILMARK** means \"quiet border,\" which describes both the system's geography — one gate, looking directly into Altmark's five-gate commercial hub — and the institutional choice the founding cooperative made three hundred years ago and has been maintaining by inertia and genuine preference ever since.", + "orbit_bodies": [ + { + "body_id": "GJ635Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ635Af-m1", + "parent_body_id": "GJ635Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ635Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ635Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Stille", + "atmosphere": "standard", + "inhabited": true, + "population": 18000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ635A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ635Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ635Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ635Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ635Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ635Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ635Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ635A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ635A-oort-S1", + "orbits_body_id": "GJ635A-oort", + "station_type": "horizon", + "proper_name": "Stilmark Horizon", + "population": 85, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 635B", @@ -3820,10 +32946,156 @@ "GJ 137" ], "star_type": "K0 V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "120,380", "gdp": "240.8 MTr", - "gttr_excerpt": "**CLEARWATER STATION** was named for what its founders found — groundwater of measurable and unusual purity — and has since become the corridor's leading source of knowledge about how to produce that quality in environments where it does not occur naturally, which is either a logical extension of the original asset or a community that found out the hard way that knowing how to fix a problem is more exportable than having a problem that does not exist." + "gttr_excerpt": "**CLEARWATER STATION** was named for what its founders found — groundwater of measurable and unusual purity — and has since become the corridor's leading source of knowledge about how to produce that quality in environments where it does not occur naturally, which is either a logical extension of the original asset or a community that found out the hard way that knowing how to fix a problem is more exportable than having a problem that does not exist.", + "orbit_bodies": [ + { + "body_id": "GJ635Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ635Be-m1", + "parent_body_id": "GJ635Be", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ635Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ635Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Saikaew", + "atmosphere": "standard", + "inhabited": true, + "population": 120000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ635B-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ635Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ635Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ635Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ635Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ635Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ635B-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ635B-oort-S1", + "orbits_body_id": "GJ635B-oort", + "station_type": "horizon", + "proper_name": "Clearwater Station Horizon", + "population": 380, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 653", @@ -3839,10 +33111,189 @@ "GJ 95" ], "star_type": "K5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "43,000,000", "gdp": "215.0 BTr", - "gttr_excerpt": "**DUNMORE** has been a mining settlement with a community on top for three hundred years, and the community knows that if it thought too clearly about what happens when the mine runs out, people would leave before they had to." + "gttr_excerpt": "**DUNMORE** has been a mining settlement with a community on top for three hundred years, and the community knows that if it thought too clearly about what happens when the mine runs out, people would leave before they had to.", + "orbit_bodies": [ + { + "body_id": "GJ653b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ653c-1", + "parent_body_id": "GJ653c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ653f-1", + "parent_body_id": "GJ653f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ653c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Brora", + "atmosphere": "standard", + "inhabited": true, + "population": 40000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ653f-2", + "parent_body_id": "GJ653f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ653d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ653e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ653f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ653g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ653h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ653i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ653-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ653-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ653c-S1", + "orbits_body_id": "GJ653c", + "station_type": "industrial", + "proper_name": "Kelty", + "population": 3000000, + "governance_type": null, + "economic_role": "extraction" + }, + { + "station_id": "GJ653-oort-S1", + "orbits_body_id": "GJ653-oort", + "station_type": "horizon", + "proper_name": "Strathy", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 660A", @@ -3859,10 +33310,168 @@ "GJ 1125" ], "star_type": "G", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "95,950", "gdp": "191.9 MTr", - "gttr_excerpt": "**SEONGHO** sits on a world of black-rock plains fractured by heat vents with a thin nitrogen-CO2 atmosphere that settlers never managed to breathe directly and never seriously tried to, because the survey reports were unambiguous about the geothermal potential, and the Korean-heritage founders who arrived in wave_3 read an energy opportunity where another community might have read an environment problem." + "gttr_excerpt": "**SEONGHO** sits on a world of black-rock plains fractured by heat vents with a thin nitrogen-CO2 atmosphere that settlers never managed to breathe directly and never seriously tried to, because the survey reports were unambiguous about the geothermal potential, and the Korean-heritage founders who arrived in wave_3 read an energy opportunity where another community might have read an environment problem.", + "orbit_bodies": [ + { + "body_id": "GJ660Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ660Af-m1", + "parent_body_id": "GJ660Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ660Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ660Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Seongho Prime", + "atmosphere": "thin", + "inhabited": true, + "population": 95000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ660Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ660A-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ660Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ660Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ660Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ660Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ660Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ660A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ660A-oort-S1", + "orbits_body_id": "GJ660A-oort", + "station_type": "horizon", + "proper_name": "Seongho Horizon", + "population": 950, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 688", @@ -3878,10 +33487,168 @@ "GJ 737B" ], "star_type": "K3V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "190,420", "gdp": "380.8 MTr", - "gttr_excerpt": "**AGUAS BRAVAS** means \"wild waters,\" which the waters here earn, and the founding Canarian fishermen who named it recognized in the hydrological energy of this world a specific and familiar thing that their families had been managing for centuries before the Reach existed." + "gttr_excerpt": "**AGUAS BRAVAS** means \"wild waters,\" which the waters here earn, and the founding Canarian fishermen who named it recognized in the hydrological energy of this world a specific and familiar thing that their families had been managing for centuries before the Reach existed.", + "orbit_bodies": [ + { + "body_id": "GJ688b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ688e-m1", + "parent_body_id": "GJ688e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ688c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Aguas Bravas", + "atmosphere": "standard", + "inhabited": true, + "population": 190000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ688e-m2", + "parent_body_id": "GJ688e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ688-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ688d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ688e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ688f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ688g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ688h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ688i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ688-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ688-oort-S1", + "orbits_body_id": "GJ688-oort", + "station_type": "horizon", + "proper_name": "Aguas Bravas Horizon", + "population": 420, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 706", @@ -3897,10 +33664,189 @@ "GJ 75" ], "star_type": "K2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "47,000,000", "gdp": "235.0 BTr", - "gttr_excerpt": "**NGATA'S STAR** is the outer limit of the north arc corridor, and it has spent two hundred years doing something with that position that most terminus systems don't: making things worth traveling for." + "gttr_excerpt": "**NGATA'S STAR** is the outer limit of the north arc corridor, and it has spent two hundred years doing something with that position that most terminus systems don't: making things worth traveling for.", + "orbit_bodies": [ + { + "body_id": "GJ706b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ706d-1", + "parent_body_id": "GJ706d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ706g-1", + "parent_body_id": "GJ706g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ706c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ706g-2", + "parent_body_id": "GJ706g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ706d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Mawhera", + "atmosphere": "standard", + "inhabited": true, + "population": 45000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ706e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ706f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ706g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ706h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ706i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ706-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ706-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ706d-S1", + "orbits_body_id": "GJ706d", + "station_type": "commercial", + "proper_name": "Haumi", + "population": 2000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ706-oort-S1", + "orbits_body_id": "GJ706-oort", + "station_type": "horizon", + "proper_name": "Tūāhu", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 75", @@ -3917,10 +33863,198 @@ "GJ 680" ], "star_type": "K0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "143,002,000", "gdp": "715.0 BTr", - "gttr_excerpt": "**ENUGU** has been controlled by the same founding families for six generations, and the founding families have arranged the local governance carefully enough that this is not technically a problem." + "gttr_excerpt": "**ENUGU** has been controlled by the same founding families for six generations, and the founding families have arranged the local governance carefully enough that this is not technically a problem.", + "orbit_bodies": [ + { + "body_id": "GJ75b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ75d-1", + "parent_body_id": "GJ75d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ75g-1", + "parent_body_id": "GJ75g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ75c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ75g-2", + "parent_body_id": "GJ75g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ75d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Onitsha", + "atmosphere": "standard", + "inhabited": true, + "population": 120000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ75e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ75f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ75g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ75h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ75i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ75-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ75-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ75c-S1", + "orbits_body_id": "GJ75c", + "station_type": "industrial", + "proper_name": "Nnewi", + "population": 15000000, + "governance_type": null, + "economic_role": "extraction" + }, + { + "station_id": "GJ75d-S1", + "orbits_body_id": "GJ75d", + "station_type": "commercial", + "proper_name": "Awka", + "population": 8000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ75-oort-S1", + "orbits_body_id": "GJ75-oort", + "station_type": "horizon", + "proper_name": "Oguta", + "population": 2000, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 79", @@ -3936,10 +34070,156 @@ "GJ 848" ], "star_type": "K5/M0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "65,280", "gdp": "130.6 MTr", - "gttr_excerpt": "**OSHIMA** is a Japanese island name meaning \"large island,\" chosen by wave_3 founders who arrived and found a pale tan disk visible from the gate approach, isolated in a dim stellar neighborhood, and undeniably island-like — which is the kind of naming precision that reveals something about the people who did it." + "gttr_excerpt": "**OSHIMA** is a Japanese island name meaning \"large island,\" chosen by wave_3 founders who arrived and found a pale tan disk visible from the gate approach, isolated in a dim stellar neighborhood, and undeniably island-like — which is the kind of naming precision that reveals something about the people who did it.", + "orbit_bodies": [ + { + "body_id": "GJ79b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ79d-m1", + "parent_body_id": "GJ79d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ79c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Oshima Prime", + "atmosphere": "thin", + "inhabited": true, + "population": 65000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ79-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ79d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ79e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ79f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ79g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ79h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ79i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ79-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ79-oort-S1", + "orbits_body_id": "GJ79-oort", + "station_type": "horizon", + "proper_name": "Oshima Horizon", + "population": 280, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 86", @@ -3955,10 +34235,168 @@ "GJ 3250" ], "star_type": "K0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "540", "gdp": "1.1 MTr", - "gttr_excerpt": "**KUMASI** is named for the Asante capital, which was the commercial and political center of a region whose traders controlled routes for centuries — and the Mensah family, who have governed this trading post through six generations and three hundred years, chose the name with an accurate understanding of what they were building." + "gttr_excerpt": "**KUMASI** is named for the Asante capital, which was the commercial and political center of a region whose traders controlled routes for centuries — and the Mensah family, who have governed this trading post through six generations and three hundred years, chose the name with an accurate understanding of what they were building.", + "orbit_bodies": [ + { + "body_id": "GJ86Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ86Ae-m1", + "parent_body_id": "GJ86Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ86Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ86Ae-m2", + "parent_body_id": "GJ86Ae", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ86A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ86Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ86Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ86Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ86Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ86Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ86Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ86-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ86-oort-S1", + "orbits_body_id": "GJ86-oort", + "station_type": "horizon", + "proper_name": "Kumasi Horizon", + "population": 540, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 902", @@ -3973,10 +34411,168 @@ "GJ 451A" ], "star_type": "K3V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "120", "gdp": "0.2 MTr", - "gttr_excerpt": "**GJ 902** has a habitable moon with an iron core, favorable soil chemistry, a stable K3V primary, and three hundred years of unclaimed survey data sitting in the Commission's south Reach registry with no one's name on it." + "gttr_excerpt": "**GJ 902** has a habitable moon with an iron core, favorable soil chemistry, a stable K3V primary, and three hundred years of unclaimed survey data sitting in the Commission's south Reach registry with no one's name on it.", + "orbit_bodies": [ + { + "body_id": "GJ902b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ902e-m1", + "parent_body_id": "GJ902e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ902c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ902e-m2", + "parent_body_id": "GJ902e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ902-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ902d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ902e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ902f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ902g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ902h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ902i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ902-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ902-oort-S1", + "orbits_body_id": "GJ902-oort", + "station_type": "horizon", + "proper_name": "GJ 902 Horizon", + "population": 120, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 909A", @@ -3992,10 +34588,156 @@ "GJ 137" ], "star_type": "K3V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "8,065", "gdp": "16.1 MTr", - "gttr_excerpt": "**TAM GIANG** is forty years old, which means it is still in the stage of its development where what people are building and what they are building toward are both visible at the same time, and the gap between them is occupied by everything that a community commits to when the alternative is admitting it made a mistake." + "gttr_excerpt": "**TAM GIANG** is forty years old, which means it is still in the stage of its development where what people are building and what they are building toward are both visible at the same time, and the gap between them is occupied by everything that a community commits to when the alternative is admitting it made a mistake.", + "orbit_bodies": [ + { + "body_id": "GJ909Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ909Ae-m1", + "parent_body_id": "GJ909Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ909Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Tam Giang Prime", + "atmosphere": "standard", + "inhabited": true, + "population": 8000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ909Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ909A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ909Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ909Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ909Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ909Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ909Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ909A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ909A-oort-S1", + "orbits_body_id": "GJ909A-oort", + "station_type": "horizon", + "proper_name": "Tam Giang Horizon", + "population": 65, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 92", @@ -4011,9 +34753,167 @@ "GJ 2097" ], "star_type": "K2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 92** is an empty system with good bones, which is the kind of thing estate agents say about houses where someone died in circumstances that don't quite fit the report." + "gttr_excerpt": "**GJ 92** is an empty system with good bones, which is the kind of thing estate agents say about houses where someone died in circumstances that don't quite fit the report.", + "orbit_bodies": [ + { + "body_id": "GJ92b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ92e-m1", + "parent_body_id": "GJ92e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ92c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ92d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ92-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ92e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ92f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ92g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ92h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ92i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ92j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ92-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ92-oort-S1", + "orbits_body_id": "GJ92-oort", + "station_type": "horizon", + "proper_name": "Pollux Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1248", @@ -4028,10 +34928,120 @@ "GJ 453" ], "star_type": "k-m", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "32,065", "gdp": "64.1 MTr", - "gttr_excerpt": "**HALTEFENN** means \"stopping fen\" — the settling point at the edge of the bogland — and the name was written into a survey record before anyone knew they would still be using it four hundred years later, which is either good naming instinct or an argument against overthinking these things." + "gttr_excerpt": "**HALTEFENN** means \"stopping fen\" — the settling point at the edge of the bogland — and the name was written into a survey record before anyone knew they would still be using it four hundred years later, which is either good naming instinct or an argument against overthinking these things.", + "orbit_bodies": [ + { + "body_id": "GJ1248b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1248c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Torfmoor", + "atmosphere": "standard", + "inhabited": true, + "population": 32000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1248-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1248d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1248e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1248f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1248g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1248-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1248-oort-S1", + "orbits_body_id": "GJ1248-oort", + "station_type": "horizon", + "proper_name": "Haltefenn Horizon", + "population": 65, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 136", @@ -4047,10 +35057,180 @@ "GJ 449" ], "star_type": "G2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "280,680", "gdp": "561.4 MTr", - "gttr_excerpt": "**DÀI LỘ** means \"grand road,\" and whoever named it four hundred years ago understood that they were marking not a destination but a continuation — a through-route at hop 8, the organized frontier's edge, where the aperture on one side connects to civilization and the aperture on the other connects to Murakami's Lantern and whatever the Frontier Compact navigators have been finding beyond." + "gttr_excerpt": "**DÀI LỘ** means \"grand road,\" and whoever named it four hundred years ago understood that they were marking not a destination but a continuation — a through-route at hop 8, the organized frontier's edge, where the aperture on one side connects to civilization and the aperture on the other connects to Murakami's Lantern and whatever the Frontier Compact navigators have been finding beyond.", + "orbit_bodies": [ + { + "body_id": "GJ136b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ136f-m1", + "parent_body_id": "GJ136f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ136c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ136f-m2", + "parent_body_id": "GJ136f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ136d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Dài Lộ Primary", + "atmosphere": "standard", + "inhabited": true, + "population": 280000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ136-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ136e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ136f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ136g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ136h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ136i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ136j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ136-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ136-oort-S1", + "orbits_body_id": "GJ136-oort", + "station_type": "horizon", + "proper_name": "Dài Lộ Horizon", + "population": 680, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 138", @@ -4066,10 +35246,120 @@ "GJ 92" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "12,240", "gdp": "24.5 MTr", - "gttr_excerpt": "**SERTÃO** means \"backcountry,\" and it was not a complaint. The founders came looking for backcountry, found it, and have spent two centuries making it exactly as productive as backcountry becomes when left to people who know what they are doing with it." + "gttr_excerpt": "**SERTÃO** means \"backcountry,\" and it was not a complaint. The founders came looking for backcountry, found it, and have spent two centuries making it exactly as productive as backcountry becomes when left to people who know what they are doing with it.", + "orbit_bodies": [ + { + "body_id": "GJ138b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ138c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Portel", + "atmosphere": "standard", + "inhabited": true, + "population": 12000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ138-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ138d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ138e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ138f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ138g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ138-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ138-oort-S1", + "orbits_body_id": "GJ138-oort", + "station_type": "horizon", + "proper_name": "Sertão Horizon", + "population": 240, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 142", @@ -4085,10 +35375,177 @@ "GJ 1235" ], "star_type": "G", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "3,600", "gdp": "7.2 MTr", - "gttr_excerpt": "**LEUCHTTURM** means \"lighthouse,\" chosen by astronomers who named it for what a G-type star is in a region where M-dwarfs dominate the map: a conspicuous anomaly, a reference point, a place from which other things can be measured. Three hundred years of continuous observation have made it exactly what the founders intended, which is the kind of institutional success that is harder to achieve than it sounds." + "gttr_excerpt": "**LEUCHTTURM** means \"lighthouse,\" chosen by astronomers who named it for what a G-type star is in a region where M-dwarfs dominate the map: a conspicuous anomaly, a reference point, a place from which other things can be measured. Three hundred years of continuous observation have made it exactly what the founders intended, which is the kind of institutional success that is harder to achieve than it sounds.", + "orbit_bodies": [ + { + "body_id": "GJ142b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ142e-m1", + "parent_body_id": "GJ142e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ142c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Jena", + "atmosphere": "standard", + "inhabited": true, + "population": 3000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ142d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ142-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ142e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ142f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ142g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ142h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ142i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ142j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ142-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ142-oort-S1", + "orbits_body_id": "GJ142-oort", + "station_type": "horizon", + "proper_name": "Leuchtturm Horizon", + "population": 180, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ142c-S1", + "orbits_body_id": "GJ142c", + "station_type": "research", + "proper_name": "Sternwarte", + "population": 420, + "governance_type": null, + "economic_role": "research" + } + ] }, { "system_id": "GJ 189", @@ -4104,10 +35561,120 @@ "GJ 675" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "30,560", "gdp": "61.1 MTr", - "gttr_excerpt": "**ALTGRUND** is four hundred years old, which in the deep frontier means it was here before most of the institutions that now have opinions about it were invented, and has developed a quality of institutional patience that those institutions tend to find disorienting." + "gttr_excerpt": "**ALTGRUND** is four hundred years old, which in the deep frontier means it was here before most of the institutions that now have opinions about it were invented, and has developed a quality of institutional patience that those institutions tend to find disorienting.", + "orbit_bodies": [ + { + "body_id": "GJ189b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ189c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Goslar", + "atmosphere": "standard", + "inhabited": true, + "population": 30000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ189-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ189d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ189e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ189f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ189g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ189-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ189-oort-S1", + "orbits_body_id": "GJ189-oort", + "station_type": "horizon", + "proper_name": "Altgrund Horizon", + "population": 560, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 197", @@ -4122,10 +35689,180 @@ "GJ 393" ], "star_type": "G0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "58,240", "gdp": "116.5 MTr", - "gttr_excerpt": "**PUERTO ÚLTIMO** means \"last port,\" which it was for two hundred and sixty years, and then Encrucijada arrived one hop inward and Puerto Último became, for the first time in its history, a place on the way to somewhere." + "gttr_excerpt": "**PUERTO ÚLTIMO** means \"last port,\" which it was for two hundred and sixty years, and then Encrucijada arrived one hop inward and Puerto Último became, for the first time in its history, a place on the way to somewhere.", + "orbit_bodies": [ + { + "body_id": "GJ197b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ197e-m1", + "parent_body_id": "GJ197e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ197c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thick", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ197e-m2", + "parent_body_id": "GJ197e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ197d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Puerto Último", + "atmosphere": "standard", + "inhabited": true, + "population": 58000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ197-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ197e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ197f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ197g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ197h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ197i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ197j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ197-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ197-oort-S1", + "orbits_body_id": "GJ197-oort", + "station_type": "horizon", + "proper_name": "Puerto Último Horizon", + "population": 240, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 211", @@ -4141,10 +35878,120 @@ "GJ 117" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "10,340", "gdp": "20.7 MTr", - "gttr_excerpt": "**ENCRUZILHADA** means \"crossroads,\" and the founders chose it knowing exactly what they needed it to mean: they had lived through having only one way out, and they had decided that would never happen again." + "gttr_excerpt": "**ENCRUZILHADA** means \"crossroads,\" and the founders chose it knowing exactly what they needed it to mean: they had lived through having only one way out, and they had decided that would never happen again.", + "orbit_bodies": [ + { + "body_id": "GJ211b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ211c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Almeida", + "atmosphere": "standard", + "inhabited": true, + "population": 10000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ211-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ211d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ211e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ211f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ211g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ211-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ211-oort-S1", + "orbits_body_id": "GJ211-oort", + "station_type": "horizon", + "proper_name": "Encruzilhada Horizon", + "population": 340, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 302", @@ -4160,10 +36007,165 @@ "GJ 453" ], "star_type": "K0V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "43,540", "gdp": "87.1 MTr", - "gttr_excerpt": "**LICHTBRÜCKE** means \"light bridge\" — a characterization the founding surveyor gave the K0V primary when arriving from the dimmer corridor behind it — and the name has settled into the place so completely that residents no longer notice the metaphor, which is how good names work." + "gttr_excerpt": "**LICHTBRÜCKE** means \"light bridge\" — a characterization the founding surveyor gave the K0V primary when arriving from the dimmer corridor behind it — and the name has settled into the place so completely that residents no longer notice the metaphor, which is how good names work.", + "orbit_bodies": [ + { + "body_id": "GJ302b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ302e-m1", + "parent_body_id": "GJ302e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ302c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Brücke", + "atmosphere": "standard", + "inhabited": true, + "population": 42000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ302-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ302d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ302e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ302f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ302g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ302h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ302i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ302-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ302-oort-S1", + "orbits_body_id": "GJ302-oort", + "station_type": "horizon", + "proper_name": "Lichtbrücke Horizon", + "population": 340, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ302c-S1", + "orbits_body_id": "GJ302c", + "station_type": "commercial", + "proper_name": "Packhaus", + "population": 1200, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 309", @@ -4179,10 +36181,156 @@ "GJ 286" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "2,140", "gdp": "4.3 MTr", - "gttr_excerpt": "**VORPOSTEN** is the outpost, which is what the name says, which is accurate, and which does not require elaboration from a community that is still building its second-generation infrastructure and has not yet reached the point where elaboration feels appropriate." + "gttr_excerpt": "**VORPOSTEN** is the outpost, which is what the name says, which is accurate, and which does not require elaboration from a community that is still building its second-generation infrastructure and has not yet reached the point where elaboration feels appropriate.", + "orbit_bodies": [ + { + "body_id": "GJ309b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ309e-m1", + "parent_body_id": "GJ309e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ309c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Freystadt", + "atmosphere": "standard", + "inhabited": true, + "population": 2000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ309-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ309d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ309e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ309f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ309g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ309h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ309i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ309-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ309-oort-S1", + "orbits_body_id": "GJ309-oort", + "station_type": "horizon", + "proper_name": "Vorposten Horizon", + "population": 140, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 324A", @@ -4198,9 +36346,155 @@ "GJ 1235" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 324A** has a functioning horizon station, a 180-year-old survey record, demonstrable habitability, and no one living in it — a combination that the deep frontier produces occasionally and that nobody has ever been able to explain entirely with the survey record alone." + "gttr_excerpt": "**GJ 324A** has a functioning horizon station, a 180-year-old survey record, demonstrable habitability, and no one living in it — a combination that the deep frontier produces occasionally and that nobody has ever been able to explain entirely with the survey record alone.", + "orbit_bodies": [ + { + "body_id": "GJ324Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ324Ae-m1", + "parent_body_id": "GJ324Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ324Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ324A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ324Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ324Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ324Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ324Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ324Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ324Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ324A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ324A-oort-S1", + "orbits_body_id": "GJ324A-oort", + "station_type": "horizon", + "proper_name": "GJ 324A Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3250", @@ -4215,10 +36509,144 @@ "GJ 86" ], "star_type": "k-m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "32,140", "gdp": "64.3 MTr", - "gttr_excerpt": "**RIONEGRO** is not in crisis. It is in a long, quiet contraction that the people who remain there have chosen not to call by that name, which is their right, and which has been their position for two generations." + "gttr_excerpt": "**RIONEGRO** is not in crisis. It is in a long, quiet contraction that the people who remain there have chosen not to call by that name, which is their right, and which has been their position for two generations.", + "orbit_bodies": [ + { + "body_id": "GJ3250b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3250e-m1", + "parent_body_id": "GJ3250e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3250c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Rionegro", + "atmosphere": "standard", + "inhabited": true, + "population": 32000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3250-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3250d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3250e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3250f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3250g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3250h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3250-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3250-oort-S1", + "orbits_body_id": "GJ3250-oort", + "station_type": "horizon", + "proper_name": "Rionegro Horizon", + "population": 140, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3333", @@ -4234,10 +36662,165 @@ "GJ 357" ], "star_type": "k", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "45,003,980", "gdp": "225.0 BTr", - "gttr_excerpt": "**GROENLAND** is named for an Earth island famously described as greener than it was to encourage settlement — a reference the Dutch founders appreciated as ironic — except that in this case the name turned out to be accurate, which inverts the original joke entirely." + "gttr_excerpt": "**GROENLAND** is named for an Earth island famously described as greener than it was to encourage settlement — a reference the Dutch founders appreciated as ironic — except that in this case the name turned out to be accurate, which inverts the original joke entirely.", + "orbit_bodies": [ + { + "body_id": "GJ3333b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3333e-m1", + "parent_body_id": "GJ3333e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3333c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Groen", + "atmosphere": "standard", + "inhabited": true, + "population": 45000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3333e-m2", + "parent_body_id": "GJ3333e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3333d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3333-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3333e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3333f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3333g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3333h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3333-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3333-oort-S1", + "orbits_body_id": "GJ3333-oort", + "station_type": "horizon", + "proper_name": "Groenland Horizon", + "population": 580, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ3333c-S1", + "orbits_body_id": "GJ3333c", + "station_type": "agricultural", + "proper_name": "Korenschuur", + "population": 3400, + "governance_type": null, + "economic_role": "agricultural" + } + ] }, { "system_id": "GJ 3533", @@ -4253,10 +36836,144 @@ "GJ 1073" ], "star_type": "k-m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,960", "gdp": "3.9 MTr", - "gttr_excerpt": "**TRUNG'S CROSSING** is forty years old, wave_5, 39.8 light years from Gateway, and was established within eight months of the public release of the survey data that identified the system's transit potential — a timeline that other frontier developers, reviewing it afterward, have consistently described as faster than their own due diligence processes would permit." + "gttr_excerpt": "**TRUNG'S CROSSING** is forty years old, wave_5, 39.8 light years from Gateway, and was established within eight months of the public release of the survey data that identified the system's transit potential — a timeline that other frontier developers, reviewing it afterward, have consistently described as faster than their own due diligence processes would permit.", + "orbit_bodies": [ + { + "body_id": "GJ3533b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3533e-m1", + "parent_body_id": "GJ3533e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3533c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Trung's Crossing", + "atmosphere": "standard", + "inhabited": true, + "population": 1800, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3533-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3533d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3533e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3533f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3533g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3533h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3533-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3533-oort-S1", + "orbits_body_id": "GJ3533-oort", + "station_type": "horizon", + "proper_name": "Trung's Crossing Horizon", + "population": 160, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3728B", @@ -4272,10 +36989,156 @@ "GJ 27" ], "star_type": "g", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "185,420", "gdp": "370.8 MTr", - "gttr_excerpt": "**JEONNAM** is named for a southern Korean province known on old Earth for agricultural richness and preserved foods, and the settlement that arrived three hundred years ago did exactly what the name implied: they found a temperate world with long growing seasons, stepped the hillsides into terraced growing pools, and began fermenting things." + "gttr_excerpt": "**JEONNAM** is named for a southern Korean province known on old Earth for agricultural richness and preserved foods, and the settlement that arrived three hundred years ago did exactly what the name implied: they found a temperate world with long growing seasons, stepped the hillsides into terraced growing pools, and began fermenting things.", + "orbit_bodies": [ + { + "body_id": "GJ3728Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3728Be-m1", + "parent_body_id": "GJ3728Be", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3728Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Jeonnam", + "atmosphere": "standard", + "inhabited": true, + "population": 185000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3728B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3728Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3728Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3728Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3728Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3728Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3728Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3728B-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3728B-oort-S1", + "orbits_body_id": "GJ3728B-oort", + "station_type": "horizon", + "proper_name": "Jeonnam Horizon", + "population": 420, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 414A", @@ -4291,10 +37154,132 @@ "GJ 542" ], "star_type": "K8V", + "currency_zone": "MARK_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "6,380", "gdp": "12.8 MTr", - "gttr_excerpt": "**VINDKAST** means \"wind blast\" in Norwegian, and the settlers who chose it had already reviewed the atmospheric survey data before arriving, which means the name was not a surprise but a statement of intent: we know what this is, we are coming anyway." + "gttr_excerpt": "**VINDKAST** means \"wind blast\" in Norwegian, and the settlers who chose it had already reviewed the atmospheric survey data before arriving, which means the name was not a surprise but a statement of intent: we know what this is, we are coming anyway.", + "orbit_bodies": [ + { + "body_id": "GJ414Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ414Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Vindslette", + "atmosphere": "thin", + "inhabited": true, + "population": 6200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ414A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ414Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ414Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ414Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ414Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ414Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ414A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ414A-oort-S1", + "orbits_body_id": "GJ414A-oort", + "station_type": "horizon", + "proper_name": "Vindkast Horizon", + "population": 180, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 435", @@ -4310,10 +37295,168 @@ "GJ 393" ], "star_type": "K5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "175,380", "gdp": "350.8 MTr", - "gttr_excerpt": "**MIRANTE** means lookout point — elevated terrain, a place from which you can see what approaches and what recedes — and the topology here fits the name with a precision that the founding generation may have intended or may simply have recognized when they saw it." + "gttr_excerpt": "**MIRANTE** means lookout point — elevated terrain, a place from which you can see what approaches and what recedes — and the topology here fits the name with a precision that the founding generation may have intended or may simply have recognized when they saw it.", + "orbit_bodies": [ + { + "body_id": "GJ435b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ435e-m1", + "parent_body_id": "GJ435e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ435c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Mirante", + "atmosphere": "standard", + "inhabited": true, + "population": 175000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ435e-m2", + "parent_body_id": "GJ435e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ435-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ435d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ435e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ435f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ435g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ435h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ435i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ435-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ435-oort-S1", + "orbits_body_id": "GJ435-oort", + "station_type": "horizon", + "proper_name": "Mirante Horizon", + "population": 380, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 454", @@ -4328,10 +37471,165 @@ "GJ 505A" ], "star_type": "K0IV", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "28,960", "gdp": "57.9 MTr", - "gttr_excerpt": "**STEINFELD** means \"stone field,\" which the founders were describing from orbit before they landed, and which remained accurate enough that three hundred years of subsequent residents have seen no reason to change it." + "gttr_excerpt": "**STEINFELD** means \"stone field,\" which the founders were describing from orbit before they landed, and which remained accurate enough that three hundred years of subsequent residents have seen no reason to change it.", + "orbit_bodies": [ + { + "body_id": "GJ454b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ454e-m1", + "parent_body_id": "GJ454e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ454c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ454d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Graustein", + "atmosphere": "standard", + "inhabited": true, + "population": 28000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ454-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ454e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ454f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ454g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ454h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ454i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ454-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ454-oort-S1", + "orbits_body_id": "GJ454-oort", + "station_type": "horizon", + "proper_name": "Steinfeld Horizon", + "population": 140, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ454d-S1", + "orbits_body_id": "GJ454d", + "station_type": "industrial", + "proper_name": "Steinbruch", + "population": 820, + "governance_type": null, + "economic_role": "mining" + } + ] }, { "system_id": "GJ 482A", @@ -4347,10 +37645,180 @@ "GJ 124" ], "star_type": "F0V+...", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "2 habitable · 1 inhabited", "population": "210,580", "gdp": "421.2 MTr", - "gttr_excerpt": "**DAGAT** means \"sea,\" which is a name that describes the situation accurately — land cover is approximately 8% of the surface — and which the founders were not using abstractly, because they came to work the water and have been working it for three hundred years." + "gttr_excerpt": "**DAGAT** means \"sea,\" which is a name that describes the situation accurately — land cover is approximately 8% of the surface — and which the founders were not using abstractly, because they came to work the water and have been working it for three hundred years.", + "orbit_bodies": [ + { + "body_id": "GJ482Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ482Af-m1", + "parent_body_id": "GJ482Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ482Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ482Af-m2", + "parent_body_id": "GJ482Af", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ482Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ482Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Dagat", + "atmosphere": "standard", + "inhabited": true, + "population": 210000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ482A-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ482Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ482Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ482Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ482Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ482Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ482A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ482A-oort-S1", + "orbits_body_id": "GJ482A-oort", + "station_type": "horizon", + "proper_name": "Dagat Horizon", + "population": 580, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 482B", @@ -4366,10 +37834,156 @@ "GJ 707" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "8,620", "gdp": "17.2 MTr", - "gttr_excerpt": "**TRAVESSA** means \"crossing,\" which is the entirety of Travessa's founding purpose, institutional identity, and economic model, and the community is not romantic about any of it." + "gttr_excerpt": "**TRAVESSA** means \"crossing,\" which is the entirety of Travessa's founding purpose, institutional identity, and economic model, and the community is not romantic about any of it.", + "orbit_bodies": [ + { + "body_id": "GJ482Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ482Be-m1", + "parent_body_id": "GJ482Be", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ482Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Constância", + "atmosphere": "standard", + "inhabited": true, + "population": 8000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ482B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ482Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ482Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ482Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ482Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ482Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ482Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ482B-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ482B-oort-S1", + "orbits_body_id": "GJ482B-oort", + "station_type": "horizon", + "proper_name": "Travessa Horizon", + "population": 620, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 542", @@ -4385,10 +37999,165 @@ "GJ 231" ], "star_type": "K3V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "38,680", "gdp": "77.4 MTr", - "gttr_excerpt": "**KOPPARHYTTA** means \"copper works\" — a smelting operation, a forge — and the founders chose it because they knew what they were there to do and had no interest in pretending the name meant something more elevated." + "gttr_excerpt": "**KOPPARHYTTA** means \"copper works\" — a smelting operation, a forge — and the founders chose it because they knew what they were there to do and had no interest in pretending the name meant something more elevated.", + "orbit_bodies": [ + { + "body_id": "GJ542b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ542e-m1", + "parent_body_id": "GJ542e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ542c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Kopparmark", + "atmosphere": "standard", + "inhabited": true, + "population": 36000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ542-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ542d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ542e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ542f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ542g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ542h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ542i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ542-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ542-oort-S1", + "orbits_body_id": "GJ542-oort", + "station_type": "horizon", + "proper_name": "Kopparhytta Horizon", + "population": 280, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ542c-S1", + "orbits_body_id": "GJ542c", + "station_type": "industrial", + "proper_name": "Smältverk", + "population": 2400, + "governance_type": null, + "economic_role": "manufacturing" + } + ] }, { "system_id": "GJ 575A", @@ -4404,10 +38173,201 @@ "GJ 194B" ], "star_type": "G2V + G2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "83,000,000", "gdp": "415.0 BTr", - "gttr_excerpt": "**RATNAGIRI** has a monopoly on its primary export that no one engineered, cannot be broken, and exists entirely because of two suns in the sky." + "gttr_excerpt": "**RATNAGIRI** has a monopoly on its primary export that no one engineered, cannot be broken, and exists entirely because of two suns in the sky.", + "orbit_bodies": [ + { + "body_id": "GJ575Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ575Ae-1", + "parent_body_id": "GJ575Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ575Ah-1", + "parent_body_id": "GJ575Ah", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ575Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ575Ah-2", + "parent_body_id": "GJ575Ah", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ575Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ575Ae", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Sawantwadi", + "atmosphere": "standard", + "inhabited": true, + "population": 80000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ575Af", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ575Ag", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ575Ah", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ575Ai", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ575Aj", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ575A-belt", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ575A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ575Ae-S1", + "orbits_body_id": "GJ575Ae", + "station_type": "agricultural", + "proper_name": "Vengurla", + "population": 3000000, + "governance_type": null, + "economic_role": "agriculture" + }, + { + "station_id": "GJ575A-oort-S1", + "orbits_body_id": "GJ575A-oort", + "station_type": "horizon", + "proper_name": "Murud", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 598", @@ -4423,10 +38383,168 @@ "GJ 167" ], "star_type": "F", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "2,585", "gdp": "5.2 MTr", - "gttr_excerpt": "**HELLE WACHT** means \"bright watch,\" and the F-type star at its center is the brightest stellar primary in the Germanic deep frontier corridor — a genuine luxury this far out — but the founding cohort did not choose it for the light. They chose it because it was past the point where anyone they were trying to get away from would follow." + "gttr_excerpt": "**HELLE WACHT** means \"bright watch,\" and the F-type star at its center is the brightest stellar primary in the Germanic deep frontier corridor — a genuine luxury this far out — but the founding cohort did not choose it for the light. They chose it because it was past the point where anyone they were trying to get away from would follow.", + "orbit_bodies": [ + { + "body_id": "GJ598b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ598f-m1", + "parent_body_id": "GJ598f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ598c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ598d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Freudenberg", + "atmosphere": "standard", + "inhabited": true, + "population": 2500, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ598-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ598e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ598f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ598g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ598h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ598i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ598j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ598-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ598-oort-S1", + "orbits_body_id": "GJ598-oort", + "station_type": "horizon", + "proper_name": "Helle Wacht Horizon", + "population": 85, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 620.1A", @@ -4441,10 +38559,168 @@ "GJ 172" ], "star_type": "G3/G5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "6,280", "gdp": "12.6 MTr", - "gttr_excerpt": "**SUỐI VÀNG** means \"golden spring,\" named before the founders had been in the system long enough to develop restraint, which is the tradition for naming discoveries that immediately suggest their value and which has the benefit of accuracy: the spring ore deposits are what the community is built on, and the community is built on them for sixty to ninety more years, give or take, depending on which set of numbers you are using." + "gttr_excerpt": "**SUỐI VÀNG** means \"golden spring,\" named before the founders had been in the system long enough to develop restraint, which is the tradition for naming discoveries that immediately suggest their value and which has the benefit of accuracy: the spring ore deposits are what the community is built on, and the community is built on them for sixty to ninety more years, give or take, depending on which set of numbers you are using.", + "orbit_bodies": [ + { + "body_id": "GJ620.1Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ620.1Af-m1", + "parent_body_id": "GJ620.1Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ620.1Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ620.1Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Suối Vàng", + "atmosphere": "standard", + "inhabited": true, + "population": 6200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ620.1A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ620.1Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ620.1Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ620.1Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ620.1Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ620.1Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ620.1Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ620.1A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ620.1A-oort-S1", + "orbits_body_id": "GJ620.1A-oort", + "station_type": "horizon", + "proper_name": "Suối Vàng Horizon", + "population": 80, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 624", @@ -4459,10 +38735,180 @@ "GJ 1232" ], "star_type": "F9V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "52,095", "gdp": "104.2 MTr", - "gttr_excerpt": "**HALVØY** means \"half-island\" — a single large landmass surrounded by shallow productive seas — and four hundred years of settlement on it have produced something the outer corridor occasionally forgets to notice: a genuinely thriving community that has never needed to be discovered, rescued, or reformed." + "gttr_excerpt": "**HALVØY** means \"half-island\" — a single large landmass surrounded by shallow productive seas — and four hundred years of settlement on it have produced something the outer corridor occasionally forgets to notice: a genuinely thriving community that has never needed to be discovered, rescued, or reformed.", + "orbit_bodies": [ + { + "body_id": "GJ624b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ624f-m1", + "parent_body_id": "GJ624f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ624c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ624f-m2", + "parent_body_id": "GJ624f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ624d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Øya", + "atmosphere": "standard", + "inhabited": true, + "population": 52000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ624-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ624e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ624f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ624g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ624h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ624i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ624j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ624-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ624-oort-S1", + "orbits_body_id": "GJ624-oort", + "station_type": "horizon", + "proper_name": "Halvøy Horizon", + "population": 95, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 67", @@ -4477,10 +38923,180 @@ "GJ 423B" ], "star_type": "G2V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "22,055", "gdp": "44.1 MTr", - "gttr_excerpt": "**ROÇA NOVA** means \"new plantation,\" chosen by São Toméan and Portuguese founders who knew exactly what a roça was and what it carried — and who named this place for the agricultural knowledge and the relationship to land that the tradition represents, stripped of what it was built on." + "gttr_excerpt": "**ROÇA NOVA** means \"new plantation,\" chosen by São Toméan and Portuguese founders who knew exactly what a roça was and what it carried — and who named this place for the agricultural knowledge and the relationship to land that the tradition represents, stripped of what it was built on.", + "orbit_bodies": [ + { + "body_id": "GJ67b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ67f-m1", + "parent_body_id": "GJ67f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ67c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thick", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ67f-m2", + "parent_body_id": "GJ67f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ67d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Roça Nova", + "atmosphere": "standard", + "inhabited": true, + "population": 22000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ67-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ67e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ67f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ67g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ67h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ67i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ67j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ67-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ67-oort-S1", + "orbits_body_id": "GJ67-oort", + "station_type": "horizon", + "proper_name": "Roça Nova Horizon", + "population": 55, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 737B", @@ -4495,10 +39111,156 @@ "GJ 688" ], "star_type": "K5 V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "88,200", "gdp": "176.4 MTr", - "gttr_excerpt": "**PUNTA DEL SOL** is named for the quality of light at a promontory on La Palma in the Canary Islands, because the K5V light filtered through an atmosphere above a fishing coast here has a correspondence to the original that the founding generation noticed, and that three hundred years of retroactive memory have made into fact." + "gttr_excerpt": "**PUNTA DEL SOL** is named for the quality of light at a promontory on La Palma in the Canary Islands, because the K5V light filtered through an atmosphere above a fishing coast here has a correspondence to the original that the founding generation noticed, and that three hundred years of retroactive memory have made into fact.", + "orbit_bodies": [ + { + "body_id": "GJ737Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ737Be-m1", + "parent_body_id": "GJ737Be", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ737Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Punta del Sol", + "atmosphere": "standard", + "inhabited": true, + "population": 88000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ737B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ737Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ737Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ737Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ737Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ737Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ737Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ737B-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ737B-oort-S1", + "orbits_body_id": "GJ737B-oort", + "station_type": "horizon", + "proper_name": "Punta del Sol Horizon", + "population": 200, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 798", @@ -4514,10 +39276,156 @@ "GJ 601A" ], "star_type": "K7V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "22,320", "gdp": "44.6 MTr", - "gttr_excerpt": "**BRÜCKENAU** is a through-route system named for a Bavarian river-valley village, settled by Franconian founding families who arrived, confirmed the terrain matched the survey — river valleys, lowland meadows, forested slopes — and planted hops." + "gttr_excerpt": "**BRÜCKENAU** is a through-route system named for a Bavarian river-valley village, settled by Franconian founding families who arrived, confirmed the terrain matched the survey — river valleys, lowland meadows, forested slopes — and planted hops.", + "orbit_bodies": [ + { + "body_id": "GJ798b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ798e-m1", + "parent_body_id": "GJ798e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ798c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Talgrund", + "atmosphere": "standard", + "inhabited": true, + "population": 22000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ798-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ798d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ798e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ798f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ798g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ798h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ798i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ798-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ798-oort-S1", + "orbits_body_id": "GJ798-oort", + "station_type": "horizon", + "proper_name": "Brückenau Horizon", + "population": 320, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 848", @@ -4533,10 +39441,192 @@ "GJ 136" ], "star_type": "F5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "2 habitable · 1 inhabited", "population": "48,520", "gdp": "97.0 MTr", - "gttr_excerpt": "**SHIMANAMI** is administered by Oshima under an operating charter written for an extraction site staffed by rotating crews — a legal instrument that predates the permanent settlement, predates the native-born population, predates the through-route position, and predates everything that makes Shimanami what it actually is. The charter is renewed on a standing basis. The charter text is commercially confidential. The Shimanami Transit Cooperative, which controls gate scheduling, does not need the charter to function and has never formally challenged it. This is the most stable equilibrium available in the situation, and all parties have recognized this." + "gttr_excerpt": "**SHIMANAMI** is administered by Oshima under an operating charter written for an extraction site staffed by rotating crews — a legal instrument that predates the permanent settlement, predates the native-born population, predates the through-route position, and predates everything that makes Shimanami what it actually is. The charter is renewed on a standing basis. The charter text is commercially confidential. The Shimanami Transit Cooperative, which controls gate scheduling, does not need the charter to function and has never formally challenged it. This is the most stable equilibrium available in the situation, and all parties have recognized this.", + "orbit_bodies": [ + { + "body_id": "GJ848b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ848g-m1", + "parent_body_id": "GJ848g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ848c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ848g-m2", + "parent_body_id": "GJ848g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ848d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ848e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Shimanami Main", + "atmosphere": "standard", + "inhabited": true, + "population": 48000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ848-belt", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ848f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ848g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ848h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ848i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ848j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ848k", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ848-oort", + "parent_body_id": null, + "orbit_index": 12, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ848-oort-S1", + "orbits_body_id": "GJ848-oort", + "station_type": "horizon", + "proper_name": "Shimanami Horizon", + "population": 520, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 914A", @@ -4552,10 +39642,132 @@ "GJ 508A" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "18,320", "gdp": "36.6 MTr", - "gttr_excerpt": "**DROËLAND** means \"dry land,\" which is what the founders found when they arrived three hundred years ago, and which they said out loud as a name because they were Afrikaans-heritage farming families who had come to work the soil and did not see the need for poetry about it." + "gttr_excerpt": "**DROËLAND** means \"dry land,\" which is what the founders found when they arrived three hundred years ago, and which they said out loud as a name because they were Afrikaans-heritage farming families who had come to work the soil and did not see the need for poetry about it.", + "orbit_bodies": [ + { + "body_id": "GJ914Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ914Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Calvinia", + "atmosphere": "standard", + "inhabited": true, + "population": 18000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ914A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ914Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ914Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ914Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ914Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ914Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ914A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ914A-oort-S1", + "orbits_body_id": "GJ914A-oort", + "station_type": "horizon", + "proper_name": "Droëland Horizon", + "population": 320, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 95", @@ -4570,10 +39782,201 @@ "GJ 653" ], "star_type": "G8V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "69,000,000", "gdp": "345.0 BTr", - "gttr_excerpt": "**CALEDONIA'S END** named itself with full awareness of what it was, and three hundred years later the name has become so settled into local identity that no one experiences it as a declaration anymore." + "gttr_excerpt": "**CALEDONIA'S END** named itself with full awareness of what it was, and three hundred years later the name has become so settled into local identity that no one experiences it as a declaration anymore.", + "orbit_bodies": [ + { + "body_id": "GJ95b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ95e-1", + "parent_body_id": "GJ95e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ95h-1", + "parent_body_id": "GJ95h", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ95c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ95h-2", + "parent_body_id": "GJ95h", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ95d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ95e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": "Portree", + "atmosphere": "standard", + "inhabited": true, + "population": 65000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ95f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ95g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ95h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ95i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ95j", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ95-belt", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ95-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ95e-S1", + "orbits_body_id": "GJ95e", + "station_type": "commercial", + "proper_name": "Uig", + "population": 4000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ95-oort-S1", + "orbits_body_id": "GJ95-oort", + "station_type": "horizon", + "proper_name": "Corran", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1073", @@ -4589,10 +39992,156 @@ "GJ 482A" ], "star_type": "k", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "32,240", "gdp": "64.5 MTr", - "gttr_excerpt": "**MABUHAY** means \"long life\" in Filipino, which the founding cooperative used not as an aspiration but as a defiance — at least two inner-corridor development agencies had told them the system's K-type primary did not warrant the investment of a permanent settlement, and they funded the charter themselves." + "gttr_excerpt": "**MABUHAY** means \"long life\" in Filipino, which the founding cooperative used not as an aspiration but as a defiance — at least two inner-corridor development agencies had told them the system's K-type primary did not warrant the investment of a permanent settlement, and they funded the charter themselves.", + "orbit_bodies": [ + { + "body_id": "GJ1073b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1073e-m1", + "parent_body_id": "GJ1073e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1073c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Mabuhay", + "atmosphere": "standard", + "inhabited": true, + "population": 32000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1073-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1073d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1073e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1073f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1073g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1073h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1073i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1073-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1073-oort-S1", + "orbits_body_id": "GJ1073-oort", + "station_type": "horizon", + "proper_name": "Mabuhay Horizon", + "population": 240, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 167", @@ -4608,9 +40157,155 @@ "GJ 324A" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 167** is two consecutive unsettled through-routes between Knotenpunkt and Helle Wacht — GJ 324A and this system — which means the corridor from the junction to the Compact dissidents' furthest outpost passes through nine hops of gate infrastructure without a single person living in any of them beyond the endpoints. The architects of that dissident community's isolation did not build it deliberately. It emerged from three centuries of assessment by everyone who looked at GJ 167 and decided they were looking for somewhere else." + "gttr_excerpt": "**GJ 167** is two consecutive unsettled through-routes between Knotenpunkt and Helle Wacht — GJ 324A and this system — which means the corridor from the junction to the Compact dissidents' furthest outpost passes through nine hops of gate infrastructure without a single person living in any of them beyond the endpoints. The architects of that dissident community's isolation did not build it deliberately. It emerged from three centuries of assessment by everyone who looked at GJ 167 and decided they were looking for somewhere else.", + "orbit_bodies": [ + { + "body_id": "GJ167b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ167e-m1", + "parent_body_id": "GJ167e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ167c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ167-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ167d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ167e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ167f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ167g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ167h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ167i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ167-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ167-oort-S1", + "orbits_body_id": "GJ167-oort", + "station_type": "horizon", + "proper_name": "GJ 167 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 174", @@ -4626,10 +40321,156 @@ "GJ 69" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "20,380", "gdp": "40.8 MTr", - "gttr_excerpt": "**TIEFENBACH** means \"deep creek,\" which is modest, topographic, and the kind of name given by people focused on living in a place rather than describing it — a quality that characterizes Tiefenbach's three centuries of subsequent history with reasonable accuracy." + "gttr_excerpt": "**TIEFENBACH** means \"deep creek,\" which is modest, topographic, and the kind of name given by people focused on living in a place rather than describing it — a quality that characterizes Tiefenbach's three centuries of subsequent history with reasonable accuracy.", + "orbit_bodies": [ + { + "body_id": "GJ174b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ174e-m1", + "parent_body_id": "GJ174e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ174c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Clausthal", + "atmosphere": "standard", + "inhabited": true, + "population": 20000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ174-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ174d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ174e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ174f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ174g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ174h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ174i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ174-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ174-oort-S1", + "orbits_body_id": "GJ174-oort", + "station_type": "horizon", + "proper_name": "Tiefenbach Horizon", + "population": 380, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 194B", @@ -4645,10 +40486,201 @@ "GJ 716" ], "star_type": "G0 III", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "28,000,500", "gdp": "140.0 BTr", - "gttr_excerpt": "**PEMBERTON** has filed every Assembly compliance document on time for four hundred years, which would be more impressive if anyone at the Assembly had sent an acknowledgment in the past forty." + "gttr_excerpt": "**PEMBERTON** has filed every Assembly compliance document on time for four hundred years, which would be more impressive if anyone at the Assembly had sent an acknowledgment in the past forty.", + "orbit_bodies": [ + { + "body_id": "GJ194Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ194Bd-1", + "parent_body_id": "GJ194Bd", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ194Bg-1", + "parent_body_id": "GJ194Bg", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ194Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ194Bg-2", + "parent_body_id": "GJ194Bg", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ194Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Aberaeron", + "atmosphere": "standard", + "inhabited": true, + "population": 25000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ194Be", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ194Bf", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ194Bg", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ194Bh", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ194Bi", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ194Bj", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ194B-belt", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ194B-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ194Bd-S1", + "orbits_body_id": "GJ194Bd", + "station_type": "transit", + "proper_name": "New Quay", + "population": 3000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ194B-oort-S1", + "orbits_body_id": "GJ194B-oort", + "station_type": "horizon", + "proper_name": "Bardsey", + "population": 500, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 204", @@ -4664,10 +40696,132 @@ "GJ 138" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "15,180", "gdp": "30.4 MTr", - "gttr_excerpt": "**PEDRA FUNDA** means \"deep stone,\" and the religious community that named it came here three hundred years ago to worship without interference, and has been doing exactly that since, which is either a remarkable success story or an extraordinary act of institutional isolation, depending on whether you are the community or the inner corridor's Catholic institutions." + "gttr_excerpt": "**PEDRA FUNDA** means \"deep stone,\" and the religious community that named it came here three hundred years ago to worship without interference, and has been doing exactly that since, which is either a remarkable success story or an extraordinary act of institutional isolation, depending on whether you are the community or the inner corridor's Catholic institutions.", + "orbit_bodies": [ + { + "body_id": "GJ204b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ204c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Mértola", + "atmosphere": "standard", + "inhabited": true, + "population": 15000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ204-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ204d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ204e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ204f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ204g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ204h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ204-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ204-oort-S1", + "orbits_body_id": "GJ204-oort", + "station_type": "horizon", + "proper_name": "Pedra Funda Horizon", + "population": 180, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 349", @@ -4683,10 +40837,120 @@ "GJ 309" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,565", "gdp": "3.1 MTr", - "gttr_excerpt": "**RANDGEBIET** means \"border territory,\" which is accurate in the sense that this is approximately where organized space runs out, and approximately where second-generation settlers from Vorposten decided that one more hop was worth the effort." + "gttr_excerpt": "**RANDGEBIET** means \"border territory,\" which is accurate in the sense that this is approximately where organized space runs out, and approximately where second-generation settlers from Vorposten decided that one more hop was worth the effort.", + "orbit_bodies": [ + { + "body_id": "GJ349b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ349c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Herborn", + "atmosphere": "standard", + "inhabited": true, + "population": 1500, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ349-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ349d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ349e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ349f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ349g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ349-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ349-oort-S1", + "orbits_body_id": "GJ349-oort", + "station_type": "horizon", + "proper_name": "Randgebiet Horizon", + "population": 65, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3612", @@ -4701,10 +40965,180 @@ "GJ 3728B" ], "star_type": "k-m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "110,120", "gdp": "220.2 MTr", - "gttr_excerpt": "**XA VỜI** means \"far away,\" chosen by the founding families with the blunt precision of people who had just finished a journey of ten corridor hops and understood exactly what they were describing, and which has in three hundred years become a settled identity: the farming community at the end of the east_reach corridor, where one aperture leads back the way you came and there is nothing else." + "gttr_excerpt": "**XA VỜI** means \"far away,\" chosen by the founding families with the blunt precision of people who had just finished a journey of ten corridor hops and understood exactly what they were describing, and which has in three hundred years become a settled identity: the farming community at the end of the east_reach corridor, where one aperture leads back the way you came and there is nothing else.", + "orbit_bodies": [ + { + "body_id": "GJ3612b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3612f-m1", + "parent_body_id": "GJ3612f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3612c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3612f-m2", + "parent_body_id": "GJ3612f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3612d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Xa Vời", + "atmosphere": "standard", + "inhabited": true, + "population": 110000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3612-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3612e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3612f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3612g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3612h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3612i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3612j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3612-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3612-oort-S1", + "orbits_body_id": "GJ3612-oort", + "station_type": "horizon", + "proper_name": "Xa Vời Horizon", + "population": 120, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 425A", @@ -4720,9 +41154,131 @@ "GJ 177" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 425A** is the gap between Leuchtturm and wherever GJ 177 is — a through_route that connects one spur terminus to a distant neighbor, passed through by a handful of vessels per year and inspected by no one." + "gttr_excerpt": "**GJ 425A** is the gap between Leuchtturm and wherever GJ 177 is — a through_route that connects one spur terminus to a distant neighbor, passed through by a handful of vessels per year and inspected by no one.", + "orbit_bodies": [ + { + "body_id": "GJ425Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ425Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ425A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ425Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ425Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ425Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ425Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ425Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ425A-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ425A-oort-S1", + "orbits_body_id": "GJ425A-oort", + "station_type": "horizon", + "proper_name": "GJ 425A Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 556", @@ -4737,10 +41293,120 @@ "GJ 1267" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "8,080", "gdp": "16.2 MTr", - "gttr_excerpt": "**RECANTO** means \"retreat,\" and the founders chose both the word and the topology with the same logic: one gate, one way in, because when you have been expelled from an inner corridor system after backing the losing side of a governance dispute, the most defensible position available is the one with the fewest approaches." + "gttr_excerpt": "**RECANTO** means \"retreat,\" and the founders chose both the word and the topology with the same logic: one gate, one way in, because when you have been expelled from an inner corridor system after backing the losing side of a governance dispute, the most defensible position available is the one with the fewest approaches.", + "orbit_bodies": [ + { + "body_id": "GJ556b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ556c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Idanha", + "atmosphere": "standard", + "inhabited": true, + "population": 8000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ556-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ556d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ556e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ556f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ556g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ556-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ556-oort-S1", + "orbits_body_id": "GJ556-oort", + "station_type": "horizon", + "proper_name": "Recanto Horizon", + "population": 80, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 601A", @@ -4756,10 +41422,189 @@ "GJ 3586" ], "star_type": "F2III", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "85,005,480", "gdp": "425.0 BTr", - "gttr_excerpt": "**OSTMARK** means \"eastern border,\" a name given by founders at the furthest point anyone had reached along this corridor, which was accurate when they gave it, and became ironic only later when the naming conventions of the west_reach corridor became fixed and \"eastern\" started pointing the wrong direction. The system kept the name. Five hundred years is long enough to make any irony institutional." + "gttr_excerpt": "**OSTMARK** means \"eastern border,\" a name given by founders at the furthest point anyone had reached along this corridor, which was accurate when they gave it, and became ironic only later when the naming conventions of the west_reach corridor became fixed and \"eastern\" started pointing the wrong direction. The system kept the name. Five hundred years is long enough to make any irony institutional.", + "orbit_bodies": [ + { + "body_id": "GJ601Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ601Af-m1", + "parent_body_id": "GJ601Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ601Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ601Af-m2", + "parent_body_id": "GJ601Af", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ601Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Rand", + "atmosphere": "standard", + "inhabited": true, + "population": 85000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ601A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ601Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ601Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ601Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ601Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ601Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ601Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ601A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ601A-oort-S1", + "orbits_body_id": "GJ601A-oort", + "station_type": "horizon", + "proper_name": "Ostmark Horizon", + "population": 680, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ601Ad-S1", + "orbits_body_id": "GJ601Ad", + "station_type": "industrial", + "proper_name": "Randwerk", + "population": 4800, + "governance_type": null, + "economic_role": "manufacturing" + } + ] }, { "system_id": "GJ 675", @@ -4775,10 +41620,156 @@ "GJ 3403" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "2,120", "gdp": "4.2 MTr", - "gttr_excerpt": "**NEUGRUND** means \"new ground,\" and was founded forty to eighty years ago by a mixed cohort of German, Portuguese, and Dutch-heritage families recruited by an organizer who believed that corridor monocultures were the Reach's fundamental weakness. The experiment is ongoing. The food and architecture have synthesized. The governance structure is contested in ways the organizer's design documents did not anticipate." + "gttr_excerpt": "**NEUGRUND** means \"new ground,\" and was founded forty to eighty years ago by a mixed cohort of German, Portuguese, and Dutch-heritage families recruited by an organizer who believed that corridor monocultures were the Reach's fundamental weakness. The experiment is ongoing. The food and architecture have synthesized. The governance structure is contested in ways the organizer's design documents did not anticipate.", + "orbit_bodies": [ + { + "body_id": "GJ675b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ675e-m1", + "parent_body_id": "GJ675e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ675c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Laubach", + "atmosphere": "standard", + "inhabited": true, + "population": 2000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ675-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ675d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ675e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ675f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ675g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ675h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ675i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ675-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ675-oort-S1", + "orbits_body_id": "GJ675-oort", + "station_type": "horizon", + "proper_name": "Neugrund Horizon", + "population": 120, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 707", @@ -4794,10 +41785,120 @@ "GJ 868" ], "star_type": "binary", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "18,340", "gdp": "36.7 MTr", - "gttr_excerpt": "**DOIS SÓIS** means \"two suns,\" which is the first thing anyone notices and the last thing anyone fully accounts for before arriving." + "gttr_excerpt": "**DOIS SÓIS** means \"two suns,\" which is the first thing anyone notices and the last thing anyone fully accounts for before arriving.", + "orbit_bodies": [ + { + "body_id": "GJ707b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ707c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Faial", + "atmosphere": "standard", + "inhabited": true, + "population": 18000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ707-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ707d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ707e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ707f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ707g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ707-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ707-oort-S1", + "orbits_body_id": "GJ707-oort", + "station_type": "horizon", + "proper_name": "Dois Sóis Horizon", + "population": 340, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 722", @@ -4813,10 +41914,120 @@ "GJ 914A" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "12,180", "gdp": "24.4 MTr", - "gttr_excerpt": "**SKUILPLEK** means \"hiding place,\" and the founders chose that name because they came here to hide from the Lattice Commission's tightened imprint requirements, and the name was an accurate description of the project." + "gttr_excerpt": "**SKUILPLEK** means \"hiding place,\" and the founders chose that name because they came here to hide from the Lattice Commission's tightened imprint requirements, and the name was an accurate description of the project.", + "orbit_bodies": [ + { + "body_id": "GJ722b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ722c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Rietbron", + "atmosphere": "standard", + "inhabited": true, + "population": 12000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ722-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ722d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ722e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ722f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ722g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ722-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ722-oort-S1", + "orbits_body_id": "GJ722-oort", + "station_type": "horizon", + "proper_name": "Skuilplek Horizon", + "population": 180, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 775", @@ -4832,10 +42043,156 @@ "GJ 395" ], "star_type": "K4V", + "currency_zone": "MARK_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "4,440", "gdp": "8.9 MTr", - "gttr_excerpt": "**RANDSHOLM** — \"edge island,\" Scandinavian in construction — was settled forty years ago by a cooperative syndicate that came from inside the Compact zone, knew exactly what it was founding and why, and is now discovering that the gap between a founding philosophy and a governance framework is the size of a specific question about transit tariffs." + "gttr_excerpt": "**RANDSHOLM** — \"edge island,\" Scandinavian in construction — was settled forty years ago by a cooperative syndicate that came from inside the Compact zone, knew exactly what it was founding and why, and is now discovering that the gap between a founding philosophy and a governance framework is the size of a specific question about transit tariffs.", + "orbit_bodies": [ + { + "body_id": "GJ775b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ775e-m1", + "parent_body_id": "GJ775e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ775c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Ytterkant", + "atmosphere": "reducing", + "inhabited": true, + "population": 4200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ775-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ775d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ775e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ775f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ775g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ775h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ775i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ775-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ775-oort-S1", + "orbits_body_id": "GJ775-oort", + "station_type": "horizon", + "proper_name": "Randsholm Horizon", + "population": 240, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1267", @@ -4851,10 +42208,120 @@ "GJ 524" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "10,220", "gdp": "20.4 MTr", - "gttr_excerpt": "**SAUDADE** is not a word that translates well. The closest approximation is \"the longing for something lost that may never return,\" but that rendering loses the specific quality that makes the word irreplaceable: the saudade is not grief, and it is not hope, and it is not quite nostalgia. It is the feeling of a wound that has healed beautifully and still aches." + "gttr_excerpt": "**SAUDADE** is not a word that translates well. The closest approximation is \"the longing for something lost that may never return,\" but that rendering loses the specific quality that makes the word irreplaceable: the saudade is not grief, and it is not hope, and it is not quite nostalgia. It is the feeling of a wound that has healed beautifully and still aches.", + "orbit_bodies": [ + { + "body_id": "GJ1267b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1267c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Monsaraz", + "atmosphere": "standard", + "inhabited": true, + "population": 10000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1267-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1267d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1267e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1267f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1267g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1267-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1267-oort-S1", + "orbits_body_id": "GJ1267-oort", + "station_type": "horizon", + "proper_name": "Saudade Horizon", + "population": 220, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 146", @@ -4870,9 +42337,119 @@ "GJ 349" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 146** is a dim M-dwarf corridor node between Randgebiet and GJ 853A, surveyed multiple times across multiple generations and found, each time, to be technically qualifying and practically discouraging — which is the particular combination that keeps a habitable world empty indefinitely." + "gttr_excerpt": "**GJ 146** is a dim M-dwarf corridor node between Randgebiet and GJ 853A, surveyed multiple times across multiple generations and found, each time, to be technically qualifying and practically discouraging — which is the particular combination that keeps a habitable world empty indefinitely.", + "orbit_bodies": [ + { + "body_id": "GJ146b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ146c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ146-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ146d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ146e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ146f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ146g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ146-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ146-oort-S1", + "orbits_body_id": "GJ146-oort", + "station_type": "horizon", + "proper_name": "GJ 146 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 177", @@ -4888,9 +42465,119 @@ "GJ 394" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 177** is thoroughly surveyed, adequately habitable, and empty — a combination that the deep frontier produces with some regularity and that says something consistent about the limits of adequacy as a settlement driver." + "gttr_excerpt": "**GJ 177** is thoroughly surveyed, adequately habitable, and empty — a combination that the deep frontier produces with some regularity and that says something consistent about the limits of adequacy as a settlement driver.", + "orbit_bodies": [ + { + "body_id": "GJ177b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ177c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ177-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ177d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ177e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ177f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ177g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ177-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ177-oort-S1", + "orbits_body_id": "GJ177-oort", + "station_type": "horizon", + "proper_name": "GJ 177 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3403", @@ -4906,9 +42593,155 @@ "GJ 656" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 3403** has been surveyed, found adequate, and left alone — a sentence that contains the entire history of the system, which is the kind of history that requires some discipline to write about at length." + "gttr_excerpt": "**GJ 3403** has been surveyed, found adequate, and left alone — a sentence that contains the entire history of the system, which is the kind of history that requires some discipline to write about at length.", + "orbit_bodies": [ + { + "body_id": "GJ3403b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3403e-m1", + "parent_body_id": "GJ3403e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3403c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3403-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3403d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3403e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3403f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3403g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3403h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3403i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3403-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3403-oort-S1", + "orbits_body_id": "GJ3403-oort", + "station_type": "horizon", + "proper_name": "GJ 3403 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3586", @@ -4924,10 +42757,129 @@ "GJ 615" ], "star_type": "k-m", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "51,980", "gdp": "104.0 MTr", - "gttr_excerpt": "**EISFELD** is a German river-meadow name meaning \"ice field,\" flat and useful, and the Thuringian founders who gave it were describing what they found and were not trying to be poetic about it, which turns out to be the appropriate orientation for a system whose purpose is to be reliably in the middle of things." + "gttr_excerpt": "**EISFELD** is a German river-meadow name meaning \"ice field,\" flat and useful, and the Thuringian founders who gave it were describing what they found and were not trying to be poetic about it, which turns out to be the appropriate orientation for a system whose purpose is to be reliably in the middle of things.", + "orbit_bodies": [ + { + "body_id": "GJ3586b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3586c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Wiesengrund", + "atmosphere": "standard", + "inhabited": true, + "population": 50000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3586-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3586d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3586e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3586f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3586g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3586-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3586-oort-S1", + "orbits_body_id": "GJ3586-oort", + "station_type": "horizon", + "proper_name": "Eisfeld Horizon", + "population": 380, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ3586c-S1", + "orbits_body_id": "GJ3586c", + "station_type": "commercial", + "proper_name": "Rasthaus", + "population": 1600, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 395", @@ -4943,10 +42895,189 @@ "GJ 771A" ], "star_type": "F8V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "123,260", "gdp": "246.5 MTr", - "gttr_excerpt": "**CONFLUENT** is named for convergence — where things flow together — which is accurate about the transit topology but misses the point entirely, because Confluent is wine, and the transit infrastructure is simply how the wine reaches the people who want it." + "gttr_excerpt": "**CONFLUENT** is named for convergence — where things flow together — which is accurate about the transit topology but misses the point entirely, because Confluent is wine, and the transit infrastructure is simply how the wine reaches the people who want it.", + "orbit_bodies": [ + { + "body_id": "GJ395b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ395f-m1", + "parent_body_id": "GJ395f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ395c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ395f-m2", + "parent_body_id": "GJ395f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ395d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "le Pays", + "atmosphere": "standard", + "inhabited": true, + "population": 120000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ395-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ395e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ395f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ395g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ395h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ395i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ395j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ395-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ395-oort-S1", + "orbits_body_id": "GJ395-oort", + "station_type": "horizon", + "proper_name": "Confluent Horizon", + "population": 460, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ395d-S1", + "orbits_body_id": "GJ395d", + "station_type": "commercial", + "proper_name": "Comptoir", + "population": 2800, + "governance_type": null, + "economic_role": "commercial" + } + ] }, { "system_id": "GJ 528A", @@ -4962,10 +43093,120 @@ "GJ 722" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "22,240", "gdp": "44.5 MTr", - "gttr_excerpt": "**OUPLAAS** means \"old farm,\" and it is the oldest continuously worked agricultural settlement in the deep frontier — four hundred years old, wave-2 settled, founded when the Cairn pocket corridor was barely mapped and the systems at the end of it were names on a survey manifest." + "gttr_excerpt": "**OUPLAAS** means \"old farm,\" and it is the oldest continuously worked agricultural settlement in the deep frontier — four hundred years old, wave-2 settled, founded when the Cairn pocket corridor was barely mapped and the systems at the end of it were names on a survey manifest.", + "orbit_bodies": [ + { + "body_id": "GJ528Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ528Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Klaarstroom", + "atmosphere": "standard", + "inhabited": true, + "population": 22000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ528A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ528Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ528Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ528Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ528Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ528A-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ528A-oort-S1", + "orbits_body_id": "GJ528A-oort", + "station_type": "horizon", + "proper_name": "Ouplaas Horizon", + "population": 240, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 69", @@ -4981,9 +43222,155 @@ "GJ 428A" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 69** is a good world between two communities that have been meaning to settle it for two centuries and have not yet gotten around to it, which is not a description of laziness but of the specific way that clearly good opportunities resist the final step of being taken." + "gttr_excerpt": "**GJ 69** is a good world between two communities that have been meaning to settle it for two centuries and have not yet gotten around to it, which is not a description of laziness but of the specific way that clearly good opportunities resist the final step of being taken.", + "orbit_bodies": [ + { + "body_id": "GJ69b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ69e-m1", + "parent_body_id": "GJ69e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ69c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ69-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ69d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ69e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ69f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ69g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ69h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ69i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ69-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ69-oort-S1", + "orbits_body_id": "GJ69-oort", + "station_type": "horizon", + "proper_name": "GJ 69 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 716", @@ -4999,10 +43386,189 @@ "GJ 1292" ], "star_type": "K1V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "35,000,500", "gdp": "175.0 BTr", - "gttr_excerpt": "**MURCHISON** exists because the frontier push needed somewhere to put supplies, and it has been putting supplies somewhere for two hundred years without attracting much attention to the fact that some of the survey filings in its registry haven't been updated in ninety." + "gttr_excerpt": "**MURCHISON** exists because the frontier push needed somewhere to put supplies, and it has been putting supplies somewhere for two hundred years without attracting much attention to the fact that some of the survey filings in its registry haven't been updated in ninety.", + "orbit_bodies": [ + { + "body_id": "GJ716b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ716d-1", + "parent_body_id": "GJ716d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ716g-1", + "parent_body_id": "GJ716g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ716c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ716g-2", + "parent_body_id": "GJ716g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ716d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Laverton", + "atmosphere": "standard", + "inhabited": true, + "population": 30000000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ716e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ716f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ716g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ716h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ716i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ716-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ716-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ716d-S1", + "orbits_body_id": "GJ716d", + "station_type": "industrial", + "proper_name": "Leonora", + "population": 5000000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ716-oort-S1", + "orbits_body_id": "GJ716-oort", + "station_type": "horizon", + "proper_name": "Norseman", + "population": 500, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 868", @@ -5018,9 +43584,155 @@ "GJ 204" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 868** has been informally named \"Encontro\" — \"meeting\" in Portuguese — by the two Portuguese corridor communities on either side of it, who have been calling it that for approximately a century and a half while disagreeing about whose governance model the eventual settlement would use." + "gttr_excerpt": "**GJ 868** has been informally named \"Encontro\" — \"meeting\" in Portuguese — by the two Portuguese corridor communities on either side of it, who have been calling it that for approximately a century and a half while disagreeing about whose governance model the eventual settlement would use.", + "orbit_bodies": [ + { + "body_id": "GJ868b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ868e-m1", + "parent_body_id": "GJ868e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ868c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ868-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ868d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ868e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ868f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ868g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ868h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ868i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ868-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ868-oort-S1", + "orbits_body_id": "GJ868-oort", + "station_type": "horizon", + "proper_name": "GJ 868 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 1292", @@ -5036,10 +43748,165 @@ "GJ 770" ], "star_type": "k-m", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "58,200", "gdp": "116.4 MTr", - "gttr_excerpt": "**MOYALE** is a company town in the technical and literal sense, which the fifty thousand people who live here understand perfectly and have organized their expectations around accordingly." + "gttr_excerpt": "**MOYALE** is a company town in the technical and literal sense, which the fifty thousand people who live here understand perfectly and have organized their expectations around accordingly.", + "orbit_bodies": [ + { + "body_id": "GJ1292b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1292g-1", + "parent_body_id": "GJ1292g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1292c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1292g-2", + "parent_body_id": "GJ1292g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1292d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Isiolo", + "atmosphere": "standard", + "inhabited": true, + "population": 50000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1292e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1292f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ1292g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ1292h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ1292-belt", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ1292-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ1292d-S1", + "orbits_body_id": "GJ1292d", + "station_type": "commercial", + "proper_name": "Marsabit", + "population": 8000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ1292-oort-S1", + "orbits_body_id": "GJ1292-oort", + "station_type": "horizon", + "proper_name": "Turbi", + "population": 200, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 394", @@ -5055,9 +43922,119 @@ "GJ 407" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 394** is the anteroom to Einde — the cold, dim, technically-not-quite-habitable M-dwarf system that every vessel must transit on the way to the community at the furthest end of this corridor arm." + "gttr_excerpt": "**GJ 394** is the anteroom to Einde — the cold, dim, technically-not-quite-habitable M-dwarf system that every vessel must transit on the way to the community at the furthest end of this corridor arm.", + "orbit_bodies": [ + { + "body_id": "GJ394b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ394c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ394-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ394d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ394e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ394f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ394g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ394-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ394-oort-S1", + "orbits_body_id": "GJ394-oort", + "station_type": "horizon", + "proper_name": "GJ 394 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 428A", @@ -5073,10 +44050,156 @@ "GJ 61" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "14,280", "gdp": "28.6 MTr", - "gttr_excerpt": "**FLUCHTBURG** means \"refuge castle\" in German — a fortified place of last resort, built not for comfort but for survival when retreat has run out of options. The community has spent two hundred years deciding whether the name still fits, which is the kind of question that communities founded on a single defining act tend to carry forward indefinitely." + "gttr_excerpt": "**FLUCHTBURG** means \"refuge castle\" in German — a fortified place of last resort, built not for comfort but for survival when retreat has run out of options. The community has spent two hundred years deciding whether the name still fits, which is the kind of question that communities founded on a single defining act tend to carry forward indefinitely.", + "orbit_bodies": [ + { + "body_id": "GJ428Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ428Ae-m1", + "parent_body_id": "GJ428Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ428Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Fritzlar", + "atmosphere": "standard", + "inhabited": true, + "population": 14000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ428A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ428Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ428Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ428Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ428Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ428Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ428Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ428A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ428A-oort-S1", + "orbits_body_id": "GJ428A-oort", + "station_type": "horizon", + "proper_name": "Fluchtburg Horizon", + "population": 280, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 5", @@ -5092,9 +44215,155 @@ "GJ 528A" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 5** sits between the deep frontier's best unclaimed G-type world and its oldest continuously farmed community, which is a position that attracts a specific kind of speculation without having produced a settlement in the time that speculation has been in circulation." + "gttr_excerpt": "**GJ 5** sits between the deep frontier's best unclaimed G-type world and its oldest continuously farmed community, which is a position that attracts a specific kind of speculation without having produced a settlement in the time that speculation has been in circulation.", + "orbit_bodies": [ + { + "body_id": "GJ5b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ5e-m1", + "parent_body_id": "GJ5e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ5c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ5-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ5d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ5e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ5f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ5g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ5h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ5i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ5-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ5-oort-S1", + "orbits_body_id": "GJ5-oort", + "station_type": "horizon", + "proper_name": "GJ 5 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 524", @@ -5110,9 +44379,179 @@ "GJ 5" ], "star_type": "G", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 524** is the best unclaimed real estate in the deep frontier and has been that for two hundred years, which raises questions not about the world but about the frameworks that assign value to things." + "gttr_excerpt": "**GJ 524** is the best unclaimed real estate in the deep frontier and has been that for two hundred years, which raises questions not about the world but about the frameworks that assign value to things.", + "orbit_bodies": [ + { + "body_id": "GJ524b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ524e-m1", + "parent_body_id": "GJ524e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ524c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ524e-m2", + "parent_body_id": "GJ524e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ524d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ524-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ524e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ524f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ524g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ524h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ524i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ524j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ524-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ524-oort-S1", + "orbits_body_id": "GJ524-oort", + "station_type": "horizon", + "proper_name": "GJ 524 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 615", @@ -5127,10 +44566,156 @@ "GJ 3586" ], "star_type": "K0V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "30,110", "gdp": "60.2 MTr", - "gttr_excerpt": "**DUNKELHOLZ** means \"dark wood,\" which was a practical description before it was a poetic one, given by settlers arriving at a primary world covered in dense coniferous forest under K-type orange light. Three hundred years have not changed either the description or the forest, which in an extraction economy is an achievement." + "gttr_excerpt": "**DUNKELHOLZ** means \"dark wood,\" which was a practical description before it was a poetic one, given by settlers arriving at a primary world covered in dense coniferous forest under K-type orange light. Three hundred years have not changed either the description or the forest, which in an extraction economy is an achievement.", + "orbit_bodies": [ + { + "body_id": "GJ615b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ615e-m1", + "parent_body_id": "GJ615e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ615c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Tiefwald", + "atmosphere": "standard", + "inhabited": true, + "population": 30000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ615-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ615d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ615e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ615f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ615g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ615h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ615i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ615-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ615-oort-S1", + "orbits_body_id": "GJ615-oort", + "station_type": "horizon", + "proper_name": "Dunkelholz Horizon", + "population": 110, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 656", @@ -5146,9 +44731,119 @@ "GJ 354A" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 656** is habitable and unpleasant in a specific, documented way — technically livable, perpetually grey — which is the kind of description that wins a technical argument and loses a practical one." + "gttr_excerpt": "**GJ 656** is habitable and unpleasant in a specific, documented way — technically livable, perpetually grey — which is the kind of description that wins a technical argument and loses a practical one.", + "orbit_bodies": [ + { + "body_id": "GJ656b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ656c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ656-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ656d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ656e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ656f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ656g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ656-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ656-oort-S1", + "orbits_body_id": "GJ656-oort", + "station_type": "horizon", + "proper_name": "GJ 656 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 771A", @@ -5164,10 +44859,180 @@ "GJ 4056" ], "star_type": "G8IVvar", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "55,320", "gdp": "110.6 MTr", - "gttr_excerpt": "**ALSHAIN** is a name from the old Arabic astronomical catalog — Beta Aquilae — applied to this system before human settlement was a concept and kept afterward because it was already in the navigation records and renaming things is a formal process nobody wanted to initiate at eleven hops from Gateway." + "gttr_excerpt": "**ALSHAIN** is a name from the old Arabic astronomical catalog — Beta Aquilae — applied to this system before human settlement was a concept and kept afterward because it was already in the navigation records and renaming things is a formal process nobody wanted to initiate at eleven hops from Gateway.", + "orbit_bodies": [ + { + "body_id": "GJ771Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ771Af-m1", + "parent_body_id": "GJ771Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ771Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ771Af-m2", + "parent_body_id": "GJ771Af", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ771Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Havmark", + "atmosphere": "standard", + "inhabited": true, + "population": 55000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ771A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ771Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ771Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ771Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ771Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ771Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ771Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ771A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ771A-oort-S1", + "orbits_body_id": "GJ771A-oort", + "station_type": "horizon", + "proper_name": "Alshain Horizon", + "population": 320, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 853A", @@ -5183,9 +45048,119 @@ "GJ 146" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 853A** has commercial-grade mineral deposits, a habitable world, and corridor connectivity to settled systems on both sides — everything the early settlement economic models said was required — and has been empty for two centuries, which should prompt some review of those models." + "gttr_excerpt": "**GJ 853A** has commercial-grade mineral deposits, a habitable world, and corridor connectivity to settled systems on both sides — everything the early settlement economic models said was required — and has been empty for two centuries, which should prompt some review of those models.", + "orbit_bodies": [ + { + "body_id": "GJ853Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ853Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ853A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ853Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ853Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ853Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ853Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ853A-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ853A-oort-S1", + "orbits_body_id": "GJ853A-oort", + "station_type": "horizon", + "proper_name": "GJ 853A Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 354A", @@ -5201,9 +45176,119 @@ "GJ 684B" ], "star_type": "M", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 354A** has a thin atmosphere — not absent, but thin enough that the difference from comfortable is felt in the pressure differential and addressed by engineering solutions that are available, reliable, and expensive at hop twelve." + "gttr_excerpt": "**GJ 354A** has a thin atmosphere — not absent, but thin enough that the difference from comfortable is felt in the pressure differential and addressed by engineering solutions that are available, reliable, and expensive at hop twelve.", + "orbit_bodies": [ + { + "body_id": "GJ354Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ354Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ354A-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ354Ad", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ354Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ354Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ354Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ354A-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ354A-oort-S1", + "orbits_body_id": "GJ354A-oort", + "station_type": "horizon", + "proper_name": "GJ 354A Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 4056", @@ -5219,10 +45304,120 @@ "GJ 127B" ], "star_type": "g", + "currency_zone": "MARK_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "8", "gdp": "0.0 MTr", - "gttr_excerpt": "**GJ 4056** has no settlement name, which is the most informative thing about it. In a corridor where wave_1 founders named their systems after Swedish river towns and aspirational German compounds and Portuguese rest stops, GJ 4056 has only a catalog number because no one has ever stayed long enough to give it anything else." + "gttr_excerpt": "**GJ 4056** has no settlement name, which is the most informative thing about it. In a corridor where wave_1 founders named their systems after Swedish river towns and aspirational German compounds and Portuguese rest stops, GJ 4056 has only a catalog number because no one has ever stayed long enough to give it anything else.", + "orbit_bodies": [ + { + "body_id": "GJ4056b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "reducing", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4056c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4056-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ4056d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4056e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ4056f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ4056g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ4056-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ4056-oort-S1", + "orbits_body_id": "GJ4056-oort", + "station_type": "horizon", + "proper_name": "GJ 4056 Horizon", + "population": 8, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 407", @@ -5237,10 +45432,156 @@ "GJ 394" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "3,065", "gdp": "6.1 MTr", - "gttr_excerpt": "**EINDE** means \"end\" in Afrikaans and Dutch, and is meant in every sense the word carries. The community arrived here deliberately, past the empty discouragement of GJ 394, through a single gate aperture that opens into this system and no other, and named the place for what it is. You do not arrive at Einde in transit. You arrive because this is where you meant to go." + "gttr_excerpt": "**EINDE** means \"end\" in Afrikaans and Dutch, and is meant in every sense the word carries. The community arrived here deliberately, past the empty discouragement of GJ 394, through a single gate aperture that opens into this system and no other, and named the place for what it is. You do not arrive at Einde in transit. You arrive because this is where you meant to go.", + "orbit_bodies": [ + { + "body_id": "GJ407b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ407e-m1", + "parent_body_id": "GJ407e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ407c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Sutherland", + "atmosphere": "standard", + "inhabited": true, + "population": 3000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ407-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ407d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ407e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ407f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ407g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ407h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ407i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ407-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ407-oort-S1", + "orbits_body_id": "GJ407-oort", + "station_type": "horizon", + "proper_name": "Einde Horizon", + "population": 65, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 61", @@ -5256,10 +45597,177 @@ "GJ 201" ], "star_type": "G", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "8,900", "gdp": "17.8 MTr", - "gttr_excerpt": "**FERNLICHT** means \"far light,\" and the name carries two meanings the founders intended: the light of this star — a G-type primary, bright and warm at hop 12 in a region of dim M-dwarfs, a genuine geographic anomaly — and the light of learning, carried out of the inner Reach's institutions by scholars who had been expelled from them." + "gttr_excerpt": "**FERNLICHT** means \"far light,\" and the name carries two meanings the founders intended: the light of this star — a G-type primary, bright and warm at hop 12 in a region of dim M-dwarfs, a genuine geographic anomaly — and the light of learning, carried out of the inner Reach's institutions by scholars who had been expelled from them.", + "orbit_bodies": [ + { + "body_id": "GJ61b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ61e-m1", + "parent_body_id": "GJ61e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ61c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Wolfenbüttel", + "atmosphere": "standard", + "inhabited": true, + "population": 8000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ61d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ61-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ61e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ61f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ61g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ61h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ61i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ61j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ61-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ61-oort-S1", + "orbits_body_id": "GJ61-oort", + "station_type": "horizon", + "proper_name": "Fernlicht Horizon", + "population": 280, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ61c-S1", + "orbits_body_id": "GJ61c", + "station_type": "research", + "proper_name": "Bibliothek", + "population": 620, + "governance_type": null, + "economic_role": "research" + } + ] }, { "system_id": "GJ 616", @@ -5275,9 +45783,155 @@ "GJ 853A" ], "star_type": "K", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 616** is a system that every assessment concludes would be settled at a shorter hop distance, which is the kind of conclusion that is accurate and useless simultaneously." + "gttr_excerpt": "**GJ 616** is a system that every assessment concludes would be settled at a shorter hop distance, which is the kind of conclusion that is accurate and useless simultaneously.", + "orbit_bodies": [ + { + "body_id": "GJ616b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ616e-m1", + "parent_body_id": "GJ616e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ616c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ616-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ616d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ616e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ616f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ616g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ616h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ616i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ616-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ616-oort-S1", + "orbits_body_id": "GJ616-oort", + "station_type": "horizon", + "proper_name": "GJ 616 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 770", @@ -5292,10 +45946,189 @@ "GJ 1292" ], "star_type": "K3/K4V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "16,000", "gdp": "32.0 MTr", - "gttr_excerpt": "**REKOHU** is the furthest settled system in the north arc, named for the easternmost inhabited islands of pre-settlement Aotearoa — a name associated with voyage, distance, and cultural distinctiveness — which is either an honest statement of geographic fact or a statement of aspiration that the sixty-to-eighty-year Gate Silence subsequently made literal." + "gttr_excerpt": "**REKOHU** is the furthest settled system in the north arc, named for the easternmost inhabited islands of pre-settlement Aotearoa — a name associated with voyage, distance, and cultural distinctiveness — which is either an honest statement of geographic fact or a statement of aspiration that the sixty-to-eighty-year Gate Silence subsequently made literal.", + "orbit_bodies": [ + { + "body_id": "GJ770b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ770d-1", + "parent_body_id": "GJ770d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ770g-1", + "parent_body_id": "GJ770g", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ770c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ770g-2", + "parent_body_id": "GJ770g", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ770d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Te Whanga", + "atmosphere": "standard", + "inhabited": true, + "population": 15000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ770e", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ770f", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ770g", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "dense", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ770h", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ770i", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ770-belt", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ770-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ770d-S1", + "orbits_body_id": "GJ770d", + "station_type": "commercial", + "proper_name": "Kaingaroa", + "population": 1000, + "governance_type": null, + "economic_role": "transit" + }, + { + "station_id": "GJ770-oort-S1", + "orbits_body_id": "GJ770-oort", + "station_type": "horizon", + "proper_name": "Rangiauria", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 127B", @@ -5311,10 +46144,192 @@ "GJ 42" ], "star_type": "G7 V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "89,500", "gdp": "179.0 MTr", - "gttr_excerpt": "**ECHTERNACH** is named for a Luxembourg abbey town, and the Luxembourgish community that named it has spent four hundred years at hop thirteen maintaining a specific and emphatic distinction between itself and its larger German-speaking and French-speaking neighbors — a distinction most of those neighbors would not notice, but which Echternach finds entirely worth maintaining." + "gttr_excerpt": "**ECHTERNACH** is named for a Luxembourg abbey town, and the Luxembourgish community that named it has spent four hundred years at hop thirteen maintaining a specific and emphatic distinction between itself and its larger German-speaking and French-speaking neighbors — a distinction most of those neighbors would not notice, but which Echternach finds entirely worth maintaining.", + "orbit_bodies": [ + { + "body_id": "GJ127Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ127Bc-1", + "parent_body_id": "GJ127Bc", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ127Be-1", + "parent_body_id": "GJ127Be", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ127Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Wiltz", + "atmosphere": "standard", + "inhabited": true, + "population": 85000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ127Be-2", + "parent_body_id": "GJ127Be", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ127Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ127B-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ127Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "hydrogen-helium", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ127Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ127Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ127Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ127Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ127Bj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ127B-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ127B-oort-S1", + "orbits_body_id": "GJ127B-oort", + "station_type": "horizon", + "proper_name": "Sauer Horizon", + "population": 4500, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 201", @@ -5331,9 +46346,167 @@ "GJ 61" ], "star_type": "K2", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 201** is the last junction before the deep corridor divides, which gives it a significance its stellar conditions do not support and its empty horizon station does not require." + "gttr_excerpt": "**GJ 201** is the last junction before the deep corridor divides, which gives it a significance its stellar conditions do not support and its empty horizon station does not require.", + "orbit_bodies": [ + { + "body_id": "GJ201b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ201e-m1", + "parent_body_id": "GJ201e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ201c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "standard", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ201e-m2", + "parent_body_id": "GJ201e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ201-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ201d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ201e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ201f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ201g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ201h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ201i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ201-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ201-oort-S1", + "orbits_body_id": "GJ201-oort", + "station_type": "horizon", + "proper_name": "GJ 201 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 684B", @@ -5349,10 +46522,168 @@ "GJ 875" ], "star_type": "K3 V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "2,080", "gdp": "4.2 MTr", - "gttr_excerpt": "**PASO LARGO** is named for the \"long stride\" — the ring-light of a gas giant's atmosphere, or the founding expedition's final approach trajectory, or the distance already traveled. The founding families disagree about which. Three centuries in, the disagreement has become part of the name." + "gttr_excerpt": "**PASO LARGO** is named for the \"long stride\" — the ring-light of a gas giant's atmosphere, or the founding expedition's final approach trajectory, or the distance already traveled. The founding families disagree about which. Three centuries in, the disagreement has become part of the name.", + "orbit_bodies": [ + { + "body_id": "GJ684Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ684Bc-m1", + "parent_body_id": "GJ684Bc", + "orbit_index": 1, + "body_type": "moon", + "proper_name": "Quelimane", + "atmosphere": "standard", + "inhabited": true, + "population": 2000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ684Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ684Bc-m2", + "parent_body_id": "GJ684Bc", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ684B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ684Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ684Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ684Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ684Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ684Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ684Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ684B-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ684B-oort-S1", + "orbits_body_id": "GJ684B-oort", + "station_type": "horizon", + "proper_name": "Paso Largo Horizon", + "population": 80, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 903", @@ -5368,10 +46699,156 @@ "GJ 616" ], "star_type": "K1IV", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "4,120", "gdp": "8.2 MTr", - "gttr_excerpt": "**ERRAI** is the through-route between the deep frontier's mineral surveys and Orchard's End — a K1IV subgiant that is slightly more evolved than its spectral neighbors, slightly warmer, and slightly more orange in a corridor that is already quite orange." + "gttr_excerpt": "**ERRAI** is the through-route between the deep frontier's mineral surveys and Orchard's End — a K1IV subgiant that is slightly more evolved than its spectral neighbors, slightly warmer, and slightly more orange in a corridor that is already quite orange.", + "orbit_bodies": [ + { + "body_id": "GJ903b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ903e-m1", + "parent_body_id": "GJ903e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ903c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Ghadames", + "atmosphere": "standard", + "inhabited": true, + "population": 4000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ903-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ903d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ903e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ903f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ903g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ903h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ903i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ903-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ903-oort-S1", + "orbits_body_id": "GJ903-oort", + "station_type": "horizon", + "proper_name": "Errai Horizon", + "population": 120, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 42", @@ -5387,10 +46864,180 @@ "GJ 282A" ], "star_type": "K2V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "57,000", "gdp": "114.0 MTr", - "gttr_excerpt": "**LANGEMARK** is the name of a World War I battlefield, chosen by the founding cooperative's leader because his ancestry ran through a family that had documented its presence on that ground, and because he wanted the name to carry something about persisting in difficult conditions. Three hundred years later the name has mostly shed that specific referent and become simply the system's name. This is how naming works." + "gttr_excerpt": "**LANGEMARK** is the name of a World War I battlefield, chosen by the founding cooperative's leader because his ancestry ran through a family that had documented its presence on that ground, and because he wanted the name to carry something about persisting in difficult conditions. Three hundred years later the name has mostly shed that specific referent and become simply the system's name. This is how naming works.", + "orbit_bodies": [ + { + "body_id": "GJ42b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ42c-1", + "parent_body_id": "GJ42c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ42e-1", + "parent_body_id": "GJ42e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ42c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Poperinge", + "atmosphere": "standard", + "inhabited": true, + "population": 55000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ42e-2", + "parent_body_id": "GJ42e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ42d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ42-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ42e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "hydrogen-helium", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ42f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ42g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ42h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ42i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ42-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ42-oort-S1", + "orbits_body_id": "GJ42-oort", + "station_type": "horizon", + "proper_name": "Langemark Horizon", + "population": 2000, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 481", @@ -5406,10 +47053,156 @@ "GJ 201" ], "star_type": "K2", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "4,080", "gdp": "8.2 MTr", - "gttr_excerpt": "**ORCHARD'S END** is the kind of name that tells you what the founder wanted, and by the possessive, that one person wanted it more than the others. Marta Orchard wanted the furthest good land she could find, found it at hop 14, and planted stone-fruit trees that are visible from orbit during fruiting season." + "gttr_excerpt": "**ORCHARD'S END** is the kind of name that tells you what the founder wanted, and by the possessive, that one person wanted it more than the others. Marta Orchard wanted the furthest good land she could find, found it at hop 14, and planted stone-fruit trees that are visible from orbit during fruiting season.", + "orbit_bodies": [ + { + "body_id": "GJ481b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ481e-m1", + "parent_body_id": "GJ481e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ481c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Pershore", + "atmosphere": "standard", + "inhabited": true, + "population": 4000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ481-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ481d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ481e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ481f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ481g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ481h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ481i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ481-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ481-oort-S1", + "orbits_body_id": "GJ481-oort", + "station_type": "horizon", + "proper_name": "Orchard's End Horizon", + "population": 80, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 684A", @@ -5425,10 +47218,168 @@ "GJ 201" ], "star_type": "G0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "3,140", "gdp": "6.3 MTr", - "gttr_excerpt": "**SONNENKAP** is startlingly bright." + "gttr_excerpt": "**SONNENKAP** is startlingly bright.", + "orbit_bodies": [ + { + "body_id": "GJ684Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ684Ae-m1", + "parent_body_id": "GJ684Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ684Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Freyburg", + "atmosphere": "standard", + "inhabited": true, + "population": 3000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ684Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ684A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ684Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ684Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ684Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ684Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ684Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ684Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ684A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ684A-oort-S1", + "orbits_body_id": "GJ684A-oort", + "station_type": "horizon", + "proper_name": "Sonnenkap Horizon", + "population": 140, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 875", @@ -5444,9 +47395,131 @@ "GJ 282B" ], "star_type": "K5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**THE NARROWS** was named by Paso Largo's freight crews, who transit it regularly and have developed the habit of naming places they pass through whether anyone lives there or not. The name refers to the transit window: the two apertures are positioned such that the optimal path passes close to the K5 primary, and the gravitational gradient at closest approach produces a perceptible deceleration. The freight crews call it \"the squeeze.\" The effect is minor. The name stuck." + "gttr_excerpt": "**THE NARROWS** was named by Paso Largo's freight crews, who transit it regularly and have developed the habit of naming places they pass through whether anyone lives there or not. The name refers to the transit window: the two apertures are positioned such that the optimal path passes close to the K5 primary, and the gravitational gradient at closest approach produces a perceptible deceleration. The freight crews call it \"the squeeze.\" The effect is minor. The name stuck.", + "orbit_bodies": [ + { + "body_id": "GJ875b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ875c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ875-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ875d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ875e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ875f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ875g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ875h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ875-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ875-oort-S1", + "orbits_body_id": "GJ875-oort", + "station_type": "horizon", + "proper_name": "The Narrows Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 282A", @@ -5462,10 +47535,180 @@ "GJ 807" ], "star_type": "K2V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "125,500", "gdp": "251.0 MTr", - "gttr_excerpt": "**BOUT DU CHEMIN** means \"end of the road,\" which is what it was for four centuries, and which it technically is no longer, and which it remains in identity in the way that places built around a defining characteristic retain that characteristic after the circumstance that created it has changed." + "gttr_excerpt": "**BOUT DU CHEMIN** means \"end of the road,\" which is what it was for four centuries, and which it technically is no longer, and which it remains in identity in the way that places built around a defining characteristic retain that characteristic after the circumstance that created it has changed.", + "orbit_bodies": [ + { + "body_id": "GJ282Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ282Ac-1", + "parent_body_id": "GJ282Ac", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ282Ae-1", + "parent_body_id": "GJ282Ae", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ282Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Dieulefit", + "atmosphere": "standard", + "inhabited": true, + "population": 120000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ282Ae-2", + "parent_body_id": "GJ282Ae", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ282Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ282A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ282Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "hydrogen-helium", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ282Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ282Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ282Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ282Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ282A-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ282A-oort-S1", + "orbits_body_id": "GJ282A-oort", + "station_type": "horizon", + "proper_name": "La Veille Horizon", + "population": 5500, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 282B", @@ -5481,10 +47724,132 @@ "GJ 421B" ], "star_type": "K5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "845", "gdp": "1.7 MTr", - "gttr_excerpt": "**TRAVESSIA** means the act of crossing — the traverse, the passage from one condition to another. The wave-4 settlers who arrived 170 years ago understood immediately that the system's value was positional rather than intrinsic, and named it accordingly." + "gttr_excerpt": "**TRAVESSIA** means the act of crossing — the traverse, the passage from one condition to another. The wave-4 settlers who arrived 170 years ago understood immediately that the system's value was positional rather than intrinsic, and named it accordingly.", + "orbit_bodies": [ + { + "body_id": "GJ282Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ282Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Belver", + "atmosphere": "thin", + "inhabited": true, + "population": 800, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ282B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ282Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ282Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ282Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ282Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ282Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ282B-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ282B-oort-S1", + "orbits_body_id": "GJ282B-oort", + "station_type": "horizon", + "proper_name": "Travessia Horizon", + "population": 45, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 532", @@ -5500,10 +47865,156 @@ "GJ 904" ], "star_type": "K5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "1,620", "gdp": "3.2 MTr", - "gttr_excerpt": "**KETTENSCHMIED** means \"chain-smith\" — which is what the community does, what it has done for three hundred years, and what the deep frontier corridor's settlements depend on it to keep doing." + "gttr_excerpt": "**KETTENSCHMIED** means \"chain-smith\" — which is what the community does, what it has done for three hundred years, and what the deep frontier corridor's settlements depend on it to keep doing.", + "orbit_bodies": [ + { + "body_id": "GJ532b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ532c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Iserlohn", + "atmosphere": "thin", + "inhabited": true, + "population": 1500, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ532-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ532d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ532e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ532f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ532g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ532h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ532i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ532j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ532-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ532-oort-S1", + "orbits_body_id": "GJ532-oort", + "station_type": "horizon", + "proper_name": "Kettenschmied Horizon", + "population": 120, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 421B", @@ -5519,10 +48030,132 @@ "GJ 3943" ], "star_type": "K7V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "840", "gdp": "1.7 MTr", - "gttr_excerpt": "**PEDRA SECA** means \"dry stone,\" and the name is literal. Two hundred and eighty years of careful water management has produced a community built around cisterns, and the cisterns are the most solidly built structures in the settlement, maintained to the highest standard, treated with the particular reverence that communities reserve for the thing that keeps them alive." + "gttr_excerpt": "**PEDRA SECA** means \"dry stone,\" and the name is literal. Two hundred and eighty years of careful water management has produced a community built around cisterns, and the cisterns are the most solidly built structures in the settlement, maintained to the highest standard, treated with the particular reverence that communities reserve for the thing that keeps them alive.", + "orbit_bodies": [ + { + "body_id": "GJ421Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ421Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Serpa", + "atmosphere": "thin", + "inhabited": true, + "population": 800, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ421B-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ421Bd", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ421Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ421Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ421Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ421Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ421B-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ421B-oort-S1", + "orbits_body_id": "GJ421B-oort", + "station_type": "horizon", + "proper_name": "Pedra Seca Horizon", + "population": 40, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 807", @@ -5538,10 +48171,180 @@ "GJ 529" ], "star_type": "K0IV", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "8,400", "gdp": "16.8 MTr", - "gttr_excerpt": "**GRENZSTEIN** means \"boundary stone,\" and the wave_5 settlers who chose it had spent their journey thinking about what they were doing, which is apparent in the name. They passed through four centuries of accumulated corridor civilization and decided they wanted to be one hop further. The name expresses this without decorating it." + "gttr_excerpt": "**GRENZSTEIN** means \"boundary stone,\" and the wave_5 settlers who chose it had spent their journey thinking about what they were doing, which is apparent in the name. They passed through four centuries of accumulated corridor civilization and decided they wanted to be one hop further. The name expresses this without decorating it.", + "orbit_bodies": [ + { + "body_id": "GJ807b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ807d-1", + "parent_body_id": "GJ807d", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ807e-1", + "parent_body_id": "GJ807e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ807c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thick", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ807e-2", + "parent_body_id": "GJ807e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ807d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Pierrevert", + "atmosphere": "standard", + "inhabited": true, + "population": 8000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ807-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ807e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "hydrogen-helium", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ807f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ807g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ807h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ807i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ807-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ807-oort-S1", + "orbits_body_id": "GJ807-oort", + "station_type": "horizon", + "proper_name": "Grenzstein Horizon", + "population": 400, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 904", @@ -5557,10 +48360,168 @@ "GJ 726" ], "star_type": "F7V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "640", "gdp": "1.3 MTr", - "gttr_excerpt": "**CLARABOIA** means \"skylight\" in Portuguese — the window in the roof that lets the light in. The founding settlers chose the name for an F7V primary at hop 16 that is warm, luminous, and brighter than anything for many hops in any direction. They were also, as the founding mythology does not entirely acknowledge, the losers of a governance dispute from a south_reach cooperative, which gave them both the capital and the motivation to go looking for a skylight as far from their former colleagues as the corridor allowed." + "gttr_excerpt": "**CLARABOIA** means \"skylight\" in Portuguese — the window in the roof that lets the light in. The founding settlers chose the name for an F7V primary at hop 16 that is warm, luminous, and brighter than anything for many hops in any direction. They were also, as the founding mythology does not entirely acknowledge, the losers of a governance dispute from a south_reach cooperative, which gave them both the capital and the motivation to go looking for a skylight as far from their former colleagues as the corridor allowed.", + "orbit_bodies": [ + { + "body_id": "GJ904b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ904f-m1", + "parent_body_id": "GJ904f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ904c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ904d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Soajo", + "atmosphere": "standard", + "inhabited": true, + "population": 600, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ904-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ904e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ904f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ904g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ904h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ904i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ904j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ904-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ904-oort-S1", + "orbits_body_id": "GJ904-oort", + "station_type": "horizon", + "proper_name": "Claraboia Horizon", + "population": 40, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 3943", @@ -5576,9 +48537,119 @@ "GJ 546" ], "star_type": "K5V+M3V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**BRANDPUNT** means focal point. The community at hop 17 named itself for what it does rather than what it is — an unusual choice in a corridor where systems are named for what they look like (Stilwater, Droëland, Skemeraand) or what they feel like (Eerste Wacht, Skuilplek, Helderoog). Brandpunt feels like a laboratory, which is what it is." + "gttr_excerpt": "**BRANDPUNT** means focal point. The community at hop 17 named itself for what it does rather than what it is — an unusual choice in a corridor where systems are named for what they look like (Stilwater, Droëland, Skemeraand) or what they feel like (Eerste Wacht, Skuilplek, Helderoog). Brandpunt feels like a laboratory, which is what it is.", + "orbit_bodies": [ + { + "body_id": "GJ3943b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3943-belt", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ3943c", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3943d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ3943e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3943f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3943g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ3943-oort", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ3943-oort-S1", + "orbits_body_id": "GJ3943-oort", + "station_type": "horizon", + "proper_name": "GJ 3943 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 529", @@ -5593,10 +48664,180 @@ "GJ 807" ], "star_type": "K4/K5V", + "currency_zone": "MARK_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "35,350", "gdp": "70.7 MTr", - "gttr_excerpt": "**YTTERMARK** means \"outermost march\" — the furthest boundary — and the Wave 3 settlers who named it were being exact, not optimistic. Three hundred years later, it is still exact." + "gttr_excerpt": "**YTTERMARK** means \"outermost march\" — the furthest boundary — and the Wave 3 settlers who named it were being exact, not optimistic. Three hundred years later, it is still exact.", + "orbit_bodies": [ + { + "body_id": "GJ529b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ529c-1", + "parent_body_id": "GJ529c", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ529e-1", + "parent_body_id": "GJ529e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ529c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Midtmark", + "atmosphere": "standard", + "inhabited": true, + "population": 35000, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ529e-2", + "parent_body_id": "GJ529e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ529d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ529-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ529e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "hydrogen-helium", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "gas_giant" + }, + { + "body_id": "GJ529f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ529g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ529h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ529i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ529-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ529-oort-S1", + "orbits_body_id": "GJ529-oort", + "station_type": "horizon", + "proper_name": "Yttermark Horizon", + "population": 350, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 726", @@ -5612,9 +48853,131 @@ "GJ 672" ], "star_type": "K5", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 0 inhabited", "population": "0", - "gttr_excerpt": "**GJ 726** is unremarkable in the way that deep frontier systems are unremarkable when they have nothing to offer and nothing to prevent — a K5 primary, a habitable zone world with thin atmosphere and native lichen, and two gate apertures connecting two places that have no particular interest in each other except that the corridor runs through here." + "gttr_excerpt": "**GJ 726** is unremarkable in the way that deep frontier systems are unremarkable when they have nothing to offer and nothing to prevent — a K5 primary, a habitable zone world with thin atmosphere and native lichen, and two gate apertures connecting two places that have no particular interest in each other except that the corridor runs through here.", + "orbit_bodies": [ + { + "body_id": "GJ726b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ726c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ726-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ726d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ726e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ726f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ726g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ726h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ726-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ726-oort-S1", + "orbits_body_id": "GJ726-oort", + "station_type": "horizon", + "proper_name": "GJ 726 Horizon", + "population": 0, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 546", @@ -5630,10 +48993,132 @@ "GJ 111" ], "star_type": "K5V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "420", "gdp": "0.8 MTr", - "gttr_excerpt": "**EERSTE WACHT** means \"first watch,\" and the community has been on it for five hundred years at hop 18, which is the anomaly that the founding record documents without explaining, and that the community's descendants have been living with long enough that the distinction between reason and tradition has dissolved." + "gttr_excerpt": "**EERSTE WACHT** means \"first watch,\" and the community has been on it for five hundred years at hop 18, which is the anomaly that the founding record documents without explaining, and that the community's descendants have been living with long enough that the distinction between reason and tradition has dissolved.", + "orbit_bodies": [ + { + "body_id": "GJ546b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ546c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Leliefontein", + "atmosphere": "thin", + "inhabited": true, + "population": 400, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ546-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ546d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ546e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ546f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ546g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ546h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ546-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ546-oort-S1", + "orbits_body_id": "GJ546-oort", + "station_type": "horizon", + "proper_name": "Eerste Wacht Horizon", + "population": 20, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 672", @@ -5649,10 +49134,168 @@ "GJ 147" ], "star_type": "G0V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "215", "gdp": "0.4 MTr", - "gttr_excerpt": "**NOVA ESTRADA** means \"new road,\" and the wave-5 settlers who arrived thirty years ago chose the name with the confidence of people young enough to believe that naming a road and building one are more or less the same task." + "gttr_excerpt": "**NOVA ESTRADA** means \"new road,\" and the wave-5 settlers who arrived thirty years ago chose the name with the confidence of people young enough to believe that naming a road and building one are more or less the same task.", + "orbit_bodies": [ + { + "body_id": "GJ672b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ672f-m1", + "parent_body_id": "GJ672f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ672c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ672d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Viçosa", + "atmosphere": "standard", + "inhabited": true, + "population": 200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ672-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ672e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ672f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ672g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ672h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ672i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ672j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ672-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ672-oort-S1", + "orbits_body_id": "GJ672-oort", + "station_type": "horizon", + "proper_name": "Nova Estrada Horizon", + "population": 15, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 111", @@ -5667,10 +49310,180 @@ "GJ 546" ], "star_type": "F5/F6V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "1,225", "gdp": "2.5 MTr", - "gttr_excerpt": "**HELDEROOG** means \"bright eye,\" and the F5/F6V primary is the brightest star on the entire corridor — a white subgiant that requires viewport filtering on approach. After the dim K5 of Eerste Wacht and the K-M binary of the unsettled gap behind it, the transition into Helderoog's system is a physical shock. The light is not amber. It is not red. It is not the managed dimness of the deep frontier's K-dwarf corridor. It is white." + "gttr_excerpt": "**HELDEROOG** means \"bright eye,\" and the F5/F6V primary is the brightest star on the entire corridor — a white subgiant that requires viewport filtering on approach. After the dim K5 of Eerste Wacht and the K-M binary of the unsettled gap behind it, the transition into Helderoog's system is a physical shock. The light is not amber. It is not red. It is not the managed dimness of the deep frontier's K-dwarf corridor. It is white.", + "orbit_bodies": [ + { + "body_id": "GJ111b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ111f-m1", + "parent_body_id": "GJ111f", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ111c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ111f-m2", + "parent_body_id": "GJ111f", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ111d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Greyton", + "atmosphere": "standard", + "inhabited": true, + "population": 1200, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ111-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ111e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ111f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ111g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ111h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ111i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ111j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ111-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ111-oort-S1", + "orbits_body_id": "GJ111-oort", + "station_type": "horizon", + "proper_name": "Helderoog Horizon", + "population": 25, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 147", @@ -5686,10 +49499,168 @@ "GJ 127A" ], "star_type": "F9V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "735", "gdp": "1.5 MTr", - "gttr_excerpt": "**ENTREMEIO** is Portuguese — it means \"between,\" the interlude, the space that exists between the thing before and the thing after. The wave-4 founders who arrived 160 years ago named their settlement for its position rather than its conditions. They were not naming a home. They were naming a function, and eight generations of their descendants have been performing it faithfully ever since." + "gttr_excerpt": "**ENTREMEIO** is Portuguese — it means \"between,\" the interlude, the space that exists between the thing before and the thing after. The wave-4 founders who arrived 160 years ago named their settlement for its position rather than its conditions. They were not naming a home. They were naming a function, and eight generations of their descendants have been performing it faithfully ever since.", + "orbit_bodies": [ + { + "body_id": "GJ147b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ147e-m1", + "parent_body_id": "GJ147e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ147c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Almeirim", + "atmosphere": "thin", + "inhabited": true, + "population": 700, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ147-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ147d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ147e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ147f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ147g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ147h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ147i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ147j", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ147-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ147-oort-S1", + "orbits_body_id": "GJ147-oort", + "station_type": "horizon", + "proper_name": "Entremeio Horizon", + "population": 35, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 127A", @@ -5705,10 +49676,180 @@ "GJ 501B" ], "star_type": "F8V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "530", "gdp": "1.1 MTr", - "gttr_excerpt": "**DALIM** is a traditional Arabic star name, from the historical designation of a star in the constellation Fornax. Its use at hop 20, by a founding cohort that included three former Veil Institute affiliates, is one of the more quietly interesting naming choices in the deep frontier — and the naming is not the most interesting thing about Dalim." + "gttr_excerpt": "**DALIM** is a traditional Arabic star name, from the historical designation of a star in the constellation Fornax. Its use at hop 20, by a founding cohort that included three former Veil Institute affiliates, is one of the more quietly interesting naming choices in the deep frontier — and the naming is not the most interesting thing about Dalim.", + "orbit_bodies": [ + { + "body_id": "GJ127Ab", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ127Af-m1", + "parent_body_id": "GJ127Af", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ127Ac", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ127Af-m2", + "parent_body_id": "GJ127Af", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ127Ad", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Harra", + "atmosphere": "standard", + "inhabited": true, + "population": 500, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ127A-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ127Ae", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ127Af", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ127Ag", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ127Ah", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ127Ai", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ127Aj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ127A-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ127A-oort-S1", + "orbits_body_id": "GJ127A-oort", + "station_type": "horizon", + "proper_name": "Dalim Horizon", + "population": 30, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 501B", @@ -5724,10 +49865,168 @@ "GJ 7547" ], "star_type": "F5 V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "55", "gdp": "0.1 MTr", - "gttr_excerpt": "**CANDEIA** is Portuguese for \"oil lamp\" — a small light, a personal light, the kind you carry when the larger lights have gone out. The name is accurate and modest and was chosen by forty-three people at hop 21 who understood their position in the corridor and named themselves for it." + "gttr_excerpt": "**CANDEIA** is Portuguese for \"oil lamp\" — a small light, a personal light, the kind you carry when the larger lights have gone out. The name is accurate and modest and was chosen by forty-three people at hop 21 who understood their position in the corridor and named themselves for it.", + "orbit_bodies": [ + { + "body_id": "GJ501Bb", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ501Bf-m1", + "parent_body_id": "GJ501Bf", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ501Bc", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ501Bd", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": "Limiar", + "atmosphere": "standard", + "inhabited": true, + "population": 43, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ501B-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ501Be", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ501Bf", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ501Bg", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ501Bh", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ501Bi", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ501Bj", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ501B-oort", + "parent_body_id": null, + "orbit_index": 11, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ501B-oort-S1", + "orbits_body_id": "GJ501B-oort", + "station_type": "horizon", + "proper_name": "Candeia Horizon", + "population": 12, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 7547", @@ -5743,10 +50042,132 @@ "GJ 6711" ], "star_type": "K4V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "0 habitable · 1 inhabited", "population": "318", "gdp": "0.6 MTr", - "gttr_excerpt": "**SKEMERAAND** is Afrikaans for \"twilight evening\" — the hour when the light has not quite gone but the darkness is visible. The community that named it was being precise about position, not poetic about atmosphere, though they achieved both." + "gttr_excerpt": "**SKEMERAAND** is Afrikaans for \"twilight evening\" — the hour when the light has not quite gone but the darkness is visible. The community that named it was being precise about position, not poetic about atmosphere, though they achieved both.", + "orbit_bodies": [ + { + "body_id": "GJ7547b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ7547c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Brandwacht", + "atmosphere": "thin", + "inhabited": true, + "population": 300, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ7547-belt", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ7547d", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ7547e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ7547f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ7547g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ7547h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ7547-oort", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ7547-oort-S1", + "orbits_body_id": "GJ7547-oort", + "station_type": "horizon", + "proper_name": "Skemeraand Horizon", + "population": 18, + "governance_type": null, + "economic_role": "transit" + } + ] }, { "system_id": "GJ 6711", @@ -5761,10 +50182,168 @@ "GJ 7547" ], "star_type": "K3V", + "currency_zone": "TRACTUS_PRIMARY", "bodies": "1 habitable · 1 inhabited", "population": "415", "gdp": "0.8 MTr", - "gttr_excerpt": "**ABZU** is the furthest settled system in the Reach. Hop 23. Dead-end. One gate, connecting back through Skemeraand to the corridor behind. The K-type primary is amber and unremarkable. A mid-range gas giant reflects that amber light back across the inner system in a diffuse wash that produces doubled illumination — direct and reflected, both warm — that visitors describe in terms that vary in vocabulary and converge in affect." + "gttr_excerpt": "**ABZU** is the furthest settled system in the Reach. Hop 23. Dead-end. One gate, connecting back through Skemeraand to the corridor behind. The K-type primary is amber and unremarkable. A mid-range gas giant reflects that amber light back across the inner system in a diffuse wash that produces doubled illumination — direct and reflected, both warm — that visitors describe in terms that vary in vocabulary and converge in affect.", + "orbit_bodies": [ + { + "body_id": "GJ6711b", + "parent_body_id": null, + "orbit_index": 1, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ6711e-m1", + "parent_body_id": "GJ6711e", + "orbit_index": 1, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ6711c", + "parent_body_id": null, + "orbit_index": 2, + "body_type": "planet", + "proper_name": "Dar", + "atmosphere": "standard", + "inhabited": true, + "population": 400, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ6711e-m2", + "parent_body_id": "GJ6711e", + "orbit_index": 2, + "body_type": "moon", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ6711d", + "parent_body_id": null, + "orbit_index": 3, + "body_type": "planet", + "proper_name": null, + "atmosphere": "thin", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ6711-belt", + "parent_body_id": null, + "orbit_index": 4, + "body_type": "asteroid_belt", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ6711e", + "parent_body_id": null, + "orbit_index": 5, + "body_type": "gas_giant", + "proper_name": null, + "atmosphere": "gas_giant", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + }, + { + "body_id": "GJ6711f", + "parent_body_id": null, + "orbit_index": 6, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ6711g", + "parent_body_id": null, + "orbit_index": 7, + "body_type": "planet", + "proper_name": null, + "atmosphere": "trace", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ6711h", + "parent_body_id": null, + "orbit_index": 8, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "terrestrial" + }, + { + "body_id": "GJ6711i", + "parent_body_id": null, + "orbit_index": 9, + "body_type": "planet", + "proper_name": null, + "atmosphere": "none", + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": "dwarf" + }, + { + "body_id": "GJ6711-oort", + "parent_body_id": null, + "orbit_index": 10, + "body_type": "oort_cloud", + "proper_name": null, + "atmosphere": null, + "inhabited": false, + "population": 0, + "terrain_reference": null, + "mass_class": null + } + ], + "stations": [ + { + "station_id": "GJ6711-oort-S1", + "orbits_body_id": "GJ6711-oort", + "station_type": "horizon", + "proper_name": "Abzu Horizon", + "population": 15, + "governance_type": null, + "economic_role": "transit" + } + ] } ], "edges": [ diff --git a/client/scripts/main.gd b/client/scripts/main.gd index cd8b33fc1..a9f57ba76 100644 --- a/client/scripts/main.gd +++ b/client/scripts/main.gd @@ -34,6 +34,7 @@ var _dialogue: DialogueCoordinator # #775: dialogue consumers + signal handlers @onready var news_ticker = $UILayer/NewsTicker # #592: scrolling headline bar (D-049 z-7) @onready var star_map = $InsertOverlay/HUD/StarMap # #674: star map insert module (hop-ring view) @onready var economics_panel = $InsertOverlay/HUD/EconomicsPanel # #824: economics monitor (D-170) +@onready var atlas_panel = $InsertOverlay/HUD/AtlasPanel # #834: atlas implant — system → orbital → body (D-191) func _ready() -> void: @@ -93,6 +94,7 @@ func _ready() -> void: "minimap": minimap, "star_map": star_map, "economics_panel": economics_panel, + "atlas_panel": atlas_panel, }, _screen_flash ) @@ -172,6 +174,10 @@ func _unhandled_key_input(event: InputEvent) -> void: if event is InputEventKey and event.keycode == KEY_M: if star_map: star_map.toggle_visible() + elif event is InputEventKey and event.keycode == KEY_A: + # #834: A — toggle Atlas implant panel (FULLSCREEN, implant/map/atlas) + if atlas_panel: + atlas_panel.toggle_visible() elif event is InputEventKey and event.keycode == KEY_N: # #824: N — toggle Economics Monitor implant panel (E is bound to interact) if economics_panel: diff --git a/client/scripts/snapshot_consumers.gd b/client/scripts/snapshot_consumers.gd index f278c574e..b8a11dcc3 100644 --- a/client/scripts/snapshot_consumers.gd +++ b/client/scripts/snapshot_consumers.gd @@ -18,6 +18,7 @@ var interaction_prompt: Node = null var minimap: Node = null var star_map: Node = null var economics_panel: Node = null # #824: economics monitor (D-181) +var atlas_panel: Node = null # #834: atlas implant panel (D-191) var _screen_flash_fn: Callable # Callable(color: Color, duration: float) @@ -39,6 +40,7 @@ func init(refs: Dictionary, screen_flash: Callable) -> SnapshotConsumers: minimap = refs.get("minimap") star_map = refs.get("star_map") economics_panel = refs.get("economics_panel") + atlas_panel = refs.get("atlas_panel") _screen_flash_fn = screen_flash return self @@ -58,6 +60,8 @@ func propagate_insert_state() -> void: star_map.set_insert_active(insert_state) if economics_panel: economics_panel.set_insert_active(insert_state) + if atlas_panel: + atlas_panel.set_insert_active(insert_state) # D-057: Update interaction list from game state. diff --git a/client/ui/hud.tscn b/client/ui/hud.tscn index 2c3b643fa..2deb0c8da 100644 --- a/client/ui/hud.tscn +++ b/client/ui/hud.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=3 format=3 uid="uid://cq1y5w3hmxr8b"] +[gd_scene load_steps=4 format=3 uid="uid://cq1y5w3hmxr8b"] [ext_resource type="Script" path="res://ui/hud.gd" id="1_hud"] [ext_resource type="PackedScene" path="res://ui/star_map.tscn" id="2_starmap"] [ext_resource type="PackedScene" path="res://ui/implant/economics_panel.tscn" id="3_econ"] +[ext_resource type="PackedScene" path="res://ui/implant/atlas_panel.tscn" id="4_atlas"] [node name="HUD" type="Control"] layout_mode = 3 @@ -25,3 +26,8 @@ visible = false [node name="EconomicsPanel" parent="." instance=ExtResource("3_econ")] visible = false +; #834: Atlas implant panel — FULLSCREEN app at implant/map/atlas per D-170. +; 3-level navigation: system picker → orbital diagram → body entry. Toggled via A key. +[node name="AtlasPanel" parent="." instance=ExtResource("4_atlas")] +visible = false + diff --git a/client/ui/implant/atlas_panel.gd b/client/ui/implant/atlas_panel.gd new file mode 100644 index 000000000..3948e3628 --- /dev/null +++ b/client/ui/implant/atlas_panel.gd @@ -0,0 +1,690 @@ +class_name AtlasPanel +extends Control + +## Atlas implant panel — 3-level navigation: system picker → orbital diagram → body entry (#834). +## FULLSCREEN implant app (z=20) at implant/map/atlas per D-170. +## Uses ImplantPanel component library (D-169). Data from star_map_data.json. +## +## Navigation: +## Level 0 SYSTEM_PICKER — ◄ ► cycle systems, Enter to open orbital view +## Level 1 ORBITAL_DIAGRAM — rendered via _draw(), click body → level 2, click station → mini panel +## Level 2 BODY_ENTRY — body info panel, Enter to open heightmap (#835), Esc back + +enum Level { SYSTEM_PICKER = 0, ORBITAL_DIAGRAM = 1, BODY_ENTRY = 2 } + +const APP_PATH := "implant/map/atlas" +const STAR_MAP_DATA := "res://data/star_map_data.json" +const PANEL_WIDTH: float = 320.0 +const PANEL_MARGIN: float = 16.0 + +# ── Orbital diagram geometry ────────────────────────────────────────────────── +const ORBITAL_CENTER_FRACTION := Vector2(0.5, 0.55) +const STAR_RADIUS: float = 12.0 +const ORBITAL_RING_BASE: float = 65.0 # innermost planet ring radius (px) +const ORBITAL_RING_STEP: float = 58.0 # radial gap between orbit rings +const MOON_ORBIT_RADIUS: float = 24.0 # sub-orbit radius for moons around parent +const STATION_SIZE: float = 6.0 # station marker half-size +const BODY_HIT_RADIUS: float = 16.0 # click/hover detection radius +const LABEL_OFFSET: float = 11.0 # px below body dot for label + +# ── Colors ──────────────────────────────────────────────────────────────────── +const COLOR_BG: Color = Color("#0d1117") +const COLOR_STAR: Color = Color("#f0d060") +const COLOR_PLANET_INHABITED: Color = Color("#44aa66") +const COLOR_PLANET_HABITABLE: Color = Color("#4488aa") +const COLOR_PLANET_BARE: Color = Color("#556677") +const COLOR_MOON: Color = Color("#3a4a55") +const COLOR_OORT: Color = Color("#253040") +const COLOR_STATION: Color = Color("#f0d060") +const COLOR_RING: Color = Color(1.0, 1.0, 1.0, 0.06) +const COLOR_TEXT: Color = Color("#c8d0e0") +const COLOR_TEXT_DIM: Color = Color("#667788") + +# ── Navigation state ────────────────────────────────────────────────────────── +var _level: Level = Level.SYSTEM_PICKER +var _systems: Array = [] # Array[Dictionary] from star_map_data.json +var _selected_idx: int = 0 # index into _systems +var _selected_body: Dictionary = {} # body dict at Level.BODY_ENTRY + +# ── Orbital diagram runtime state ───────────────────────────────────────────── +var _orbital_bodies: Array = [] # orbit_bodies for current system +var _orbital_stations: Array = [] # stations for current system +var _body_positions: Dictionary = {} # body_id -> Vector2 +var _station_positions: Dictionary = {} # station_id -> Vector2 +var _hovered_body: String = "" +var _hovered_station: String = "" +var _selected_station: Dictionary = {} # station clicked in orbital view +var _dirty: bool = true + +# ── Visual components (D-169 ImplantPanel library) ──────────────────────────── +var _implant_theme = null # ImplantTheme — loaded at runtime (autoload parse-order rule) +var _picker_panel = null # ImplantPanel — level 0 system selector +var _picker_nav_row = null # ImplantDataRow — nav hint text, updated on navigate +var _body_panel = null # ImplantPanel — level 2 body entry +var _station_panel = null # ImplantPanel — station mini, shown in level 1 on click + + +func _ready() -> void: + anchor_right = 1.0 + anchor_bottom = 1.0 + grow_horizontal = Control.GROW_DIRECTION_BOTH + grow_vertical = Control.GROW_DIRECTION_BOTH + visible = false + mouse_filter = Control.MOUSE_FILTER_STOP + + # D-170: Register with HUD layer groups + HudGroups.register(self, APP_PATH) + HudGroups.app_changed.connect(_on_app_changed) + + # Autoload parse-order rule: load via load() in method body, not _ready() cache + _implant_theme = load("res://ui/implant/default_implant.tres") + + _load_system_list() + _build_picker_panel() + _build_body_panel() + _build_station_panel() + _show_level(Level.SYSTEM_PICKER) + + +func _process(_delta: float) -> void: + if not visible: + return + if _dirty: + queue_redraw() + _dirty = false + + +## Toggle atlas panel. Called from main.gd on KEY_A. +func toggle_visible() -> void: + HudGroups.toggle_app(APP_PATH, HudGroups.Mode.FULLSCREEN) + + +## Called from main.gd when insert state changes. +func set_insert_active(active: bool) -> void: + if not active and HudGroups.is_app_active(APP_PATH): + HudGroups.close_app() + + +func _on_app_changed(app_path: String, mode: int) -> void: + if app_path != APP_PATH: + return + if mode == HudGroups.Mode.FULLSCREEN: + visible = true + _dirty = true + else: + visible = false + + +# ============================================================================= +# Data loading +# ============================================================================= + + +func _load_system_list() -> void: + if not FileAccess.file_exists(STAR_MAP_DATA): + push_warning("AtlasPanel: %s not found" % STAR_MAP_DATA) + return + var file := FileAccess.open(STAR_MAP_DATA, FileAccess.READ) + if file == null: + return + var parsed: Variant = JSON.parse_string(file.get_as_text()) + file.close() + if not (parsed is Dictionary): + return + for node: Dictionary in parsed.get("nodes", []): + if not node.get("system_id", "").is_empty(): + _systems.append(node) + _systems.sort_custom( + func(a: Dictionary, b: Dictionary) -> bool: + var na: String = a.get("proper_name", a.get("system_id", "")) + var nb: String = b.get("proper_name", b.get("system_id", "")) + return na < nb + ) + + +func _current_system() -> Dictionary: + if _systems.is_empty(): + return {} + _selected_idx = clampi(_selected_idx, 0, _systems.size() - 1) + return _systems[_selected_idx] + + +func _enter_orbital_diagram() -> void: + var sys: Dictionary = _current_system() + _orbital_bodies = sys.get("orbit_bodies", []) + _orbital_stations = sys.get("stations", []) + _hovered_body = "" + _hovered_station = "" + _selected_station = {} + _compute_body_positions() + if _station_panel: + _station_panel.visible = false + _show_level(Level.ORBITAL_DIAGRAM) + + +func _enter_body_entry(body: Dictionary) -> void: + _selected_body = body + _rebuild_body_panel() + _show_level(Level.BODY_ENTRY) + + +func _open_heightmap_viewer() -> void: + # Placeholder — #835 implements the heightmap viewer scene. + # This will open it via HudGroups or a signal when #835 lands. + push_warning("AtlasPanel: heightmap viewer not yet implemented (#835)") + + +# ============================================================================= +# Orbital geometry +# ============================================================================= + + +func _compute_body_positions() -> void: + _body_positions.clear() + _station_positions.clear() + + var sz: Vector2 = get_rect().size + # Fall back to design-time size if rect not available yet + if sz == Vector2.ZERO: + sz = Vector2(1280.0, 720.0) + var center: Vector2 = sz * ORBITAL_CENTER_FRACTION + + # Separate top-level bodies (no parent) from moons + var top_bodies: Array = [] + for b: Dictionary in _orbital_bodies: + if b.get("parent_body_id") == null: + top_bodies.append(b) + top_bodies.sort_custom( + func(a: Dictionary, b: Dictionary) -> bool: + return int(a.get("orbit_index", 0)) < int(b.get("orbit_index", 0)) + ) + + # Group by orbit_index and distribute evenly on each ring + var by_orbit: Dictionary = {} + for b: Dictionary in top_bodies: + var idx: int = int(b.get("orbit_index", 0)) + if not by_orbit.has(idx): + by_orbit[idx] = [] + by_orbit[idx].append(b) + + for orbit_idx: int in by_orbit: + var ring_bodies: Array = by_orbit[orbit_idx] + var ring_r: float = ORBITAL_RING_BASE + (orbit_idx - 1) * ORBITAL_RING_STEP + var count: int = ring_bodies.size() + for i: int in range(count): + var b: Dictionary = ring_bodies[i] + var angle: float + if count == 1: + angle = -PI / 2.0 # top position (12 o'clock) + else: + angle = -PI / 2.0 + TAU * float(i) / float(count) + _body_positions[b["body_id"]] = center + Vector2(cos(angle), sin(angle)) * ring_r + + # Place moons near their parent body + for b: Dictionary in _orbital_bodies: + var parent_id: Variant = b.get("parent_body_id") + if parent_id == null: + continue + if not _body_positions.has(str(parent_id)): + continue + var parent_pos: Vector2 = _body_positions[str(parent_id)] + var moon_idx: int = int(b.get("orbit_index", 1)) + # Distribute moons around parent at evenly spaced angles + var angle: float = -PI / 2.0 + TAU * float(moon_idx - 1) / 4.0 + _body_positions[b["body_id"]] = parent_pos + Vector2(cos(angle), sin(angle)) * MOON_ORBIT_RADIUS + + # Place stations near their parent body (offset right + slightly up) + for s: Dictionary in _orbital_stations: + var parent_id: Variant = s.get("orbits_body_id") + var parent_pos: Vector2 + if parent_id != null and _body_positions.has(str(parent_id)): + parent_pos = _body_positions[str(parent_id)] + else: + parent_pos = center # fallback to star position + _station_positions[s["station_id"]] = parent_pos + Vector2(20.0, -10.0) + + +# ============================================================================= +# Drawing +# ============================================================================= + + +func _draw() -> void: + match _level: + Level.SYSTEM_PICKER: + _draw_picker_bg() + Level.ORBITAL_DIAGRAM: + _draw_orbital() + Level.BODY_ENTRY: + _draw_body_bg() + + +func _draw_picker_bg() -> void: + draw_rect(Rect2(Vector2.ZERO, get_rect().size), COLOR_BG) + _draw_header("ATLAS — SYSTEM SELECTION", "select a system · ◄ ► cycle · enter open orbital view · esc close") + + +func _draw_body_bg() -> void: + draw_rect(Rect2(Vector2.ZERO, get_rect().size), COLOR_BG) + var sys: Dictionary = _current_system() + _draw_header( + "ATLAS — BODY ENTRY · " + sys.get("proper_name", sys.get("system_id", "—")).to_upper(), + "enter view atlas · esc back to orbital" + ) + + +func _draw_header(title: String, hint: String) -> void: + var font := get_theme_default_font() + draw_string(font, Vector2(16, 28), title, HORIZONTAL_ALIGNMENT_LEFT, -1, 14, COLOR_TEXT) + draw_string(font, Vector2(16, 44), hint, HORIZONTAL_ALIGNMENT_LEFT, -1, 9, COLOR_TEXT_DIM) + + +func _draw_orbital() -> void: + var sz: Vector2 = get_rect().size + var center: Vector2 = sz * ORBITAL_CENTER_FRACTION + + draw_rect(Rect2(Vector2.ZERO, sz), COLOR_BG) + + # Orbit rings for top-level bodies + _draw_orbit_rings(center) + + # Star glow + body + draw_circle(center, STAR_RADIUS + 4.0, Color(COLOR_STAR.r, COLOR_STAR.g, COLOR_STAR.b, 0.18)) + draw_circle(center, STAR_RADIUS, COLOR_STAR) + + # Station markers (behind body dots) + _draw_stations() + + # Body dots + labels + _draw_bodies() + + # Header + var sys: Dictionary = _current_system() + var sys_name: String = sys.get("proper_name", sys.get("system_id", "—")) + var star_type: String = sys.get("star_type", "") + var top_count: int = 0 + for b: Dictionary in _orbital_bodies: + if b.get("parent_body_id") == null: + top_count += 1 + var subtitle: String = "" + if not star_type.is_empty(): + subtitle = star_type + " · " + subtitle += "%d orbital bodies · %d stations" % [top_count, _orbital_stations.size()] + _draw_header( + "ATLAS — ORBITAL VIEW · " + sys_name.to_upper(), + subtitle + " · click body → atlas entry · esc back" + ) + + +func _draw_orbit_rings(center: Vector2) -> void: + # Draw one ring per unique orbit_index of top-level bodies + var seen_orbits: Dictionary = {} + for b: Dictionary in _orbital_bodies: + if b.get("parent_body_id") != null: + continue + var idx: int = int(b.get("orbit_index", 0)) + if seen_orbits.has(idx): + continue + seen_orbits[idx] = true + var r: float = ORBITAL_RING_BASE + (idx - 1) * ORBITAL_RING_STEP + draw_arc(center, r, 0.0, TAU, 64, COLOR_RING, 0.5, true) + + +func _draw_bodies() -> void: + var font := get_theme_default_font() + for b: Dictionary in _orbital_bodies: + var bid: String = b["body_id"] + if not _body_positions.has(bid): + continue + var pos: Vector2 = _body_positions[bid] + var body_type: String = b.get("body_type", "") + var atmo: String = b.get("atmosphere", "none") + var inhabited: bool = bool(b.get("inhabited", false)) + + var color: Color + var radius: float + match body_type: + "moon": + color = COLOR_MOON + radius = 3.5 + "oort_cloud": + # Oort cloud shown as a faint dashed circle suggestion, not a dot + color = COLOR_OORT + radius = 2.0 + _: + if inhabited: + color = COLOR_PLANET_INHABITED + radius = 6.0 + elif atmo in ["breathable", "standard"]: + color = COLOR_PLANET_HABITABLE + radius = 5.5 + else: + color = COLOR_PLANET_BARE + radius = 4.5 + + # Hover highlight ring + if bid == _hovered_body: + draw_arc(pos, radius + 5.0, 0.0, TAU, 20, Color(1.0, 1.0, 1.0, 0.25), 1.0, true) + + draw_circle(pos, radius, color) + + # Label: always for inhabited, on hover otherwise + var label: String = b.get("proper_name", bid) if b.get("proper_name") else bid + var show_label: bool = inhabited or bid == _hovered_body + if show_label: + var lcolor: Color = COLOR_TEXT if bid == _hovered_body else COLOR_TEXT_DIM + var lsz: Vector2 = font.get_string_size(label, HORIZONTAL_ALIGNMENT_LEFT, -1, 9) + var lpos: Vector2 = pos + Vector2(-lsz.x / 2.0, radius + LABEL_OFFSET) + draw_string(font, lpos, label, HORIZONTAL_ALIGNMENT_LEFT, -1, 9, lcolor) + + +func _draw_stations() -> void: + var font := get_theme_default_font() + for s: Dictionary in _orbital_stations: + var sid: String = s["station_id"] + if not _station_positions.has(sid): + continue + var pos: Vector2 = _station_positions[sid] + var half: float = STATION_SIZE / 2.0 + var rect: Rect2 = Rect2(pos - Vector2(half, half), Vector2(STATION_SIZE, STATION_SIZE)) + + if sid == _hovered_station: + draw_rect(Rect2(rect.position - Vector2(3, 3), rect.size + Vector2(6, 6)), Color(1.0, 1.0, 1.0, 0.18)) + + draw_rect(rect, COLOR_STATION) + + # Label on hover + if sid == _hovered_station: + var label: String = s.get("proper_name", sid) if s.get("proper_name") else sid + var lsz: Vector2 = font.get_string_size(label, HORIZONTAL_ALIGNMENT_LEFT, -1, 9) + draw_string(font, pos + Vector2(-lsz.x / 2.0, half + 8.0), label, HORIZONTAL_ALIGNMENT_LEFT, -1, 9, COLOR_TEXT_DIM) + + +# ============================================================================= +# Input +# ============================================================================= + + +func _gui_input(event: InputEvent) -> void: + if event is InputEventKey and (event as InputEventKey).pressed and not event.is_echo(): + _handle_key(event as InputEventKey) + elif _level == Level.ORBITAL_DIAGRAM: + if event is InputEventMouseButton and (event as InputEventMouseButton).pressed: + _handle_orbital_click((event as InputEventMouseButton).position) + elif event is InputEventMouseMotion: + _handle_orbital_hover((event as InputEventMouseMotion).position) + + +func _handle_key(event: InputEventKey) -> void: + match event.keycode: + KEY_ESCAPE: + _navigate_back() + KEY_B: + HudGroups.close_app() + KEY_LEFT: + if _level == Level.SYSTEM_PICKER: + _navigate_system(-1) + KEY_RIGHT: + if _level == Level.SYSTEM_PICKER: + _navigate_system(1) + KEY_ENTER, KEY_KP_ENTER: + if _level == Level.SYSTEM_PICKER: + _enter_orbital_diagram() + elif _level == Level.BODY_ENTRY: + _open_heightmap_viewer() + + +func _navigate_back() -> void: + match _level: + Level.SYSTEM_PICKER: + HudGroups.close_app() + Level.ORBITAL_DIAGRAM: + _show_level(Level.SYSTEM_PICKER) + Level.BODY_ENTRY: + _show_level(Level.ORBITAL_DIAGRAM) + + +func _navigate_system(delta: int) -> void: + if _systems.is_empty(): + return + _selected_idx = wrapi(_selected_idx + delta, 0, _systems.size()) + _rebuild_picker_panel() + + +func _handle_orbital_click(pos: Vector2) -> void: + # Bodies take priority over stations + var bid: String = _find_nearest_body(pos) + if not bid.is_empty(): + for b: Dictionary in _orbital_bodies: + if b["body_id"] == bid: + _enter_body_entry(b) + return + + # Station click → show mini panel (no drill-down per D-191) + var sid: String = _find_nearest_station(pos) + if not sid.is_empty(): + for s: Dictionary in _orbital_stations: + if s["station_id"] == sid: + _selected_station = s + _rebuild_station_panel() + if _station_panel: + _station_panel.visible = true + return + + # Click on empty space — dismiss station panel + _selected_station = {} + if _station_panel: + _station_panel.visible = false + _dirty = true + + +func _handle_orbital_hover(pos: Vector2) -> void: + var new_body: String = _find_nearest_body(pos) + var new_station: String = "" if not new_body.is_empty() else _find_nearest_station(pos) + if new_body != _hovered_body or new_station != _hovered_station: + _hovered_body = new_body + _hovered_station = new_station + _dirty = true + + +func _find_nearest_body(pos: Vector2) -> String: + var best_dist: float = BODY_HIT_RADIUS + var best_id: String = "" + for bid: String in _body_positions: + var d: float = pos.distance_to(_body_positions[bid]) + if d < best_dist: + best_dist = d + best_id = bid + return best_id + + +func _find_nearest_station(pos: Vector2) -> String: + var best_dist: float = BODY_HIT_RADIUS + var best_id: String = "" + for sid: String in _station_positions: + var d: float = pos.distance_to(_station_positions[sid]) + if d < best_dist: + best_dist = d + best_id = sid + return best_id + + +# ============================================================================= +# Level switching — show/hide panels +# ============================================================================= + + +func _show_level(level: Level) -> void: + _level = level + _dirty = true + + if _picker_panel: + _picker_panel.visible = (level == Level.SYSTEM_PICKER) + if _body_panel: + _body_panel.visible = (level == Level.BODY_ENTRY) + # Station panel managed separately — remains hidden until a station click + if _station_panel and level != Level.ORBITAL_DIAGRAM: + _station_panel.visible = false + + queue_redraw() + + +# ============================================================================= +# Panel construction — D-169 ImplantPanel component library +# ============================================================================= + + +func _build_picker_panel() -> void: + _picker_panel = ImplantPanel.new() + _picker_panel.name = "PickerPanel" + _picker_panel.theme_resource = _implant_theme + _picker_panel.custom_minimum_size.x = PANEL_WIDTH + _picker_panel.mouse_filter = Control.MOUSE_FILTER_IGNORE + _picker_panel.position = Vector2(PANEL_MARGIN, 60.0) + add_child(_picker_panel) + _rebuild_picker_panel() + + +func _rebuild_picker_panel() -> void: + if not _picker_panel: + return + _picker_panel.clear() + + var sys: Dictionary = _current_system() + var sys_name: String = sys.get("proper_name", sys.get("system_id", "—")) + var sys_id: String = sys.get("system_id", "") + var sector: String = sys.get("geographic_sector", "").replace("_", " ").to_upper() + var czone: String = sys.get("currency_zone", "").replace("_", " ") + var total: int = _systems.size() + + _picker_panel.add_component(ImplantHeader.new("ATLAS", sys_name)) + _picker_panel.add_component(ImplantSeparator.new()) + + _picker_nav_row = ImplantDataRow.new("◄ ► [%d / %d]" % [_selected_idx + 1, total]) + _picker_panel.add_component(_picker_nav_row) + + _picker_panel.add_component(ImplantSeparator.new()) + _picker_panel.add_component(ImplantDataRow.new(sys_id)) + if not sector.is_empty(): + _picker_panel.add_component(ImplantDataRow.new(sector + " CORRIDOR")) + if not czone.is_empty(): + _picker_panel.add_component(ImplantDataRow.new("currency " + czone)) + _picker_panel.add_component(ImplantDataRow.new(sys.get("bodies", "no body data"))) + _picker_panel.add_component(ImplantDataRow.new("pop " + sys.get("population", "—"))) + + _picker_panel.add_component(ImplantSeparator.new()) + _picker_panel.add_component(ImplantTextBlock.new("enter open orbital map")) + _picker_panel.add_component(ImplantTextBlock.new("esc close atlas")) + + _dirty = true + + +func _build_body_panel() -> void: + _body_panel = ImplantPanel.new() + _body_panel.name = "BodyPanel" + _body_panel.theme_resource = _implant_theme + _body_panel.custom_minimum_size.x = PANEL_WIDTH + _body_panel.mouse_filter = Control.MOUSE_FILTER_IGNORE + _body_panel.position = Vector2(PANEL_MARGIN, 60.0) + _body_panel.visible = false + add_child(_body_panel) + + +func _rebuild_body_panel() -> void: + if not _body_panel: + return + _body_panel.clear() + + var b: Dictionary = _selected_body + var bid: String = b.get("body_id", "") + var name_str: String = b.get("proper_name", "") if b.get("proper_name") else bid + var body_type: String = b.get("body_type", "").replace("_", " ").to_upper() + var mass_class: String = b.get("mass_class", "") if b.get("mass_class") else "" + var atmo: String = b.get("atmosphere", "none") if b.get("atmosphere") else "none" + var inhabited: bool = bool(b.get("inhabited", false)) + var pop: int = int(b.get("population", 0)) + var has_heightmap: bool = b.get("terrain_reference") != null + + var sys: Dictionary = _current_system() + var sys_name: String = sys.get("proper_name", sys.get("system_id", "—")) + + _body_panel.add_component(ImplantHeader.new(name_str, sys_name + " system")) + _body_panel.add_component(ImplantSeparator.new()) + + var type_line: String = body_type + if not mass_class.is_empty(): + type_line += " · " + mass_class.replace("_", " ").to_upper() + _body_panel.add_component(ImplantDataRow.new(type_line)) + _body_panel.add_component(ImplantDataRow.new("atmosphere " + atmo)) + + if inhabited: + _body_panel.add_component(ImplantSeparator.new()) + _body_panel.add_component(ImplantDataRow.new("population " + _format_pop(pop))) + + _body_panel.add_component(ImplantSeparator.new()) + + if has_heightmap: + _body_panel.add_component(ImplantTextBlock.new("enter view heightmap atlas")) + else: + _body_panel.add_component(ImplantTextBlock.new("atlas data pending (#839)")) + + _body_panel.add_component(ImplantTextBlock.new("esc back to orbital view")) + + +func _build_station_panel() -> void: + _station_panel = ImplantPanel.new() + _station_panel.name = "StationPanel" + _station_panel.theme_resource = _implant_theme + _station_panel.custom_minimum_size.x = PANEL_WIDTH + _station_panel.mouse_filter = Control.MOUSE_FILTER_IGNORE + _station_panel.position = Vector2(PANEL_MARGIN, 60.0) + _station_panel.visible = false + add_child(_station_panel) + + +func _rebuild_station_panel() -> void: + if not _station_panel: + return + _station_panel.clear() + + if _selected_station.is_empty(): + return + + var s: Dictionary = _selected_station + var s_name: String = s.get("proper_name", "") if s.get("proper_name") else s.get("station_id", "—") + var s_type: String = s.get("station_type", "").replace("_", " ").to_upper() + var gov: String = s.get("governance_type", "") if s.get("governance_type") else "" + var role: String = s.get("economic_role", "") if s.get("economic_role") else "" + var sys: Dictionary = _current_system() + var czone: String = sys.get("currency_zone", "") if sys.get("currency_zone") else "—" + czone = czone.replace("_", " ") + + _station_panel.add_component(ImplantHeader.new(s_name, s_type + " STATION")) + _station_panel.add_component(ImplantSeparator.new()) + if not gov.is_empty(): + _station_panel.add_component(ImplantDataRow.new("operator " + gov.replace("_", " ").to_upper())) + if not role.is_empty(): + _station_panel.add_component(ImplantDataRow.new("function " + role.replace("_", " "))) + _station_panel.add_component(ImplantDataRow.new("currency " + czone)) + _station_panel.add_component(ImplantSeparator.new()) + _station_panel.add_component(ImplantTextBlock.new("station atlas deferred")) + _station_panel.add_component(ImplantTextBlock.new("esc back")) + + +# ============================================================================= +# Helpers +# ============================================================================= + + +func _format_pop(pop: int) -> String: + if pop <= 0: + return "0" + var s: String = str(pop) + var result: String = "" + var count: int = 0 + for i: int in range(s.length() - 1, -1, -1): + if count > 0 and count % 3 == 0: + result = "," + result + result = s[i] + result + count += 1 + return result diff --git a/client/ui/implant/atlas_panel.tscn b/client/ui/implant/atlas_panel.tscn new file mode 100644 index 000000000..555a4d53c --- /dev/null +++ b/client/ui/implant/atlas_panel.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://ui/implant/atlas_panel.gd" id="1_atlas"] + +; #834: Atlas implant panel — 3-level navigation: system picker → orbital diagram → body entry. +; FULLSCREEN app (z=20) at implant/map/atlas per D-170. +; Composed from ImplantPanel component library (D-169). Toggle with A key from main.gd. +; Data from star_map_data.json (orbit_bodies + stations arrays added by generate-star-map-data.py). + +[node name="AtlasPanel" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 +script = ExtResource("1_atlas") diff --git a/tooling/generate-star-map-data.py b/tooling/generate-star-map-data.py index ba00836f2..fdb10e509 100755 --- a/tooling/generate-star-map-data.py +++ b/tooling/generate-star-map-data.py @@ -164,7 +164,7 @@ def generate() -> dict: cur = conn.cursor() cur.execute( - "SELECT system_id, proper_name, geographic_sector, geographic_band " + "SELECT system_id, proper_name, geographic_sector, geographic_band, currency_zone " "FROM star_systems" ) db_lookup = {row["system_id"]: dict(row) for row in cur.fetchall()} @@ -192,6 +192,50 @@ def generate() -> dict: # Economic tier for GDP calculation cur.execute("SELECT system_id, economic_tier FROM system_economy") econ_tiers = {row["system_id"]: row["economic_tier"] for row in cur.fetchall()} + + # Per-system body list for atlas orbital diagram (D-191 §6) + cur.execute(""" + SELECT system_id, body_id, parent_body_id, orbit_index, body_type, + proper_name, atmosphere, inhabited, population, + terrain_reference, mass_class + FROM bodies + ORDER BY system_id, orbit_index + """) + orbit_bodies_by_system: dict = {} + for row in cur.fetchall(): + sid_ = row["system_id"] + orbit_bodies_by_system.setdefault(sid_, []).append({ + "body_id": row["body_id"], + "parent_body_id": row["parent_body_id"], + "orbit_index": row["orbit_index"], + "body_type": row["body_type"], + "proper_name": row["proper_name"], + "atmosphere": row["atmosphere"], + "inhabited": bool(row["inhabited"]), + "population": int(row["population"] or 0), + "terrain_reference": row["terrain_reference"], + "mass_class": row["mass_class"], + }) + + # Per-system station list for atlas orbital diagram (D-191 §6) + cur.execute(""" + SELECT system_id, station_id, orbits_body_id, station_type, + proper_name, population, governance_type, economic_role + FROM stations + ORDER BY system_id + """) + stations_by_system: dict = {} + for row in cur.fetchall(): + sid_ = row["system_id"] + stations_by_system.setdefault(sid_, []).append({ + "station_id": row["station_id"], + "orbits_body_id": row["orbits_body_id"], + "station_type": row["station_type"], + "proper_name": row["proper_name"], + "population": int(row["population"] or 0), + "governance_type": row["governance_type"], + "economic_role": row["economic_role"], + }) except sqlite3.Error as e: print(f"ERROR: systems.db query failed: {e}", file=sys.stderr) sys.exit(1) @@ -227,6 +271,11 @@ def generate() -> dict: if wiki["star_type"]: entry["star_type"] = wiki["star_type"] + # Currency zone from star_systems + cz = db.get("currency_zone", "") + if cz: + entry["currency_zone"] = cz + # Bodies + population from systems.db (authoritative, not wiki) bs = body_stats.get(sid, {}) ss = station_stats.get(sid, {}) @@ -245,6 +294,11 @@ def generate() -> dict: entry["gttr_excerpt"] = gttr if n.get("is_gateway"): entry["is_gateway"] = True + + # Atlas orbital diagram data (D-191 §6) — per-body and per-station arrays + entry["orbit_bodies"] = orbit_bodies_by_system.get(sid, []) + entry["stations"] = stations_by_system.get(sid, []) + nodes.append(entry) nodes.sort(key=lambda x: (x["hop_distance"], x["system_id"])) @@ -257,7 +311,7 @@ def generate() -> dict: "generated_from": "star-map.json + systems.db + wiki/star-systems", "system_count": len(nodes), "edge_count": len(star_map["edges"]), - "note": "Client-side star map data. Regenerate with: tooling/generate-star-map-data.py", + "note": "Client-side star map + atlas orbital data. Regenerate with: tooling/generate-star-map-data.py", }, "nodes": nodes, "edges": star_map["edges"], From c33ac8921f2a7645a672cbb6010c4ddfbfe8e077 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 15 Apr 2026 08:22:01 +0200 Subject: [PATCH 2/8] =?UTF-8?q?feat(ui):=20atlas=20heightmap=20viewer=20?= =?UTF-8?q?=E2=80=94=20pan/zoom,=20marker=20overlay,=20city=20data=20panel?= =?UTF-8?q?=20(#835)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds Level.HEIGHTMAP_VIEWER to AtlasPanel. The viewer loads a body's terrain_reference heightmap PNG, pairs it with markers.json (roads, rail, POIs, cities, rivers/oceans/mountains), and renders markers in texture-space via an AtlasMarkerOverlay Node2D child of a transformed canvas — pan = offset, zoom = scale. Pan/zoom is cursor-centred (wheel zooms under the mouse, drag pans), with a fit-to-view reset on R. Empty markers.json state renders a bare heightmap; missing terrain_reference shows a themed "terrain data pending (#839)" notice instead of crashing. City data sidebar rebuilds from the selected city: name, pop tier, function, currency zone, Commission presence, shadow zone, gate distance. Pressing N on a selected city emits economics_link_requested(system_id) — main.gd bridges this to EconomicsPanel.select_system() + HudGroups.open_app("implant/economics") as an insert overlay, satisfying the D-191 Phase 2/3 cross-panel integration. The overlay renders all nine D-191 overlay layers off of per-overlay visibility flags in AtlasViewer. Overlay toggling for the regional view (#836) plugs into set_overlay_visible(); the five always-on layers (terrain, infrastructure, named features, gate markers, political zones) draw by default, the four toggleable layers draw from placeholder data, and the two locked layers (stockpile_weeks, production_vs_baseline) remain off until unlocked. Per D-191 criteria 1, 4, 5. --- client/scripts/main.gd | 15 + client/ui/implant/atlas_marker_overlay.gd | 275 +++++++++++ client/ui/implant/atlas_panel.gd | 56 ++- client/ui/implant/atlas_viewer.gd | 532 ++++++++++++++++++++++ 4 files changed, 870 insertions(+), 8 deletions(-) create mode 100644 client/ui/implant/atlas_marker_overlay.gd create mode 100644 client/ui/implant/atlas_viewer.gd diff --git a/client/scripts/main.gd b/client/scripts/main.gd index a9f57ba76..ab818403a 100644 --- a/client/scripts/main.gd +++ b/client/scripts/main.gd @@ -168,6 +168,12 @@ func _ready() -> void: debug_console.pause_requested.connect(_dialogue.on_dialogue_pause_requested) debug_console.unpause_requested.connect(_dialogue.on_dialogue_unpause_requested) + # #835 D-191: Atlas → Economics Monitor cross-link. The atlas city data panel + # emits economics_link_requested(system_id); we pre-filter the monitor and + # open it as an insert panel on top. + if atlas_panel and economics_panel: + atlas_panel.economics_link_requested.connect(_on_atlas_economics_link) + func _unhandled_key_input(event: InputEvent) -> void: if event.is_pressed() and not event.is_echo(): @@ -192,6 +198,15 @@ func _unhandled_key_input(event: InputEvent) -> void: economics_panel.navigate(1) +func _on_atlas_economics_link(system_id: String) -> void: + # #835 D-191: Pre-filter the economics monitor to the city's system and pop + # the panel open. AtlasPanel closes itself before emitting this signal. + if economics_panel == null: + return + economics_panel.select_system(system_id) + HudGroups.open_app("implant/economics", HudGroups.Mode.INSERT) + + func _process(delta: float) -> void: # Main game loop: poll snapshot, apply state, flush input var snapshot: Variant = SimBridge.poll_snapshot() diff --git a/client/ui/implant/atlas_marker_overlay.gd b/client/ui/implant/atlas_marker_overlay.gd new file mode 100644 index 000000000..8ef9134b4 --- /dev/null +++ b/client/ui/implant/atlas_marker_overlay.gd @@ -0,0 +1,275 @@ +class_name AtlasMarkerOverlay +extends Node2D + +## Draws heightmap + markers for #835 AtlasViewer. Child of AtlasViewer._canvas +## so it inherits the pan/zoom transform. Draws in texture-native coordinates. +## +## Overlay layers (#836 toggles via viewer._overlay_visibility): +## terrain heightmap texture itself +## political_zones currency-zone color bands (coarse) +## infrastructure roads + railroads +## named_features labels for rivers, oceans, mountain ranges +## gate_markers gate-terminal POIs +## population_density (toggleable) density heatmap placeholder +## production_zones (toggleable) production zone outlines placeholder +## shadow_economy (toggleable) shadow-zone broad bands placeholder +## corp_presence (toggleable) Tier 1 corp dots placeholder +## stockpile_weeks (locked) gated by corporate contact +## production_vs_baseline (locked) gated by insider access + +const COLOR_HEIGHTMAP_TINT: Color = Color(0.85, 0.88, 0.95, 1.0) +const COLOR_POLITICAL: Color = Color(0.25, 0.50, 0.75, 0.14) +const COLOR_ROAD: Color = Color(0.85, 0.60, 0.30, 0.85) +const COLOR_RAIL: Color = Color(0.45, 0.55, 0.70, 0.85) +const COLOR_CITY: Color = Color(0.94, 0.82, 0.38, 1.0) +const COLOR_CITY_HOVER: Color = Color(1.0, 1.0, 1.0, 1.0) +const COLOR_CITY_SELECTED: Color = Color(1.0, 0.95, 0.60, 1.0) +const COLOR_GATE: Color = Color(0.70, 0.88, 1.0, 1.0) +const COLOR_POI: Color = Color(0.45, 0.75, 0.85, 0.90) +const COLOR_FEATURE_LABEL: Color = Color(0.78, 0.82, 0.92, 0.65) +const COLOR_POP_HEAT: Color = Color(0.95, 0.35, 0.25, 0.22) +const COLOR_PRODUCTION: Color = Color(0.40, 0.80, 0.55, 0.18) +const COLOR_SHADOW: Color = Color(0.35, 0.20, 0.50, 0.22) +const COLOR_CORP: Color = Color(0.85, 0.65, 0.20, 0.75) + +const RAIL_DASH_ON: float = 6.0 +const RAIL_DASH_OFF: float = 4.0 + +var viewer = null # AtlasViewer (untyped to avoid cyclic ref) + + +func _draw() -> void: + if viewer == null: + return + var tex: Texture2D = viewer.get_heightmap_texture() + if tex == null: + return + + var tex_w: float = float(tex.get_width()) + var tex_h: float = float(tex.get_height()) + var markers: Dictionary = viewer.get_markers() + + # Terrain (heightmap) — always first + if viewer.is_overlay_visible("terrain"): + draw_texture_rect(tex, Rect2(Vector2.ZERO, Vector2(tex_w, tex_h)), false, COLOR_HEIGHTMAP_TINT) + else: + draw_rect(Rect2(Vector2.ZERO, Vector2(tex_w, tex_h)), Color(0.05, 0.07, 0.10, 1.0)) + + # Political zone tint (currency zone band — single tint over whole body for MVP) + if viewer.is_overlay_visible("political_zones"): + draw_rect(Rect2(Vector2.ZERO, Vector2(tex_w, tex_h)), COLOR_POLITICAL) + + # Infrastructure (roads + rail) + if viewer.is_overlay_visible("infrastructure"): + _draw_roads(markers) + _draw_rails(markers) + + # Named features (rivers, oceans, mountain ranges) + if viewer.is_overlay_visible("named_features"): + _draw_named_features(markers) + + # Toggleable placeholders — drawn only when populated + if viewer.is_overlay_visible("population_density"): + _draw_population_density(markers) + if viewer.is_overlay_visible("production_zones"): + _draw_production_zones(markers) + if viewer.is_overlay_visible("shadow_economy"): + _draw_shadow_economy(markers) + if viewer.is_overlay_visible("corp_presence"): + _draw_corp_presence(markers) + + # POIs (non-gate first, then gates on top if enabled) + _draw_pois(markers) + + # Gate markers + if viewer.is_overlay_visible("gate_markers"): + _draw_gate_markers(markers) + + # Cities last so labels sit on top + _draw_cities(markers) + + +# ============================================================================= +# Feature drawing +# ============================================================================= + + +func _draw_roads(markers: Dictionary) -> void: + var roads: Array = markers.get("roads", []) + for r: Dictionary in roads: + var path: Array = r.get("path", []) + if path.size() < 2: + continue + var points: PackedVector2Array = _path_to_canvas(path) + draw_polyline(points, COLOR_ROAD, 1.5, true) + + +func _draw_rails(markers: Dictionary) -> void: + var rails: Array = markers.get("railroads", []) + for r: Dictionary in rails: + var path: Array = r.get("path", []) + if path.size() < 2: + continue + var points: PackedVector2Array = _path_to_canvas(path) + _draw_dashed_polyline(points, COLOR_RAIL, 1.0) + + +func _draw_named_features(markers: Dictionary) -> void: + var font := ThemeDB.fallback_font + var fs: int = 8 + + for ocean: Dictionary in markers.get("oceans", []): + var label: String = ocean.get("name", "") if ocean.get("name") else "" + if label.is_empty(): + continue + var p: Vector2 = _center_to_canvas(ocean.get("center")) + draw_string(font, p, label.to_upper(), HORIZONTAL_ALIGNMENT_CENTER, -1, fs, COLOR_FEATURE_LABEL) + + for mtn: Dictionary in markers.get("mountain_ranges", []): + var label: String = mtn.get("name", "") if mtn.get("name") else "" + if label.is_empty(): + continue + var p: Vector2 = _center_to_canvas(mtn.get("center")) + draw_string(font, p, label, HORIZONTAL_ALIGNMENT_CENTER, -1, fs, COLOR_FEATURE_LABEL) + + for river: Dictionary in markers.get("rivers", []): + var label: String = river.get("name", "") if river.get("name") else "" + if label.is_empty(): + continue + var p: Vector2 = _center_to_canvas(river.get("center")) + draw_string(font, p, label, HORIZONTAL_ALIGNMENT_CENTER, -1, fs, COLOR_FEATURE_LABEL) + + +func _draw_pois(markers: Dictionary) -> void: + var pois: Array = markers.get("pois", []) + for p: Dictionary in pois: + if bool(p.get("gate_terminal", false)): + continue # drawn by gate_markers layer + var pos: Vector2 = _poi_pos(p) + _draw_diamond(pos, 4.0, COLOR_POI) + + +func _draw_gate_markers(markers: Dictionary) -> void: + # Gates show up in both pois[] (kind="gate") and cities[].gate_terminal + for p: Dictionary in markers.get("pois", []): + if not bool(p.get("gate_terminal", false)): + continue + _draw_diamond(_poi_pos(p), 6.0, COLOR_GATE) + for c: Dictionary in markers.get("cities", []): + if not bool(c.get("gate_terminal", false)): + continue + var pos: Vector2 = viewer._city_canvas_pos(c) + draw_arc(pos, 9.0, 0.0, TAU, 18, COLOR_GATE, 1.2, true) + + +func _draw_cities(markers: Dictionary) -> void: + var cities: Array = markers.get("cities", []) + if cities.is_empty(): + return + var font := ThemeDB.fallback_font + var hovered: Dictionary = viewer._hovered_city + var selected: Dictionary = viewer._selected_city + for c: Dictionary in cities: + var pos: Vector2 = viewer._city_canvas_pos(c) + var tier: int = int(c.get("population_tier", 1)) + var r: float = 2.5 + float(tier) * 0.8 + var col: Color = COLOR_CITY + if c == selected: + col = COLOR_CITY_SELECTED + elif c == hovered: + col = COLOR_CITY_HOVER + draw_circle(pos, r + 1.0, Color(0.0, 0.0, 0.0, 0.55)) + draw_circle(pos, r, col) + var name_str: String = c.get("name", "") if c.get("name") else "" + if not name_str.is_empty() and (tier >= 3 or c == hovered or c == selected): + var lcolor: Color = COLOR_CITY_HOVER if c == hovered or c == selected else Color(0.88, 0.90, 0.96, 0.85) + draw_string(font, pos + Vector2(r + 2.0, r * 0.4), name_str, HORIZONTAL_ALIGNMENT_LEFT, -1, 8, lcolor) + + +# ============================================================================= +# Overlay placeholders (populated by server side signals eventually) +# ============================================================================= + + +func _draw_population_density(markers: Dictionary) -> void: + # Placeholder: soft blobs at city positions scaled by population_tier + for c: Dictionary in markers.get("cities", []): + var pos: Vector2 = viewer._city_canvas_pos(c) + var tier: int = int(c.get("population_tier", 1)) + var r: float = 12.0 + float(tier) * 6.0 + draw_circle(pos, r, COLOR_POP_HEAT) + + +func _draw_production_zones(markers: Dictionary) -> void: + for zone: Dictionary in markers.get("production_zones", []): + var p: Vector2 = _center_to_canvas(zone.get("center")) + var radius: float = float(zone.get("radius", 12.0)) + draw_circle(p, radius, COLOR_PRODUCTION) + + +func _draw_shadow_economy(markers: Dictionary) -> void: + for zone: Dictionary in markers.get("shadow_zones", []): + var p: Vector2 = _center_to_canvas(zone.get("center")) + var radius: float = float(zone.get("radius", 16.0)) + draw_circle(p, radius, COLOR_SHADOW) + + +func _draw_corp_presence(markers: Dictionary) -> void: + for corp: Dictionary in markers.get("corp_presence", []): + var p: Vector2 = _center_to_canvas(corp.get("pos")) + draw_rect(Rect2(p - Vector2(3, 3), Vector2(6, 6)), COLOR_CORP) + + +# ============================================================================= +# Helpers +# ============================================================================= + + +func _path_to_canvas(path: Array) -> PackedVector2Array: + var out: PackedVector2Array = PackedVector2Array() + for pt: Variant in path: + if pt is Array and pt.size() >= 2: + out.append(viewer.grid_to_canvas(Vector2(float(pt[0]), float(pt[1])))) + return out + + +func _center_to_canvas(center: Variant) -> Vector2: + # Legacy markers.json encodes center as [row, col] + if center is Array and center.size() >= 2: + return viewer.grid_to_canvas(Vector2(float(center[1]), float(center[0]))) + return Vector2.ZERO + + +func _poi_pos(poi: Dictionary) -> Vector2: + if poi.has("pos") and poi["pos"] is Array and poi["pos"].size() >= 2: + return viewer.grid_to_canvas(Vector2(float(poi["pos"][0]), float(poi["pos"][1]))) + return _center_to_canvas(poi.get("center")) + + +func _draw_diamond(pos: Vector2, size: float, color: Color) -> void: + var pts: PackedVector2Array = PackedVector2Array([ + pos + Vector2(0, -size), + pos + Vector2(size, 0), + pos + Vector2(0, size), + pos + Vector2(-size, 0), + ]) + draw_colored_polygon(pts, color) + + +func _draw_dashed_polyline(points: PackedVector2Array, color: Color, width: float) -> void: + if points.size() < 2: + return + # Simple per-segment dashing — good enough for the MVP. + for i: int in range(points.size() - 1): + var a: Vector2 = points[i] + var b: Vector2 = points[i + 1] + var seg: Vector2 = b - a + var seg_len: float = seg.length() + if seg_len <= 0.001: + continue + var dir: Vector2 = seg / seg_len + var t: float = 0.0 + while t < seg_len: + var t_end: float = minf(t + RAIL_DASH_ON, seg_len) + draw_line(a + dir * t, a + dir * t_end, color, width, true) + t = t_end + RAIL_DASH_OFF diff --git a/client/ui/implant/atlas_panel.gd b/client/ui/implant/atlas_panel.gd index 3948e3628..2ca1da09f 100644 --- a/client/ui/implant/atlas_panel.gd +++ b/client/ui/implant/atlas_panel.gd @@ -1,16 +1,22 @@ class_name AtlasPanel extends Control -## Atlas implant panel — 3-level navigation: system picker → orbital diagram → body entry (#834). +## Atlas implant panel — 4-level navigation: system picker → orbital diagram → body entry → regional viewer (#834, #835). ## FULLSCREEN implant app (z=20) at implant/map/atlas per D-170. ## Uses ImplantPanel component library (D-169). Data from star_map_data.json. ## ## Navigation: -## Level 0 SYSTEM_PICKER — ◄ ► cycle systems, Enter to open orbital view -## Level 1 ORBITAL_DIAGRAM — rendered via _draw(), click body → level 2, click station → mini panel -## Level 2 BODY_ENTRY — body info panel, Enter to open heightmap (#835), Esc back +## Level 0 SYSTEM_PICKER — ◄ ► cycle systems, Enter to open orbital view +## Level 1 ORBITAL_DIAGRAM — rendered via _draw(), click body → level 2, click station → mini panel +## Level 2 BODY_ENTRY — body info panel, Enter to open heightmap viewer, Esc back +## Level 3 HEIGHTMAP_VIEWER — AtlasViewer with pan/zoom + markers + city data (#835), Esc back -enum Level { SYSTEM_PICKER = 0, ORBITAL_DIAGRAM = 1, BODY_ENTRY = 2 } +## Emitted when the viewer's city-data panel requests the economics monitor for +## the current system. main.gd bridges this to EconomicsPanel.select_system() +## + HudGroups.open_app("implant/economics") — D-191 cross-panel integration. +signal economics_link_requested(system_id: String) + +enum Level { SYSTEM_PICKER = 0, ORBITAL_DIAGRAM = 1, BODY_ENTRY = 2, HEIGHTMAP_VIEWER = 3 } const APP_PATH := "implant/map/atlas" const STAR_MAP_DATA := "res://data/star_map_data.json" @@ -62,6 +68,7 @@ var _picker_panel = null # ImplantPanel — level 0 system selector var _picker_nav_row = null # ImplantDataRow — nav hint text, updated on navigate var _body_panel = null # ImplantPanel — level 2 body entry var _station_panel = null # ImplantPanel — station mini, shown in level 1 on click +var _viewer = null # AtlasViewer — level 3 heightmap viewer (#835) func _ready() -> void: @@ -83,6 +90,7 @@ func _ready() -> void: _build_picker_panel() _build_body_panel() _build_station_panel() + _build_heightmap_viewer() _show_level(Level.SYSTEM_PICKER) @@ -169,9 +177,10 @@ func _enter_body_entry(body: Dictionary) -> void: func _open_heightmap_viewer() -> void: - # Placeholder — #835 implements the heightmap viewer scene. - # This will open it via HudGroups or a signal when #835 lands. - push_warning("AtlasPanel: heightmap viewer not yet implemented (#835)") + if _viewer == null: + return + _viewer.show_body(_selected_body, _current_system()) + _show_level(Level.HEIGHTMAP_VIEWER) # ============================================================================= @@ -257,6 +266,8 @@ func _draw() -> void: _draw_orbital() Level.BODY_ENTRY: _draw_body_bg() + Level.HEIGHTMAP_VIEWER: + pass # AtlasViewer draws its own background func _draw_picker_bg() -> void: @@ -416,6 +427,9 @@ func _gui_input(event: InputEvent) -> void: func _handle_key(event: InputEventKey) -> void: + if _level == Level.HEIGHTMAP_VIEWER: + # Viewer handles its own input via _gui_input; don't double-process. + return match event.keycode: KEY_ESCAPE: _navigate_back() @@ -442,6 +456,8 @@ func _navigate_back() -> void: _show_level(Level.SYSTEM_PICKER) Level.BODY_ENTRY: _show_level(Level.ORBITAL_DIAGRAM) + Level.HEIGHTMAP_VIEWER: + _show_level(Level.BODY_ENTRY) func _navigate_system(delta: int) -> void: @@ -525,6 +541,8 @@ func _show_level(level: Level) -> void: # Station panel managed separately — remains hidden until a station click if _station_panel and level != Level.ORBITAL_DIAGRAM: _station_panel.visible = false + if _viewer: + _viewer.visible = (level == Level.HEIGHTMAP_VIEWER) queue_redraw() @@ -642,6 +660,28 @@ func _build_station_panel() -> void: add_child(_station_panel) +func _build_heightmap_viewer() -> void: + # #835: Regional viewer instanced at runtime (parse-order rule — AtlasMarkerOverlay + # class_name is resolved by the time this _ready() runs since AtlasPanel is not an autoload). + var ViewerScript := load("res://ui/implant/atlas_viewer.gd") + _viewer = ViewerScript.new() + _viewer.name = "AtlasViewer" + _viewer.visible = false + add_child(_viewer) + _viewer.back_pressed.connect(_on_viewer_back) + _viewer.economics_link_requested.connect(_on_viewer_economics_link) + + +func _on_viewer_back() -> void: + _show_level(Level.BODY_ENTRY) + + +func _on_viewer_economics_link(system_id: String) -> void: + economics_link_requested.emit(system_id) + # Close the atlas; main.gd will open economics monitor in its place. + HudGroups.close_app() + + func _rebuild_station_panel() -> void: if not _station_panel: return diff --git a/client/ui/implant/atlas_viewer.gd b/client/ui/implant/atlas_viewer.gd new file mode 100644 index 000000000..b68b39b77 --- /dev/null +++ b/client/ui/implant/atlas_viewer.gd @@ -0,0 +1,532 @@ +class_name AtlasViewer +extends Control + +## Atlas regional viewer — heightmap PNG with pan/zoom + marker overlay (#835, D-191). +## +## Lives as a child of AtlasPanel, shown at Level.HEIGHTMAP_VIEWER. Receives +## body/system context from AtlasPanel via show_body(). Emits back_pressed and +## economics_link_requested signals so AtlasPanel can route them. +## +## Design notes: +## - Heightmap texture is drawn on a Node2D _canvas child. Pan = _canvas.position, +## zoom = _canvas.scale. MarkerOverlay is a child of _canvas so markers auto- +## follow the same transform. +## - markers.json schema (D-191 §8): cities, roads, railroads, pois, plus rivers, +## oceans, mountain_ranges with `center: [row, col]` and optional names. +## - Empty markers case (server #832/#833 not yet shipped): bare heightmap renders +## fine, no sidebar opens, overlays draw nothing. +## - Overlays (#836) plug into _overlay_visibility dict and _draw_overlays(). +## +## Navigation: +## Mouse drag pan the map +## Mouse wheel zoom in / out (centered on cursor) +## Click city open city data panel +## R reset view +## Esc back to body entry + +signal back_pressed +signal economics_link_requested(system_id: String) + +const MIN_ZOOM: float = 0.5 +const MAX_ZOOM: float = 8.0 +const ZOOM_STEP: float = 1.15 + +const PANEL_WIDTH: float = 320.0 +const PANEL_MARGIN: float = 16.0 + +# ── Colors ──────────────────────────────────────────────────────────────────── +const COLOR_BG: Color = Color("#0d1117") +const COLOR_HEIGHTMAP_TINT: Color = Color(0.85, 0.88, 0.95, 1.0) +const COLOR_CITY: Color = Color("#f0d060") +const COLOR_CITY_HOVER: Color = Color("#ffffff") +const COLOR_CITY_LABEL: Color = Color("#c8d0e0") +const COLOR_ROAD: Color = Color("#d89040") +const COLOR_RAIL: Color = Color("#7888a0") +const COLOR_POI: Color = Color("#70c0d8") +const COLOR_FEATURE_LABEL: Color = Color(0.78, 0.82, 0.92, 0.65) +const COLOR_GATE_MARKER: Color = Color("#b0e0ff") +const COLOR_POLITICAL_ZONE: Color = Color(0.25, 0.45, 0.65, 0.12) +const COLOR_TEXT: Color = Color("#c8d0e0") +const COLOR_TEXT_DIM: Color = Color("#667788") +const COLOR_EMPTY_NOTICE: Color = Color("#445566") + +# ── Context (set by AtlasPanel.show_body) ───────────────────────────────────── +var _body: Dictionary = {} +var _system: Dictionary = {} +var _implant_theme = null + +# ── Heightmap + markers ─────────────────────────────────────────────────────── +var _heightmap_texture: Texture2D = null +var _markers: Dictionary = {} +var _grid_w: float = 512.0 +var _grid_h: float = 256.0 +var _tex_w: float = 1024.0 +var _tex_h: float = 512.0 + +# ── Pan/zoom state ──────────────────────────────────────────────────────────── +var _view_offset: Vector2 = Vector2.ZERO +var _view_zoom: float = 1.0 +var _dragging: bool = false +var _drag_start_mouse: Vector2 +var _drag_start_offset: Vector2 + +# ── Selection ───────────────────────────────────────────────────────────────── +var _selected_city: Dictionary = {} +var _hovered_city: Dictionary = {} + +# ── Overlay visibility (#836 plugs in here) ─────────────────────────────────── +## Map of overlay id → bool. Always-on overlays are true by default; deferred +## overlays are locked (see _overlay_locked). AtlasOverlayBar in #836 writes +## into this dict via set_overlay_visible(). +var _overlay_visibility: Dictionary = { + "terrain": true, + "infrastructure": true, + "named_features": true, + "gate_markers": true, + "political_zones": true, + "population_density": false, + "production_zones": false, + "shadow_economy": false, + "corp_presence": false, + "stockpile_weeks": false, + "production_vs_baseline": false, +} +var _overlay_locked: Dictionary = { + "stockpile_weeks": true, + "production_vs_baseline": true, +} + +# ── Child nodes ─────────────────────────────────────────────────────────────── +var _canvas: Node2D = null # transformed node holding heightmap + markers +var _overlay_node: AtlasMarkerOverlay = null # draws on top of heightmap +var _city_panel = null # ImplantPanel sidebar (city data) +var _empty_notice = null # ImplantPanel shown when heightmap missing + + +func _ready() -> void: + anchor_right = 1.0 + anchor_bottom = 1.0 + grow_horizontal = Control.GROW_DIRECTION_BOTH + grow_vertical = Control.GROW_DIRECTION_BOTH + mouse_filter = Control.MOUSE_FILTER_STOP + focus_mode = Control.FOCUS_ALL + + _implant_theme = load("res://ui/implant/default_implant.tres") + + # Build transformed canvas that holds heightmap + marker overlay + _canvas = Node2D.new() + _canvas.name = "AtlasCanvas" + add_child(_canvas) + + _overlay_node = AtlasMarkerOverlay.new() + _overlay_node.name = "MarkerOverlay" + _overlay_node.viewer = self + _canvas.add_child(_overlay_node) + + _build_city_panel() + _build_empty_notice() + + +## Called by AtlasPanel when entering the viewer for a specific body. +func show_body(body: Dictionary, system: Dictionary) -> void: + _body = body + _system = system + _selected_city = {} + _hovered_city = {} + _load_heightmap() + _load_markers() + _fit_to_view() + _city_panel.visible = false + _empty_notice.visible = (_heightmap_texture == null) + grab_focus() + queue_redraw() + _overlay_node.queue_redraw() + + +## #836 hook — toggle an overlay. Locked overlays are no-ops. +func set_overlay_visible(overlay_id: String, visible_state: bool) -> void: + if _overlay_locked.get(overlay_id, false): + return + if not _overlay_visibility.has(overlay_id): + return + _overlay_visibility[overlay_id] = visible_state + _overlay_node.queue_redraw() + + +func is_overlay_visible(overlay_id: String) -> bool: + return bool(_overlay_visibility.get(overlay_id, false)) + + +func is_overlay_locked(overlay_id: String) -> bool: + return bool(_overlay_locked.get(overlay_id, false)) + + +func get_heightmap_texture() -> Texture2D: + return _heightmap_texture + + +func get_markers() -> Dictionary: + return _markers + + +# ============================================================================= +# Data loading +# ============================================================================= + + +func _load_heightmap() -> void: + _heightmap_texture = null + var ref: Variant = _body.get("terrain_reference") + if ref == null or str(ref).is_empty(): + return + var path: String = str(ref) + if not path.begins_with("res://"): + path = "res://" + path.lstrip("/") + if not ResourceLoader.exists(path): + push_warning("AtlasViewer: terrain_reference not found at %s" % path) + return + var tex: Variant = load(path) + if tex is Texture2D: + _heightmap_texture = tex + _tex_w = float(_heightmap_texture.get_width()) + _tex_h = float(_heightmap_texture.get_height()) + + +func _load_markers() -> void: + _markers = {} + _grid_w = _tex_w + _grid_h = _tex_h + + var ref: Variant = _body.get("terrain_reference") + if ref == null or str(ref).is_empty(): + return + var hm_path: String = str(ref) + if not hm_path.begins_with("res://"): + hm_path = "res://" + hm_path.lstrip("/") + var dir: String = hm_path.get_base_dir() + var markers_path: String = dir + "/markers.json" + + if not FileAccess.file_exists(markers_path): + return + var f := FileAccess.open(markers_path, FileAccess.READ) + if f == null: + return + var parsed: Variant = JSON.parse_string(f.get_as_text()) + f.close() + if not (parsed is Dictionary): + return + _markers = parsed + var grid: Dictionary = _markers.get("grid", {}) + _grid_w = float(grid.get("w", _tex_w)) + _grid_h = float(grid.get("h", _tex_h)) + + +# ============================================================================= +# View transform +# ============================================================================= + + +func _fit_to_view() -> void: + if _heightmap_texture == null: + _view_zoom = 1.0 + _view_offset = Vector2.ZERO + _canvas.position = _view_offset + _canvas.scale = Vector2(_view_zoom, _view_zoom) + return + var sz: Vector2 = get_rect().size + if sz == Vector2.ZERO: + sz = Vector2(1280.0, 720.0) + var avail: Vector2 = sz - Vector2(0, 60) # leave space for header + var fit_x: float = avail.x / _tex_w + var fit_y: float = avail.y / _tex_h + _view_zoom = clampf(minf(fit_x, fit_y) * 0.92, MIN_ZOOM, MAX_ZOOM) + var scaled: Vector2 = Vector2(_tex_w, _tex_h) * _view_zoom + _view_offset = (sz - scaled) * 0.5 + Vector2(0, 20) + _apply_transform() + + +func _apply_transform() -> void: + _canvas.position = _view_offset + _canvas.scale = Vector2(_view_zoom, _view_zoom) + queue_redraw() + _overlay_node.queue_redraw() + + +func _zoom_at(mouse_pos: Vector2, factor: float) -> void: + var new_zoom: float = clampf(_view_zoom * factor, MIN_ZOOM, MAX_ZOOM) + if is_equal_approx(new_zoom, _view_zoom): + return + # Keep the texture point under cursor fixed while zooming + var local_before: Vector2 = (mouse_pos - _view_offset) / _view_zoom + _view_zoom = new_zoom + _view_offset = mouse_pos - local_before * _view_zoom + _apply_transform() + + +## Convert grid coordinates (from markers.json) to canvas-space (texture pixels). +func grid_to_canvas(grid_point: Vector2) -> Vector2: + if _grid_w <= 0.0 or _grid_h <= 0.0: + return Vector2.ZERO + return Vector2( + grid_point.x / _grid_w * _tex_w, + grid_point.y / _grid_h * _tex_h + ) + + +func canvas_to_screen(canvas_point: Vector2) -> Vector2: + return canvas_point * _view_zoom + _view_offset + + +func screen_to_canvas(screen_point: Vector2) -> Vector2: + if _view_zoom == 0.0: + return Vector2.ZERO + return (screen_point - _view_offset) / _view_zoom + + +# ============================================================================= +# Drawing (background + header) +# ============================================================================= + + +func _draw() -> void: + draw_rect(Rect2(Vector2.ZERO, get_rect().size), COLOR_BG) + _draw_header() + if _heightmap_texture != null: + _canvas.position = _view_offset + _canvas.scale = Vector2(_view_zoom, _view_zoom) + + +func _draw_header() -> void: + var font := get_theme_default_font() + var body_name: String = _dict_str(_body, "proper_name", _dict_str(_body, "body_id", "—")) + var sys_name: String = _dict_str(_system, "proper_name", _dict_str(_system, "system_id", "—")) + var title: String = "ATLAS — %s · %s" % [body_name.to_upper(), sys_name.to_upper()] + draw_string(font, Vector2(16, 28), title, HORIZONTAL_ALIGNMENT_LEFT, -1, 14, COLOR_TEXT) + var hint: String = "drag pan · wheel zoom · r reset · click city data · esc back" + draw_string(font, Vector2(16, 44), hint, HORIZONTAL_ALIGNMENT_LEFT, -1, 9, COLOR_TEXT_DIM) + + +## Safely extract a string field from a dict, falling back when missing or null. +static func _dict_str(d: Dictionary, key: String, fallback: String) -> String: + var v: Variant = d.get(key) + if v == null: + return fallback + var s: String = str(v) + if s.is_empty(): + return fallback + return s + + +# ============================================================================= +# Input +# ============================================================================= + + +func _gui_input(event: InputEvent) -> void: + if event is InputEventKey and event.pressed and not event.is_echo(): + _handle_key(event as InputEventKey) + return + + if _heightmap_texture == null: + return + + if event is InputEventMouseButton: + var mb := event as InputEventMouseButton + if mb.button_index == MOUSE_BUTTON_WHEEL_UP and mb.pressed: + _zoom_at(mb.position, ZOOM_STEP) + elif mb.button_index == MOUSE_BUTTON_WHEEL_DOWN and mb.pressed: + _zoom_at(mb.position, 1.0 / ZOOM_STEP) + elif mb.button_index == MOUSE_BUTTON_LEFT: + if mb.pressed: + if not _try_click_city(mb.position): + _dragging = true + _drag_start_mouse = mb.position + _drag_start_offset = _view_offset + else: + _dragging = false + elif event is InputEventMouseMotion: + var mm := event as InputEventMouseMotion + if _dragging: + _view_offset = _drag_start_offset + (mm.position - _drag_start_mouse) + _apply_transform() + else: + _update_hover(mm.position) + + +func _handle_key(event: InputEventKey) -> void: + match event.keycode: + KEY_ESCAPE: + if _selected_city.size() > 0: + _selected_city = {} + _city_panel.visible = false + queue_redraw() + else: + back_pressed.emit() + KEY_R: + _fit_to_view() + + +func _try_click_city(screen_pos: Vector2) -> bool: + var city: Dictionary = _find_city_at(screen_pos) + if city.is_empty(): + return false + _selected_city = city + _rebuild_city_panel() + _city_panel.visible = true + queue_redraw() + return true + + +func _update_hover(screen_pos: Vector2) -> void: + var new_hover: Dictionary = _find_city_at(screen_pos) + if new_hover != _hovered_city: + _hovered_city = new_hover + _overlay_node.queue_redraw() + + +func _find_city_at(screen_pos: Vector2) -> Dictionary: + var cities: Array = _markers.get("cities", []) + if cities.is_empty(): + return {} + var hit_radius: float = 12.0 + for c: Dictionary in cities: + var canvas_pt: Vector2 = _city_canvas_pos(c) + var screen_pt: Vector2 = canvas_to_screen(canvas_pt) + if screen_pos.distance_to(screen_pt) <= hit_radius: + return c + return {} + + +## Extract canvas-space position for a city marker. Supports `pos: [x,y]`, +## `lat`/`lon` (equirectangular), and legacy `center: [row,col]`. +func _city_canvas_pos(city: Dictionary) -> Vector2: + if city.has("pos") and city["pos"] is Array and city["pos"].size() >= 2: + return grid_to_canvas(Vector2(float(city["pos"][0]), float(city["pos"][1]))) + if city.has("lat") and city.has("lon"): + var lon: float = float(city["lon"]) + var lat: float = float(city["lat"]) + return Vector2( + (lon + 180.0) / 360.0 * _tex_w, + (90.0 - lat) / 180.0 * _tex_h + ) + if city.has("center") and city["center"] is Array and city["center"].size() >= 2: + # center is [row, col] in grid space + return grid_to_canvas(Vector2(float(city["center"][1]), float(city["center"][0]))) + return Vector2.ZERO + + +# ============================================================================= +# City data panel (sidebar) +# ============================================================================= + + +func _build_city_panel() -> void: + _city_panel = ImplantPanel.new() + _city_panel.name = "CityPanel" + _city_panel.theme_resource = _implant_theme + _city_panel.custom_minimum_size.x = PANEL_WIDTH + _city_panel.mouse_filter = Control.MOUSE_FILTER_STOP + _city_panel.visible = false + add_child(_city_panel) + _position_city_panel() + + +func _position_city_panel() -> void: + var sz: Vector2 = get_rect().size + if sz == Vector2.ZERO: + sz = Vector2(1280.0, 720.0) + _city_panel.position = Vector2(sz.x - PANEL_WIDTH - PANEL_MARGIN, 60.0) + + +func _rebuild_city_panel() -> void: + if not _city_panel: + return + _city_panel.clear() + _position_city_panel() + + if _selected_city.is_empty(): + return + + var c: Dictionary = _selected_city + var name_str: String = _dict_str(c, "name", "(unnamed)") + var tier: int = int(c.get("population_tier", 0)) + var func_label: String = _dict_str(c, "primary_function", "").replace("_", " ") + var is_gate: bool = bool(c.get("gate_terminal", false)) + + var sys_label: String = _dict_str(_system, "proper_name", _dict_str(_system, "system_id", "")) + var body_label: String = _dict_str(_body, "proper_name", _dict_str(_body, "body_id", "")) + _city_panel.add_component(ImplantHeader.new(name_str, sys_label + " · " + body_label)) + _city_panel.add_component(ImplantSeparator.new()) + + if tier > 0: + _city_panel.add_component(ImplantDataRow.new("pop tier %d" % tier)) + if not func_label.is_empty(): + _city_panel.add_component(ImplantDataRow.new("function " + func_label)) + if is_gate: + _city_panel.add_component(ImplantDataRow.new("gate terminal")) + + # Cross-system facts + var czone: String = str(_system.get("currency_zone", "")).replace("_", " ") + if not czone.is_empty(): + _city_panel.add_component(ImplantDataRow.new("currency " + czone)) + var commission: bool = bool(c.get("commission_presence", false)) + _city_panel.add_component(ImplantDataRow.new("commission " + ("yes" if commission else "no"))) + var shadow: Variant = c.get("shadow_economy_zone") + if shadow != null and not str(shadow).is_empty(): + _city_panel.add_component(ImplantDataRow.new("shadow zone " + str(shadow))) + var gate_dist: Variant = c.get("gate_distance_hops") + if gate_dist != null: + _city_panel.add_component(ImplantDataRow.new("gate distance %d hops" % int(gate_dist))) + + _city_panel.add_component(ImplantSeparator.new()) + _city_panel.add_component(ImplantTextBlock.new("n open economics monitor for this system")) + _city_panel.add_component(ImplantTextBlock.new("esc close")) + + +func _unhandled_key_input(event: InputEvent) -> void: + if not visible: + return + if not (event is InputEventKey) or not event.pressed or event.is_echo(): + return + var ek := event as InputEventKey + if ek.keycode == KEY_N and _selected_city.size() > 0: + var sys_id: String = _system.get("system_id", "") + if not sys_id.is_empty(): + economics_link_requested.emit(sys_id) + get_viewport().set_input_as_handled() + + +# ============================================================================= +# Empty-state notice +# ============================================================================= + + +func _build_empty_notice() -> void: + _empty_notice = ImplantPanel.new() + _empty_notice.name = "EmptyNotice" + _empty_notice.theme_resource = _implant_theme + _empty_notice.custom_minimum_size.x = 400.0 + _empty_notice.mouse_filter = Control.MOUSE_FILTER_IGNORE + _empty_notice.visible = false + add_child(_empty_notice) + _empty_notice.add_component(ImplantHeader.new("TERRAIN DATA PENDING", "regional atlas unavailable")) + _empty_notice.add_component(ImplantSeparator.new()) + _empty_notice.add_component(ImplantTextBlock.new("The server atlas pipeline has not yet populated terrain_reference for this body (#839). Once regenerated, the heightmap and markers will render here.")) + _empty_notice.add_component(ImplantSeparator.new()) + _empty_notice.add_component(ImplantTextBlock.new("esc back to orbital view")) + _position_empty_notice() + + +func _position_empty_notice() -> void: + var sz: Vector2 = get_rect().size + if sz == Vector2.ZERO: + sz = Vector2(1280.0, 720.0) + _empty_notice.position = Vector2((sz.x - 400.0) * 0.5, sz.y * 0.35) + + +func _notification(what: int) -> void: + if what == NOTIFICATION_RESIZED: + if _city_panel: + _position_city_panel() + if _empty_notice: + _position_empty_notice() From 9987eaad8a7b34d00df865abf7a107b3e2e1dc0e Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 15 Apr 2026 08:27:30 +0200 Subject: [PATCH 3/8] =?UTF-8?q?feat(ui):=20atlas=20overlay=20toggle=20bar?= =?UTF-8?q?=20=E2=80=94=209=20MVP=20overlays=20+=202=20locked=20(#836)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AtlasOverlayBar is an HBoxContainer docked top-right of the heightmap viewer with 11 short-label buttons mapping to D-191 §7 / D-181 signal visibility: always-on (5) TER INF NAM GAT POL — terrain, infrastructure, named features, gate markers, political zones. Pinned on; clicks are swallowed so the layers can't accidentally be disabled. toggleable (4) POP PRD SHD CRP — population density, production zones, shadow economy, corporate presence. Reflect and mutate viewer overlay state. locked (2) STK BSL — stockpile_weeks, production_vs_baseline. Disabled and greyed out with unlock-requirement tooltips, per D-181 semi-private/private tiers; kept in the bar so players see that deeper data exists and is gated. Each button writes through AtlasViewer.set_overlay_visible(), which is the single entry point into the viewer's _overlay_visibility dict consumed by AtlasMarkerOverlay._draw(). Locked overlays short-circuit in that setter. Per D-191 criterion 6. --- client/ui/implant/atlas_overlay_bar.gd | 101 +++++++++++++++++++++++++ client/ui/implant/atlas_viewer.gd | 25 ++++++ 2 files changed, 126 insertions(+) create mode 100644 client/ui/implant/atlas_overlay_bar.gd diff --git a/client/ui/implant/atlas_overlay_bar.gd b/client/ui/implant/atlas_overlay_bar.gd new file mode 100644 index 000000000..acf14d955 --- /dev/null +++ b/client/ui/implant/atlas_overlay_bar.gd @@ -0,0 +1,101 @@ +class_name AtlasOverlayBar +extends HBoxContainer + +## Overlay toggle bar for #835 AtlasViewer — nine MVP overlays plus two locked +## layers (#836, D-191 §7, D-181 signal visibility ladder). +## +## Layout: +## [ALWAYS-ON] terrain · infrastructure · named · gate · political +## [TOGGLEABLE] pop density · production · shadow · corp presence +## [LOCKED] stockpile weeks · production vs baseline +## +## Always-on buttons are visible but non-interactive (they render as pinned). +## Toggleable buttons reflect viewer visibility state and flip on click. +## Locked buttons are disabled, greyed, and carry a tooltip describing the +## unlock requirement from D-181 — they are not removed from the bar so the +## player can see that richer data exists and is gated. + +const OVERLAY_DEFS: Array = [ + # id, label, group ("always" | "toggle" | "locked"), tooltip + {"id": "terrain", "label": "TER", "group": "always", "tooltip": "Terrain — base heightmap. Always visible."}, + {"id": "infrastructure", "label": "INF", "group": "always", "tooltip": "Infrastructure — roads + rail. Always visible."}, + {"id": "named_features", "label": "NAM", "group": "always", "tooltip": "Named features — rivers, oceans, mountain ranges. Always visible."}, + {"id": "gate_markers", "label": "GAT", "group": "always", "tooltip": "Gate + spaceport markers. Always visible."}, + {"id": "political_zones", "label": "POL", "group": "always", "tooltip": "Political zones — currency-zone bands. Always visible."}, + {"id": "population_density", "label": "POP", "group": "toggle", "tooltip": "Population density (D-181 public)."}, + {"id": "production_zones", "label": "PRD", "group": "toggle", "tooltip": "Production zones (D-181 observable — requires presence)."}, + {"id": "shadow_economy", "label": "SHD", "group": "toggle", "tooltip": "Shadow economy zones (D-181 observable)."}, + {"id": "corp_presence", "label": "CRP", "group": "toggle", "tooltip": "Corporate presence — Tier 1 only (D-181 observable)."}, + {"id": "stockpile_weeks", "label": "STK", "group": "locked", "tooltip": "Stockpile weeks — LOCKED. Requires corporate contact (D-181 semi-private)."}, + {"id": "production_vs_baseline", "label": "BSL", "group": "locked", "tooltip": "Production vs baseline — LOCKED. Requires insider access (D-181 private)."}, +] + +const COLOR_PINNED: Color = Color("#c8d0e0") +const COLOR_ACTIVE: Color = Color("#f0d060") +const COLOR_INACTIVE: Color = Color("#556677") +const COLOR_LOCKED: Color = Color("#3a4a55") + +var _viewer = null +var _buttons: Dictionary = {} # overlay_id -> Button + + +func _init(viewer_ref) -> void: + _viewer = viewer_ref + add_theme_constant_override("separation", 4) + + +func _ready() -> void: + mouse_filter = Control.MOUSE_FILTER_STOP + for def: Dictionary in OVERLAY_DEFS: + var b: Button = Button.new() + b.text = def["label"] + b.tooltip_text = def["tooltip"] + b.toggle_mode = (def["group"] != "always") + b.focus_mode = Control.FOCUS_NONE + b.custom_minimum_size = Vector2(42.0, 24.0) + b.add_theme_font_size_override("font_size", 10) + + match def["group"]: + "always": + b.disabled = false + b.button_pressed = true + b.add_theme_color_override("font_color", COLOR_PINNED) + b.add_theme_color_override("font_hover_color", COLOR_PINNED) + b.add_theme_color_override("font_pressed_color", COLOR_PINNED) + b.add_theme_color_override("font_disabled_color", COLOR_PINNED) + # Swallow clicks so the player can't accidentally turn terrain off, + # but keep it visible + tooltipped. + b.pressed.connect(_on_always_pressed.bind(def["id"])) + "toggle": + b.button_pressed = _viewer.is_overlay_visible(def["id"]) if _viewer else false + b.add_theme_color_override("font_color", COLOR_INACTIVE) + b.add_theme_color_override("font_pressed_color", COLOR_ACTIVE) + b.toggled.connect(_on_toggle_changed.bind(def["id"])) + "locked": + b.disabled = true + b.button_pressed = false + b.add_theme_color_override("font_disabled_color", COLOR_LOCKED) + add_child(b) + _buttons[def["id"]] = b + + +func _on_always_pressed(overlay_id: String) -> void: + # Always-on overlays stay on. Keep the button visually pressed. + if _buttons.has(overlay_id): + _buttons[overlay_id].button_pressed = true + + +func _on_toggle_changed(pressed: bool, overlay_id: String) -> void: + if _viewer: + _viewer.set_overlay_visible(overlay_id, pressed) + + +func sync_from_viewer() -> void: + if _viewer == null: + return + for def: Dictionary in OVERLAY_DEFS: + if def["group"] != "toggle": + continue + var b: Button = _buttons.get(def["id"]) + if b: + b.set_pressed_no_signal(_viewer.is_overlay_visible(def["id"])) diff --git a/client/ui/implant/atlas_viewer.gd b/client/ui/implant/atlas_viewer.gd index b68b39b77..d509445b8 100644 --- a/client/ui/implant/atlas_viewer.gd +++ b/client/ui/implant/atlas_viewer.gd @@ -101,6 +101,7 @@ var _canvas: Node2D = null # transformed node holding heightmap var _overlay_node: AtlasMarkerOverlay = null # draws on top of heightmap var _city_panel = null # ImplantPanel sidebar (city data) var _empty_notice = null # ImplantPanel shown when heightmap missing +var _overlay_bar: AtlasOverlayBar = null # #836 overlay toggle bar (top-right) func _ready() -> void: @@ -125,6 +126,7 @@ func _ready() -> void: _build_city_panel() _build_empty_notice() + _build_overlay_bar() ## Called by AtlasPanel when entering the viewer for a specific body. @@ -524,9 +526,32 @@ func _position_empty_notice() -> void: _empty_notice.position = Vector2((sz.x - 400.0) * 0.5, sz.y * 0.35) +# ============================================================================= +# Overlay toggle bar (#836) +# ============================================================================= + + +func _build_overlay_bar() -> void: + _overlay_bar = AtlasOverlayBar.new(self) + _overlay_bar.name = "OverlayBar" + add_child(_overlay_bar) + _position_overlay_bar() + + +func _position_overlay_bar() -> void: + var sz: Vector2 = get_rect().size + if sz == Vector2.ZERO: + sz = Vector2(1280.0, 720.0) + # Top-right, leaving room for the header text + var bar_w: float = _overlay_bar.size.x if _overlay_bar.size.x > 0.0 else 520.0 + _overlay_bar.position = Vector2(sz.x - bar_w - PANEL_MARGIN, PANEL_MARGIN) + + func _notification(what: int) -> void: if what == NOTIFICATION_RESIZED: if _city_panel: _position_city_panel() if _empty_notice: _position_empty_notice() + if _overlay_bar: + _position_overlay_bar() From 9afd6b53d207fea1dae292561bc281613e67b7e9 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 15 Apr 2026 08:31:40 +0200 Subject: [PATCH 4/8] style(ui): wrap atlas long lines to satisfy gdlint --- client/ui/implant/atlas_overlay_bar.gd | 33 +++++++++++++++++--------- client/ui/implant/atlas_panel.gd | 3 ++- client/ui/implant/atlas_viewer.gd | 6 ++++- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/client/ui/implant/atlas_overlay_bar.gd b/client/ui/implant/atlas_overlay_bar.gd index acf14d955..50bce34df 100644 --- a/client/ui/implant/atlas_overlay_bar.gd +++ b/client/ui/implant/atlas_overlay_bar.gd @@ -17,17 +17,28 @@ extends HBoxContainer const OVERLAY_DEFS: Array = [ # id, label, group ("always" | "toggle" | "locked"), tooltip - {"id": "terrain", "label": "TER", "group": "always", "tooltip": "Terrain — base heightmap. Always visible."}, - {"id": "infrastructure", "label": "INF", "group": "always", "tooltip": "Infrastructure — roads + rail. Always visible."}, - {"id": "named_features", "label": "NAM", "group": "always", "tooltip": "Named features — rivers, oceans, mountain ranges. Always visible."}, - {"id": "gate_markers", "label": "GAT", "group": "always", "tooltip": "Gate + spaceport markers. Always visible."}, - {"id": "political_zones", "label": "POL", "group": "always", "tooltip": "Political zones — currency-zone bands. Always visible."}, - {"id": "population_density", "label": "POP", "group": "toggle", "tooltip": "Population density (D-181 public)."}, - {"id": "production_zones", "label": "PRD", "group": "toggle", "tooltip": "Production zones (D-181 observable — requires presence)."}, - {"id": "shadow_economy", "label": "SHD", "group": "toggle", "tooltip": "Shadow economy zones (D-181 observable)."}, - {"id": "corp_presence", "label": "CRP", "group": "toggle", "tooltip": "Corporate presence — Tier 1 only (D-181 observable)."}, - {"id": "stockpile_weeks", "label": "STK", "group": "locked", "tooltip": "Stockpile weeks — LOCKED. Requires corporate contact (D-181 semi-private)."}, - {"id": "production_vs_baseline", "label": "BSL", "group": "locked", "tooltip": "Production vs baseline — LOCKED. Requires insider access (D-181 private)."}, + {"id": "terrain", "label": "TER", "group": "always", + "tooltip": "Terrain — base heightmap. Always visible."}, + {"id": "infrastructure", "label": "INF", "group": "always", + "tooltip": "Infrastructure — roads + rail. Always visible."}, + {"id": "named_features", "label": "NAM", "group": "always", + "tooltip": "Named features — rivers, oceans, ranges. Always visible."}, + {"id": "gate_markers", "label": "GAT", "group": "always", + "tooltip": "Gate + spaceport markers. Always visible."}, + {"id": "political_zones", "label": "POL", "group": "always", + "tooltip": "Political zones — currency-zone bands. Always visible."}, + {"id": "population_density", "label": "POP", "group": "toggle", + "tooltip": "Population density (D-181 public)."}, + {"id": "production_zones", "label": "PRD", "group": "toggle", + "tooltip": "Production zones (D-181 observable — requires presence)."}, + {"id": "shadow_economy", "label": "SHD", "group": "toggle", + "tooltip": "Shadow economy zones (D-181 observable)."}, + {"id": "corp_presence", "label": "CRP", "group": "toggle", + "tooltip": "Corporate presence — Tier 1 only (D-181 observable)."}, + {"id": "stockpile_weeks", "label": "STK", "group": "locked", + "tooltip": "Stockpile weeks — LOCKED. Needs corporate contact (D-181 semi-private)."}, + {"id": "production_vs_baseline", "label": "BSL", "group": "locked", + "tooltip": "Production vs baseline — LOCKED. Needs insider access (D-181 private)."}, ] const COLOR_PINNED: Color = Color("#c8d0e0") diff --git a/client/ui/implant/atlas_panel.gd b/client/ui/implant/atlas_panel.gd index 2ca1da09f..c77b29e01 100644 --- a/client/ui/implant/atlas_panel.gd +++ b/client/ui/implant/atlas_panel.gd @@ -1,7 +1,8 @@ class_name AtlasPanel extends Control -## Atlas implant panel — 4-level navigation: system picker → orbital diagram → body entry → regional viewer (#834, #835). +## Atlas implant panel — 4-level navigation (#834, #835): +## system picker → orbital diagram → body entry → regional viewer. ## FULLSCREEN implant app (z=20) at implant/map/atlas per D-170. ## Uses ImplantPanel component library (D-169). Data from star_map_data.json. ## diff --git a/client/ui/implant/atlas_viewer.gd b/client/ui/implant/atlas_viewer.gd index d509445b8..25e958e5b 100644 --- a/client/ui/implant/atlas_viewer.gd +++ b/client/ui/implant/atlas_viewer.gd @@ -513,7 +513,11 @@ func _build_empty_notice() -> void: add_child(_empty_notice) _empty_notice.add_component(ImplantHeader.new("TERRAIN DATA PENDING", "regional atlas unavailable")) _empty_notice.add_component(ImplantSeparator.new()) - _empty_notice.add_component(ImplantTextBlock.new("The server atlas pipeline has not yet populated terrain_reference for this body (#839). Once regenerated, the heightmap and markers will render here.")) + var notice_text: String = ( + "The server atlas pipeline has not yet populated terrain_reference for this body (#839). " + + "Once regenerated, the heightmap and markers will render here." + ) + _empty_notice.add_component(ImplantTextBlock.new(notice_text)) _empty_notice.add_component(ImplantSeparator.new()) _empty_notice.add_component(ImplantTextBlock.new("esc back to orbital view")) _position_empty_notice() From 1328db313884724f5a50edfb58dc9dc345c7197f Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 15 Apr 2026 08:47:14 +0200 Subject: [PATCH 5/8] =?UTF-8?q?fix(ui):=20atlas=20review=20blockers=20?= =?UTF-8?q?=E2=80=94=20moon=20layout,=20stale=20grid=20dims,=20overlay=20s?= =?UTF-8?q?chema=20(#128)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Moon placement on the orbital diagram divided by a hard-coded 4 — a gas giant with five or more moons would overlap satellites and make them unclickable. Count moons per parent and distribute them evenly. 2. AtlasViewer._load_markers seeded _grid_w/_grid_h from _tex_w/_tex_h before the terrain_reference null check, so opening a body with no heightmap after one that had a heightmap left the grid dimensions pointing at the previous texture and misplaced markers. Reset texture + grid dims to sentinel defaults at the top of _load_heightmap. 3. AtlasMarkerOverlay's three toggleable overlays (production_zones, shadow_economy, corp_presence) read markers.production_zones / markers.shadow_zones / markers.corp_presence — keys that don't exist in D-191 §8's markers schema, so toggling was a silent no-op. Derive them from cities[] instead: primary_function ∈ PRODUCTION_FUNCTIONS for production, absent Commission presence for shadow bands, Commission presence for corp dots. Follow-up ticket will formalise per-overlay arrays once the server schema lands. Addresses PR #128 review blockers 1-3. --- client/ui/implant/atlas_marker_overlay.gd | 47 +++++++++++++++++------ client/ui/implant/atlas_panel.gd | 30 +++++++++++---- client/ui/implant/atlas_viewer.gd | 8 ++++ 3 files changed, 67 insertions(+), 18 deletions(-) diff --git a/client/ui/implant/atlas_marker_overlay.gd b/client/ui/implant/atlas_marker_overlay.gd index 8ef9134b4..d5d46b195 100644 --- a/client/ui/implant/atlas_marker_overlay.gd +++ b/client/ui/implant/atlas_marker_overlay.gd @@ -35,6 +35,11 @@ const COLOR_CORP: Color = Color(0.85, 0.65, 0.20, 0.75) const RAIL_DASH_ON: float = 6.0 const RAIL_DASH_OFF: float = 4.0 +const PRODUCTION_FUNCTIONS: Array = [ + "industrial", "industry", "manufacturing", "extraction", "mining", + "refinery", "foundry", "shipyard", "production", +] + var viewer = null # AtlasViewer (untyped to avoid cyclic ref) @@ -200,24 +205,44 @@ func _draw_population_density(markers: Dictionary) -> void: draw_circle(pos, r, COLOR_POP_HEAT) +# Review #3: derive overlays from existing cities[] fields. The original +# code read production_zones / shadow_zones / corp_presence from keys that +# are not in the D-191 §8 markers schema, so toggling was a silent no-op. +# When the server schema lands with explicit zone polygons we can promote +# these back to dedicated arrays; until then the MVP reads what's there. func _draw_production_zones(markers: Dictionary) -> void: - for zone: Dictionary in markers.get("production_zones", []): - var p: Vector2 = _center_to_canvas(zone.get("center")) - var radius: float = float(zone.get("radius", 12.0)) - draw_circle(p, radius, COLOR_PRODUCTION) + for city: Dictionary in markers.get("cities", []): + var func_id: String = str(city.get("primary_function", "")).to_lower() + if not PRODUCTION_FUNCTIONS.has(func_id): + continue + var pos: Vector2 = viewer._city_canvas_pos(city) + var tier: int = int(city.get("population_tier", 1)) + var radius: float = 10.0 + float(tier) * 4.0 + draw_circle(pos, radius, COLOR_PRODUCTION) func _draw_shadow_economy(markers: Dictionary) -> void: - for zone: Dictionary in markers.get("shadow_zones", []): - var p: Vector2 = _center_to_canvas(zone.get("center")) - var radius: float = float(zone.get("radius", 16.0)) - draw_circle(p, radius, COLOR_SHADOW) + # Broad bands around cities outside the Commission's reach. Intentionally + # soft + overlapping — D-181 treats shadow zones as "broad bands", not + # precise polygons. + for city: Dictionary in markers.get("cities", []): + var commission: bool = bool(city.get("commission_presence", false)) + if commission: + continue + var pos: Vector2 = viewer._city_canvas_pos(city) + var tier: int = int(city.get("population_tier", 1)) + var radius: float = 18.0 + float(tier) * 6.0 + draw_circle(pos, radius, COLOR_SHADOW) func _draw_corp_presence(markers: Dictionary) -> void: - for corp: Dictionary in markers.get("corp_presence", []): - var p: Vector2 = _center_to_canvas(corp.get("pos")) - draw_rect(Rect2(p - Vector2(3, 3), Vector2(6, 6)), COLOR_CORP) + # Tier 1 corp presence — keyed off the Commission-presence flag on cities + # until D-191 §8 schema explicitly lists per-corp dots. + for city: Dictionary in markers.get("cities", []): + if not bool(city.get("commission_presence", false)): + continue + var pos: Vector2 = viewer._city_canvas_pos(city) + draw_rect(Rect2(pos - Vector2(3, 3), Vector2(6, 6)), COLOR_CORP) # ============================================================================= diff --git a/client/ui/implant/atlas_panel.gd b/client/ui/implant/atlas_panel.gd index c77b29e01..eaff87e13 100644 --- a/client/ui/implant/atlas_panel.gd +++ b/client/ui/implant/atlas_panel.gd @@ -230,18 +230,34 @@ func _compute_body_positions() -> void: angle = -PI / 2.0 + TAU * float(i) / float(count) _body_positions[b["body_id"]] = center + Vector2(cos(angle), sin(angle)) * ring_r - # Place moons near their parent body + # Place moons near their parent body. Moons per parent count drives the + # angular spacing — a hard-coded divisor made the 5th+ moon overlap moon 1 + # and become unclickable on gas giants with many satellites (review #1). + var moons_by_parent: Dictionary = {} for b: Dictionary in _orbital_bodies: var parent_id: Variant = b.get("parent_body_id") if parent_id == null: continue - if not _body_positions.has(str(parent_id)): + var key: String = str(parent_id) + if not moons_by_parent.has(key): + moons_by_parent[key] = [] + moons_by_parent[key].append(b) + for parent_key: String in moons_by_parent: + if not _body_positions.has(parent_key): continue - var parent_pos: Vector2 = _body_positions[str(parent_id)] - var moon_idx: int = int(b.get("orbit_index", 1)) - # Distribute moons around parent at evenly spaced angles - var angle: float = -PI / 2.0 + TAU * float(moon_idx - 1) / 4.0 - _body_positions[b["body_id"]] = parent_pos + Vector2(cos(angle), sin(angle)) * MOON_ORBIT_RADIUS + var siblings: Array = moons_by_parent[parent_key] + siblings.sort_custom( + func(a: Dictionary, b: Dictionary) -> bool: + return int(a.get("orbit_index", 0)) < int(b.get("orbit_index", 0)) + ) + var parent_pos: Vector2 = _body_positions[parent_key] + var count: int = siblings.size() + for i: int in range(count): + var moon: Dictionary = siblings[i] + var angle: float = -PI / 2.0 + TAU * float(i) / float(count) + _body_positions[moon["body_id"]] = ( + parent_pos + Vector2(cos(angle), sin(angle)) * MOON_ORBIT_RADIUS + ) # Place stations near their parent body (offset right + slightly up) for s: Dictionary in _orbital_stations: diff --git a/client/ui/implant/atlas_viewer.gd b/client/ui/implant/atlas_viewer.gd index 25e958e5b..f19d3f0a6 100644 --- a/client/ui/implant/atlas_viewer.gd +++ b/client/ui/implant/atlas_viewer.gd @@ -177,7 +177,13 @@ func get_markers() -> Dictionary: func _load_heightmap() -> void: + # Reset to sentinel defaults so a body with no heightmap (or that fails to + # load) doesn't inherit the previous body's dimensions — otherwise + # grid_to_canvas would project markers using the prior texture size + # (review #2). _heightmap_texture = null + _tex_w = 1024.0 + _tex_h = 512.0 var ref: Variant = _body.get("terrain_reference") if ref == null or str(ref).is_empty(): return @@ -196,6 +202,8 @@ func _load_heightmap() -> void: func _load_markers() -> void: _markers = {} + # Reset grid dims alongside _tex_* in _load_heightmap so we start from a + # known baseline regardless of which body ran previously. _grid_w = _tex_w _grid_h = _tex_h From f8b81e1fe79cf4704983effa78e8f9f94902d85f Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 15 Apr 2026 08:59:21 +0200 Subject: [PATCH 6/8] =?UTF-8?q?refactor(ui):=20atlas=20review=20warnings?= =?UTF-8?q?=20=E2=80=94=20headers,=20public=20API,=20KEY=5FN,=20overlay=20?= =?UTF-8?q?source=20of=20truth=20(#128)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 4. AtlasPanel and AtlasViewer now compose their title + hint from an ImplantHeader child rather than hand-rolling them via draw_string, so the D-169 "theme swap changes the implant hardware appearance" invariant holds end-to-end. _refresh_screen_header() drives content per level and on system navigation. 5. AtlasViewer exposes city_canvas_pos(), get_hovered_city(), get_selected_city(), and get_overlay_defs() as public API — the marker overlay no longer reaches into underscore-prefixed state, which is especially important because viewer is an untyped var in the overlay. 6. KEY_N now consumes unconditionally while the viewer is visible, and main.gd's global economics-monitor toggle is gated on !HudGroups.is_app_active("implant/map/atlas"). Previously pressing N without a selected city fell through and closed the fullscreen atlas as a side effect. 7. OVERLAY_DEFS lives in AtlasViewer as the single source of truth. AtlasOverlayBar reads the list via viewer.get_overlay_defs(), and AtlasViewer derives _overlay_visibility / _overlay_locked from the same table at _ready() — no more hand-maintained parallel lists, so the bar and the guard in set_overlay_visible can't drift. 8. AtlasOverlayBar drops `class_name`: it now loads via load("res://ui/implant/atlas_overlay_bar.gd") from AtlasViewer, the same pattern AtlasPanel uses for AtlasViewer. _init(viewer_ref = null) keeps the required-arg footgun off the editor's introspection path. 9. `star-map-data` make target added to regenerate client/data/star_map_data.json from systems.db + wiki, and `check-star-map` wired into pre-pr-validate + pre-pr-client so any commit that touches the generator (or any downstream systems.db change like server #839) fails pre-pr until the JSON is regenerated. The terrain_reference data-availability dependency is no longer tribal knowledge. Also addresses review #15 (push_warning on unknown overlay id in set_overlay_visible) and #16 (disabled always-on buttons drop handler churn) as part of the same refactor. --- Makefile | 16 ++- client/scripts/main.gd | 6 +- client/ui/implant/atlas_marker_overlay.gd | 16 +-- client/ui/implant/atlas_overlay_bar.gd | 71 ++++--------- client/ui/implant/atlas_panel.gd | 79 +++++++++----- client/ui/implant/atlas_viewer.gd | 122 +++++++++++++++------- 6 files changed, 181 insertions(+), 129 deletions(-) diff --git a/Makefile b/Makefile index c88251275..ec7003daa 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ GODOT := $(shell command -v godot4 2>/dev/null || command -v godot 2>/dev/null) pre-pr pre-pr-lint pre-pr-build pre-pr-test pre-pr-validate pre-pr-fixtures \ pre-pr-server pre-pr-client pre-pr-content \ fixtures-client fixtures-gauntlet golden-diff golden-update \ - checklist-validate checklist-generate check-star-map \ + checklist-validate checklist-generate check-star-map star-map-data \ build-sr-voice run-sr-voice test-voice-mock test-voice-real \ perf-baseline debug-schedule \ test-ipc-fixtures test-ipc-protocol test-ipc-integration test-ipc-benchmark \ @@ -53,6 +53,8 @@ help: @echo " make validate-content Validate content YAML against schemas" @echo " make check-fact-ids Check fact_id references against knowledge catalogs" @echo " make atlas-verify Verify atlas proposal JSONs (all in docs/atlas/proposals/)" + @echo " make star-map-data Regenerate client/data/star_map_data.json from systems.db + wiki" + @echo " make check-star-map Assert star_map_data.json is up to date (part of pre-pr-client)" @echo " make economy-db Import economics data into systems.db (TOML/JSON → SQLite)" @echo " make fixtures-client Generate GDScript->Rust cross-encoder fixtures (#475)" @echo " make golden-diff Show diff if golden file output has changed" @@ -260,7 +262,7 @@ pre-pr-build: build-server build-client pre-pr-test: test-server test-client @echo "--- Tests: PASS ---" -pre-pr-validate: validate-content check-fact-ids +pre-pr-validate: validate-content check-fact-ids check-star-map @echo "--- Content validation: PASS ---" pre-pr-fixtures: @@ -302,7 +304,7 @@ pre-pr-fixtures: pre-pr-server: lint-server build-server test-server pre-pr-fixtures audit @echo "=== Server pre-PR: PASSED ===" -pre-pr-client: lint-client build-client test-client +pre-pr-client: lint-client build-client test-client check-star-map @echo "=== Client pre-PR: PASSED ===" pre-pr-content: validate-content check-fact-ids checklist-validate atlas-verify @@ -375,6 +377,14 @@ checklist-generate: check-star-map: @python3 tooling/generate-star-map-data.py --check +# Regenerate client/data/star_map_data.json from systems.db + wiki. Depends on +# nothing — call this after any systems.db change (e.g. the server atlas +# pipeline populating terrain_reference in #839) so the atlas viewer picks up +# the new fields. pre-pr-client / pre-pr-validate assert staleness via +# check-star-map and will fail if this step is skipped. +star-map-data: + @python3 tooling/generate-star-map-data.py + perf-baseline: @tooling/perf-baseline diff --git a/client/scripts/main.gd b/client/scripts/main.gd index ab818403a..0db82afab 100644 --- a/client/scripts/main.gd +++ b/client/scripts/main.gd @@ -185,8 +185,10 @@ func _unhandled_key_input(event: InputEvent) -> void: if atlas_panel: atlas_panel.toggle_visible() elif event is InputEventKey and event.keycode == KEY_N: - # #824: N — toggle Economics Monitor implant panel (E is bound to interact) - if economics_panel: + # #824: N — toggle Economics Monitor implant panel (E is bound to interact). + # Gated on the atlas being inactive so the viewer's N → city-economics + # cross-link isn't shadowed by this global toggle (review #6). + if economics_panel and not HudGroups.is_app_active("implant/map/atlas"): economics_panel.toggle_visible() elif event is InputEventKey and event.keycode == KEY_BRACKETLEFT: # #824: [ — cycle economics panel system selector backward diff --git a/client/ui/implant/atlas_marker_overlay.gd b/client/ui/implant/atlas_marker_overlay.gd index d5d46b195..d5a8bbc4f 100644 --- a/client/ui/implant/atlas_marker_overlay.gd +++ b/client/ui/implant/atlas_marker_overlay.gd @@ -163,7 +163,7 @@ func _draw_gate_markers(markers: Dictionary) -> void: for c: Dictionary in markers.get("cities", []): if not bool(c.get("gate_terminal", false)): continue - var pos: Vector2 = viewer._city_canvas_pos(c) + var pos: Vector2 = viewer.city_canvas_pos(c) draw_arc(pos, 9.0, 0.0, TAU, 18, COLOR_GATE, 1.2, true) @@ -172,10 +172,10 @@ func _draw_cities(markers: Dictionary) -> void: if cities.is_empty(): return var font := ThemeDB.fallback_font - var hovered: Dictionary = viewer._hovered_city - var selected: Dictionary = viewer._selected_city + var hovered: Dictionary = viewer.get_hovered_city() + var selected: Dictionary = viewer.get_selected_city() for c: Dictionary in cities: - var pos: Vector2 = viewer._city_canvas_pos(c) + var pos: Vector2 = viewer.city_canvas_pos(c) var tier: int = int(c.get("population_tier", 1)) var r: float = 2.5 + float(tier) * 0.8 var col: Color = COLOR_CITY @@ -199,7 +199,7 @@ func _draw_cities(markers: Dictionary) -> void: func _draw_population_density(markers: Dictionary) -> void: # Placeholder: soft blobs at city positions scaled by population_tier for c: Dictionary in markers.get("cities", []): - var pos: Vector2 = viewer._city_canvas_pos(c) + var pos: Vector2 = viewer.city_canvas_pos(c) var tier: int = int(c.get("population_tier", 1)) var r: float = 12.0 + float(tier) * 6.0 draw_circle(pos, r, COLOR_POP_HEAT) @@ -215,7 +215,7 @@ func _draw_production_zones(markers: Dictionary) -> void: var func_id: String = str(city.get("primary_function", "")).to_lower() if not PRODUCTION_FUNCTIONS.has(func_id): continue - var pos: Vector2 = viewer._city_canvas_pos(city) + var pos: Vector2 = viewer.city_canvas_pos(city) var tier: int = int(city.get("population_tier", 1)) var radius: float = 10.0 + float(tier) * 4.0 draw_circle(pos, radius, COLOR_PRODUCTION) @@ -229,7 +229,7 @@ func _draw_shadow_economy(markers: Dictionary) -> void: var commission: bool = bool(city.get("commission_presence", false)) if commission: continue - var pos: Vector2 = viewer._city_canvas_pos(city) + var pos: Vector2 = viewer.city_canvas_pos(city) var tier: int = int(city.get("population_tier", 1)) var radius: float = 18.0 + float(tier) * 6.0 draw_circle(pos, radius, COLOR_SHADOW) @@ -241,7 +241,7 @@ func _draw_corp_presence(markers: Dictionary) -> void: for city: Dictionary in markers.get("cities", []): if not bool(city.get("commission_presence", false)): continue - var pos: Vector2 = viewer._city_canvas_pos(city) + var pos: Vector2 = viewer.city_canvas_pos(city) draw_rect(Rect2(pos - Vector2(3, 3), Vector2(6, 6)), COLOR_CORP) diff --git a/client/ui/implant/atlas_overlay_bar.gd b/client/ui/implant/atlas_overlay_bar.gd index 50bce34df..01f97534e 100644 --- a/client/ui/implant/atlas_overlay_bar.gd +++ b/client/ui/implant/atlas_overlay_bar.gd @@ -1,45 +1,17 @@ -class_name AtlasOverlayBar extends HBoxContainer ## Overlay toggle bar for #835 AtlasViewer — nine MVP overlays plus two locked ## layers (#836, D-191 §7, D-181 signal visibility ladder). ## -## Layout: -## [ALWAYS-ON] terrain · infrastructure · named · gate · political -## [TOGGLEABLE] pop density · production · shadow · corp presence -## [LOCKED] stockpile weeks · production vs baseline +## This script has no `class_name` on purpose: the owner (AtlasViewer) needs to +## pass the viewer reference to _init() and a `class_name` + required-arg +## _init() combo is a Godot editor footgun (review #8). Instance it via +## load("res://ui/implant/atlas_overlay_bar.gd").new(self) like AtlasViewer +## itself is instanced from AtlasPanel. ## -## Always-on buttons are visible but non-interactive (they render as pinned). -## Toggleable buttons reflect viewer visibility state and flip on click. -## Locked buttons are disabled, greyed, and carry a tooltip describing the -## unlock requirement from D-181 — they are not removed from the bar so the -## player can see that richer data exists and is gated. - -const OVERLAY_DEFS: Array = [ - # id, label, group ("always" | "toggle" | "locked"), tooltip - {"id": "terrain", "label": "TER", "group": "always", - "tooltip": "Terrain — base heightmap. Always visible."}, - {"id": "infrastructure", "label": "INF", "group": "always", - "tooltip": "Infrastructure — roads + rail. Always visible."}, - {"id": "named_features", "label": "NAM", "group": "always", - "tooltip": "Named features — rivers, oceans, ranges. Always visible."}, - {"id": "gate_markers", "label": "GAT", "group": "always", - "tooltip": "Gate + spaceport markers. Always visible."}, - {"id": "political_zones", "label": "POL", "group": "always", - "tooltip": "Political zones — currency-zone bands. Always visible."}, - {"id": "population_density", "label": "POP", "group": "toggle", - "tooltip": "Population density (D-181 public)."}, - {"id": "production_zones", "label": "PRD", "group": "toggle", - "tooltip": "Production zones (D-181 observable — requires presence)."}, - {"id": "shadow_economy", "label": "SHD", "group": "toggle", - "tooltip": "Shadow economy zones (D-181 observable)."}, - {"id": "corp_presence", "label": "CRP", "group": "toggle", - "tooltip": "Corporate presence — Tier 1 only (D-181 observable)."}, - {"id": "stockpile_weeks", "label": "STK", "group": "locked", - "tooltip": "Stockpile weeks — LOCKED. Needs corporate contact (D-181 semi-private)."}, - {"id": "production_vs_baseline", "label": "BSL", "group": "locked", - "tooltip": "Production vs baseline — LOCKED. Needs insider access (D-181 private)."}, -] +## Layout: [ALWAYS-ON] [TOGGLEABLE] [LOCKED]. Each row in viewer.get_overlay_defs() +## produces exactly one button, so adding or retiring an overlay is a one-file +## change — the bar and marker renderer stay in lockstep (review #7). const COLOR_PINNED: Color = Color("#c8d0e0") const COLOR_ACTIVE: Color = Color("#f0d060") @@ -50,14 +22,16 @@ var _viewer = null var _buttons: Dictionary = {} # overlay_id -> Button -func _init(viewer_ref) -> void: +func _init(viewer_ref = null) -> void: _viewer = viewer_ref add_theme_constant_override("separation", 4) func _ready() -> void: mouse_filter = Control.MOUSE_FILTER_STOP - for def: Dictionary in OVERLAY_DEFS: + if _viewer == null: + return + for def: Dictionary in _viewer.get_overlay_defs(): var b: Button = Button.new() b.text = def["label"] b.tooltip_text = def["tooltip"] @@ -68,17 +42,14 @@ func _ready() -> void: match def["group"]: "always": - b.disabled = false + # Disabled + pressed = visually pinned, no click handler churn + # (review #16). Theme font_disabled_color is overridden so the + # button still reads as "on" rather than greyed-out. + b.disabled = true b.button_pressed = true - b.add_theme_color_override("font_color", COLOR_PINNED) - b.add_theme_color_override("font_hover_color", COLOR_PINNED) - b.add_theme_color_override("font_pressed_color", COLOR_PINNED) b.add_theme_color_override("font_disabled_color", COLOR_PINNED) - # Swallow clicks so the player can't accidentally turn terrain off, - # but keep it visible + tooltipped. - b.pressed.connect(_on_always_pressed.bind(def["id"])) "toggle": - b.button_pressed = _viewer.is_overlay_visible(def["id"]) if _viewer else false + b.button_pressed = _viewer.is_overlay_visible(def["id"]) b.add_theme_color_override("font_color", COLOR_INACTIVE) b.add_theme_color_override("font_pressed_color", COLOR_ACTIVE) b.toggled.connect(_on_toggle_changed.bind(def["id"])) @@ -90,12 +61,6 @@ func _ready() -> void: _buttons[def["id"]] = b -func _on_always_pressed(overlay_id: String) -> void: - # Always-on overlays stay on. Keep the button visually pressed. - if _buttons.has(overlay_id): - _buttons[overlay_id].button_pressed = true - - func _on_toggle_changed(pressed: bool, overlay_id: String) -> void: if _viewer: _viewer.set_overlay_visible(overlay_id, pressed) @@ -104,7 +69,7 @@ func _on_toggle_changed(pressed: bool, overlay_id: String) -> void: func sync_from_viewer() -> void: if _viewer == null: return - for def: Dictionary in OVERLAY_DEFS: + for def: Dictionary in _viewer.get_overlay_defs(): if def["group"] != "toggle": continue var b: Button = _buttons.get(def["id"]) diff --git a/client/ui/implant/atlas_panel.gd b/client/ui/implant/atlas_panel.gd index eaff87e13..5dfa901bd 100644 --- a/client/ui/implant/atlas_panel.gd +++ b/client/ui/implant/atlas_panel.gd @@ -69,6 +69,7 @@ var _picker_panel = null # ImplantPanel — level 0 system selector var _picker_nav_row = null # ImplantDataRow — nav hint text, updated on navigate var _body_panel = null # ImplantPanel — level 2 body entry var _station_panel = null # ImplantPanel — station mini, shown in level 1 on click +var _screen_header: ImplantHeader = null # D-169-composed title/hint row (top-left) var _viewer = null # AtlasViewer — level 3 heightmap viewer (#835) @@ -88,6 +89,7 @@ func _ready() -> void: _implant_theme = load("res://ui/implant/default_implant.tres") _load_system_list() + _build_screen_header() _build_picker_panel() _build_body_panel() _build_station_panel() @@ -289,22 +291,10 @@ func _draw() -> void: func _draw_picker_bg() -> void: draw_rect(Rect2(Vector2.ZERO, get_rect().size), COLOR_BG) - _draw_header("ATLAS — SYSTEM SELECTION", "select a system · ◄ ► cycle · enter open orbital view · esc close") func _draw_body_bg() -> void: draw_rect(Rect2(Vector2.ZERO, get_rect().size), COLOR_BG) - var sys: Dictionary = _current_system() - _draw_header( - "ATLAS — BODY ENTRY · " + sys.get("proper_name", sys.get("system_id", "—")).to_upper(), - "enter view atlas · esc back to orbital" - ) - - -func _draw_header(title: String, hint: String) -> void: - var font := get_theme_default_font() - draw_string(font, Vector2(16, 28), title, HORIZONTAL_ALIGNMENT_LEFT, -1, 14, COLOR_TEXT) - draw_string(font, Vector2(16, 44), hint, HORIZONTAL_ALIGNMENT_LEFT, -1, 9, COLOR_TEXT_DIM) func _draw_orbital() -> void: @@ -326,22 +316,53 @@ func _draw_orbital() -> void: # Body dots + labels _draw_bodies() - # Header - var sys: Dictionary = _current_system() - var sys_name: String = sys.get("proper_name", sys.get("system_id", "—")) - var star_type: String = sys.get("star_type", "") - var top_count: int = 0 - for b: Dictionary in _orbital_bodies: - if b.get("parent_body_id") == null: - top_count += 1 - var subtitle: String = "" - if not star_type.is_empty(): - subtitle = star_type + " · " - subtitle += "%d orbital bodies · %d stations" % [top_count, _orbital_stations.size()] - _draw_header( - "ATLAS — ORBITAL VIEW · " + sys_name.to_upper(), - subtitle + " · click body → atlas entry · esc back" - ) + +func _build_screen_header() -> void: + # D-169: the top-of-screen title / hint composes from ImplantHeader so the + # implant theme drives its fonts and semantic colors. Review #4 flagged the + # original draw_string() approach as a theme-swap invariant violation. + _screen_header = ImplantHeader.new() + _screen_header.position = Vector2(PANEL_MARGIN, 16.0) + _screen_header.mouse_filter = Control.MOUSE_FILTER_IGNORE + add_child(_screen_header) + if _implant_theme: + _screen_header.apply_implant_theme(_implant_theme) + + +func _refresh_screen_header() -> void: + if _screen_header == null: + return + var title: String = "" + var hint: String = "" + match _level: + Level.SYSTEM_PICKER: + title = "ATLAS — SYSTEM SELECTION" + hint = "select a system · ◄ ► cycle · enter open orbital view · esc close" + Level.ORBITAL_DIAGRAM: + var sys: Dictionary = _current_system() + var sys_name: String = str(sys.get("proper_name", sys.get("system_id", "—"))) + title = "ATLAS — ORBITAL VIEW · " + sys_name.to_upper() + var star_type: String = str(sys.get("star_type", "")) + var top_count: int = 0 + for b: Dictionary in _orbital_bodies: + if b.get("parent_body_id") == null: + top_count += 1 + var subtitle: String = "" + if not star_type.is_empty(): + subtitle = star_type + " · " + subtitle += "%d orbital bodies · %d stations" % [top_count, _orbital_stations.size()] + hint = subtitle + " · click body → atlas entry · esc back" + Level.BODY_ENTRY: + var sys2: Dictionary = _current_system() + var sys2_name: String = str(sys2.get("proper_name", sys2.get("system_id", "—"))) + title = "ATLAS — BODY ENTRY · " + sys2_name.to_upper() + hint = "enter view atlas · esc back to orbital" + Level.HEIGHTMAP_VIEWER: + # Viewer owns its own header while active. + title = "" + hint = "" + _screen_header.set_content(title, hint) + _screen_header.visible = (_level != Level.HEIGHTMAP_VIEWER) func _draw_orbit_rings(center: Vector2) -> void: @@ -482,6 +503,7 @@ func _navigate_system(delta: int) -> void: return _selected_idx = wrapi(_selected_idx + delta, 0, _systems.size()) _rebuild_picker_panel() + _refresh_screen_header() func _handle_orbital_click(pos: Vector2) -> void: @@ -561,6 +583,7 @@ func _show_level(level: Level) -> void: if _viewer: _viewer.visible = (level == Level.HEIGHTMAP_VIEWER) + _refresh_screen_header() queue_redraw() diff --git a/client/ui/implant/atlas_viewer.gd b/client/ui/implant/atlas_viewer.gd index f19d3f0a6..3eccf1d0d 100644 --- a/client/ui/implant/atlas_viewer.gd +++ b/client/ui/implant/atlas_viewer.gd @@ -50,6 +50,36 @@ const COLOR_TEXT: Color = Color("#c8d0e0") const COLOR_TEXT_DIM: Color = Color("#667788") const COLOR_EMPTY_NOTICE: Color = Color("#445566") +# ── Overlay definitions (single source of truth, review #7) ───────────────── +## Overlay catalogue consumed by both AtlasMarkerOverlay (renders) and +## AtlasOverlayBar (exposes as toggle buttons). Groups map to the D-181 signal +## visibility ladder: always = public, toggle = observable, locked = semi- +## private / private. Keep this table in sync with D-191 §7. +const OVERLAY_DEFS: Array = [ + {"id": "terrain", "label": "TER", "group": "always", + "tooltip": "Terrain — base heightmap. Always visible."}, + {"id": "infrastructure", "label": "INF", "group": "always", + "tooltip": "Infrastructure — roads + rail. Always visible."}, + {"id": "named_features", "label": "NAM", "group": "always", + "tooltip": "Named features — rivers, oceans, ranges. Always visible."}, + {"id": "gate_markers", "label": "GAT", "group": "always", + "tooltip": "Gate + spaceport markers. Always visible."}, + {"id": "political_zones", "label": "POL", "group": "always", + "tooltip": "Political zones — currency-zone bands. Always visible."}, + {"id": "population_density", "label": "POP", "group": "toggle", + "tooltip": "Population density (D-181 public)."}, + {"id": "production_zones", "label": "PRD", "group": "toggle", + "tooltip": "Production zones (D-181 observable — requires presence)."}, + {"id": "shadow_economy", "label": "SHD", "group": "toggle", + "tooltip": "Shadow economy zones (D-181 observable)."}, + {"id": "corp_presence", "label": "CRP", "group": "toggle", + "tooltip": "Corporate presence — Tier 1 only (D-181 observable)."}, + {"id": "stockpile_weeks", "label": "STK", "group": "locked", + "tooltip": "Stockpile weeks — LOCKED. Needs corporate contact (D-181 semi-private)."}, + {"id": "production_vs_baseline", "label": "BSL", "group": "locked", + "tooltip": "Production vs baseline — LOCKED. Needs insider access (D-181 private)."}, +] + # ── Context (set by AtlasPanel.show_body) ───────────────────────────────────── var _body: Dictionary = {} var _system: Dictionary = {} @@ -75,33 +105,19 @@ var _selected_city: Dictionary = {} var _hovered_city: Dictionary = {} # ── Overlay visibility (#836 plugs in here) ─────────────────────────────────── -## Map of overlay id → bool. Always-on overlays are true by default; deferred -## overlays are locked (see _overlay_locked). AtlasOverlayBar in #836 writes -## into this dict via set_overlay_visible(). -var _overlay_visibility: Dictionary = { - "terrain": true, - "infrastructure": true, - "named_features": true, - "gate_markers": true, - "political_zones": true, - "population_density": false, - "production_zones": false, - "shadow_economy": false, - "corp_presence": false, - "stockpile_weeks": false, - "production_vs_baseline": false, -} -var _overlay_locked: Dictionary = { - "stockpile_weeks": true, - "production_vs_baseline": true, -} +## Runtime state derived from OVERLAY_DEFS in _ready() — always-on overlays +## start true, toggleables false, locked entries are tracked separately and +## can't be flipped by set_overlay_visible(). +var _overlay_visibility: Dictionary = {} +var _overlay_locked: Dictionary = {} # ── Child nodes ─────────────────────────────────────────────────────────────── var _canvas: Node2D = null # transformed node holding heightmap + markers var _overlay_node: AtlasMarkerOverlay = null # draws on top of heightmap var _city_panel = null # ImplantPanel sidebar (city data) var _empty_notice = null # ImplantPanel shown when heightmap missing -var _overlay_bar: AtlasOverlayBar = null # #836 overlay toggle bar (top-right) +var _overlay_bar = null # #836 overlay toggle bar (no class_name, review #8) +var _screen_header: ImplantHeader = null # top-left title/hint (D-169 composition) func _ready() -> void: @@ -114,6 +130,12 @@ func _ready() -> void: _implant_theme = load("res://ui/implant/default_implant.tres") + for def: Dictionary in OVERLAY_DEFS: + var group: String = def["group"] + _overlay_visibility[def["id"]] = (group == "always") + if group == "locked": + _overlay_locked[def["id"]] = true + # Build transformed canvas that holds heightmap + marker overlay _canvas = Node2D.new() _canvas.name = "AtlasCanvas" @@ -124,6 +146,7 @@ func _ready() -> void: _overlay_node.viewer = self _canvas.add_child(_overlay_node) + _build_screen_header() _build_city_panel() _build_empty_notice() _build_overlay_bar() @@ -138,6 +161,7 @@ func show_body(body: Dictionary, system: Dictionary) -> void: _load_heightmap() _load_markers() _fit_to_view() + _refresh_screen_header() _city_panel.visible = false _empty_notice.visible = (_heightmap_texture == null) grab_focus() @@ -150,6 +174,7 @@ func set_overlay_visible(overlay_id: String, visible_state: bool) -> void: if _overlay_locked.get(overlay_id, false): return if not _overlay_visibility.has(overlay_id): + push_warning("AtlasViewer: unknown overlay id '%s'" % overlay_id) return _overlay_visibility[overlay_id] = visible_state _overlay_node.queue_redraw() @@ -171,6 +196,18 @@ func get_markers() -> Dictionary: return _markers +func get_hovered_city() -> Dictionary: + return _hovered_city + + +func get_selected_city() -> Dictionary: + return _selected_city + + +func get_overlay_defs() -> Array: + return OVERLAY_DEFS + + # ============================================================================= # Data loading # ============================================================================= @@ -300,20 +337,28 @@ func screen_to_canvas(screen_point: Vector2) -> Vector2: func _draw() -> void: draw_rect(Rect2(Vector2.ZERO, get_rect().size), COLOR_BG) - _draw_header() - if _heightmap_texture != null: - _canvas.position = _view_offset - _canvas.scale = Vector2(_view_zoom, _view_zoom) -func _draw_header() -> void: - var font := get_theme_default_font() +func _build_screen_header() -> void: + # D-169: compose the title + hint from ImplantHeader so the implant theme + # drives fonts/colors. Review #4 flagged the draw_string() approach as a + # theme-swap invariant violation. + _screen_header = ImplantHeader.new() + _screen_header.position = Vector2(PANEL_MARGIN, 16.0) + _screen_header.mouse_filter = Control.MOUSE_FILTER_IGNORE + add_child(_screen_header) + if _implant_theme: + _screen_header.apply_implant_theme(_implant_theme) + + +func _refresh_screen_header() -> void: + if _screen_header == null: + return var body_name: String = _dict_str(_body, "proper_name", _dict_str(_body, "body_id", "—")) var sys_name: String = _dict_str(_system, "proper_name", _dict_str(_system, "system_id", "—")) var title: String = "ATLAS — %s · %s" % [body_name.to_upper(), sys_name.to_upper()] - draw_string(font, Vector2(16, 28), title, HORIZONTAL_ALIGNMENT_LEFT, -1, 14, COLOR_TEXT) var hint: String = "drag pan · wheel zoom · r reset · click city data · esc back" - draw_string(font, Vector2(16, 44), hint, HORIZONTAL_ALIGNMENT_LEFT, -1, 9, COLOR_TEXT_DIM) + _screen_header.set_content(title, hint) ## Safely extract a string field from a dict, falling back when missing or null. @@ -400,7 +445,7 @@ func _find_city_at(screen_pos: Vector2) -> Dictionary: return {} var hit_radius: float = 12.0 for c: Dictionary in cities: - var canvas_pt: Vector2 = _city_canvas_pos(c) + var canvas_pt: Vector2 = city_canvas_pos(c) var screen_pt: Vector2 = canvas_to_screen(canvas_pt) if screen_pos.distance_to(screen_pt) <= hit_radius: return c @@ -408,8 +453,9 @@ func _find_city_at(screen_pos: Vector2) -> Dictionary: ## Extract canvas-space position for a city marker. Supports `pos: [x,y]`, -## `lat`/`lon` (equirectangular), and legacy `center: [row,col]`. -func _city_canvas_pos(city: Dictionary) -> Vector2: +## `lat`/`lon` (equirectangular), and legacy `center: [row,col]`. Public so +## AtlasMarkerOverlay doesn't need to reach into private state (review #5). +func city_canvas_pos(city: Dictionary) -> Vector2: if city.has("pos") and city["pos"] is Array and city["pos"].size() >= 2: return grid_to_canvas(Vector2(float(city["pos"][0]), float(city["pos"][1]))) if city.has("lat") and city.has("lon"): @@ -499,11 +545,16 @@ func _unhandled_key_input(event: InputEvent) -> void: if not (event is InputEventKey) or not event.pressed or event.is_echo(): return var ek := event as InputEventKey - if ek.keycode == KEY_N and _selected_city.size() > 0: + if ek.keycode != KEY_N: + return + # Always consume KEY_N while the viewer is visible — otherwise it would + # fall through to main.gd's global economics monitor toggle and close the + # fullscreen atlas as a side effect (review #6). + get_viewport().set_input_as_handled() + if _selected_city.size() > 0: var sys_id: String = _system.get("system_id", "") if not sys_id.is_empty(): economics_link_requested.emit(sys_id) - get_viewport().set_input_as_handled() # ============================================================================= @@ -544,7 +595,8 @@ func _position_empty_notice() -> void: func _build_overlay_bar() -> void: - _overlay_bar = AtlasOverlayBar.new(self) + var BarScript := load("res://ui/implant/atlas_overlay_bar.gd") + _overlay_bar = BarScript.new(self) _overlay_bar.name = "OverlayBar" add_child(_overlay_bar) _position_overlay_bar() From 489aec48d80be4434a4213391b35a000118745bb Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 15 Apr 2026 09:02:27 +0200 Subject: [PATCH 7/8] =?UTF-8?q?style(ui):=20atlas=20review=20polish=20?= =?UTF-8?q?=E2=80=94=20guarded=20ids,=20stable=20keys,=20dead-code=20clean?= =?UTF-8?q?up=20(#128)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 10. Dropped the "no body data" fallback string in the picker panel — the generator always writes entry["bodies"], so the fallback was dead. Use the "—" convention the rest of the panel already follows. 12. Removed the autoload parse-order comment from AtlasPanel (it is scene-instanced, not an autoload, so the rule does not apply), and collapsed _build_heightmap_viewer to a direct AtlasViewer.new() — mirroring the rest of the file rather than dancing around a risk that is not real for this class. 13. AtlasMarkerOverlay._draw_cities now compares hover/selection by a stable _city_key() (name → city_id → pos → hash) instead of Dictionary.==, which was O(fields) per city per redraw. Preps the renderer for much larger city counts without a rewrite. 14. Orbital click/draw handlers guard against missing body_id / station_id by reading through str(dict.get(..., "")) and skipping empty ids. Matches the defensive style already used for parent_body_id and keeps a NULL id from crashing _draw_bodies / _handle_orbital_click. --- client/ui/implant/atlas_marker_overlay.gd | 46 +++++++++++++++++++---- client/ui/implant/atlas_panel.gd | 41 +++++++++++--------- 2 files changed, 62 insertions(+), 25 deletions(-) diff --git a/client/ui/implant/atlas_marker_overlay.gd b/client/ui/implant/atlas_marker_overlay.gd index d5a8bbc4f..b3bfa2f5d 100644 --- a/client/ui/implant/atlas_marker_overlay.gd +++ b/client/ui/implant/atlas_marker_overlay.gd @@ -172,23 +172,55 @@ func _draw_cities(markers: Dictionary) -> void: if cities.is_empty(): return var font := ThemeDB.fallback_font - var hovered: Dictionary = viewer.get_hovered_city() - var selected: Dictionary = viewer.get_selected_city() + # Compare by stable key, not Dictionary.== — deep equality was O(fields) + # per city per redraw (review #13). `name` is unique per body in the + # D-191 §8 schema; fall back to `body_id` or the hash of the dict for + # un-named markers so the comparison still works in transitional data. + var hovered_key: String = _city_key(viewer.get_hovered_city()) + var selected_key: String = _city_key(viewer.get_selected_city()) for c: Dictionary in cities: var pos: Vector2 = viewer.city_canvas_pos(c) var tier: int = int(c.get("population_tier", 1)) var r: float = 2.5 + float(tier) * 0.8 + var key: String = _city_key(c) + var is_selected: bool = not selected_key.is_empty() and key == selected_key + var is_hovered: bool = not hovered_key.is_empty() and key == hovered_key var col: Color = COLOR_CITY - if c == selected: + if is_selected: col = COLOR_CITY_SELECTED - elif c == hovered: + elif is_hovered: col = COLOR_CITY_HOVER draw_circle(pos, r + 1.0, Color(0.0, 0.0, 0.0, 0.55)) draw_circle(pos, r, col) var name_str: String = c.get("name", "") if c.get("name") else "" - if not name_str.is_empty() and (tier >= 3 or c == hovered or c == selected): - var lcolor: Color = COLOR_CITY_HOVER if c == hovered or c == selected else Color(0.88, 0.90, 0.96, 0.85) - draw_string(font, pos + Vector2(r + 2.0, r * 0.4), name_str, HORIZONTAL_ALIGNMENT_LEFT, -1, 8, lcolor) + if not name_str.is_empty() and (tier >= 3 or is_hovered or is_selected): + var lcolor: Color = ( + COLOR_CITY_HOVER if is_hovered or is_selected + else Color(0.88, 0.90, 0.96, 0.85) + ) + draw_string( + font, pos + Vector2(r + 2.0, r * 0.4), name_str, + HORIZONTAL_ALIGNMENT_LEFT, -1, 8, lcolor + ) + + +static func _city_key(city: Dictionary) -> String: + if city.is_empty(): + return "" + var name_val: Variant = city.get("name") + if name_val != null and not str(name_val).is_empty(): + return "n:" + str(name_val) + var id_val: Variant = city.get("city_id") + if id_val != null and not str(id_val).is_empty(): + return "i:" + str(id_val) + # Last resort: positional key from pos/lat/lon so two unnamed cities at + # different coordinates still compare unequal. + var pos: Variant = city.get("pos") + if pos != null: + return "p:" + str(pos) + if city.has("lat") and city.has("lon"): + return "ll:%s:%s" % [city["lat"], city["lon"]] + return "h:%d" % city.hash() # ============================================================================= diff --git a/client/ui/implant/atlas_panel.gd b/client/ui/implant/atlas_panel.gd index 5dfa901bd..546ae5b7a 100644 --- a/client/ui/implant/atlas_panel.gd +++ b/client/ui/implant/atlas_panel.gd @@ -85,7 +85,6 @@ func _ready() -> void: HudGroups.register(self, APP_PATH) HudGroups.app_changed.connect(_on_app_changed) - # Autoload parse-order rule: load via load() in method body, not _ready() cache _implant_theme = load("res://ui/implant/default_implant.tres") _load_system_list() @@ -225,12 +224,15 @@ func _compute_body_positions() -> void: var count: int = ring_bodies.size() for i: int in range(count): var b: Dictionary = ring_bodies[i] + var bid: String = str(b.get("body_id", "")) + if bid.is_empty(): + continue var angle: float if count == 1: angle = -PI / 2.0 # top position (12 o'clock) else: angle = -PI / 2.0 + TAU * float(i) / float(count) - _body_positions[b["body_id"]] = center + Vector2(cos(angle), sin(angle)) * ring_r + _body_positions[bid] = center + Vector2(cos(angle), sin(angle)) * ring_r # Place moons near their parent body. Moons per parent count drives the # angular spacing — a hard-coded divisor made the 5th+ moon overlap moon 1 @@ -256,20 +258,26 @@ func _compute_body_positions() -> void: var count: int = siblings.size() for i: int in range(count): var moon: Dictionary = siblings[i] + var moon_id: String = str(moon.get("body_id", "")) + if moon_id.is_empty(): + continue var angle: float = -PI / 2.0 + TAU * float(i) / float(count) - _body_positions[moon["body_id"]] = ( + _body_positions[moon_id] = ( parent_pos + Vector2(cos(angle), sin(angle)) * MOON_ORBIT_RADIUS ) # Place stations near their parent body (offset right + slightly up) for s: Dictionary in _orbital_stations: + var station_id: String = str(s.get("station_id", "")) + if station_id.is_empty(): + continue var parent_id: Variant = s.get("orbits_body_id") - var parent_pos: Vector2 + var station_parent_pos: Vector2 if parent_id != null and _body_positions.has(str(parent_id)): - parent_pos = _body_positions[str(parent_id)] + station_parent_pos = _body_positions[str(parent_id)] else: - parent_pos = center # fallback to star position - _station_positions[s["station_id"]] = parent_pos + Vector2(20.0, -10.0) + station_parent_pos = center # fallback to star position + _station_positions[station_id] = station_parent_pos + Vector2(20.0, -10.0) # ============================================================================= @@ -382,8 +390,8 @@ func _draw_orbit_rings(center: Vector2) -> void: func _draw_bodies() -> void: var font := get_theme_default_font() for b: Dictionary in _orbital_bodies: - var bid: String = b["body_id"] - if not _body_positions.has(bid): + var bid: String = str(b.get("body_id", "")) + if bid.is_empty() or not _body_positions.has(bid): continue var pos: Vector2 = _body_positions[bid] var body_type: String = b.get("body_type", "") @@ -430,8 +438,8 @@ func _draw_bodies() -> void: func _draw_stations() -> void: var font := get_theme_default_font() for s: Dictionary in _orbital_stations: - var sid: String = s["station_id"] - if not _station_positions.has(sid): + var sid: String = str(s.get("station_id", "")) + if sid.is_empty() or not _station_positions.has(sid): continue var pos: Vector2 = _station_positions[sid] var half: float = STATION_SIZE / 2.0 @@ -511,7 +519,7 @@ func _handle_orbital_click(pos: Vector2) -> void: var bid: String = _find_nearest_body(pos) if not bid.is_empty(): for b: Dictionary in _orbital_bodies: - if b["body_id"] == bid: + if str(b.get("body_id", "")) == bid: _enter_body_entry(b) return @@ -519,7 +527,7 @@ func _handle_orbital_click(pos: Vector2) -> void: var sid: String = _find_nearest_station(pos) if not sid.is_empty(): for s: Dictionary in _orbital_stations: - if s["station_id"] == sid: + if str(s.get("station_id", "")) == sid: _selected_station = s _rebuild_station_panel() if _station_panel: @@ -627,7 +635,7 @@ func _rebuild_picker_panel() -> void: _picker_panel.add_component(ImplantDataRow.new(sector + " CORRIDOR")) if not czone.is_empty(): _picker_panel.add_component(ImplantDataRow.new("currency " + czone)) - _picker_panel.add_component(ImplantDataRow.new(sys.get("bodies", "no body data"))) + _picker_panel.add_component(ImplantDataRow.new(sys.get("bodies", "—"))) _picker_panel.add_component(ImplantDataRow.new("pop " + sys.get("population", "—"))) _picker_panel.add_component(ImplantSeparator.new()) @@ -701,10 +709,7 @@ func _build_station_panel() -> void: func _build_heightmap_viewer() -> void: - # #835: Regional viewer instanced at runtime (parse-order rule — AtlasMarkerOverlay - # class_name is resolved by the time this _ready() runs since AtlasPanel is not an autoload). - var ViewerScript := load("res://ui/implant/atlas_viewer.gd") - _viewer = ViewerScript.new() + _viewer = AtlasViewer.new() _viewer.name = "AtlasViewer" _viewer.visible = false add_child(_viewer) From 22c17f1f159f89c9c58b6b71931dda829385fec5 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Wed, 15 Apr 2026 09:06:04 +0200 Subject: [PATCH 8/8] style(ui): gdformat atlas implant files --- client/ui/implant/atlas_marker_overlay.gd | 45 ++++++--- client/ui/implant/atlas_panel.gd | 57 +++++++---- client/ui/implant/atlas_viewer.gd | 116 +++++++++++++++------- 3 files changed, 146 insertions(+), 72 deletions(-) diff --git a/client/ui/implant/atlas_marker_overlay.gd b/client/ui/implant/atlas_marker_overlay.gd index b3bfa2f5d..399540be2 100644 --- a/client/ui/implant/atlas_marker_overlay.gd +++ b/client/ui/implant/atlas_marker_overlay.gd @@ -36,8 +36,15 @@ const RAIL_DASH_ON: float = 6.0 const RAIL_DASH_OFF: float = 4.0 const PRODUCTION_FUNCTIONS: Array = [ - "industrial", "industry", "manufacturing", "extraction", "mining", - "refinery", "foundry", "shipyard", "production", + "industrial", + "industry", + "manufacturing", + "extraction", + "mining", + "refinery", + "foundry", + "shipyard", + "production", ] var viewer = null # AtlasViewer (untyped to avoid cyclic ref) @@ -56,7 +63,9 @@ func _draw() -> void: # Terrain (heightmap) — always first if viewer.is_overlay_visible("terrain"): - draw_texture_rect(tex, Rect2(Vector2.ZERO, Vector2(tex_w, tex_h)), false, COLOR_HEIGHTMAP_TINT) + draw_texture_rect( + tex, Rect2(Vector2.ZERO, Vector2(tex_w, tex_h)), false, COLOR_HEIGHTMAP_TINT + ) else: draw_rect(Rect2(Vector2.ZERO, Vector2(tex_w, tex_h)), Color(0.05, 0.07, 0.10, 1.0)) @@ -128,7 +137,9 @@ func _draw_named_features(markers: Dictionary) -> void: if label.is_empty(): continue var p: Vector2 = _center_to_canvas(ocean.get("center")) - draw_string(font, p, label.to_upper(), HORIZONTAL_ALIGNMENT_CENTER, -1, fs, COLOR_FEATURE_LABEL) + draw_string( + font, p, label.to_upper(), HORIZONTAL_ALIGNMENT_CENTER, -1, fs, COLOR_FEATURE_LABEL + ) for mtn: Dictionary in markers.get("mountain_ranges", []): var label: String = mtn.get("name", "") if mtn.get("name") else "" @@ -195,12 +206,16 @@ func _draw_cities(markers: Dictionary) -> void: var name_str: String = c.get("name", "") if c.get("name") else "" if not name_str.is_empty() and (tier >= 3 or is_hovered or is_selected): var lcolor: Color = ( - COLOR_CITY_HOVER if is_hovered or is_selected - else Color(0.88, 0.90, 0.96, 0.85) + COLOR_CITY_HOVER if is_hovered or is_selected else Color(0.88, 0.90, 0.96, 0.85) ) draw_string( - font, pos + Vector2(r + 2.0, r * 0.4), name_str, - HORIZONTAL_ALIGNMENT_LEFT, -1, 8, lcolor + font, + pos + Vector2(r + 2.0, r * 0.4), + name_str, + HORIZONTAL_ALIGNMENT_LEFT, + -1, + 8, + lcolor ) @@ -304,12 +319,14 @@ func _poi_pos(poi: Dictionary) -> Vector2: func _draw_diamond(pos: Vector2, size: float, color: Color) -> void: - var pts: PackedVector2Array = PackedVector2Array([ - pos + Vector2(0, -size), - pos + Vector2(size, 0), - pos + Vector2(0, size), - pos + Vector2(-size, 0), - ]) + var pts: PackedVector2Array = PackedVector2Array( + [ + pos + Vector2(0, -size), + pos + Vector2(size, 0), + pos + Vector2(0, size), + pos + Vector2(-size, 0), + ] + ) draw_colored_polygon(pts, color) diff --git a/client/ui/implant/atlas_panel.gd b/client/ui/implant/atlas_panel.gd index 546ae5b7a..44a148e3d 100644 --- a/client/ui/implant/atlas_panel.gd +++ b/client/ui/implant/atlas_panel.gd @@ -27,12 +27,12 @@ const PANEL_MARGIN: float = 16.0 # ── Orbital diagram geometry ────────────────────────────────────────────────── const ORBITAL_CENTER_FRACTION := Vector2(0.5, 0.55) const STAR_RADIUS: float = 12.0 -const ORBITAL_RING_BASE: float = 65.0 # innermost planet ring radius (px) -const ORBITAL_RING_STEP: float = 58.0 # radial gap between orbit rings -const MOON_ORBIT_RADIUS: float = 24.0 # sub-orbit radius for moons around parent -const STATION_SIZE: float = 6.0 # station marker half-size -const BODY_HIT_RADIUS: float = 16.0 # click/hover detection radius -const LABEL_OFFSET: float = 11.0 # px below body dot for label +const ORBITAL_RING_BASE: float = 65.0 # innermost planet ring radius (px) +const ORBITAL_RING_STEP: float = 58.0 # radial gap between orbit rings +const MOON_ORBIT_RADIUS: float = 24.0 # sub-orbit radius for moons around parent +const STATION_SIZE: float = 6.0 # station marker half-size +const BODY_HIT_RADIUS: float = 16.0 # click/hover detection radius +const LABEL_OFFSET: float = 11.0 # px below body dot for label # ── Colors ──────────────────────────────────────────────────────────────────── const COLOR_BG: Color = Color("#0d1117") @@ -49,28 +49,28 @@ const COLOR_TEXT_DIM: Color = Color("#667788") # ── Navigation state ────────────────────────────────────────────────────────── var _level: Level = Level.SYSTEM_PICKER -var _systems: Array = [] # Array[Dictionary] from star_map_data.json -var _selected_idx: int = 0 # index into _systems +var _systems: Array = [] # Array[Dictionary] from star_map_data.json +var _selected_idx: int = 0 # index into _systems var _selected_body: Dictionary = {} # body dict at Level.BODY_ENTRY # ── Orbital diagram runtime state ───────────────────────────────────────────── -var _orbital_bodies: Array = [] # orbit_bodies for current system +var _orbital_bodies: Array = [] # orbit_bodies for current system var _orbital_stations: Array = [] # stations for current system -var _body_positions: Dictionary = {} # body_id -> Vector2 -var _station_positions: Dictionary = {} # station_id -> Vector2 +var _body_positions: Dictionary = {} # body_id -> Vector2 +var _station_positions: Dictionary = {} # station_id -> Vector2 var _hovered_body: String = "" var _hovered_station: String = "" var _selected_station: Dictionary = {} # station clicked in orbital view var _dirty: bool = true # ── Visual components (D-169 ImplantPanel library) ──────────────────────────── -var _implant_theme = null # ImplantTheme — loaded at runtime (autoload parse-order rule) -var _picker_panel = null # ImplantPanel — level 0 system selector -var _picker_nav_row = null # ImplantDataRow — nav hint text, updated on navigate -var _body_panel = null # ImplantPanel — level 2 body entry -var _station_panel = null # ImplantPanel — station mini, shown in level 1 on click +var _implant_theme = null # ImplantTheme — loaded at runtime (autoload parse-order rule) +var _picker_panel = null # ImplantPanel — level 0 system selector +var _picker_nav_row = null # ImplantDataRow — nav hint text, updated on navigate +var _body_panel = null # ImplantPanel — level 2 body entry +var _station_panel = null # ImplantPanel — station mini, shown in level 1 on click var _screen_header: ImplantHeader = null # D-169-composed title/hint row (top-left) -var _viewer = null # AtlasViewer — level 3 heightmap viewer (#835) +var _viewer = null # AtlasViewer — level 3 heightmap viewer (#835) func _ready() -> void: @@ -446,7 +446,10 @@ func _draw_stations() -> void: var rect: Rect2 = Rect2(pos - Vector2(half, half), Vector2(STATION_SIZE, STATION_SIZE)) if sid == _hovered_station: - draw_rect(Rect2(rect.position - Vector2(3, 3), rect.size + Vector2(6, 6)), Color(1.0, 1.0, 1.0, 0.18)) + draw_rect( + Rect2(rect.position - Vector2(3, 3), rect.size + Vector2(6, 6)), + Color(1.0, 1.0, 1.0, 0.18) + ) draw_rect(rect, COLOR_STATION) @@ -454,7 +457,15 @@ func _draw_stations() -> void: if sid == _hovered_station: var label: String = s.get("proper_name", sid) if s.get("proper_name") else sid var lsz: Vector2 = font.get_string_size(label, HORIZONTAL_ALIGNMENT_LEFT, -1, 9) - draw_string(font, pos + Vector2(-lsz.x / 2.0, half + 8.0), label, HORIZONTAL_ALIGNMENT_LEFT, -1, 9, COLOR_TEXT_DIM) + draw_string( + font, + pos + Vector2(-lsz.x / 2.0, half + 8.0), + label, + HORIZONTAL_ALIGNMENT_LEFT, + -1, + 9, + COLOR_TEXT_DIM + ) # ============================================================================= @@ -736,7 +747,9 @@ func _rebuild_station_panel() -> void: return var s: Dictionary = _selected_station - var s_name: String = s.get("proper_name", "") if s.get("proper_name") else s.get("station_id", "—") + var s_name: String = ( + s.get("proper_name", "") if s.get("proper_name") else s.get("station_id", "—") + ) var s_type: String = s.get("station_type", "").replace("_", " ").to_upper() var gov: String = s.get("governance_type", "") if s.get("governance_type") else "" var role: String = s.get("economic_role", "") if s.get("economic_role") else "" @@ -747,7 +760,9 @@ func _rebuild_station_panel() -> void: _station_panel.add_component(ImplantHeader.new(s_name, s_type + " STATION")) _station_panel.add_component(ImplantSeparator.new()) if not gov.is_empty(): - _station_panel.add_component(ImplantDataRow.new("operator " + gov.replace("_", " ").to_upper())) + _station_panel.add_component( + ImplantDataRow.new("operator " + gov.replace("_", " ").to_upper()) + ) if not role.is_empty(): _station_panel.add_component(ImplantDataRow.new("function " + role.replace("_", " "))) _station_panel.add_component(ImplantDataRow.new("currency " + czone)) diff --git a/client/ui/implant/atlas_viewer.gd b/client/ui/implant/atlas_viewer.gd index 3eccf1d0d..c8eb42df8 100644 --- a/client/ui/implant/atlas_viewer.gd +++ b/client/ui/implant/atlas_viewer.gd @@ -56,28 +56,72 @@ const COLOR_EMPTY_NOTICE: Color = Color("#445566") ## visibility ladder: always = public, toggle = observable, locked = semi- ## private / private. Keep this table in sync with D-191 §7. const OVERLAY_DEFS: Array = [ - {"id": "terrain", "label": "TER", "group": "always", - "tooltip": "Terrain — base heightmap. Always visible."}, - {"id": "infrastructure", "label": "INF", "group": "always", - "tooltip": "Infrastructure — roads + rail. Always visible."}, - {"id": "named_features", "label": "NAM", "group": "always", - "tooltip": "Named features — rivers, oceans, ranges. Always visible."}, - {"id": "gate_markers", "label": "GAT", "group": "always", - "tooltip": "Gate + spaceport markers. Always visible."}, - {"id": "political_zones", "label": "POL", "group": "always", - "tooltip": "Political zones — currency-zone bands. Always visible."}, - {"id": "population_density", "label": "POP", "group": "toggle", - "tooltip": "Population density (D-181 public)."}, - {"id": "production_zones", "label": "PRD", "group": "toggle", - "tooltip": "Production zones (D-181 observable — requires presence)."}, - {"id": "shadow_economy", "label": "SHD", "group": "toggle", - "tooltip": "Shadow economy zones (D-181 observable)."}, - {"id": "corp_presence", "label": "CRP", "group": "toggle", - "tooltip": "Corporate presence — Tier 1 only (D-181 observable)."}, - {"id": "stockpile_weeks", "label": "STK", "group": "locked", - "tooltip": "Stockpile weeks — LOCKED. Needs corporate contact (D-181 semi-private)."}, - {"id": "production_vs_baseline", "label": "BSL", "group": "locked", - "tooltip": "Production vs baseline — LOCKED. Needs insider access (D-181 private)."}, + { + "id": "terrain", + "label": "TER", + "group": "always", + "tooltip": "Terrain — base heightmap. Always visible." + }, + { + "id": "infrastructure", + "label": "INF", + "group": "always", + "tooltip": "Infrastructure — roads + rail. Always visible." + }, + { + "id": "named_features", + "label": "NAM", + "group": "always", + "tooltip": "Named features — rivers, oceans, ranges. Always visible." + }, + { + "id": "gate_markers", + "label": "GAT", + "group": "always", + "tooltip": "Gate + spaceport markers. Always visible." + }, + { + "id": "political_zones", + "label": "POL", + "group": "always", + "tooltip": "Political zones — currency-zone bands. Always visible." + }, + { + "id": "population_density", + "label": "POP", + "group": "toggle", + "tooltip": "Population density (D-181 public)." + }, + { + "id": "production_zones", + "label": "PRD", + "group": "toggle", + "tooltip": "Production zones (D-181 observable — requires presence)." + }, + { + "id": "shadow_economy", + "label": "SHD", + "group": "toggle", + "tooltip": "Shadow economy zones (D-181 observable)." + }, + { + "id": "corp_presence", + "label": "CRP", + "group": "toggle", + "tooltip": "Corporate presence — Tier 1 only (D-181 observable)." + }, + { + "id": "stockpile_weeks", + "label": "STK", + "group": "locked", + "tooltip": "Stockpile weeks — LOCKED. Needs corporate contact (D-181 semi-private)." + }, + { + "id": "production_vs_baseline", + "label": "BSL", + "group": "locked", + "tooltip": "Production vs baseline — LOCKED. Needs insider access (D-181 private)." + }, ] # ── Context (set by AtlasPanel.show_body) ───────────────────────────────────── @@ -112,12 +156,12 @@ var _overlay_visibility: Dictionary = {} var _overlay_locked: Dictionary = {} # ── Child nodes ─────────────────────────────────────────────────────────────── -var _canvas: Node2D = null # transformed node holding heightmap + markers +var _canvas: Node2D = null # transformed node holding heightmap + markers var _overlay_node: AtlasMarkerOverlay = null # draws on top of heightmap -var _city_panel = null # ImplantPanel sidebar (city data) -var _empty_notice = null # ImplantPanel shown when heightmap missing -var _overlay_bar = null # #836 overlay toggle bar (no class_name, review #8) -var _screen_header: ImplantHeader = null # top-left title/hint (D-169 composition) +var _city_panel = null # ImplantPanel sidebar (city data) +var _empty_notice = null # ImplantPanel shown when heightmap missing +var _overlay_bar = null # #836 overlay toggle bar (no class_name, review #8) +var _screen_header: ImplantHeader = null # top-left title/hint (D-169 composition) func _ready() -> void: @@ -314,10 +358,7 @@ func _zoom_at(mouse_pos: Vector2, factor: float) -> void: func grid_to_canvas(grid_point: Vector2) -> Vector2: if _grid_w <= 0.0 or _grid_h <= 0.0: return Vector2.ZERO - return Vector2( - grid_point.x / _grid_w * _tex_w, - grid_point.y / _grid_h * _tex_h - ) + return Vector2(grid_point.x / _grid_w * _tex_w, grid_point.y / _grid_h * _tex_h) func canvas_to_screen(canvas_point: Vector2) -> Vector2: @@ -461,10 +502,7 @@ func city_canvas_pos(city: Dictionary) -> Vector2: if city.has("lat") and city.has("lon"): var lon: float = float(city["lon"]) var lat: float = float(city["lat"]) - return Vector2( - (lon + 180.0) / 360.0 * _tex_w, - (90.0 - lat) / 180.0 * _tex_h - ) + return Vector2((lon + 180.0) / 360.0 * _tex_w, (90.0 - lat) / 180.0 * _tex_h) if city.has("center") and city["center"] is Array and city["center"].size() >= 2: # center is [row, col] in grid space return grid_to_canvas(Vector2(float(city["center"][1]), float(city["center"][0]))) @@ -526,7 +564,9 @@ func _rebuild_city_panel() -> void: if not czone.is_empty(): _city_panel.add_component(ImplantDataRow.new("currency " + czone)) var commission: bool = bool(c.get("commission_presence", false)) - _city_panel.add_component(ImplantDataRow.new("commission " + ("yes" if commission else "no"))) + _city_panel.add_component( + ImplantDataRow.new("commission " + ("yes" if commission else "no")) + ) var shadow: Variant = c.get("shadow_economy_zone") if shadow != null and not str(shadow).is_empty(): _city_panel.add_component(ImplantDataRow.new("shadow zone " + str(shadow))) @@ -570,7 +610,9 @@ func _build_empty_notice() -> void: _empty_notice.mouse_filter = Control.MOUSE_FILTER_IGNORE _empty_notice.visible = false add_child(_empty_notice) - _empty_notice.add_component(ImplantHeader.new("TERRAIN DATA PENDING", "regional atlas unavailable")) + _empty_notice.add_component( + ImplantHeader.new("TERRAIN DATA PENDING", "regional atlas unavailable") + ) _empty_notice.add_component(ImplantSeparator.new()) var notice_text: String = ( "The server atlas pipeline has not yet populated terrain_reference for this body (#839). "