orbit/data/goods.json

162 lines
39 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"_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)." }
]
}