{ "_comment": "System archetypes. Each type is themable (theme) and has attributes that steer the SystemGenerator: star classes, binary chance, planet class weights, moon/belt chances, habitability, hazard, and free-space settlement odds (settlements: deepSpaceStation / waypoint). objectCount is a GLOBAL rule, not per-type: the starting system is exempt (it always holds exactly two generated planets — gas giant + rocky — beside the home world, plus at most one free-space station). Every other system rolls its TOTAL object count — planets + free-space stations together — from this table: `barren` of systems hold ZERO objects (a gate-only dead-end LEAF of the jump network — the center is empty, the star is invisible flavor, and the only things there are the single gate and 1–2 asteroid clusters drifting inside its tether, data/asteroids.json → barren), the rest hold `objects` counts. The split is resolved by rolling the free-space stations first (per-type odds in attributes.settlements × the home→far density gradient, at most two — deepSpaceStation + waypoint), then planets = N − stations; if that roll would leave the system with NO planet (stations = N), one station is demoted to a planet — every non-barren system keeps ≥ 1 planet, the gate's tether anchor and the world the player can build out from. Every planet is settled by rule (data/settlements.json → allPlanetsSettled + settledKindByClass). distribution.weight sets how common the type is GLOBALLY; which types favor WHICH REGION of the galaxy (the home corner, the middle, the far/deep corner) is the per-zone mix in data/galaxy.json → distribution.zoneMix, keyed off each system's home→far diagonal zone (record.zone).", "objectCount": { "barren": 0.10, "objects": { "2": 0.15, "3": 0.30, "4": 0.30, "5": 0.15 } }, "types": { "main": { "label": "Main Sequence", "description": "An ordinary star and its worlds — the galaxy's working majority.", "theme": { "color": "#9fb4e8" }, "distribution": { "weight": 34 }, "attributes": { "star": { "classes": { "G": 30, "K": 40, "M": 30 }, "mass": { "G": [0.8, 1.4], "K": [0.5, 0.8], "M": [0.1, 0.5] } }, "binaryChance": 0.05, "planetClasses": { "rocky": 45, "gas": 25, "ice": 18, "lava": 12 }, "moonChance": 0.3, "beltChance": 0.35, "habitability": 0.1, "hazard": 0.1, "settlements": { "deepSpaceStation": { "chance": 0.25 }, "waypoint": { "chance": 0.35 } } } }, "redDwarf": { "label": "Red Dwarf", "description": "A small, long-lived M star with close-in, moon-rich worlds.", "theme": { "color": "#e8927c" }, "distribution": { "weight": 26 }, "attributes": { "star": { "classes": { "M": 85, "K": 15 }, "mass": { "M": [0.08, 0.35], "K": [0.5, 0.8] } }, "binaryChance": 0.12, "planetClasses": { "rocky": 50, "gas": 15, "ice": 28, "lava": 7 }, "moonChance": 0.45, "beltChance": 0.3, "habitability": 0.22, "hazard": 0.12, "settlements": { "deepSpaceStation": { "chance": 0.2 }, "waypoint": { "chance": 0.3 } } } }, "binary": { "label": "Binary", "description": "Two stars, one system. Tangled orbits, wide spacings, rich debris.", "theme": { "color": "#c9a7ff" }, "distribution": { "weight": 10 }, "attributes": { "star": { "classes": { "F": 25, "G": 40, "K": 35 }, "mass": { "F": [1.0, 1.6], "G": [0.8, 1.4], "K": [0.5, 0.8] } }, "binaryChance": 1.0, "planetClasses": { "rocky": 30, "gas": 40, "ice": 20, "lava": 10 }, "moonChance": 0.5, "beltChance": 0.6, "habitability": 0.06, "hazard": 0.18, "settlements": { "deepSpaceStation": { "chance": 0.3 }, "waypoint": { "chance": 0.3 } } } }, "habitable": { "label": "Habitable", "description": "Temperate, well-lit, and quietly crowded with life. Rare.", "theme": { "color": "#7ce8a4" }, "distribution": { "weight": 10 }, "attributes": { "star": { "classes": { "G": 70, "K": 30 }, "mass": { "G": [0.85, 1.3], "K": [0.6, 0.85] } }, "binaryChance": 0.03, "planetClasses": { "rocky": 62, "gas": 18, "ice": 14, "lava": 6 }, "moonChance": 0.35, "beltChance": 0.25, "habitability": 0.5, "hazard": 0.05, "settlements": { "deepSpaceStation": { "chance": 0.25 }, "waypoint": { "chance": 0.4 } } } }, "nebula": { "label": "Nebula", "description": "Young, bright, and still messy — debris where planets should be.", "theme": { "color": "#5fd4d0" }, "distribution": { "weight": 12 }, "attributes": { "star": { "classes": { "A": 20, "F": 30, "G": 50 }, "mass": { "A": [1.4, 2.1], "F": [1.0, 1.6], "G": [0.8, 1.4] } }, "binaryChance": 0.1, "planetClasses": { "rocky": 20, "gas": 25, "ice": 15, "lava": 40 }, "moonChance": 0.2, "beltChance": 0.8, "habitability": 0.02, "hazard": 0.35, "settlements": { "deepSpaceStation": { "chance": 0.2 }, "waypoint": { "chance": 0.45 } } } }, "void": { "label": "Void", "description": "Old, cold, and mostly empty. The rim's quiet dead ends.", "theme": { "color": "#7d88a8" }, "distribution": { "weight": 8 }, "attributes": { "star": { "classes": { "M": 90, "K": 10 }, "mass": { "M": [0.08, 0.3], "K": [0.4, 0.6] } }, "binaryChance": 0.08, "planetClasses": { "rocky": 20, "gas": 10, "ice": 55, "lava": 15 }, "moonChance": 0.1, "beltChance": 0.2, "habitability": 0.02, "hazard": 0.5, "settlements": { "deepSpaceStation": { "chance": 0.15 }, "waypoint": { "chance": 0.25 } } } } } }