218 lines
6.8 KiB
JSON
218 lines
6.8 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"
|
|
},
|
|
{
|
|
"id": "mining",
|
|
"label": "Mining",
|
|
"accent": "#ff8a3d"
|
|
}
|
|
],
|
|
"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) anchoring the ship's travel rim around the planet. The home world ships with it already in place; on every other world this is the build that installs it.",
|
|
"icon": "tether",
|
|
"category": "planet",
|
|
"targets": ["planet"],
|
|
"cost": {},
|
|
"duration": 0,
|
|
"requires": [],
|
|
"repeatable": false,
|
|
"starting": ["home"],
|
|
"effects": {
|
|
"tether": {
|
|
"level": 1,
|
|
"anchor": "target"
|
|
}
|
|
},
|
|
"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"
|
|
}
|
|
},
|
|
"tether-l3": {
|
|
"label": "Tether - Level 3",
|
|
"description": "Extends the planet's tether to level 3: the field's range grows from 10240 px to 20480 px around the world. Requires the level-3 tether research and a planet already holding a level-2 tether. Installed in 30 seconds for 300 minerals.",
|
|
"icon": "tether3",
|
|
"category": "planet",
|
|
"targets": ["planet"],
|
|
"cost": {
|
|
"minerals": 300
|
|
},
|
|
"duration": 30,
|
|
"requires": ["exploration/tether_l3"],
|
|
"planetRequires": {
|
|
"tetherLevel": 2
|
|
},
|
|
"repeatable": false,
|
|
"effects": {
|
|
"tether": {
|
|
"level": 3,
|
|
"anchor": "target"
|
|
}
|
|
},
|
|
"theme": {
|
|
"color": "#00e5ff"
|
|
}
|
|
},
|
|
"mining-arm-improved": {
|
|
"label": "Improved Mining Arm",
|
|
"description": "A faster mining arm for the ship: it mines asteroids at 1.5 minerals per second (the base arm does 1.0). A ship upgrade — installed from any planet's console, it counts as built wherever the ship lands and is never re-bought.",
|
|
"icon": "mining",
|
|
"category": "mining",
|
|
"targets": ["ship"],
|
|
"cost": {
|
|
"minerals": 200
|
|
},
|
|
"duration": 20,
|
|
"requires": ["mining/improved_arm"],
|
|
"repeatable": false,
|
|
"effects": {
|
|
"mining": {
|
|
"rate": 1.5
|
|
}
|
|
},
|
|
"theme": {
|
|
"color": "#ff8a3d"
|
|
}
|
|
},
|
|
"mining-arm-advanced": {
|
|
"label": "Advanced Mining Arm",
|
|
"description": "The ship's fastest arm: it mines asteroids at 2.0 minerals per second — twice the base arm. Supersedes the Improved Mining Arm (the faster arm always wins). A ship upgrade: built from any planet's console, counted wherever the ship lands.",
|
|
"icon": "mining2",
|
|
"category": "mining",
|
|
"targets": ["ship"],
|
|
"cost": {
|
|
"minerals": 300
|
|
},
|
|
"duration": 20,
|
|
"requires": ["mining/advanced_arm"],
|
|
"repeatable": false,
|
|
"effects": {
|
|
"mining": {
|
|
"rate": 2.0
|
|
}
|
|
},
|
|
"theme": {
|
|
"color": "#ff8a3d"
|
|
}
|
|
},
|
|
"mining-storage-improved": {
|
|
"label": "Improved Mining Storage",
|
|
"description": "Expands the ship's mineral hold to 350 (100 more than the base 250). A ship upgrade: built from any planet's console, counted wherever the ship lands.",
|
|
"icon": "storage",
|
|
"category": "mining",
|
|
"targets": ["ship"],
|
|
"cost": {
|
|
"minerals": 200
|
|
},
|
|
"duration": 20,
|
|
"requires": ["mining/improved_storage"],
|
|
"repeatable": false,
|
|
"effects": {
|
|
"mining": {
|
|
"capacity": 350
|
|
}
|
|
},
|
|
"theme": {
|
|
"color": "#ff8a3d"
|
|
}
|
|
}
|
|
},
|
|
|
|
"_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 | tether3 | anchor | signal | mining | mining2 | storage | diamond — procedural glyph (js/research/ResearchIcons.js)",
|
|
"category": "planet | cargo | mining — which tab of the console (registry above)",
|
|
"targets": ["planet"],
|
|
"_targets": "[\"planet\"] = installed on the planet's surface; [\"ship\"] = a SHIP upgrade (mining arms/storage): built from any planet's console, the effect is ship-wide and it counts as BUILT wherever the ship lands (never re-bought)",
|
|
"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"
|
|
},
|
|
"mining": {
|
|
"rate": 1.5,
|
|
"capacity": 350
|
|
}
|
|
},
|
|
"_effects": "applied on completion, data-driven (GameScene._applyBuildEffects): tether.level = the target world's tether field (anchor target = the built-from planet, home = the home world); mining.rate = the ship's mining speed (minerals/s, MAX wins — never downgrades); mining.capacity = the ship's mineral hold cap (MAX wins)",
|
|
"theme": {
|
|
"color": "#00e5ff"
|
|
}
|
|
}
|
|
}
|