orbit/data/builds.json

114 lines
3.2 KiB
JSON

{
"_comment": "Build console (the deck's BUILD button on a planet surface → js/ui/BuildWindow.js). Research UNLOCKS a build (data/research/*.json → unlocks.builds); building then COSTS resources + time on a planet and applies the effect (e.g. the level-2 tether). Pure rules/state: js/build/BuildModel.js + BuildState.js (dev/builds.test.mjs). One build at a time (maxConcurrent), ticked by the SurfaceScene while on the surface; the state (js/scenes/GameScene.js → buildState) outlives the stay and saves with the run.",
"enabled": true,
"timeUnit": "seconds",
"maxConcurrent": 1,
"categories": [
{
"id": "planet",
"label": "Planet",
"accent": "#ffc94d"
},
{
"id": "cargo",
"label": "Cargo",
"accent": "#7ce8a4"
}
],
"defaultCategory": "planet",
"video": {
"file": "assets/videos/build.mp4",
"aspect": [2, 3]
},
"resources": {
"credits": {
"label": "Credits",
"icon": "credit",
"color": "#7ce8a4"
},
"minerals": {
"label": "Minerals",
"icon": "mineral",
"color": "#00e5ff"
}
},
"builds": {
"tether-l1": {
"label": "Tether - Level 1",
"description": "The world's first tether: a level-1 field (range 5120 px) holding the ship's travel rim around the planet. Every world starts with its tether already in place.",
"icon": "tether",
"category": "planet",
"targets": ["planet"],
"cost": {},
"duration": 0,
"requires": [],
"repeatable": false,
"starting": ["home"],
"effects": {},
"theme": {
"color": "#00e5ff"
}
},
"tether-l2": {
"label": "Tether - Level 2",
"description": "Extends the planet's tether to level 2: the field's range grows from 5120 px to 10240 px around the world. Requires the level-2 tether research and a planet already holding a level-1 tether. Installed in 20 seconds for 200 minerals.",
"icon": "tether2",
"category": "planet",
"targets": ["planet"],
"cost": {
"minerals": 200
},
"duration": 20,
"requires": ["exploration/tether_l2"],
"planetRequires": {
"tetherLevel": 1
},
"repeatable": false,
"effects": {
"tether": {
"level": 2,
"anchor": "target"
}
},
"theme": {
"color": "#00e5ff"
}
}
},
"_template": {
"_comment": "Shape of one entry in `builds` (the _ keys are documentation, never builds).",
"label": "string — shown in the list and the detail readout",
"description": "string — detail readout text",
"icon": "tether | tether2 | anchor | signal | diamond — procedural glyph (js/research/ResearchIcons.js)",
"category": "planet | cargo — which tab of the console (registry above)",
"targets": ["planet"],
"cost": {
"credits": 0,
"minerals": 200
},
"duration": "number — seconds (timeUnit above); 0 = instant",
"requires": ["exploration/tether_l2"],
"repeatable": false,
"starting": ["home"],
"planetRequires": {
"tetherLevel": 1
},
"effects": {
"tether": {
"level": 2,
"anchor": "target"
}
},
"theme": {
"color": "#00e5ff"
}
}
}