fertig-classic-games/data/mastervega-rules.json

446 lines
64 KiB
JSON

{
"_readme": "Master of Vega — rule set. Compiled and validated by src/games/mastervega/VegaRules.js; every number here is tunable without touching code. Techs form six independent linear chains (one per field); tier doubles as the topological rank. Frame indexes are APPEND-ONLY: never renumber, only add at the end, or existing drop-in artwork silently shifts.",
"version": 1,
"techFields": [
{ "id": "computers", "name": "Computers", "desc": "Targeting, scanners, espionage and research throughput.", "iconFrame": 0 },
{ "id": "construction","name": "Construction", "desc": "Hull armour, damage control and industrial efficiency.", "iconFrame": 1 },
{ "id": "forcefields", "name": "Force Fields", "desc": "Deflector shields, planetary shields and cloaking.", "iconFrame": 2 },
{ "id": "planetology", "name": "Planetology", "desc": "Terraforming, ecology and colonising hostile worlds.", "iconFrame": 3 },
{ "id": "propulsion", "name": "Propulsion", "desc": "Engine speed and the fuel range that lights up the map.", "iconFrame": 4 },
{ "id": "weapons", "name": "Weapons", "desc": "Beams, missiles and planet-cracking bombs.", "iconFrame": 5 }
],
"_techsReadme": "prereqs is always 0 or 1 entries, pointing at the previous tech in the same field. tier must equal the topological rank. effects is a free-form bag read by VegaShips (weapon/armor/shield/engine/fuelRange/targeting) and VegaLogic (everything else).",
"techs": [
{ "id": "electroniccomputer", "name": "Electronic Computer", "field": "computers", "tier": 0, "prereqs": [], "cost": 60, "iconFrame": 6, "desc": "Mark I battle computer. +1 to hit.", "effects": { "targeting": 1 } },
{ "id": "battlescanner", "name": "Battle Scanner", "field": "computers", "tier": 1, "prereqs": ["electroniccomputer"], "cost": 150, "iconFrame": 7, "desc": "Reveals enemy fleet composition and adds combat initiative.", "effects": { "initiative": 2, "scanRange": 1 } },
{ "id": "optroniccomputer", "name": "Optronic Computer", "field": "computers", "tier": 2, "prereqs": ["battlescanner"], "cost": 400, "iconFrame": 8, "desc": "Mark II battle computer. +2 to hit.", "effects": { "targeting": 2 } },
{ "id": "neuralscanner", "name": "Neural Scanner", "field": "computers", "tier": 3, "prereqs": ["optroniccomputer"], "cost": 900, "iconFrame": 9, "desc": "Deep-scan interrogation. Espionage missions far more likely.", "effects": { "espionage": 15 } },
{ "id": "tachyoncomputer", "name": "Tachyon Computer", "field": "computers", "tier": 3, "prereqs": ["optroniccomputer"], "cost": 900, "iconFrame": 66, "desc": "Overclocked targeting matrix, no spycraft. +4 to hit.", "effects": { "targeting": 4 } },
{ "id": "positroniccomputer", "name": "Positronic Computer", "field": "computers", "tier": 4, "prereqs": ["neuralscanner"], "cost": 1800, "iconFrame": 10, "desc": "Mark III battle computer. +3 to hit.", "effects": { "targeting": 3 } },
{ "id": "cybersecuritylink", "name": "Cyber Security Link", "field": "computers", "tier": 5, "prereqs": ["positroniccomputer"], "cost": 3200, "iconFrame": 11, "desc": "Hardened colony networks. Enemy spies rarely get through.", "effects": { "counterEspionage": 25 } },
{ "id": "emissionsguidance", "name": "Emissions Guidance", "field": "computers", "tier": 6, "prereqs": ["cybersecuritylink"], "cost": 5400, "iconFrame": 12, "desc": "Mark IV battle computer. +4 to hit.", "effects": { "targeting": 4 } },
{ "id": "oracleinterface", "name": "Oracle Interface", "field": "computers", "tier": 7, "prereqs": ["emissionsguidance"], "cost": 8600, "iconFrame": 13, "desc": "Mark V battle computer, and research output climbs sharply.", "effects": { "targeting": 5, "researchMult": 1.15 } },
{ "id": "omniscanarray", "name": "Omniscan Array", "field": "computers", "tier": 7, "prereqs": ["emissionsguidance"], "cost": 8600, "iconFrame": 67, "desc": "Full-spectrum battle sensors. +5 to hit and always strikes first.", "effects": { "targeting": 5, "initiative": 5 } },
{ "id": "cybertroniccomputer","name": "Cybertronic Computer", "field": "computers", "tier": 8, "prereqs": ["oracleinterface"], "cost": 13000, "iconFrame": 14, "desc": "Mark VI battle computer. +6 to hit.", "effects": { "targeting": 6 } },
{ "id": "galacticcybernet", "name": "Galactic Cybernet", "field": "computers", "tier": 9, "prereqs": ["cybertroniccomputer"], "cost": 20000, "iconFrame": 15, "desc": "Mark VII battle computer and an empire-wide research grid.", "effects": { "targeting": 7, "researchMult": 1.3 } },
{ "id": "reinforcedhull", "name": "Reinforced Hull", "field": "construction", "tier": 0, "prereqs": [], "cost": 60, "iconFrame": 16, "desc": "Cross-braced spaceframes. Hulls absorb 25% more damage.", "effects": { "armor": { "name": "Reinforced", "hpMult": 1.25 } } },
{ "id": "duralloyarmor", "name": "Duralloy Armour", "field": "construction", "tier": 1, "prereqs": ["reinforcedhull"], "cost": 160, "iconFrame": 17, "desc": "Duralloy plating. Hulls absorb 50% more damage.", "effects": { "armor": { "name": "Duralloy", "hpMult": 1.5 } } },
{ "id": "improvedindustrial", "name": "Improved Industrial Tech","field": "construction","tier": 2,"prereqs": ["duralloyarmor"], "cost": 420, "iconFrame": 18, "desc": "Factories cost 20% less to build and to run.", "effects": { "factoryCostMult": 0.8 } },
{ "id": "nanitehullsealant", "name": "Nanite Hull Sealant", "field": "construction", "tier": 2, "prereqs": ["duralloyarmor"], "cost": 420, "iconFrame": 68, "desc": "Self-sealing microfractures. Ships repair 2% of their hull between combat rounds.", "effects": { "repairPerRound": 0.02 } },
{ "id": "zortriumarmor", "name": "Zortrium Armour", "field": "construction", "tier": 3, "prereqs": ["improvedindustrial"], "cost": 950, "iconFrame": 19, "desc": "Zortrium plating. Hulls absorb 80% more damage.", "effects": { "armor": { "name": "Zortrium", "hpMult": 1.8 } } },
{ "id": "autorepairunit", "name": "Automated Repair Unit", "field": "construction", "tier": 4, "prereqs": ["zortriumarmor"], "cost": 1900, "iconFrame": 20, "desc": "Ships repair 3% of their hull between combat rounds.", "effects": { "repairPerRound": 0.03 } },
{ "id": "andriumarmor", "name": "Andrium Armour", "field": "construction", "tier": 5, "prereqs": ["autorepairunit"], "cost": 3400, "iconFrame": 21, "desc": "Andrium plating. Hulls absorb 110% more damage.", "effects": { "armor": { "name": "Andrium", "hpMult": 2.1 } } },
{ "id": "damagecontrol", "name": "Advanced Damage Control","field": "construction","tier": 6, "prereqs": ["andriumarmor"], "cost": 5600, "iconFrame": 22, "desc": "Damaged ships rejoin the line faster and cost less to refit.", "effects": { "repairPerRound": 0.06, "refitCostMult": 0.7 } },
{ "id": "redundantlifesupport","name": "Redundant Life Support","field": "construction", "tier": 6, "prereqs": ["andriumarmor"], "cost": 5600, "iconFrame": 69, "desc": "Backup systems patch hulls faster in the heat of battle. Ships repair 7% each round.", "effects": { "repairPerRound": 0.07 } },
{ "id": "tritaniumarmor", "name": "Tritanium Armour", "field": "construction", "tier": 7, "prereqs": ["damagecontrol"], "cost": 9000, "iconFrame": 23, "desc": "Tritanium plating. Hulls absorb 150% more damage.", "effects": { "armor": { "name": "Tritanium", "hpMult": 2.5 } } },
{ "id": "adamantiumarmor", "name": "Adamantium Armour", "field": "construction", "tier": 8, "prereqs": ["tritaniumarmor"], "cost": 14000, "iconFrame": 24, "desc": "Adamantium plating. Hulls absorb 200% more damage.", "effects": { "armor": { "name": "Adamantium", "hpMult": 3.0 } } },
{ "id": "neutroniumarmor", "name": "Neutronium Armour", "field": "construction", "tier": 9, "prereqs": ["adamantiumarmor"], "cost": 21000, "iconFrame": 25, "desc": "Degenerate-matter plating. Hulls absorb 260% more damage.", "effects": { "armor": { "name": "Neutronium", "hpMult": 3.6 } } },
{ "id": "deflectori", "name": "Class I Deflector Shield","field": "forcefields","tier": 0, "prereqs": [], "cost": 80, "iconFrame": 26, "desc": "Absorbs 1 point from every incoming hit.", "effects": { "shield": 1 } },
{ "id": "personalshield", "name": "Personal Shield", "field": "forcefields", "tier": 1, "prereqs": ["deflectori"], "cost": 200, "iconFrame": 27, "desc": "Shielded infantry. +10 to ground combat on attack and defence.","effects": { "groundAttack": 10, "groundDefense": 10 } },
{ "id": "pointdefensegrid", "name": "Point-Defense Grid", "field": "forcefields", "tier": 1, "prereqs": ["deflectori"], "cost": 200, "iconFrame": 70, "desc": "Automated point-defense turrets. Fleets react a beat faster in combat.", "effects": { "initiative": 1 } },
{ "id": "deflectoriii", "name": "Class III Deflector", "field": "forcefields", "tier": 2, "prereqs": ["personalshield"], "cost": 500, "iconFrame": 28, "desc": "Absorbs 2 points from every incoming hit.", "effects": { "shield": 2 } },
{ "id": "planetaryshield5", "name": "Planetary Shield V", "field": "forcefields", "tier": 3, "prereqs": ["deflectoriii"], "cost": 1100, "iconFrame": 29, "desc": "Colonies shrug off 5 points from every orbital bombardment.", "effects": { "planetaryShield": 5 } },
{ "id": "deflectorv", "name": "Class V Deflector", "field": "forcefields", "tier": 4, "prereqs": ["planetaryshield5"], "cost": 2100, "iconFrame": 30, "desc": "Absorbs 3 points from every incoming hit.", "effects": { "shield": 3 } },
{ "id": "stealthfield", "name": "Stealth Field", "field": "forcefields", "tier": 5, "prereqs": ["deflectorv"], "cost": 3600, "iconFrame": 31, "desc": "Cloaked hulls. Fleets move unseen and strike first.", "effects": { "cloaked": true, "initiative": 3 } },
{ "id": "deflectorvii", "name": "Class VII Deflector", "field": "forcefields", "tier": 6, "prereqs": ["stealthfield"], "cost": 6000, "iconFrame": 32, "desc": "Absorbs 5 points from every incoming hit.", "effects": { "shield": 5 } },
{ "id": "planetaryshield15", "name": "Planetary Shield XV", "field": "forcefields", "tier": 7, "prereqs": ["deflectorvii"], "cost": 9500, "iconFrame": 33, "desc": "Colonies shrug off 15 points from every orbital bombardment.", "effects": { "planetaryShield": 15 } },
{ "id": "deepshieldharmonics","name": "Deep Shield Harmonics", "field": "forcefields", "tier": 7, "prereqs": ["deflectorvii"], "cost": 9500, "iconFrame": 71, "desc": "Ship-side shield regenerators. Absorbs 6 points from every incoming hit.", "effects": { "shield": 6 } },
{ "id": "deflectorx", "name": "Class X Deflector", "field": "forcefields", "tier": 8, "prereqs": ["planetaryshield15"], "cost": 15000, "iconFrame": 34, "desc": "Absorbs 7 points from every incoming hit.", "effects": { "shield": 7 } },
{ "id": "blackholegenerator", "name": "Black Hole Generator", "field": "forcefields", "tier": 9, "prereqs": ["deflectorx"], "cost": 22000, "iconFrame": 35, "desc": "Folds enemy hulls into a singularity. Devastating in battle.", "effects": { "shield": 9, "singularity": true } },
{ "id": "ecorestoration", "name": "Ecological Restoration","field": "planetology", "tier": 0, "prereqs": [], "cost": 70, "iconFrame": 36, "desc": "Industrial waste costs 25% less to clean up.", "effects": { "wasteMult": 0.75 } },
{ "id": "controlledbarren", "name": "Controlled Barren Environment","field": "planetology","tier": 1,"prereqs": ["ecorestoration"], "cost": 180, "iconFrame": 37, "desc": "Sealed habitats let you colonise barren worlds.", "effects": { "colonizeHostility": 1 } },
{ "id": "enhancedeco", "name": "Enhanced Eco Restoration","field": "planetology","tier": 2, "prereqs": ["controlledbarren"], "cost": 460, "iconFrame": 38, "desc": "Industrial waste costs 50% less to clean up.", "effects": { "wasteMult": 0.5 } },
{ "id": "controlleddead", "name": "Controlled Dead Environment","field": "planetology","tier": 3,"prereqs": ["enhancedeco"], "cost": 1000, "iconFrame": 39, "desc": "Colonise dead worlds stripped of atmosphere.", "effects": { "colonizeHostility": 2 } },
{ "id": "soilenrichment", "name": "Soil Enrichment", "field": "planetology", "tier": 4, "prereqs": ["controlleddead"], "cost": 2000, "iconFrame": 40, "desc": "Every colony supports 15 more population.", "effects": { "maxPopBonus": 15 } },
{ "id": "efficientwastereclamation","name": "Efficient Waste Reclamation","field": "planetology","tier": 4,"prereqs": ["controlleddead"], "cost": 2000, "iconFrame": 72, "desc": "Industrial waste is recycled almost as fast as it's produced. Cleanup costs 40% less.", "effects": { "wasteMult": 0.6 } },
{ "id": "controlledinferno", "name": "Controlled Inferno Environment","field": "planetology","tier": 5,"prereqs": ["soilenrichment"], "cost": 3500, "iconFrame": 41, "desc": "Colonise inferno worlds.", "effects": { "colonizeHostility": 3 } },
{ "id": "atmosphericterraforming","name": "Atmospheric Terraforming","field": "planetology","tier": 6,"prereqs": ["controlledinferno"], "cost": 5800, "iconFrame": 42, "desc": "Every colony supports 25 more population.", "effects": { "maxPopBonus": 25 } },
{ "id": "controlledtoxic", "name": "Controlled Toxic Environment","field": "planetology","tier": 7,"prereqs": ["atmosphericterraforming"],"cost": 9200,"iconFrame": 43,"desc": "Colonise toxic worlds.", "effects": { "colonizeHostility": 4 } },
{ "id": "advancedsoil", "name": "Advanced Soil Enrichment","field": "planetology","tier": 8, "prereqs": ["controlledtoxic"], "cost": 14500, "iconFrame": 44, "desc": "Every colony supports 40 more population.", "effects": { "maxPopBonus": 40 } },
{ "id": "deepterraforming", "name": "Deep Terraforming", "field": "planetology", "tier": 8, "prereqs": ["controlledtoxic"], "cost": 14500, "iconFrame": 73, "desc": "Near-total reclamation. Industrial waste costs 65% less to clean up.", "effects": { "wasteMult": 0.35 } },
{ "id": "controlledradiated", "name": "Controlled Radiated Environment","field": "planetology","tier": 9,"prereqs": ["advancedsoil"], "cost": 21500, "iconFrame": 45, "desc": "Colonise radiated worlds. Nowhere in the galaxy is closed.", "effects": { "colonizeHostility": 5, "maxPopBonus": 15 } },
{ "id": "nuclearengines", "name": "Nuclear Engines", "field": "propulsion", "tier": 0, "prereqs": [], "cost": 60, "iconFrame": 46, "desc": "Warp 1 drives. Fleets crawl, but they cross the dark.", "effects": { "engine": { "name": "Nuclear", "speed": 1 } } },
{ "id": "deuteriumcells", "name": "Deuterium Fuel Cells", "field": "propulsion", "tier": 1, "prereqs": ["nuclearengines"], "cost": 170, "iconFrame": 47, "desc": "Fuel range 7 parsecs. The map opens a little.", "effects": { "fuelRange": 7 } },
{ "id": "reactionthrusters", "name": "Reaction Thrusters", "field": "propulsion", "tier": 1, "prereqs": ["nuclearengines"], "cost": 170, "iconFrame": 74, "desc": "Snap-fire manoeuvring jets. Fleets react a beat faster in combat, though range stays short.", "effects": { "initiative": 1 } },
{ "id": "fusiondrive", "name": "Fusion Drive", "field": "propulsion", "tier": 2, "prereqs": ["deuteriumcells"], "cost": 440, "iconFrame": 48, "desc": "Warp 2 drives.", "effects": { "engine": { "name": "Fusion", "speed": 2 } } },
{ "id": "iridiumcells", "name": "Iridium Fuel Cells", "field": "propulsion", "tier": 3, "prereqs": ["fusiondrive"], "cost": 980, "iconFrame": 49, "desc": "Fuel range 9 parsecs.", "effects": { "fuelRange": 9 } },
{ "id": "sublightdrive", "name": "Sub-Light Drive", "field": "propulsion", "tier": 4, "prereqs": ["iridiumcells"], "cost": 2000, "iconFrame": 50, "desc": "Warp 3 drives.", "effects": { "engine": { "name": "Sub-Light", "speed": 3 } } },
{ "id": "uridiumcells", "name": "Uridium Fuel Cells", "field": "propulsion", "tier": 5, "prereqs": ["sublightdrive"], "cost": 3600, "iconFrame": 51, "desc": "Fuel range 12 parsecs. Half the galaxy lights up.", "effects": { "fuelRange": 12 } },
{ "id": "tachyondrivecoils", "name": "Tachyon Drive Coils", "field": "propulsion", "tier": 5, "prereqs": ["sublightdrive"], "cost": 3600, "iconFrame": 75, "desc": "Precognitive drive telemetry. A further edge in combat tempo, at the cost of range.", "effects": { "initiative": 2 } },
{ "id": "impulsedrive", "name": "Impulse Drive", "field": "propulsion", "tier": 6, "prereqs": ["uridiumcells"], "cost": 5900, "iconFrame": 52, "desc": "Warp 4 drives.", "effects": { "engine": { "name": "Impulse", "speed": 4 } } },
{ "id": "thoriumcells", "name": "Thorium Fuel Cells", "field": "propulsion", "tier": 7, "prereqs": ["impulsedrive"], "cost": 9400, "iconFrame": 53, "desc": "Fuel range 18 parsecs. Range stops being a constraint.", "effects": { "fuelRange": 18 } },
{ "id": "interphaseddrive", "name": "Interphased Drive", "field": "propulsion", "tier": 8, "prereqs": ["thoriumcells"], "cost": 14800, "iconFrame": 54, "desc": "Warp 5 drives.", "effects": { "engine": { "name": "Interphased", "speed": 5 } } },
{ "id": "hyperspacecomms", "name": "Hyperspace Communications","field": "propulsion","tier": 9,"prereqs": ["interphaseddrive"], "cost": 21000, "iconFrame": 55, "desc": "Warp 6 drives and fleets redirected in mid-flight.", "effects": { "engine": { "name": "Hyperspace", "speed": 6 }, "redirectInFlight": true } },
{ "id": "lasercannon", "name": "Laser Cannon", "field": "weapons", "tier": 0, "prereqs": [], "cost": 60, "iconFrame": 56, "desc": "The first real gun. 1-4 damage.", "effects": { "weapon": { "id": "laser", "name": "Laser Cannon", "kind": "beam", "min": 1, "max": 4, "shots": 1, "space": 2, "cost": 8 } } },
{ "id": "hypervrockets", "name": "Hyper-V Rockets", "field": "weapons", "tier": 1, "prereqs": ["lasercannon"], "cost": 160, "iconFrame": 57, "desc": "Cheap standoff missiles. 6 damage, 2 salvoes.", "effects": { "weapon": { "id": "hyperv", "name": "Hyper-V Rocket", "kind": "missile", "min": 6, "max": 6, "shots": 4, "space": 4, "cost": 10 } } },
{ "id": "neutronpellet", "name": "Neutron Pellet Gun", "field": "weapons", "tier": 2, "prereqs": ["hypervrockets"], "cost": 430, "iconFrame": 58, "desc": "Shield-piercing pellets. 2-6 damage.", "effects": { "weapon": { "id": "pellet", "name": "Neutron Pellet Gun", "kind": "beam", "min": 2, "max": 6, "shots": 1, "space": 3, "cost": 12, "shieldPierce": 2 } } },
{ "id": "protontorpedoes", "name": "Proton Torpedoes", "field": "weapons", "tier": 2, "prereqs": ["hypervrockets"], "cost": 430, "iconFrame": 76, "desc": "Slow, but heavier warheads than Hyper-V. 10 damage, 2 salvoes.", "effects": { "weapon": { "id": "protontorpedo", "name": "Proton Torpedo", "kind": "missile", "min": 10, "max": 10, "shots": 2, "space": 5, "cost": 14 } } },
{ "id": "ioncannon", "name": "Ion Cannon", "field": "weapons", "tier": 3, "prereqs": ["neutronpellet"], "cost": 960, "iconFrame": 59, "desc": "3-8 damage.", "effects": { "weapon": { "id": "ion", "name": "Ion Cannon", "kind": "beam", "min": 3, "max": 8, "shots": 1, "space": 4, "cost": 18 } } },
{ "id": "merculitemissiles", "name": "Merculite Missiles", "field": "weapons", "tier": 4, "prereqs": ["ioncannon"], "cost": 1950, "iconFrame": 60, "desc": "10 damage, 2 salvoes, long reach.", "effects": { "weapon": { "id": "merculite", "name": "Merculite Missile", "kind": "missile", "min": 10, "max": 10, "shots": 4, "space": 6, "cost": 20 } } },
{ "id": "neutronblaster", "name": "Neutron Blaster", "field": "weapons", "tier": 5, "prereqs": ["merculitemissiles"], "cost": 3400, "iconFrame": 61, "desc": "5-12 damage and it kills crew through the hull.", "effects": { "weapon": { "id": "neutronblaster", "name": "Neutron Blaster", "kind": "beam", "min": 5, "max": 12, "shots": 1, "space": 5, "cost": 30, "shieldPierce": 1 } } },
{ "id": "hyperxrockets", "name": "Hyper-X Rockets", "field": "weapons", "tier": 6, "prereqs": ["neutronblaster"], "cost": 5700, "iconFrame": 62, "desc": "14 damage, 3 salvoes.", "effects": { "weapon": { "id": "hyperx", "name": "Hyper-X Rocket", "kind": "missile", "min": 16, "max": 16, "shots": 5, "space": 8, "cost": 32 } } },
{ "id": "gravitonbeam", "name": "Graviton Beam", "field": "weapons", "tier": 6, "prereqs": ["neutronblaster"], "cost": 5700, "iconFrame": 77, "desc": "Warps space directly onto the target. 12-20 damage, punches through shields.", "effects": { "weapon": { "id": "gravitonbeam", "name": "Graviton Beam", "kind": "beam", "min": 12, "max": 20, "shots": 1, "space": 7, "cost": 34, "shieldPierce": 2 } } },
{ "id": "fusionbeam", "name": "Fusion Beam", "field": "weapons", "tier": 7, "prereqs": ["hyperxrockets"], "cost": 9100, "iconFrame": 63, "desc": "8-16 damage.", "effects": { "weapon": { "id": "fusionbeam", "name": "Fusion Beam", "kind": "beam", "min": 8, "max": 16, "shots": 1, "space": 6, "cost": 45 } } },
{ "id": "deathray", "name": "Death Ray", "field": "weapons", "tier": 8, "prereqs": ["fusionbeam"], "cost": 14200, "iconFrame": 64, "desc": "15-40 damage. Fleets evaporate.", "effects": { "weapon": { "id": "deathray", "name": "Death Ray", "kind": "beam", "min": 15, "max": 40, "shots": 1, "space": 12, "cost": 90 } } },
{ "id": "stellarconverter", "name": "Stellar Converter", "field": "weapons", "tier": 9, "prereqs": ["deathray"], "cost": 21000, "iconFrame": 65, "desc": "30-70 damage, and it can crack a colony from orbit.", "effects": { "weapon": { "id": "stellarconverter", "name": "Stellar Converter", "kind": "beam", "min": 30, "max": 70, "shots": 1, "space": 20, "cost": 150, "planetCracker": true } } }
],
"_hullsReadme": "Preset ship classes — there is no ship designer. space is the weapon capacity a Mark refit fills with the best available weapon; VegaShips.js derives every other stat from the owner's researched tech.",
"hulls": [
{ "id": "scout", "name": "Scout", "role": "recon", "baseCost": 18, "baseHp": 10, "space": 0, "speedBonus": 2, "rangeBonus": 3, "frame": 0, "desc": "Unarmed, fast and long-legged. Peels back the dark." },
{ "id": "colonyship", "name": "Colony Ship", "role": "colony", "baseCost": 100, "baseHp": 18, "space": 0, "speedBonus": 0, "rangeBonus": 0, "frame": 1, "desc": "Carries a founding population. Consumed on arrival." },
{ "id": "transport", "name": "Troop Transport","role": "troops","baseCost": 40, "baseHp": 20, "space": 0, "speedBonus": 0, "rangeBonus": 0, "frame": 2, "troops": 4, "desc": "Four divisions of marines for boarding and invasion." },
{ "id": "poptransport","name": "Colony Transport","role": "colony","baseCost": 30,"baseHp": 20, "space": 0, "speedBonus": 0, "rangeBonus": 0, "frame": 2, "desc": "Ferries colonists between worlds you already hold. Dispatched directly from a colony's Send Population order, never built from the queue — shares the Troop Transport's hull picture (frame 2, the ships sheet is full at 8 columns)." },
{ "id": "frigate", "name": "Frigate", "role": "warship", "baseCost": 35, "baseHp": 18, "space": 6, "speedBonus": 1, "rangeBonus": 1, "frame": 3, "desc": "Cheap escort. Screens the line and hunts scouts." },
{ "id": "destroyer", "name": "Destroyer", "role": "warship", "baseCost": 90, "baseHp": 40, "space": 14, "speedBonus": 1, "rangeBonus": 0, "frame": 4, "desc": "The workhorse combatant of any mid-game fleet." },
{ "id": "cruiser", "name": "Cruiser", "role": "warship", "baseCost": 240, "baseHp": 100, "space": 32, "speedBonus": 0, "rangeBonus": 0, "frame": 5, "desc": "Heavy line ship. Expensive enough to hurt when it dies." },
{ "id": "battleship", "name": "Battleship", "role": "warship", "baseCost": 640, "baseHp": 260, "space": 72, "speedBonus": 0, "rangeBonus": 0, "frame": 6, "desc": "A mobile fortress. Whole economies are built to field these." },
{ "id": "starbase", "name": "Star Base", "role": "base", "baseCost": 200, "baseHp": 160, "space": 40, "speedBonus": 0, "rangeBonus": 0, "frame": 7, "immobile": true, "desc": "Orbital fortress. Never moves, and extends fuel range." }
],
"_buildingsReadme": "Colony structures. channel names the slider a building multiplies (industry/research/defense/ecology/ships), or is null for a flat effect. Buildings are built from the colony queue; effects stack multiplicatively within a channel.",
"buildings": [
{ "id": "automatedfactory", "name": "Automated Factory", "prereq": null, "cost": 60, "upkeep": 1, "channel": "industry", "mult": 1.5, "frame": 0, "desc": "+50% industrial output." },
{ "id": "researchlab", "name": "Research Laboratory","prereq": "electroniccomputer", "cost": 90, "upkeep": 2, "channel": "research", "mult": 1.5, "frame": 1, "desc": "+50% research output." },
{ "id": "missilebase", "name": "Missile Base", "prereq": "hypervrockets", "cost": 80, "upkeep": 2, "channel": "defense", "mult": 1.6, "frame": 2, "desc": "Ground-launched interceptors bite into orbiting fleets." },
{ "id": "pollutionprocessor","name": "Pollution Processor","prereq": "ecorestoration", "cost": 70, "upkeep": 1, "channel": "ecology", "mult": 0.6, "frame": 3, "desc": "Waste cleanup costs 40% less on this world." },
{ "id": "spaceport", "name": "Space Port", "prereq": "deuteriumcells", "cost": 110, "upkeep": 2, "channel": null, "mult": 1, "frame": 4, "effects": { "tradeBonus": 4 }, "desc": "Civilian traffic. +4 BC per turn." },
{ "id": "cloningcenter", "name": "Cloning Center", "prereq": "controlledbarren", "cost": 120, "upkeep": 2, "channel": null, "mult": 1, "frame": 5, "effects": { "growthMult": 1.5 }, "desc": "Population grows 50% faster here." },
{ "id": "groundbattery", "name": "Ground Battery", "prereq": "personalshield", "cost": 95, "upkeep": 2, "channel": null, "mult": 1, "frame": 6, "effects": { "groundDefense": 25 }, "desc": "+25 to ground defence against invasion." },
{ "id": "spycenter", "name": "Spy Center", "prereq": "neuralscanner", "cost": 140, "upkeep": 3, "channel": null, "mult": 1, "frame": 7, "effects": { "espionage": 20 }, "desc": "+20 to espionage and counter-espionage empire-wide." },
{ "id": "planetaryshield", "name": "Planetary Shield", "prereq": "planetaryshield5", "cost": 180, "upkeep": 3, "channel": "defense", "mult": 1.4, "frame": 8, "effects": { "shieldBonus": 5 }, "desc": "A hard shell over the whole colony." },
{ "id": "terraformingplant","name": "Terraforming Plant", "prereq": "soilenrichment", "cost": 200, "upkeep": 3, "channel": null, "mult": 1, "frame": 9, "effects": { "maxPopBonus": 20 }, "desc": "+20 maximum population on this world." },
{ "id": "stockexchange", "name": "Stock Exchange", "prereq": "improvedindustrial", "cost": 160, "upkeep": 2, "channel": null, "mult": 1, "frame": 10, "effects": { "tradeMult": 1.5 }, "desc": "Colony trade income up 50%." },
{ "id": "holosimulator", "name": "Holo Simulator", "prereq": "optroniccomputer", "cost": 150, "upkeep": 3, "channel": null, "mult": 1, "frame": 11, "effects": { "moraleBonus": 10, "tradeBonus": 3 }, "desc": "Contented citizens. +10 morale, +3 BC." },
{ "id": "robominers", "name": "Robotic Miners", "prereq": "zortriumarmor", "cost": 210, "upkeep": 3, "channel": "industry", "mult": 1.35, "frame": 12, "desc": "Deep-crust extraction. Another 35% industry." },
{ "id": "supercomputer", "name": "Super Computer", "prereq": "positroniccomputer", "cost": 260, "upkeep": 4, "channel": "research", "mult": 1.4, "frame": 13, "desc": "Another 40% research on this world." },
{ "id": "artemisnet", "name": "Artemis System Net", "prereq": "deflectorv", "cost": 300, "upkeep": 4, "channel": "defense", "mult": 1.5, "frame": 14, "effects": { "mineDamage": 12 }, "desc": "Automated mines damage every hostile fleet that enters." },
{ "id": "soilenrichmentfac","name": "Enrichment Facility","prereq": "atmosphericterraforming","cost": 340,"upkeep": 4,"channel": null, "mult": 1, "frame": 15, "effects": { "maxPopBonus": 35 }, "desc": "+35 maximum population on this world." }
],
"_planetTypesReadme": "hostility is the colonizeHostility level a species needs before it can settle here; 0 is open from turn one. habitability multiplies the size-derived population cap. Gas giants and asteroid belts are never colonisable.",
"planetTypes": [
{ "id": "terran", "name": "Terran", "hostility": 0, "habitability": 1.0, "colonizable": true, "frame": 0, "color": "#3f9d5a", "desc": "Blue skies and deep oceans. The prize of any system." },
{ "id": "ocean", "name": "Ocean", "hostility": 0, "habitability": 0.9, "colonizable": true, "frame": 1, "color": "#2a6fb0", "desc": "A drowned world with scattered archipelagos." },
{ "id": "jungle", "name": "Jungle", "hostility": 0, "habitability": 0.9, "colonizable": true, "frame": 2, "color": "#2f7a34", "desc": "Riotous biomass under permanent cloud." },
{ "id": "steppe", "name": "Steppe", "hostility": 0, "habitability": 0.8, "colonizable": true, "frame": 3, "color": "#8a9c4a", "desc": "Endless grassland and a thin, dry atmosphere." },
{ "id": "arid", "name": "Arid", "hostility": 0, "habitability": 0.7, "colonizable": true, "frame": 4, "color": "#b08a45", "desc": "Cracked riverbeds and a shrinking water table." },
{ "id": "desert", "name": "Desert", "hostility": 0, "habitability": 0.6, "colonizable": true, "frame": 5, "color": "#d0a353", "desc": "Sand seas from pole to pole." },
{ "id": "tundra", "name": "Tundra", "hostility": 0, "habitability": 0.5, "colonizable": true, "frame": 6, "color": "#8fb6c4", "desc": "Permafrost and a sun too far away." },
{ "id": "minimal", "name": "Minimal", "hostility": 0, "habitability": 0.4, "colonizable": true, "frame": 7, "color": "#9a9a86", "desc": "Barely an atmosphere, but it is breathable at noon." },
{ "id": "barren", "name": "Barren", "hostility": 1, "habitability": 0.3, "colonizable": true, "frame": 8, "color": "#8a7f70", "desc": "Airless rock. Habitats only." },
{ "id": "dead", "name": "Dead", "hostility": 2, "habitability": 0.25, "colonizable": true, "frame": 9, "color": "#6d6a63", "desc": "Something lived here once. Nothing does now." },
{ "id": "inferno", "name": "Inferno", "hostility": 3, "habitability": 0.25, "colonizable": true, "frame": 10, "color": "#c2502a", "desc": "Molten surface under a crushing greenhouse." },
{ "id": "toxic", "name": "Toxic", "hostility": 4, "habitability": 0.2, "colonizable": true, "frame": 11, "color": "#7fae3a", "desc": "Corrosive fog that eats through hab domes." },
{ "id": "radiated", "name": "Radiated", "hostility": 5, "habitability": 0.2, "colonizable": true, "frame": 12, "color": "#b6c23a", "desc": "Sterilised by its own star. Shielded colonies only." },
{ "id": "gasgiant", "name": "Gas Giant", "hostility": 9, "habitability": 0, "colonizable": false, "frame": 13, "color": "#c99a5b", "desc": "A banded giant. No surface to stand on." },
{ "id": "asteroids","name": "Asteroid Belt","hostility": 9, "habitability": 0, "colonizable": false, "frame": 14, "color": "#7a7268", "desc": "Shattered rubble. Rich, and impossible to settle." }
],
"planetSizes": [
{ "id": "tiny", "name": "Tiny", "basePop": 20, "weight": 15 },
{ "id": "small", "name": "Small", "basePop": 40, "weight": 25 },
{ "id": "medium", "name": "Medium", "basePop": 60, "weight": 30 },
{ "id": "large", "name": "Large", "basePop": 80, "weight": 20 },
{ "id": "huge", "name": "Huge", "basePop": 100, "weight": 10 }
],
"mineralRichness": [
{ "id": "ultrapoor", "name": "Ultra Poor", "industryMult": 0.5, "weight": 5 },
{ "id": "poor", "name": "Poor", "industryMult": 0.75,"weight": 15 },
{ "id": "normal", "name": "Abundant", "industryMult": 1.0, "weight": 55 },
{ "id": "rich", "name": "Rich", "industryMult": 1.5, "weight": 20 },
{ "id": "ultrarich", "name": "Ultra Rich", "industryMult": 2.0, "weight": 5 }
],
"gravity": [
{ "id": "low", "name": "Low Gravity", "combatMod": -10, "weight": 20 },
{ "id": "normal", "name": "Normal Gravity", "combatMod": 0, "weight": 60 },
{ "id": "high", "name": "High Gravity", "combatMod": -25, "weight": 20 }
],
"_starClassesReadme": "weight drives generation frequency; planetBias shifts the planet-type roll toward the good end (positive) or the hostile end (negative). special marks the flavour objects the star map renders with bespoke effects.",
"starClasses": [
{ "id": "blue", "name": "Blue", "color": "#9fc4ff", "coreColor": "#ffffff", "radius": 15, "weight": 8, "planetBias": -1, "richBias": 2, "special": null, "desc": "A furnace. Rich worlds, and most of them lethal." },
{ "id": "white", "name": "White", "color": "#e8eeff", "coreColor": "#ffffff", "radius": 13, "weight": 12, "planetBias": 0, "richBias": 1, "special": null, "desc": "Hot and steady." },
{ "id": "yellow", "name": "Yellow", "color": "#ffe9a3", "coreColor": "#fffdf0", "radius": 12, "weight": 22, "planetBias": 2, "richBias": 0, "special": null, "desc": "The kind of star that grows people." },
{ "id": "orange", "name": "Orange", "color": "#ffbf7a", "coreColor": "#fff0d8", "radius": 11, "weight": 20, "planetBias": 1, "richBias": 0, "special": null, "desc": "Long-lived and mild." },
{ "id": "red", "name": "Red", "color": "#ff8a6a", "coreColor": "#ffd8c8", "radius": 9, "weight": 22, "planetBias": -1, "richBias": -1, "special": null, "desc": "A dim ember. Cold worlds, poor ore." },
{ "id": "brown", "name": "Brown Dwarf","color": "#a16a55", "coreColor": "#d8a892", "radius": 7, "weight": 8, "planetBias": -2, "richBias": -1, "special": null, "desc": "Barely a star at all." },
{ "id": "binary", "name": "Binary", "color": "#ffd9a0", "coreColor": "#fff6e0", "radius": 11, "weight": 5, "planetBias": 0, "richBias": 1, "special": "binary", "desc": "Two suns locked around a common centre." },
{ "id": "pulsar", "name": "Pulsar", "color": "#c9e6ff", "coreColor": "#ffffff", "radius": 8, "weight": 2, "planetBias": -3, "richBias": 3, "special": "pulsar", "desc": "A lighthouse sweeping the void. Nothing lives nearby." },
{ "id": "blackhole","name": "Black Hole", "color": "#3a2b52", "coreColor": "#050308", "radius": 10, "weight": 1, "planetBias": -9, "richBias": 0, "special": "blackhole", "desc": "Light bends around it. Fleets that linger do not return." }
],
"_speciesReadme": "MOO1's ten races with everything but Humans renamed. Multipliers are relative to 1.0; flat modifiers are additive percentage points. techAffinity is bucketed by VegaRules.techCostFactor into MOO1's Poor/Average/Good/Excellent research-COST multiplier (125/100/80/60%) for that field — matching the real game, where racial skill changes what a tech costs, never whether it exists in your tree. It is ALSO still read by VegaLogic.rollTechAvailability to bias which techs are available at all, which is the OPPOSITE of how MOO1 actually works (there, availability is a flat ~50% roll per tech regardless of skill, 75% for a single research-focused race, with the sole guarantee that the last surviving tech in a rung is never struck out) — that double duty is a known stopgap, to be removed once the tech tree grows branching alternatives per rung for the roll to have something real to strike between.",
"species": [
{
"id": "human", "name": "Human", "adjective": "Human", "plural": "Humans",
"color": "#4f8fe0", "portraitFrame": 0, "shipFrame": 0, "homeworld": "terran",
"desc": "Traders and talkers. Humans win the votes other empires assume they can ignore.",
"strengths": ["Finest diplomats in the galaxy", "+50% trade income"],
"weaknesses": ["No industrial or scientific edge"],
"colonyNames": ["New Meridian", "Concord Point", "Fair Harbor", "Tradewind Station", "Ledgerrest", "Accord City", "Compact Landing", "Exchange Reach", "Bartertown", "Port Solace", "New Geneva", "Wayfarer's Rest", "Handshake Bay", "Common Ground", "New Providence", "Parley Hollow", "Merchant's Crest", "Open Market", "Diplomat's Landing", "Sunward Vale", "Amity Falls", "New Frontier", "Silverleaf Landing", "Charter Cove", "Freeport", "Goodwill Station", "New Alexandria", "Compromise Ridge", "Traders' Rest", "Council Reach", "New Avalon", "Broker's Landing", "Fellowship Point", "Terra Nova Colony", "Coin & Compass", "Truce Hollow", "New Rotterdam", "Silk Route Station", "Envoy's Landing", "Harborlight", "New Carthage", "Pact Hollow", "Steady Hand", "Crossroads Colony", "Welcome Reach", "New Marrakesh", "Handclasp Bay", "Fortune's Landing", "Neutral Ground", "Homeward Bound"],
"traits": {
"industryMult": 1.0, "researchMult": 1.0, "tradeMult": 1.5, "growthMult": 1.0, "ecologyMult": 1.0,
"shipAttack": 0, "shipDefense": 0, "groundAttack": 10, "groundDefense": 10,
"espionage": 0, "counterEspionage": 0, "diplomacy": 40,
"maxPopMult": 1.0, "factoriesPerPop": 2, "highGravityOk": false, "hostileImmune": false, "colonizeAnything": false
},
"techAffinity": { "computers": 1.0, "construction": 1.0, "forcefields": 1.0, "planetology": 1.0, "propulsion": 1.0, "weapons": 1.0 }
},
{
"id": "kestrelli", "name": "Kestrelli", "adjective": "Kestrelli", "plural": "Kestrelli",
"color": "#e0c04f", "portraitFrame": 1, "shipFrame": 1, "homeworld": "terran",
"desc": "Avian aristocrats bred for flight. Their pilots simply do not get hit.",
"strengths": ["Enormous ship defence bonus", "Skilled at propulsion"],
"weaknesses": ["Poor ground troops", "Weak industry"],
"colonyNames": ["Windspire", "Skyhold", "Aerie Prime", "Talon's Rest", "Highwing Reach", "Cloudperch", "Windrider's Roost", "Featherfall", "Zephyr's Crest", "Skybarrow", "Wingspan Hold", "Stormwing Manor", "Gale Aerie", "Sunwing Perch", "Nimbus Court", "Highfeather", "Windgate", "Skysong", "Thermal Rise", "Plumecrest", "Windward Eyrie", "Cirrus Hold", "Featherlight", "Aloft Reach", "Skyfarer's Roost", "Wingward", "Duskwing Hollow", "Windveil", "Sunward Aerie", "Talonreach", "Cloudspire", "Wingfall", "Highcourt Aerie", "Windrush", "Stormcrest", "Nightwing Perch", "Skyward Bastion", "Featherhold", "Glidewind", "Windborn Hall", "Aeriewatch", "Skysworn", "Loftmark", "Windfeather Court", "Cloudreach Manor", "Highflight", "Windcrest Hollow", "Aerielle", "Skygrace", "Windwake"],
"traits": {
"industryMult": 0.9, "researchMult": 1.0, "tradeMult": 1.0, "growthMult": 1.0, "ecologyMult": 1.0,
"shipAttack": 0, "shipDefense": 50, "groundAttack": -10, "groundDefense": -10,
"espionage": 0, "counterEspionage": 0, "diplomacy": 10,
"maxPopMult": 1.0, "factoriesPerPop": 2, "highGravityOk": false, "hostileImmune": false, "colonizeAnything": false
},
"techAffinity": { "computers": 1.0, "construction": 0.9, "forcefields": 1.1, "planetology": 0.9, "propulsion": 1.3, "weapons": 1.0 }
},
{
"id": "ursaal", "name": "Ursaal", "adjective": "Ursaal", "plural": "Ursaal",
"color": "#8a5a34", "portraitFrame": 2, "shipFrame": 2, "homeworld": "terran",
"desc": "Heavy-worlders. An Ursaal division walks through defences that would stop an army.",
"strengths": ["+50 ground combat", "Settles high-gravity worlds without penalty"],
"weaknesses": ["Poor research", "Clumsy diplomats"],
"colonyNames": ["Ironhold", "Stonewall Reach", "Granite Bastion", "Deeproot Hold", "Bedrock Colony", "Anvilfast", "Boulderguard", "Highgrav Hold", "Stonefist", "Ironroot", "Craghold", "Heavyhome", "Fortress Deep", "Stoneshoulder", "Gravitas Hold", "Bastionrock", "Ironclad Reach", "Mountainheart", "Stonebrace", "Ridgehold", "Deepstone", "Ironwall", "Cragfast", "Highstone Bastion", "Bedrock's Edge", "Stoutforge", "Graniteborn", "Ironmarch", "Steadfast Hold", "Boulderreach", "Deepgrav Colony", "Stonewatch", "Ironbrace", "Craghome", "Fortholm", "Heavyhand Reach", "Rockspine", "Stonemarch", "Ironkeep", "Highhold", "Graniteguard", "Deepwall", "Stonefast", "Ironridge", "Massif Hold", "Bedrockmarch", "Stoneheart Colony", "Ironfoot Reach", "Cragmoor", "Foundation Hold"],
"traits": {
"industryMult": 1.0, "researchMult": 0.8, "tradeMult": 1.0, "growthMult": 1.0, "ecologyMult": 1.0,
"shipAttack": 0, "shipDefense": 0, "groundAttack": 50, "groundDefense": 50,
"espionage": 0, "counterEspionage": 0, "diplomacy": -20,
"maxPopMult": 1.0, "factoriesPerPop": 2, "highGravityOk": true, "hostileImmune": false, "colonizeAnything": false
},
"techAffinity": { "computers": 0.8, "construction": 1.2, "forcefields": 1.0, "planetology": 1.0, "propulsion": 0.9, "weapons": 1.1 }
},
{
"id": "umbrix", "name": "Umbrix", "adjective": "Umbrix", "plural": "Umbrix",
"color": "#6b4a8a", "portraitFrame": 3, "shipFrame": 3, "homeworld": "terran",
"desc": "Shapeshifters who wear other species like coats. Nobody trusts them, and everybody is right not to.",
"strengths": ["Unmatched espionage and sabotage", "Steal technology others cannot"],
"weaknesses": ["Every empire starts hostile toward them"],
"colonyNames": ["Shrouded Reach", "Whisper's Veil", "Maskfall", "Duskmask Hollow", "Hidden Face", "Veiled Hollow", "Changeling's Rest", "Shadowseam", "Cloakhaven", "Secondskin", "Nightveil", "Falseface Reach", "Mirrorshade", "Unseen Hollow", "Guisehome", "Shroudmark", "Doubtward", "Silent Mask", "Umbral Rest", "Twoface Reach", "Hushveil", "Shapesong", "Concealed Landing", "Wraithcoat", "Veilborn", "Trustless Hollow", "Otherface", "Nightmask Colony", "Whisperseam", "Shiftveil", "Feigned Hollow", "Skinchange Reach", "Deceiver's Rest", "Camouflage Hold", "Ashenmask", "Voidveil", "Suspicion's Edge", "Cloak & Coat", "Shadowguise", "Unmasked Reach", "Secretskin", "Mimicry Hollow", "Hollow Mirror", "Grayveil", "Substitute's Landing", "Shadowform Colony", "Nightdouble", "Wearer's Rest", "Truthless Hollow", "Undercover Reach"],
"traits": {
"industryMult": 1.0, "researchMult": 1.0, "tradeMult": 1.0, "growthMult": 1.0, "ecologyMult": 1.0,
"shipAttack": 0, "shipDefense": 0, "groundAttack": 0, "groundDefense": 0,
"espionage": 60, "counterEspionage": 30, "diplomacy": -50,
"maxPopMult": 1.0, "factoriesPerPop": 2, "highGravityOk": false, "hostileImmune": false, "colonizeAnything": false
},
"techAffinity": { "computers": 1.2, "construction": 1.0, "forcefields": 1.1, "planetology": 0.9, "propulsion": 1.0, "weapons": 1.0 }
},
{
"id": "kkrix", "name": "Kkrix", "adjective": "Kkrix", "plural": "Kkrix",
"color": "#c46a2a", "portraitFrame": 4, "shipFrame": 4, "homeworld": "terran",
"desc": "A hive that builds without pause, argues with nobody, and understands negotiation not at all.",
"strengths": ["+50% industry on every world"],
"weaknesses": ["Poor research", "Cannot conduct meaningful diplomacy"],
"colonyNames": ["Hive Cluster One", "The Foundry Nest", "Broodwork Colony", "Chitin Hold", "Swarmreach", "Hive Node Seven", "The Endless Weave", "Larval Works", "Drone Assembly", "Hive Cell Twelve", "The Great Warren", "Chitterhold", "Worker's Convergence", "Hive Spindle", "The Unceasing Forge", "Mandible Reach", "Hive Node Three", "Combwork Hold", "The Silent Multitude", "Broodnest Prime", "Hive Lattice", "Chitinguard", "The Tireless Works", "Swarmhold", "Hive Cell Nine", "Larvalreach", "The Ceaseless Hive", "Antennae Point", "Hive Node Four", "Combhold", "The Undivided Nest", "Chamberwork", "Hive Spire Two", "Broodline Colony", "The Iron Swarm", "Waxcomb Hold", "Hive Node Eight", "Massed Works", "The Singular Hive", "Cellblock Warren", "Hive Lattice Five", "Droneworks", "The Multiplying Nest", "Chitterreach", "Hive Node Eleven", "Combined Works", "The Uncounted Swarm", "Sporehold", "Hive Node Six", "The Perfect Colony"],
"traits": {
"industryMult": 1.5, "researchMult": 0.8, "tradeMult": 1.0, "growthMult": 1.0, "ecologyMult": 1.0,
"shipAttack": 0, "shipDefense": 0, "groundAttack": 0, "groundDefense": 0,
"espionage": -20, "counterEspionage": 0, "diplomacy": -40,
"maxPopMult": 1.0, "factoriesPerPop": 2, "highGravityOk": false, "hostileImmune": false, "colonizeAnything": false
},
"techAffinity": { "computers": 0.8, "construction": 1.3, "forcefields": 0.9, "planetology": 1.1, "propulsion": 1.0, "weapons": 1.0 }
},
{
"id": "mekhan", "name": "Mekhan", "adjective": "Mekhan", "plural": "Mekhan",
"color": "#7f8fa0", "portraitFrame": 5, "shipFrame": 5, "homeworld": "terran",
"desc": "Cyborgs who treat a planet as a chassis. Every citizen runs more machines than anyone else can.",
"strengths": ["+2 factories per population", "Strong construction research"],
"weaknesses": ["Filthy — waste piles up twice as fast"],
"colonyNames": ["Circuit Reach", "Ironforge Array", "The Chassis Works", "Gearlock Hold", "Servo Junction", "Foundry Prime", "Piston Hollow", "The Assembly Line", "Cogwork Colony", "Alloy Reach", "The Machine Heart", "Rivethold", "Conduit Bay", "The Forgeworks", "Girderfast", "Wireframe Colony", "The Scrapyard Rise", "Bolted Reach", "Turbine Hold", "The Mainframe", "Steelweld", "Actuator Point", "The Refinery Deep", "Coldsteel Reach", "Chassisguard", "The Fabrication Yard", "Circuitry Hollow", "Bearing Hold", "The Foundry Deep", "Ironlathe", "Sprocket Reach", "The Assembly Core", "Wireworks", "Boltframe Colony", "The Grinding Works", "Hydraulic Hold", "Alloyforge", "The Mechanized Rise", "Weldpoint", "Servohold", "The Combustion Yard", "Ironwire Reach", "Furnace Array", "The Rust Belt", "Coglathe", "The Forgework Deep", "Piston Reach", "Machinehold", "The Overclock", "Steelworks Prime"],
"traits": {
"industryMult": 1.0, "researchMult": 1.0, "tradeMult": 1.0, "growthMult": 1.0, "ecologyMult": 2.0,
"shipAttack": 0, "shipDefense": 0, "groundAttack": 0, "groundDefense": 0,
"espionage": 0, "counterEspionage": 0, "diplomacy": -10,
"maxPopMult": 1.0, "factoriesPerPop": 4, "highGravityOk": false, "hostileImmune": false, "colonizeAnything": false
},
"techAffinity": { "computers": 1.2, "construction": 1.3, "forcefields": 1.0, "planetology": 0.8, "propulsion": 1.0, "weapons": 1.0 }
},
{
"id": "rrashaa", "name": "Rrashaa", "adjective": "Rrashaa", "plural": "Rrashaa",
"color": "#d4913f", "portraitFrame": 6, "shipFrame": 6, "homeworld": "terran",
"desc": "Feline gunners with reflexes no computer improves on. Their beams land when nobody else's would.",
"strengths": ["Enormous ship attack bonus", "Strong weapons research"],
"weaknesses": ["Poor ground defence", "Distrusted"],
"colonyNames": ["Clawreach", "Bloodfang Outpost", "Huntersrest", "Razorclaw Hold", "Stalker's Perch", "Fangmark", "Prowl Hollow", "Sharpshot Reach", "Nightclaw Colony", "Huntground", "Talonfang", "Deadeye Reach", "Bristlefang", "Ambush Hollow", "Clawmark Rise", "Predator's Rest", "Snarl Reach", "Sureshot Hold", "Bloodclaw", "Stalking Grounds", "Fangfall", "Sniper's Roost", "Rakeclaw", "Huntersedge", "Silentpaw Reach", "Marksman's Hollow", "Clawstrike", "Nightprowl Colony", "Trueshot Reach", "Sharpfang", "Ambushpoint", "Huntress Reach", "Clawtip Hold", "Deadshot Hollow", "Prowlers' Rest", "Bloodhunt Reach", "Ripclaw", "Sureclaw", "Stalkfast", "Fangwatch", "Killshot Hollow", "Clawborn Colony", "Huntfang", "Sharpeye Reach", "Ambushfang", "Nightstalk Hold", "Trueclaw", "Preyfall", "Huntersmark", "Clawhold Prime"],
"traits": {
"industryMult": 1.0, "researchMult": 0.9, "tradeMult": 1.0, "growthMult": 1.0, "ecologyMult": 1.0,
"shipAttack": 50, "shipDefense": 0, "groundAttack": 0, "groundDefense": -25,
"espionage": 0, "counterEspionage": 0, "diplomacy": -25,
"maxPopMult": 1.0, "factoriesPerPop": 2, "highGravityOk": false, "hostileImmune": false, "colonizeAnything": false
},
"techAffinity": { "computers": 1.0, "construction": 1.0, "forcefields": 0.9, "planetology": 0.9, "propulsion": 1.0, "weapons": 1.3 }
},
{
"id": "cerebrai", "name": "Cerebrai", "adjective": "Cerebrai", "plural": "Cerebrai",
"color": "#4fb8a8", "portraitFrame": 7, "shipFrame": 7, "homeworld": "terran",
"desc": "Vast fragile intellects. They will out-think the galaxy if they survive long enough to finish thinking.",
"strengths": ["Double research output", "Rarely misses a breakthrough (75% vs 50% research odds)"],
"weaknesses": ["Hopeless in a ground fight"],
"colonyNames": ["The Contemplation", "Axiom's Rest", "Thoughtwell", "The Cogitation", "Insight Reach", "Ponder's Hollow", "The Deduction", "Mindspire", "Theorem Hold", "The Reflection", "Synapse Colony", "Wisdomreach", "The Postulate", "Enigma Hollow", "The Calculation", "Noesis Point", "The Hypothesis", "Reasonhold", "The Contemplative Deep", "Cognizance Reach", "The Inquiry", "Thoughtform Colony", "The Proof", "Logician's Rest", "The Abstraction", "Intellect Hold", "The Meditation", "Puzzlework", "The Conjecture", "Ponderhold", "The Epiphany", "Mindweave Reach", "The Deliberation", "Wisdomhold", "The Paradox", "Thoughtline", "The Revelation", "Synthesis Hollow", "The Understanding", "Cerebrum Reach", "The Discourse", "Knowledgehold", "The Singularity Thought", "Rationale Reach", "The Perception", "Sagehold", "The Great Thinking", "Insightform Colony", "The Awareness", "Mindsreach"],
"traits": {
"industryMult": 1.0, "researchMult": 2.0, "tradeMult": 1.0, "growthMult": 1.0, "ecologyMult": 1.0,
"shipAttack": 0, "shipDefense": 0, "groundAttack": -50, "groundDefense": -50,
"espionage": 0, "counterEspionage": 0, "diplomacy": 0,
"maxPopMult": 1.0, "factoriesPerPop": 2, "highGravityOk": false, "hostileImmune": false, "colonizeAnything": false
},
"techAffinity": { "computers": 1.4, "construction": 1.2, "forcefields": 1.2, "planetology": 1.2, "propulsion": 1.2, "weapons": 1.2 }
},
{
"id": "ssakar", "name": "Ssakar", "adjective": "Ssakar", "plural": "Ssakar",
"color": "#5aa04a", "portraitFrame": 8, "shipFrame": 8, "homeworld": "jungle",
"desc": "Reptilian broodmothers. Ssakar colonies fill to capacity while rivals are still unpacking.",
"strengths": ["Population grows twice as fast"],
"weaknesses": ["Poor research", "Untrusted by the older species"],
"colonyNames": ["Spawning Delta", "The Broodwarren", "Nestmarsh", "Eggcluster Hollow", "Hatchling's Rise", "The Fertile Coil", "Broodmarsh", "Clutchhold", "The Spawning Pools", "Nestreach", "Broodmother's Rest", "The Thousand Eggs", "Hatchreach", "Coilnest", "The Teeming Marsh", "Eggwarren Colony", "Broodhollow", "The Second Clutch", "Nestingground", "Scalebrood Reach", "The Overflowing Nest", "Hatchlingmarsh", "Broodcoil", "The Fertile Reach", "Nestwarren", "Clutchmarsh", "The Endless Brood", "Spawnreach", "Eggmother's Rest", "The Teeming Coil", "Broodnest Deep", "Hatchmarsh", "The Third Clutch", "Nestcoil", "Scalewarren", "The Fecund Marsh", "Broodreach Prime", "Eggclutch Hollow", "The Rising Brood", "Nestmother's Reach", "Coilwarren", "The Sprawling Nest", "Hatchbrood Colony", "Spawnmarsh", "The Fourth Clutch", "Broodwarren Deep", "Nestegg Reach", "The Multiplying Marsh", "Scalenest", "The Great Clutch"],
"traits": {
"industryMult": 1.0, "researchMult": 0.85, "tradeMult": 1.0, "growthMult": 2.0, "ecologyMult": 1.0,
"shipAttack": 0, "shipDefense": 0, "groundAttack": 10, "groundDefense": 0,
"espionage": 0, "counterEspionage": 0, "diplomacy": -20,
"maxPopMult": 1.0, "factoriesPerPop": 2, "highGravityOk": false, "hostileImmune": false, "colonizeAnything": false
},
"techAffinity": { "computers": 0.9, "construction": 1.0, "forcefields": 0.9, "planetology": 1.2, "propulsion": 1.0, "weapons": 1.0 }
},
{
"id": "lithox", "name": "Lithox", "adjective": "Lithox", "plural": "Lithox",
"color": "#9a86c4", "portraitFrame": 9, "shipFrame": 9, "homeworld": "barren",
"desc": "Crystalline life that breathes nothing and fears no atmosphere. They settle where the map says nobody can.",
"strengths": ["Colonise any world from turn one", "Immune to hostile environments and pollution"],
"weaknesses": ["Population grows at half speed", "Cannot negotiate at all"],
"colonyNames": ["Crystalvein", "The Shard", "Silicareach", "Glasswrought Hold", "Prismfall", "The Faceted Rise", "Quartzhold", "Crystalline Deep", "The Refractor", "Stonelight Reach", "Geode Hollow", "The Lattice Fields", "Mineralreach", "Sparkstone Hold", "The Crystal Bloom", "Facetedge", "Glimmerhold", "The Silicate Deep", "Prismwatch", "Crystalgrowth Colony", "The Fractured Rise", "Shardreach", "Latticework", "The Vitreous Deep", "Gleamstone Hold", "Crystalshard Reach", "The Diamond Fields", "Facetreach", "Glasswork Colony", "The Prismatic Deep", "Quartzreach", "Sparkledge", "The Crystalline Rise", "Refractedge", "Silicavein", "The Geode Fields", "Crystalspire", "Mineralight Hold", "The Faceted Deep", "Glassreach", "Vitreous Hollow", "The Shard Fields", "Crystalborn Colony", "Prismreach", "The Lattice Deep", "Stonegleam Hold", "Facetform Reach", "The Silicate Rise", "Crystalwatch", "The Unbreathing Deep"],
"traits": {
"industryMult": 1.0, "researchMult": 1.0, "tradeMult": 1.0, "growthMult": 0.5, "ecologyMult": 0.0,
"shipAttack": 0, "shipDefense": 0, "groundAttack": 0, "groundDefense": 0,
"espionage": -20, "counterEspionage": 20, "diplomacy": -100,
"maxPopMult": 1.0, "factoriesPerPop": 2, "highGravityOk": true, "hostileImmune": true, "colonizeAnything": true
},
"techAffinity": { "computers": 0.9, "construction": 1.2, "forcefields": 1.1, "planetology": 0.7, "propulsion": 0.9, "weapons": 1.0 }
}
],
"_leadersReadme": "Hireable leaders (the MOO2 convenience). kind admin binds to a colony, kind captain binds to a fleet. skills are additive with species traits. Portrait frames are procedural until artwork lands.",
"leaders": [
{ "id": "vexlarr", "name": "Vex Larr", "kind": "admin", "hireCost": 120, "upkeep": 3, "portraitFrame": 0, "skills": { "industryMult": 1.25 }, "bio": "Yard foreman turned governor. Builds fast, explains later." },
{ "id": "sennaquil", "name": "Senna Quil", "kind": "admin", "hireCost": 150, "upkeep": 4, "portraitFrame": 1, "skills": { "researchMult": 1.3 }, "bio": "Ran three universities into brilliance and bankruptcy." },
{ "id": "orrimtal", "name": "Orrim Tal", "kind": "admin", "hireCost": 110, "upkeep": 3, "portraitFrame": 2, "skills": { "tradeMult": 1.4 }, "bio": "Never lost a negotiation he was allowed to finish." },
{ "id": "hessk", "name": "Hessk", "kind": "admin", "hireCost": 130, "upkeep": 3, "portraitFrame": 3, "skills": { "growthMult": 1.4 }, "bio": "Settlement specialist. Knows exactly how many people a rock will hold." },
{ "id": "duvaine", "name": "Duvaine Roth", "kind": "admin", "hireCost": 160, "upkeep": 4, "portraitFrame": 4, "skills": { "ecologyMult": 0.5, "industryMult": 1.15 }, "bio": "Cleans up after industry without slowing it down." },
{ "id": "callarn", "name": "Cal Larn", "kind": "admin", "hireCost": 180, "upkeep": 5, "portraitFrame": 5, "skills": { "industryMult": 1.2, "researchMult": 1.2 }, "bio": "Expensive, and worth it on your capital." },
{ "id": "yrsakane", "name": "Yrsa Kane", "kind": "admin", "hireCost": 140, "upkeep": 4, "portraitFrame": 6, "skills": { "groundDefense": 40 }, "bio": "Fortifies a colony until invading it stops being worth the ships." },
{ "id": "thelnwar", "name": "Theln War", "kind": "admin", "hireCost": 145, "upkeep": 4, "portraitFrame": 7, "skills": { "espionage": 25, "counterEspionage": 25 }, "bio": "Runs the quiet half of your empire." },
{ "id": "rakkurvane","name": "Rakkur Vane", "kind": "captain", "hireCost": 160, "upkeep": 4, "portraitFrame": 8, "skills": { "shipAttack": 30 }, "bio": "Fires on the roll, not the order. It works." },
{ "id": "isolabrey", "name": "Isola Brey", "kind": "captain", "hireCost": 160, "upkeep": 4, "portraitFrame": 9, "skills": { "shipDefense": 30 }, "bio": "Has never lost a hull she was given time to manoeuvre." },
{ "id": "gorvekmul", "name": "Gorvek Mul", "kind": "captain", "hireCost": 190, "upkeep": 5, "portraitFrame": 10, "skills": { "shipAttack": 20, "initiative": 3 }, "bio": "Opens every engagement before the enemy finishes arriving." },
{ "id": "sableorr", "name": "Sable Orr", "kind": "captain", "hireCost": 150, "upkeep": 4, "portraitFrame": 11, "skills": { "repairPerRound": 0.05 }, "bio": "Her damage-control crews are legendary and badly paid." },
{ "id": "kavehsun", "name": "Kaveh Sun", "kind": "captain", "hireCost": 175, "upkeep": 4, "portraitFrame": 12, "skills": { "groundAttack": 45 }, "bio": "Boarding specialist. Takes colonies with the marines already aboard." },
{ "id": "nyxholt", "name": "Nyx Holt", "kind": "captain", "hireCost": 200, "upkeep": 5, "portraitFrame": 13, "skills": { "shipAttack": 20, "shipDefense": 20 }, "bio": "Balanced, reliable, and quietly the best officer available." },
{ "id": "brannok", "name": "Brannok", "kind": "captain", "hireCost": 130, "upkeep": 3, "portraitFrame": 14, "skills": { "speedBonus": 1, "rangeBonus": 2 }, "bio": "Navigator who finds range where the charts say there is none." },
{ "id": "elissedra", "name": "Elis Sedra", "kind": "captain", "hireCost": 210, "upkeep": 6, "portraitFrame": 15, "skills": { "shipAttack": 25, "shipDefense": 15, "initiative": 2 }, "bio": "Flag officer. Give her a battleship and stay out of the way." }
],
"galaxySizes": [
{ "id": "small", "name": "Small", "stars": 24, "width": 2600, "height": 1700, "maxEmpires": 4, "desc": "Cramped. You will meet your neighbours early and often." },
{ "id": "medium", "name": "Medium", "stars": 36, "width": 3400, "height": 2200, "maxEmpires": 5, "desc": "The standard galaxy." },
{ "id": "large", "name": "Large", "stars": 54, "width": 4400, "height": 2800, "maxEmpires": 6, "desc": "Room to expand before anyone objects." },
{ "id": "huge", "name": "Huge", "stars": 70, "width": 5400, "height": 3400, "maxEmpires": 6, "desc": "A long game. Propulsion tech matters more than anything." }
],
"galaxyShapes": [
{ "id": "spiral", "name": "Spiral", "desc": "Two sweeping arms. Long borders, natural chokepoints.", "arms": 2 },
{ "id": "elliptical", "name": "Elliptical", "desc": "A dense even cloud. Everyone is everyone's neighbour.", "arms": 0 },
{ "id": "cluster", "name": "Cluster", "desc": "Knots of stars separated by empty dark.", "arms": 0, "clusters": 5 },
{ "id": "ring", "name": "Ring", "desc": "A torus around a hollow core. Expansion runs two ways.", "arms": 0 }
],
"difficulties": [
{ "id": "simple", "name": "Simple", "aiProdMult": 0.75, "aiResearchMult": 0.75, "aiAggression": 0.5, "aiStartBonus": 0, "humanResearchMult": 1.2, "desc": "The AI will not press an advantage." },
{ "id": "easy", "name": "Easy", "aiProdMult": 0.9, "aiResearchMult": 0.9, "aiAggression": 0.7, "aiStartBonus": 0, "humanResearchMult": 1.1, "desc": "Forgiving." },
{ "id": "normal", "name": "Normal", "aiProdMult": 1.0, "aiResearchMult": 1.0, "aiAggression": 1.0, "aiStartBonus": 0, "humanResearchMult": 1.0, "desc": "An even galaxy." },
{ "id": "hard", "name": "Hard", "aiProdMult": 1.25, "aiResearchMult": 1.25, "aiAggression": 1.3, "aiStartBonus": 1, "humanResearchMult": 1.0, "desc": "The AI starts ahead and stays there if you let it." },
{ "id": "impossible", "name": "Impossible", "aiProdMult": 1.6, "aiResearchMult": 1.6, "aiAggression": 1.6, "aiStartBonus": 2, "humanResearchMult": 1.0, "desc": "You are meant to lose this one." }
],
"council": {
"_readme": "Galactic Council. Convenes once enough of the galaxy is settled, then every interval turns. An empire wins outright at winFraction of total votes; votes are proportional to population.",
"firstTurn": 110,
"interval": 30,
"minColonizedFraction": 0.45,
"winFraction": 0.6667,
"abstainAttitude": -25,
"submitAttitude": -25
},
"economy": {
"_readme": "Core economic constants. Sliders are the five MOO1 allocation channels; buildings multiply the channel they name.",
"channels": ["ships", "defense", "industry", "ecology", "research"],
"channelNames": { "ships": "Construction", "defense": "Defence", "industry": "Industry", "ecology": "Ecology", "research": "Research" },
"startingBC": 100,
"startingPop": 50,
"startingFactories": 30,
"growthRateBase": 0.04,
"factoryCost": 10,
"factoryOutput": 1,
"popOutput": 0.5,
"wastePerFactory": 0.2,
"wasteCleanupCost": 2,
"tradePerPop": 0.3,
"shipUpkeepFraction": 0.02,
"colonyBaseCost": 100,
"reserveTransferLoss": 0.5,
"baseFuelRange": 5,
"starbaseRangeBonus": 4
},
"combat": {
"_readme": "Tactical grid battle. The grid is small on purpose — MOO1 battles are decided by fleet composition, not manoeuvre.",
"gridCols": 12,
"gridRows": 8,
"maxRounds": 60,
"beamRounds": 5,
"baseHitChance": 0.5,
"hitPerTargeting": 0.06,
"hitPerDefense": 0.004,
"hitPerAttack": 0.004,
"beamRange": 1,
"missileRange": 6,
"retreatAfterRound": 1,
"disengageRound": 25,
"planetDefenseBase": 20,
"bombardPopKill": 0.22,
"groundOddsScale": 0.01
},
"victory": {
"_readme": "Two win conditions, matching MOO1: kill everyone, or be voted High Guardian by the Council.",
"conquest": true,
"council": true,
"turnCap": 800,
"stalemateTurn": 150
},
"starNames": [
"Vega", "Altair", "Rigel", "Deneb", "Antares", "Mizar", "Alcor", "Spica", "Procyon", "Regulus",
"Bellatrix", "Castor", "Pollux", "Capella", "Arcturus", "Aldebaran", "Fomalhaut", "Achernar", "Canopus", "Hadar",
"Alnair", "Alphard", "Alnilam", "Saiph", "Mintaka", "Elnath", "Sadr", "Izar", "Rasalhague", "Nunki",
"Kaus", "Menkar", "Algol", "Zubeneschamali", "Unukalhai", "Tarazed", "Alshain", "Sheratan", "Hamal", "Diphda",
"Markab", "Scheat", "Enif", "Sadalsuud", "Skat", "Ancha", "Kitalpha", "Biham", "Homam", "Matar",
"Talitha", "Merak", "Phecda", "Megrez", "Alioth", "Dubhe", "Cor Caroli", "Chara", "Thuban", "Edasich",
"Kochab", "Pherkad", "Yildun", "Errai", "Alfirk", "Alderamin", "Kurhah", "Segin", "Ruchbah", "Caph"
]
}