{ "_comment": "TRADE GOODS CATALOG (the economy's inventory of things that exist in the universe). This is DATA, not code — the shop UI (later) renders it, the generator prices it (data/economy.json), and the spritesheet (`sheet` below + assets/images/goods.png) maps an `icon` frame per id. Every good has: `id` (stable key), `name`, `category` (groups it in the shop UI — see `categories`), `tier` (1 basic … 4 exotic, drives price band + how far it should travel), `baseValue` (credits, the good's intrinsic worth before local/distance factors), `producer` (economic class(es) that naturally make it — cheap to BUY there), `demand` (class(es) that want it — good to SELL there), `weight` (1 rare … 5 common, how heavily it is weighted in the hub-pool selection and how plentiful), `flavor` (one-line shop-keep description), `icon` (the good frame index on the spritesheet — see `sheet`). Economic classes: terran / arid / rocky / gas / ice / lava (planet classes, data/planets.json) + station (deep-space station) + capital (a faction seat). The opposition web the design leans on: ice sells cool to lava while lava sells heat to ice; terran sells water/food to arid while arid sells salt/solar/spice to terran; gas sells fuel to rocky while rocky sells metal to gas. Every class also yields a signature GEMSTONE (category gemstone) that other classes covet. NOTE: this is a DRAFT catalog — names/values are placeholders until you weigh in.", "classes": { "terran": { "label": "Terran World", "economy": "temperate biosphere — food, water, living things" }, "arid": { "label": "Arid World", "economy": "dry sun-world — salt, silica, solar, spice" }, "rocky": { "label": "Rocky World", "economy": "mineral-rich — ores, metal, stone" }, "gas": { "label": "Gas Giant", "economy": "volatile atmosphere — fuel, gases, isotopes" }, "ice": { "label": "Ice World", "economy": "frozen — water, cryo, volatiles" }, "lava": { "label": "Lava World", "economy": "molten — heat, rare metals, volcanic glass" }, "station": { "label": "Deep-Space Station", "economy": "adrift refiner — processed goods, services" }, "capital": { "label": "Capital World", "economy": "a faction's seat — luxury, finance, high-end tech" } }, "categories": { "food": { "label": "Food & Agriculture", "order": 1 }, "water": { "label": "Water & Cryo", "order": 2 }, "energy": { "label": "Energy & Fuel", "order": 3 }, "metals": { "label": "Ores & Metals", "order": 4 }, "industrial": { "label": "Refined & Industrial","order": 5 }, "tech": { "label": "Technology", "order": 6 }, "pharma": { "label": "Pharma & Biotech", "order": 7 }, "luxury": { "label": "Luxury & Exotic", "order": 8 }, "gemstone": { "label": "Gemstones", "order": 9 }, "quest": { "label": "Quest Cargo", "order": 10, "_comment": "The run's story cargo (the 'Special Delivery' package, data/quests.json) — tradeable:false, so no shop stocks or buys it. Listed last: it is the one good the economy does not price." } }, "sheet": { "_comment": "The goods spritesheet (assets/images/goods.png) — 128×128 icon frames, 12 across (1536×1280 = 120 cells), read left→right then top→bottom. Frame index N = the Nth entry in goods below (each also carries its index in icon — set that field to reflow the sheet without moving entries). Cell for frame N: col = N % 12, row = floor(N / 12), top-left at (col·128, row·128). Categories are contiguous blocks: food 0–13 · water 14–21 · energy 22–35 · metals 36–53 · industrial 54–67 · tech 68–85 · pharma 86–95 · luxury 96–105 · gemstone 106–113 (the 8 signature gems sit in the bottom-right corner). Cell 114 is the 'Special Delivery' package (special-package, the quest's cargo — the sheet's first spare cell).", "texture": "assets/images/goods.png", "frameWidth": 128, "frameHeight": 128, "cols": 12, "rows": 10 }, "goods": [ { "id": "fresh-produce", "name": "Fresh Produce", "category": "food", "tier": 1, "baseValue": 12, "producer": ["terran"], "demand": ["rocky","gas","ice","lava","station"], "weight": 5, "flavor": "Crisp, clean, alive. A small miracle off-world.", "icon": 0 }, { "id": "grain-crates", "name": "Grain Crates", "category": "food", "tier": 1, "baseValue": 10, "producer": ["terran"], "demand": ["rocky","gas","ice","lava","station"], "weight": 5, "flavor": "Bulk feed. No one romanticizes a crate of grain.", "icon": 1 }, { "id": "cured-livestock", "name": "Cured Livestock", "category": "food", "tier": 1, "baseValue": 15, "producer": ["terran"], "demand": ["rocky","gas","ice","lava"], "weight": 3, "flavor": "Smoked and salted to survive the jump.", "icon": 2 }, { "id": "terran-bread", "name": "Terran Bread", "category": "food", "tier": 1, "baseValue": 8, "producer": ["terran"], "demand": ["rocky","gas","ice","lava","station"], "weight": 5, "flavor": "Warm if you're quick. A comfort you'd miss.", "icon": 3 }, { "id": "arid-spices", "name": "Arid Spice Blend", "category": "food", "tier": 2, "baseValue": 26, "producer": ["arid"], "demand": ["terran","capital","station","rocky"], "weight": 3, "flavor": "Sun-baked heat that makes everything taste like the desert.", "icon": 4 }, { "id": "cactus-pulp", "name": "Cactus Pulp", "category": "food", "tier": 1, "baseValue": 10, "producer": ["arid"], "demand": ["terran","ice","lava"], "weight": 3, "flavor": "Fibrous, sweet, stubborn. Like the planet.", "icon": 5 }, { "id": "salted-crystals", "name": "Salted Crystals", "category": "food", "tier": 1, "baseValue": 12, "producer": ["arid"], "demand": ["terran","gas","ice","station"], "weight": 3, "flavor": "Mineral-dense. Technically food, technically not.", "icon": 6 }, { "id": "desert-dates", "name": "Desert Dates", "category": "food", "tier": 1, "baseValue": 11, "producer": ["arid"], "demand": ["terran","rocky","station"], "weight": 4, "flavor": "A little sweetness from a hard place.", "icon": 7 }, { "id": "kelp-fronds", "name": "Kelp Fronds", "category": "food", "tier": 1, "baseValue": 12, "producer": ["ice"], "demand": ["terran","gas","rocky"], "weight": 3, "flavor": "Slippery and cold. A delicacy in some cultures.", "icon": 8 }, { "id": "fungal-bloom", "name": "Fungal Bloom", "category": "food", "tier": 1, "baseValue": 14, "producer": ["ice","rocky"], "demand": ["terran","gas","station"], "weight": 3, "flavor": "Grows in the dark, feeds on the dark.", "icon": 9 }, { "id": "cloud-protein", "name": "Cloud Protein", "category": "food", "tier": 2, "baseValue": 28, "producer": ["gas"], "demand": ["rocky","terran","station","lava"], "weight": 3, "flavor": "Harvested from the upper clouds. Tastes like altitude.", "icon": 10 }, { "id": "algal-cakes", "name": "Algal Cakes", "category": "food", "tier": 1, "baseValue": 9, "producer": ["ice","terran"], "demand": ["rocky","gas","lava"], "weight": 4, "flavor": "Staple of long voyages. Unremarkable. Saving.", "icon": 11 }, { "id": "exotic-fruit", "name": "Exotic Fruit", "category": "food", "tier": 2, "baseValue": 30, "producer": ["terran"], "demand": ["capital","station"], "weight": 2, "flavor": "So unusual most off-worlders are afraid to bite it.", "icon": 12 }, { "id": "terran-herbs", "name": "Terran Herbs", "category": "food", "tier": 2, "baseValue": 26, "producer": ["terran"], "demand": ["capital","station","lava"], "weight": 2, "flavor": "Culinary medicine from a mild world.", "icon": 13 }, { "id": "pure-water", "name": "Pure Water", "category": "water", "tier": 1, "baseValue": 10, "producer": ["ice","terran"], "demand": ["lava","arid","gas","rocky","station"], "weight": 5, "flavor": "The most valuable commodity, most taken for granted.", "icon": 14 }, { "id": "ice-blocks", "name": "Ice Blocks", "category": "water", "tier": 1, "baseValue": 9, "producer": ["ice"], "demand": ["lava","arid","gas"], "weight": 4, "flavor": "Solid calm. Keep it cold.", "icon": 15 }, { "id": "coolant-fluid", "name": "Coolant Fluid", "category": "water", "tier": 2, "baseValue": 24, "producer": ["ice"], "demand": ["lava","gas","rocky","station"], "weight": 3, "flavor": "The reason a reactor doesn't boil itself over.", "icon": 16 }, { "id": "cryo-compound", "name": "Cryo Compound", "category": "water", "tier": 2, "baseValue": 30, "producer": ["ice"], "demand": ["lava","gas","station","rocky"], "weight": 3, "flavor": "Engineered to hold heat in check.", "icon": 17 }, { "id": "deisot-water", "name": "De-Isotopized Water", "category": "water", "tier": 2, "baseValue": 26, "producer": ["ice"], "demand": ["gas","station","lava"], "weight": 3, "flavor": "Purified beyond what a desert world can dream of.", "icon": 18 }, { "id": "frozen-organics", "name": "Frozen Organics", "category": "water", "tier": 2, "baseValue": 28, "producer": ["ice"], "demand": ["terran","lava","station"], "weight": 2, "flavor": "A biosphere, preserved.", "icon": 19 }, { "id": "liq-helium", "name": "Liquefied Helium", "category": "water", "tier": 2, "baseValue": 32, "producer": ["ice"], "demand": ["gas","station","lava"], "weight": 2, "flavor": "Rarer than it looks, colder than it should be.", "icon": 20 }, { "id": "brine-solution", "name": "Brine Solution", "category": "water", "tier": 1, "baseValue": 12, "producer": ["ice","rocky"], "demand": ["lava","arid","station"], "weight": 3, "flavor": "Salty, dense, and useful in more ways than one.", "icon": 21 }, { "id": "refined-fuel", "name": "Refined Fuel", "category": "energy", "tier": 1, "baseValue": 14, "producer": ["gas"], "demand": ["rocky","ice","terran","lava","station","arid"], "weight": 5, "flavor": "The lifeblood of the fleet.", "icon": 22 }, { "id": "hydrogen-cells", "name": "Hydrogen Cells", "category": "energy", "tier": 2, "baseValue": 26, "producer": ["gas"], "demand": ["rocky","ice","terran","station","lava","arid"], "weight": 4, "flavor": "Light, bright, and slightly dangerous.", "icon": 23 }, { "id": "helium3", "name": "Helium-3", "category": "energy", "tier": 3, "baseValue": 85, "producer": ["gas"], "demand": ["station","capital","rocky","lava"], "weight": 2, "flavor": "The cleanest fire, and the hardest to get.", "icon": 24 }, { "id": "ammonia-derivs", "name": "Ammonia Derivatives", "category": "energy", "tier": 2, "baseValue": 22, "producer": ["gas"], "demand": ["rocky","lava","station"], "weight": 3, "flavor": "The pungent workhorse of gas worlds.", "icon": 25 }, { "id": "noble-gases", "name": "Noble Gas Mix", "category": "energy", "tier": 2, "baseValue": 42, "producer": ["gas"], "demand": ["station","lava","capital","rocky"], "weight": 3, "flavor": "Inert, expensive, and absolutely essential.", "icon": 26 }, { "id": "volcanic-energy", "name": "Volcanic Energy Cells", "category": "energy", "tier": 2, "baseValue": 34, "producer": ["lava"], "demand": ["ice","rocky","station","gas"], "weight": 3, "flavor": "Bottled fury from a molten world.", "icon": 27 }, { "id": "solar-panels", "name": "Solar Panel Arrays", "category": "energy", "tier": 2, "baseValue": 30, "producer": ["arid"], "demand": ["ice","gas","rocky","lava","station"], "weight": 3, "flavor": "Desert sun, harvested and shipped.", "icon": 28 }, { "id": "thermal-batteries","name": "Thermal Batteries", "category": "energy", "tier": 2, "baseValue": 36, "producer": ["lava"], "demand": ["ice","rocky","gas","station"], "weight": 3, "flavor": "Heat you can bank for a cold morning.", "icon": 29 }, { "id": "methane-crates", "name": "Methane Crates", "category": "energy", "tier": 1, "baseValue": 13, "producer": ["gas"], "demand": ["rocky","ice","station"], "weight": 3, "flavor": "Combustible in the most literal sense.", "icon": 30 }, { "id": "plasma-cells", "name": "Plasma Cells", "category": "energy", "tier": 3, "baseValue": 70, "producer": ["lava"], "demand": ["station","capital","rocky"], "weight": 2, "flavor": "A star, shrunk to the size of a crate.", "icon": 31 }, { "id": "biofuel-slurry", "name": "Biofuel Slurry", "category": "energy", "tier": 1, "baseValue": 12, "producer": ["terran"], "demand": ["rocky","gas","station"], "weight": 3, "flavor": "Grown, not drilled. Smells accordingly.", "icon": 32 }, { "id": "isotope-fuel", "name": "Isotope Fuel Rods", "category": "energy", "tier": 3, "baseValue": 78, "producer": ["lava","gas"], "demand": ["station","capital","rocky"], "weight": 2, "flavor": "A little goes a very long way.", "icon": 33 }, { "id": "cryo-fuel", "name": "Cryo-Stabilized Fuel", "category": "energy", "tier": 2, "baseValue": 28, "producer": ["ice","gas"], "demand": ["rocky","lava","station"], "weight": 2, "flavor": "Stable at temperatures that freeze thought.", "icon": 34 }, { "id": "geothermal-taps", "name": "Geothermal Taps", "category": "energy", "tier": 2, "baseValue": 32, "producer": ["lava"], "demand": ["rocky","ice","station"], "weight": 3, "flavor": "Drinks directly from the planet's furnace.", "icon": 35 }, { "id": "iron-ore", "name": "Iron Ore", "category": "metals", "tier": 1, "baseValue": 10, "producer": ["rocky"], "demand": ["gas","station","ice","lava","arid"], "weight": 5, "flavor": "The bone of industry.", "icon": 36 }, { "id": "copper-ore", "name": "Copper Ore", "category": "metals", "tier": 1, "baseValue": 11, "producer": ["rocky"], "demand": ["gas","station","lava"], "weight": 4, "flavor": "Conducts everything, including rumors.", "icon": 37 }, { "id": "nickel-ore", "name": "Nickel Ore", "category": "metals", "tier": 1, "baseValue": 12, "producer": ["rocky"], "demand": ["gas","station","lava","ice"], "weight": 4, "flavor": "Hard, grey, and indispensable.", "icon": 38 }, { "id": "rare-earth", "name": "Rare Earth Ores", "category": "metals", "tier": 3, "baseValue": 95, "producer": ["rocky","lava"], "demand": ["station","capital","gas"], "weight": 2, "flavor": "The stuff the future runs on.", "icon": 39 }, { "id": "platinum-group", "name": "Platinum Group", "category": "metals", "tier": 3, "baseValue": 125, "producer": ["lava"], "demand": ["station","capital","gas","rocky"], "weight": 2, "flavor": "Worth its weight, several times over.", "icon": 40 }, { "id": "fissile-ore", "name": "Fissile Ore", "category": "metals", "tier": 3, "baseValue": 105, "producer": ["rocky","lava"], "demand": ["station","capital","gas"], "weight": 2, "flavor": "Handle with respect, ship with care.", "icon": 41 }, { "id": "bauxite", "name": "Bauxite", "category": "metals", "tier": 1, "baseValue": 9, "producer": ["rocky"], "demand": ["gas","station"], "weight": 4, "flavor": "Light as air, once refined.", "icon": 42 }, { "id": "manganese", "name": "Manganese Nodules", "category": "metals", "tier": 1, "baseValue": 10, "producer": ["rocky"], "demand": ["gas","station","lava"], "weight": 3, "flavor": "Dark grains that strengthen everything.", "icon": 43 }, { "id": "cobalt-crystal", "name": "Cobalt Crystal", "category": "metals", "tier": 3, "baseValue": 88, "producer": ["lava"], "demand": ["station","capital","gas","rocky"], "weight": 2, "flavor": "Blue heat, crystallized.", "icon": 44 }, { "id": "tungsten-carbide", "name": "Tungsten Carbide", "category": "metals", "tier": 2, "baseValue": 46, "producer": ["rocky","lava"], "demand": ["station","gas","capital"], "weight": 3, "flavor": "Denser than the problems it solves.", "icon": 45 }, { "id": "tin-ore", "name": "Tin Ore", "category": "metals", "tier": 1, "baseValue": 9, "producer": ["rocky"], "demand": ["gas","station"], "weight": 3, "flavor": "Old, reliable, unglamorous.", "icon": 46 }, { "id": "zircon-sand", "name": "Zircon Sand", "category": "metals", "tier": 2, "baseValue": 36, "producer": ["arid","rocky"], "demand": ["station","gas"], "weight": 3, "flavor": "A grain of glass with ambitions.", "icon": 47 }, { "id": "silicate-agg", "name": "Silicate Aggregates", "category": "metals", "tier": 1, "baseValue": 8, "producer": ["arid","rocky"], "demand": ["station","gas","rocky"], "weight": 4, "flavor": "The filler in ten thousand structures.", "icon": 48 }, { "id": "salt-rock", "name": "Salt Rock", "category": "metals", "tier": 1, "baseValue": 7, "producer": ["arid"], "demand": ["terran","gas","ice","station"], "weight": 4, "flavor": "Older than the sea that left it behind.", "icon": 49 }, { "id": "sulfur-nodes", "name": "Sulfur Nodes", "category": "metals", "tier": 1, "baseValue": 11, "producer": ["lava"], "demand": ["station","gas","rocky"], "weight": 3, "flavor": "Smells like a world with no filters.", "icon": 50 }, { "id": "graphite", "name": "Graphite", "category": "metals", "tier": 1, "baseValue": 10, "producer": ["rocky"], "demand": ["gas","station","lava"], "weight": 4, "flavor": "Soft, black, and a better conductor than most.", "icon": 51 }, { "id": "aluminum-ore", "name": "Aluminum Ore", "category": "metals", "tier": 1, "baseValue": 11, "producer": ["rocky"], "demand": ["gas","station","ice"], "weight": 3, "flavor": "Light enough to forget, strong enough to remember.", "icon": 52 }, { "id": "lithium-brine", "name": "Lithium Brine", "category": "metals", "tier": 2, "baseValue": 42, "producer": ["rocky","ice"], "demand": ["station","gas","capital"], "weight": 3, "flavor": "Charged with quiet potential.", "icon": 53 }, { "id": "refined-steel", "name": "Refined Steel", "category": "industrial", "tier": 2, "baseValue": 24, "producer": ["station","rocky"], "demand": ["gas","ice","lava","terran","rocky"], "weight": 4, "flavor": "Order, imposed on iron.", "icon": 54 }, { "id": "alloy-bars", "name": "Alloy Bars", "category": "industrial", "tier": 2, "baseValue": 30, "producer": ["station","lava"], "demand": ["gas","ice","rocky","lava","station"], "weight": 3, "flavor": "Strength, tailored.", "icon": 55 }, { "id": "composite-panels", "name": "Composite Panels", "category": "industrial", "tier": 2, "baseValue": 32, "producer": ["station"], "demand": ["gas","rocky","ice","lava"], "weight": 3, "flavor": "Layers of nothing, into something.", "icon": 56 }, { "id": "machinery-parts", "name": "Machinery Parts", "category": "industrial", "tier": 2, "baseValue": 28, "producer": ["station","rocky"], "demand": ["gas","ice","lava","terran"], "weight": 4, "flavor": "The parts that keep the parts moving.", "icon": 57 }, { "id": "tooling", "name": "Industrial Tooling", "category": "industrial", "tier": 1, "baseValue": 16, "producer": ["station"], "demand": ["rocky","gas","ice","lava"], "weight": 3, "flavor": "Sharp, patient, exact.", "icon": 58 }, { "id": "habitat-prefabs", "name": "Habitat Prefabs", "category": "industrial", "tier": 2, "baseValue": 35, "producer": ["station"], "demand": ["ice","lava","gas","rocky"], "weight": 2, "flavor": "A room in a box, waiting for someone.", "icon": 59 }, { "id": "glass-sheets", "name": "Volcanic Glass Sheets", "category": "industrial", "tier": 2, "baseValue": 26, "producer": ["lava","arid"], "demand": ["station","capital","gas","rocky"], "weight": 3, "flavor": "Transparency, forged in fire.", "icon": 60 }, { "id": "ceramics", "name": "Advanced Ceramics", "category": "industrial", "tier": 2, "baseValue": 38, "producer": ["lava","arid"], "demand": ["station","gas","capital"], "weight": 3, "flavor": "Harder than it looks, prettier than it needs.", "icon": 61 }, { "id": "polymers", "name": "Synthetic Polymers", "category": "industrial", "tier": 2, "baseValue": 30, "producer": ["gas","station"], "demand": ["rocky","ice","lava","terran"], "weight": 3, "flavor": "Flexibility, by design.", "icon": 62 }, { "id": "adhesives", "name": "Industrial Adhesives", "category": "industrial", "tier": 1, "baseValue": 14, "producer": ["station"], "demand": ["rocky","gas","ice","lava"], "weight": 3, "flavor": "Holds. That is the whole job.", "icon": 63 }, { "id": "lubricants", "name": "Precision Lubricants", "category": "industrial", "tier": 1, "baseValue": 15, "producer": ["gas","station"], "demand": ["rocky","lava","ice"], "weight": 3, "flavor": "The difference between running and seizing.", "icon": 64 }, { "id": "atmo-filters", "name": "Atmosphere Filters", "category": "industrial", "tier": 1, "baseValue": 16, "producer": ["station"], "demand": ["gas","ice","lava","rocky"], "weight": 3, "flavor": "Keeps the outside, outside.", "icon": 65 }, { "id": "insulating-foam", "name": "Insulating Foam", "category": "industrial", "tier": 1, "baseValue": 17, "producer": ["station"], "demand": ["ice","lava","gas"], "weight": 3, "flavor": "A wall against temperature's opinion.", "icon": 66 }, { "id": "timber-lots", "name": "Timber Lots", "category": "industrial", "tier": 1, "baseValue": 13, "producer": ["terran"], "demand": ["rocky","station","gas"], "weight": 3, "flavor": "A forest, reduced to a number.", "icon": 67 }, { "id": "processor-chips", "name": "Quantum Processor Chips", "category": "tech", "tier": 3, "baseValue": 98, "producer": ["capital"], "demand": ["rocky","gas","ice","lava","station"], "weight": 2, "flavor": "Thought, compressed to a wafer.", "icon": 68 }, { "id": "sensor-arrays", "name": "Sensor Arrays", "category": "tech", "tier": 3, "baseValue": 72, "producer": ["station","capital"], "demand": ["rocky","gas","ice","lava"], "weight": 3, "flavor": "Eyes where there were none.", "icon": 69 }, { "id": "navigation-cores", "name": "Navigation Cores", "category": "tech", "tier": 3, "baseValue": 112, "producer": ["capital"], "demand": ["rocky","gas","ice","lava","station"], "weight": 2, "flavor": "Knows where you are before you do.", "icon": 70 }, { "id": "comms-arrays", "name": "Comms Arrays", "category": "tech", "tier": 2, "baseValue": 48, "producer": ["station","capital"], "demand": ["rocky","gas","ice","lava"], "weight": 3, "flavor": "A voice across the void.", "icon": 71 }, { "id": "power-cells", "name": "High-Density Power Cells","category": "tech", "tier": 3, "baseValue": 88, "producer": ["capital","lava"], "demand": ["rocky","gas","ice","lava","station"], "weight": 3, "flavor": "A battery with a grudge.", "icon": 72 }, { "id": "servo-motors", "name": "Servo Motors", "category": "tech", "tier": 2, "baseValue": 42, "producer": ["station","rocky"], "demand": ["gas","ice","lava","terran"], "weight": 3, "flavor": "Muscle, without the mess.", "icon": 73 }, { "id": "actuators", "name": "Precision Actuators", "category": "tech", "tier": 2, "baseValue": 44, "producer": ["station"], "demand": ["gas","ice","lava","rocky"], "weight": 3, "flavor": "Small moves, exactly repeated.", "icon": 74 }, { "id": "thruster-nozzles", "name": "Thruster Nozzles", "category": "tech", "tier": 2, "baseValue": 50, "producer": ["station","lava"], "demand": ["rocky","gas","ice"], "weight": 3, "flavor": "The polite end of a very loud argument.", "icon": 75 }, { "id": "shield-emitters", "name": "Shield Emitters", "category": "tech", "tier": 3, "baseValue": 132, "producer": ["capital","lava"], "demand": ["rocky","gas","ice","lava","station"], "weight": 2, "flavor": "A wall that only exists when you need it.", "icon": 76 }, { "id": "tactical-ai", "name": "Tactical AI Cores", "category": "tech", "tier": 4, "baseValue": 210, "producer": ["capital"], "demand": ["rocky","gas","ice","lava","station"], "weight": 2, "flavor": "It has already decided. You are along for the ride.", "icon": 77 }, { "id": "medical-bays", "name": "Medical Bay Modules", "category": "tech", "tier": 3, "baseValue": 78, "producer": ["capital","terran"], "demand": ["rocky","gas","ice","lava","station"], "weight": 3, "flavor": "A promise to fix what is broken.", "icon": 78 }, { "id": "hull-plating", "name": "Hull Plating", "category": "tech", "tier": 2, "baseValue": 38, "producer": ["station","rocky"], "demand": ["gas","ice","lava"], "weight": 3, "flavor": "The last thing between you and the void.", "icon": 79 }, { "id": "rad-shielding", "name": "Radiation Shielding", "category": "tech", "tier": 2, "baseValue": 40, "producer": ["station","lava"], "demand": ["gas","ice","rocky","lava"], "weight": 3, "flavor": "Quiet armor against invisible enemies.", "icon": 80 }, { "id": "gyro-stators", "name": "Stabilization Gyros", "category": "tech", "tier": 2, "baseValue": 46, "producer": ["station"], "demand": ["gas","ice","lava","rocky"], "weight": 3, "flavor": "Keeps you honest in any direction.", "icon": 81 }, { "id": "reactor-housings", "name": "Reactor Housings", "category": "tech", "tier": 3, "baseValue": 92, "producer": ["station","lava"], "demand": ["gas","rocky","capital"], "weight": 2, "flavor": "A cage for a small star.", "icon": 82 }, { "id": "cargo-clamps", "name": "Cargo Clamps", "category": "tech", "tier": 1, "baseValue": 18, "producer": ["station"], "demand": ["rocky","gas","ice","lava"], "weight": 3, "flavor": "Grip, in a holdable form.", "icon": 83 }, { "id": "life-support", "name": "Life Support Units", "category": "tech", "tier": 2, "baseValue": 36, "producer": ["station","ice"], "demand": ["gas","rocky","lava","ice"], "weight": 3, "flavor": "The reason you are still breathing.", "icon": 84 }, { "id": "data-crystals", "name": "Data Crystals", "category": "tech", "tier": 3, "baseValue": 82, "producer": ["capital","station"], "demand": ["rocky","gas","ice","lava"], "weight": 3, "flavor": "A library, grown rather than written.", "icon": 85 }, { "id": "med-kits", "name": "Medical Kits", "category": "pharma", "tier": 2, "baseValue": 30, "producer": ["terran"], "demand": ["rocky","gas","ice","lava","station"], "weight": 4, "flavor": "Hope, boxed.", "icon": 86 }, { "id": "antibiotics", "name": "Antibiotic Compounds", "category": "pharma", "tier": 2, "baseValue": 35, "producer": ["terran"], "demand": ["rocky","gas","ice","lava","station"], "weight": 3, "flavor": "A small war, fought invisibly.", "icon": 87 }, { "id": "repair-nanites", "name": "Repair Nanites", "category": "pharma", "tier": 4, "baseValue": 185, "producer": ["capital"], "demand": ["rocky","gas","ice","lava","station"], "weight": 2, "flavor": "A million tiny hands, all helping.", "icon": 88 }, { "id": "cryo-serum", "name": "Cryo Sleep Serum", "category": "pharma", "tier": 3, "baseValue": 66, "producer": ["ice","capital"], "demand": ["rocky","gas","lava","station"], "weight": 2, "flavor": "A pause button for the body.", "icon": 89 }, { "id": "toxin-antidote", "name": "Toxin Antidotes", "category": "pharma", "tier": 2, "baseValue": 40, "producer": ["terran"], "demand": ["rocky","gas","ice","lava","station"], "weight": 3, "flavor": "The answer to a very bad question.", "icon": 90 }, { "id": "genetic-editors", "name": "Genetic Editing Kits", "category": "pharma", "tier": 4, "baseValue": 225, "producer": ["capital"], "demand": ["rocky","gas","ice","lava","station"], "weight": 2, "flavor": "Rewrite the source. Proceed carefully.", "icon": 91 }, { "id": "vaccine-batches", "name": "Vaccine Batches", "category": "pharma", "tier": 3, "baseValue": 60, "producer": ["terran","capital"], "demand": ["rocky","gas","ice","lava","station"], "weight": 3, "flavor": "A head start on sickness.", "icon": 92 }, { "id": "neural-stims", "name": "Neural Stims", "category": "pharma", "tier": 3, "baseValue": 96, "producer": ["capital"], "demand": ["rocky","gas","ice","lava","station"], "weight": 2, "flavor": "A nudge the mind does not forget.", "icon": 93 }, { "id": "bio-fertilizer", "name": "Bio-Fertilizer", "category": "pharma", "tier": 1, "baseValue": 14, "producer": ["terran"], "demand": ["arid","rocky","gas"], "weight": 3, "flavor": "Feeds the soil that feeds you.", "icon": 94 }, { "id": "enzyme-cultures", "name": "Enzyme Cultures", "category": "pharma", "tier": 2, "baseValue": 28, "producer": ["terran"], "demand": ["rocky","gas","lava","station"], "weight": 3, "flavor": "Life, doing its patient work.", "icon": 95 }, { "id": "luxury-silks", "name": "Luxury Silks", "category": "luxury", "tier": 3, "baseValue": 88, "producer": ["capital","terran"], "demand": ["capital","station"], "weight": 2, "flavor": "Softness, priced by the inch.", "icon": 96 }, { "id": "exotic-pet", "name": "Exotic Companion", "category": "luxury", "tier": 3, "baseValue": 112, "producer": ["terran"], "demand": ["capital","station"], "weight": 2, "flavor": "For those who want a friend that is not a machine.", "icon": 97 }, { "id": "art-sculpture", "name": "Artisan Sculpture", "category": "luxury", "tier": 3, "baseValue": 102, "producer": ["arid","capital"], "demand": ["capital","station","terran"], "weight": 2, "flavor": "A shape that argues with the eye.", "icon": 98 }, { "id": "treasure-spice", "name": "Treasure Spice Blend", "category": "luxury", "tier": 3, "baseValue": 122, "producer": ["arid"], "demand": ["capital","station"], "weight": 2, "flavor": "A pinch changes a meal; a fortune changes a ledger.", "icon": 99 }, { "id": "gem-weapon", "name": "Gem-Inlaid Weapon", "category": "luxury", "tier": 4, "baseValue": 165, "producer": ["capital"], "demand": ["capital","station","rocky"], "weight": 2, "flavor": "Beauty with a point.", "icon": 100 }, { "id": "faction-heirloom", "name": "Faction Heirloom", "category": "luxury", "tier": 4, "baseValue": 255, "producer": ["capital"], "demand": ["capital","station"], "weight": 1, "flavor": "Old money, older grudges.", "icon": 101 }, { "id": "fine-porcelain", "name": "Fine Porcelain", "category": "luxury", "tier": 3, "baseValue": 78, "producer": ["lava","capital"], "demand": ["capital","station","terran"], "weight": 2, "flavor": "Fragile, on purpose.", "icon": 102 }, { "id": "aromatic-oils", "name": "Aromatic Oils", "category": "luxury", "tier": 2, "baseValue": 46, "producer": ["arid","terran"], "demand": ["capital","station"], "weight": 3, "flavor": "A scent that travels further than a ship.", "icon": 103 }, { "id": "living-ornamental","name": "Living Ornamental", "category": "luxury", "tier": 2, "baseValue": 56, "producer": ["terran"], "demand": ["capital","station","gas"], "weight": 2, "flavor": "Green, alive, and very expensive.", "icon": 104 }, { "id": "rare-vintage", "name": "Rare Vintage Reserve", "category": "luxury", "tier": 3, "baseValue": 132, "producer": ["terran"], "demand": ["capital","station"], "weight": 2, "flavor": "Time, served in a glass.", "icon": 105 }, { "id": "verdant-emerald", "name": "Verdant Emerald", "category": "gemstone", "tier": 3, "baseValue": 120, "producer": ["terran"], "demand": ["rocky","gas","ice","lava","capital","station"],"weight": 3, "flavor": "The green heart of a mild world.", "icon": 106 }, { "id": "dune-topaz", "name": "Dune Topaz", "category": "gemstone", "tier": 3, "baseValue": 110, "producer": ["arid"], "demand": ["terran","ice","lava","capital"], "weight": 3, "flavor": "Sunlight, trapped in sand.", "icon": 107 }, { "id": "karnite", "name": "Karnite", "category": "gemstone", "tier": 3, "baseValue": 105, "producer": ["rocky"], "demand": ["gas","ice","lava","capital","station"], "weight": 3, "flavor": "Stone that remembers being a mountain.", "icon": 108 }, { "id": "jovian-sapphire", "name": "Jovian Sapphire", "category": "gemstone", "tier": 3, "baseValue": 118, "producer": ["gas"], "demand": ["rocky","ice","lava","capital","terran"], "weight": 3, "flavor": "The sky of a world with no ground.", "icon": 109 }, { "id": "frost-diamond", "name": "Frost Diamond", "category": "gemstone", "tier": 3, "baseValue": 135, "producer": ["ice"], "demand": ["lava","arid","rocky","gas","capital"], "weight": 3, "flavor": "Cold, cut to a point.", "icon": 110 }, { "id": "magma-ruby", "name": "Magma Ruby", "category": "gemstone", "tier": 3, "baseValue": 128, "producer": ["lava"], "demand": ["ice","rocky","gas","capital","terran"], "weight": 3, "flavor": "Fire, held still.", "icon": 111 }, { "id": "aether-crystal", "name": "Aether Crystal", "category": "gemstone", "tier": 3, "baseValue": 140, "producer": ["station"], "demand": ["capital","rocky","gas"], "weight": 2, "flavor": "Grown in the quiet between stars.", "icon": 112 }, { "id": "imperial-diamond", "name": "Imperial Diamond", "category": "gemstone", "tier": 4, "baseValue": 300, "producer": ["capital"], "demand": ["capital","station","terran","rocky","gas","ice","lava"],"weight": 2, "flavor": "The measure by which all others are weighed.", "icon": 113 }, { "id": "special-package", "name": "Special Package", "category": "quest", "tier": 1, "baseValue": 0, "producer": [], "demand": [], "weight": 0, "flavor": "Sealed. Do not open. It will wait for you.", "icon": 114, "tradeable": false, "sellFor": 0, "_comment": "'Special Delivery' quest cargo (data/quests.json → special_delivery.packageGood): it lands in the ship's hold at the NEUTRAL CAPITAL's bar scene (GameScene.onVignetteComplete → _handoffSpecialPackage) and must be carried home. tradeable:false — no shop floor stocks it, the capital does not buy it back (Economy.shopFor filters it out), and the SELL grid refuses the bay EVERYWHERE EXCEPT THE HOME WORLD (TradeGrid._sellable — the grid's questSell flag is set only on the home world's shop; the tooltip says NOT FOR SALE elsewhere). On the home world it is saleable at its flat sellFor (ZERO credits — the delivery, not a commodity; Economy.questCargoSellPrice, tradePreview prices it flat where it is saleable). THAT sale is the quest's step 3: ShopView.confirm hands it to GameScene.onQuestPackageSold, which stands the 'packageDelivered' witness (story.delivered, monotonic). It is the catalog's one quest good: the sheet's spare cell 114 (assets/images/goods.png — 120 cells, 12 across)." } ] }