37 lines
3.3 KiB
JSON
37 lines
3.3 KiB
JSON
{
|
||
"_comment": "CARGO — the player's trade capacity: the ship's hold, bay for bay (the 16-slot grid, data/economy.json → cargo.maxSlots). All three techs are BLUEPRINTS (effects: {}): the node's `unlocks.builds` declares the matching ship-hold build (data/builds.json → cargo-bay-8 / -12 / -16) and the build's `requires: [\"cargo/<node id>\"]` is the authoritative gate (dev/research-builds.test.mjs keeps both sides in lock-step). The hold's life is 0 at the run's start (data/ship.json), 4 by the bar scene (data/vignettes.json → effects.cargoHold), then this chain: 8 → 12 → 16. One node per bay count, a strict chain — cargo_bay_8 is the root; cargo_bay_12 requires it; cargo_bay_16 requires cargo_bay_12 (MAX wins — the biggest hold always supersedes, the build's effect never downgrades). On top of the DAG, the three tiers carry gates in the style of the mining Tier-3 techs (node fields, the scene wires the live predicates via attachQuestGates + attachBuildGates — js/research/ResearchModel.js): cargo_bay_8 waits on `quest: \"special_delivery\"` (the 'Special Delivery' reward must be CLAIMED — you learn to move cargo before you grow the hold), cargo_bay_12 on `build: \"mining-storage-improved\"` (the Improved Mining Storage build must be BUILT), cargo_bay_16 on `build: \"mining-storage-advanced\"` (the Advanced Mining Storage build BUILT). Node contract is the same as data/research/mining.json: `requires` = parents that must be RESEARCHED first (the DAG edges — authoritative); `unlocks` = { builds, research } declaration; `effects` = what the scene applies on completion (empty here — the build carries it); `starting` = already researched on a fresh run (none — everything is researched, never granted). duration is in research.timeUnit (seconds).",
|
||
"starting": [],
|
||
"nodes": {
|
||
"cargo_bay_8": {
|
||
"label": "Cargo - 8 Bays",
|
||
"description": "The blueprint for the ship's first trade upgrade: the 8-bay hold. Once researched, the 8-bay bay can be built from any planet's console (300 credits, 20 s) — roughly 2× the goods per run, and the trade income to match.",
|
||
"icon": "storage",
|
||
"duration": 60,
|
||
"requires": [],
|
||
"quest": "special_delivery",
|
||
"unlocks": { "builds": ["cargo-bay-8"], "research": ["cargo_bay_12"] },
|
||
"effects": {}
|
||
},
|
||
"cargo_bay_12": {
|
||
"label": "Cargo - 12 Bays",
|
||
"description": "The blueprint for the 12-bay hold. Once researched, the 12-bay bay can be built (1200 credits, 30 s) — three quarters of a full hold in a single run, supersedes the 8-bay bay.",
|
||
"icon": "storage",
|
||
"duration": 60,
|
||
"requires": ["cargo_bay_8"],
|
||
"build": "mining-storage-improved",
|
||
"unlocks": { "builds": ["cargo-bay-12"], "research": ["cargo_bay_16"] },
|
||
"effects": {}
|
||
},
|
||
"cargo_bay_16": {
|
||
"label": "Cargo - 16 Bays",
|
||
"description": "The blueprint for the full 16-bay hold — a freighter's worth of goods in one run, the biggest the ship can carry. Once researched, the 16-bay bay can be built (3000 credits, 40 s), superseding every smaller bay.",
|
||
"icon": "storage",
|
||
"duration": 60,
|
||
"requires": ["cargo_bay_12"],
|
||
"build": "mining-storage-advanced",
|
||
"unlocks": { "builds": ["cargo-bay-16"], "research": [] },
|
||
"effects": {}
|
||
}
|
||
}
|
||
}
|