162 lines
39 KiB
JSON
162 lines
39 KiB
JSON
{
|
||
"_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)." }
|
||
]
|
||
}
|