{ "_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": "securecommarray", "name": "Secure Comm Array", "field": "computers", "tier": 1, "prereqs": ["electroniccomputer"], "cost": 150, "iconFrame": 78, "desc": "Encrypted fleet channels. Enemy spies have a harder time reading your signals.", "effects": { "counterEspionage": 14, "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": "adaptiveresearchalgorithms", "name": "Adaptive Research Algorithms", "field": "computers", "tier": 5, "prereqs": ["positroniccomputer"], "cost": 3200, "iconFrame": 79, "desc": "Machine-learning heuristics comb through lab data around the clock. Research output up 10%, though the network offers no extra hardening against spies.", "effects": { "researchMult": 1.1 } }, { "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": "deepfieldsensorarray","name": "Deep Field Sensor Array", "field": "computers", "tier": 8, "prereqs": ["oracleinterface"], "cost": 13000, "iconFrame": 80, "desc": "Long-baseline sensor net. Fleets see further and react faster, at the cost of raw fire-control precision.", "effects": { "scanRange": 2, "initiative": 2 } }, { "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": "modularhullframes", "name": "Modular Hull Frames", "field": "construction", "tier": 1, "prereqs": ["reinforcedhull"], "cost": 160, "iconFrame": 81, "desc": "Standardised hull sections. Ships refit for less, though the plating itself is no thicker than reinforced hull.", "effects": { "refitCostMult": 0.85 } }, { "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": "roboticassemblylines","name": "Robotic Assembly Lines", "field": "construction", "tier": 4, "prereqs": ["zortriumarmor"], "cost": 1900, "iconFrame": 82, "desc": "Fully robotic production lines undercut even Improved Industrial Tech. Factories cost 25% less to build and run, though the yards spend no effort on hull repair drones.", "effects": { "factoryCostMult": 0.75 } }, { "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": "autonomousrepairswarms","name": "Autonomous Repair Swarms", "field": "construction", "tier": 8, "prereqs": ["tritaniumarmor"], "cost": 14000, "iconFrame": 83, "desc": "Self-directing nanite swarms patch hull breaches faster than any yard crew. Ships repair 9% of their hull between combat rounds, though plating stays at Tritanium grade.", "effects": { "repairPerRound": 0.09 } }, { "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": "modulardeflectorcoils","name": "Modular Deflector Coils","field": "forcefields", "tier": 2, "prereqs": ["personalshield"], "cost": 500, "iconFrame": 84, "desc": "Standardised shield generators drop into any hull. Fleets refit for 15% less, though the coils themselves absorb no extra damage.", "effects": { "refitCostMult": 0.85 } }, { "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": "colonialdeflectorgrid","name": "Colonial Deflector Grid","field": "forcefields", "tier": 5, "prereqs": ["deflectorv"], "cost": 3600, "iconFrame": 85, "desc": "Extends deflector coverage down to the colony surface. Absorbs 8 points from every orbital bombardment, though fleets stay visible on enemy scopes.", "effects": { "planetaryShield": 8 } }, { "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": "harmonicdeflectorarray","name": "Harmonic Deflector Array","field": "forcefields","tier": 8, "prereqs": ["planetaryshield15"], "cost": 15000, "iconFrame": 86, "desc": "Shield harmonics tuned to scramble infiltration attempts. +18 counter-espionage empire-wide, though the array trades depth of coverage for breadth.", "effects": { "counterEspionage": 18 } }, { "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": "preemptivewastefiltration","name": "Preemptive Waste Filtration","field": "planetology","tier": 1,"prereqs": ["ecorestoration"], "cost": 180, "iconFrame": 87, "desc": "Filters industrial runoff before it ever reaches the surface. Waste cleanup costs another 15% less, though it does nothing to open up barren worlds.", "effects": { "wasteMult": 0.65 } }, { "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": "biosphereresearchinitiative","name": "Biosphere Research Initiative","field": "planetology","tier": 2,"prereqs": ["controlledbarren"], "cost": 460, "iconFrame": 88, "desc": "Terraforming survey data doubles as pure science. Research output up 8%, though colonies keep producing waste at the old rate.", "effects": { "researchMult": 1.08 } }, { "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": "xenobotanicalresearchstations","name": "Xenobotanical Research Stations","field": "planetology","tier": 6,"prereqs": ["controlledinferno"], "cost": 5800, "iconFrame": 89, "desc": "Terraforming labs double as pure research outposts. Research output up 10%, though colonies grow no larger for it.", "effects": { "researchMult": 1.1 } }, { "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": "auxiliaryfueltanks", "name": "Auxiliary Fuel Tanks", "field": "propulsion", "tier": 2, "prereqs": ["deuteriumcells"], "cost": 440, "iconFrame": 90, "desc": "Bolt-on tankage extends the envelope. Fuel range 8 parsecs, though the hull still tops out at Warp 1.", "effects": { "fuelRange": 8 } }, { "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": "deepscanrelays", "name": "Deep Scan Relays", "field": "propulsion", "tier": 6, "prereqs": ["uridiumcells"], "cost": 5900, "iconFrame": 91, "desc": "Automated relay buoys dropped along your travel lanes extend detection well past the fleet itself. +2 scan range empire-wide, though the drive itself stays at Warp 3.", "effects": { "scanRange": 2 } }, { "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": "deepspacefuelcells", "name": "Deep-Space Fuel Cells", "field": "propulsion", "tier": 8, "prereqs": ["thoriumcells"], "cost": 14800, "iconFrame": 92, "desc": "The last word in tankage before hyperspace renders range moot. Fuel range 22 parsecs, though the hull stays at Warp 4.", "effects": { "fuelRange": 22 } }, { "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": "pulselaser", "name": "Pulse Laser", "field": "weapons", "tier": 1, "prereqs": ["lasercannon"], "cost": 160, "iconFrame": 93, "desc": "A faster-cycling beam. 2-5 damage every round, forever — no rack to run empty.", "effects": { "weapon": { "id": "pulselaser", "name": "Pulse Laser", "kind": "beam", "min": 2, "max": 5, "shots": 1, "space": 3, "cost": 9 } } }, { "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": "disruptorcannon", "name": "Disruptor Cannon", "field": "weapons", "tier": 4, "prereqs": ["ioncannon"], "cost": 1950, "iconFrame": 94, "desc": "Phase-shifted beam bleeds straight through deflectors. 4-9 damage, ignores 1 point of shield.", "effects": { "weapon": { "id": "disruptor", "name": "Disruptor Cannon", "kind": "beam", "min": 4, "max": 9, "shots": 1, "space": 5, "cost": 22, "shieldPierce": 1 } } }, { "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": "antimattertorpedoes","name": "Antimatter Torpedoes", "field": "weapons", "tier": 8, "prereqs": ["fusionbeam"], "cost": 14200, "iconFrame": 95, "desc": "Warhead payloads with a dozen years of R&D behind them. 22 damage, 4 salvoes, then the racks are empty.", "effects": { "weapon": { "id": "antimattertorpedo", "name": "Antimatter Torpedo", "kind": "missile", "min": 22, "max": 22, "shots": 4, "space": 10, "cost": 70 } } }, { "id": "disintegratorbeam", "name": "Disintegrator Beam", "field": "weapons", "tier": 8, "prereqs": ["fusionbeam"], "cost": 14200, "iconFrame": 96, "desc": "A narrower beam than Death Ray, but tuned to punch clean through deflector harmonics. 10-22 damage, ignores 3 points of shield.", "effects": { "weapon": { "id": "disintegratorbeam", "name": "Disintegrator Beam", "kind": "beam", "min": 10, "max": 22, "shots": 1, "space": 9, "cost": 60, "shieldPierce": 3 } } }, { "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. sizeScale/sizeSpeedMult/turnRateBase (degrees/round) are only consumed by the VegaCombatV2 per-ship prototype (behind ?movsim's Live/V2 toggle) — the live engine (VegaCombat.js) ignores them entirely.", "hulls": [ { "id": "scout", "name": "Scout", "role": "recon", "baseCost": 18, "baseHp": 10, "space": 0, "speedBonus": 2, "rangeBonus": 3, "frame": 0, "sizeScale": 0.4, "sizeSpeedMult": 1.3, "turnRateBase": 170, "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, "sizeScale": 0.9, "sizeSpeedMult": 0.8, "turnRateBase": 90, "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, "sizeScale": 0.8, "sizeSpeedMult": 0.8, "turnRateBase": 90, "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, "sizeScale": 0.8, "sizeSpeedMult": 0.8, "turnRateBase": 90, "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). sizeScale/sizeSpeedMult/turnRateBase intentionally match transport's — they share art and should render/move identically." }, { "id": "frigate", "name": "Frigate", "role": "warship", "baseCost": 35, "baseHp": 18, "space": 6, "speedBonus": 1, "rangeBonus": 1, "frame": 3, "sizeScale": 0.5, "sizeSpeedMult": 1.2, "turnRateBase": 150, "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, "sizeScale": 1.0, "sizeSpeedMult": 1.0, "turnRateBase": 100, "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, "sizeScale": 1.5, "sizeSpeedMult": 0.85, "turnRateBase": 65, "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, "sizeScale": 2.5, "sizeSpeedMult": 0.6, "turnRateBase": 35, "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, "sizeScale": 2.0, "sizeSpeedMult": 0, "turnRateBase": 0, "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." } ], "leaderHiring": { "_readme": "Each leader already on an empire's roster raises what the NEXT one costs that empire — see VegaLogic.js leaderHireCost. costScalePerOwned 0.5 means: 1st leader = list price, 2nd = 1.5x, 3rd = 2x, 4th = 2.5x, 5th = 3x, 6th (the roster cap) = 3.5x. Keeps the shared 16-leader pool from being cleared cheaply by whoever stockpiles BC fastest, without changing the cost of a first hire at all.", "costScalePerOwned": 0.5 }, "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 }, "diplomacy": { "_readme": "Tunables for gifts, trade agreements, border/fleet proximity tension, and enemy-of-my-enemy attitude triangulation. See VegaDiplomacy.js.", "gift": { "tiers": [ { "id": "modest", "name": "Modest Gift", "bc": 25, "delta": 4 }, { "id": "generous", "name": "Generous Gift", "bc": 75, "delta": 9 }, { "id": "lavish", "name": "Lavish Gift", "bc": 200, "delta": 18 } ], "cooldownTurns": 8, "repeatPenaltyFactor": 0.4, "aiProposeChance": 0.06, "aiMaxTreasuryFraction": 0.25 }, "tradeAgreement": { "attitudeThreshold": 15, "formBonus": 10, "bcRatePerPop": 0.05, "aiProposeChance": 0.08 }, "alliance": { "_readme": "AI-proposal side of Alliance. wouldAccept('alliance') reads attitudeThreshold too, so this is the single source of truth for the 45-point bar both proposing and accepting share.", "attitudeThreshold": 45, "aiProposeChance": 0.25 }, "espionage": { "_readme": "Sabotage magnitude and its attitude sting when a runEspionage roll succeeds with mission 'sabotage' (VegaLogic.js). Targeting/frequency/odds are unchanged from the steal-tech path; this only controls what a sabotage success does.", "sabotageFactoriesFraction": 0.25, "sabotageDefenseFraction": 0.25, "sabotageAttitudePenalty": 14 }, "borderTension": { "colonyRange": 6, "colonyMaxPerTurn": 1, "fleetRange": 3, "fleetMaxPerTurn": 2 }, "fleetIntrusion": { "graceTurns": 1, "basePerTurn": 3, "escalationPerTurn": 2, "capPerTurn": 15 }, "triangulation": { "_readme": "Enemy-of-my-enemy pull, and how much it makes empires forgive each other's border/fleet/colony congestion (applyBorderTension, applyFleetProximityTension, checkFleetIntrusions all read sharedEnemyForgiveness).", "hostileThreshold": -10, "perSharedEnemy": 3, "maxPerTurn": 12, "sharedEnemyForgiveness": 0.15, "scope": "galaxy" } }, "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, "cloakEvasion": 0.02, "singularityShieldPierce": 0.5 }, "_combatV2Readme": "Constants for the VegaCombatV2 per-ship prototype only (behind ?movsim's Live/V2 toggle) — completely separate from 'combat' above, which the live engine still reads unmodified. World space is continuous 2D, not a lane, and combat runs in continuous simulated TIME, not discrete rounds: every ship has its own firing cooldown (turnSeconds, seconds between shots — armed the moment it first comes into weapon range of its target, matching real-time engagement rather than a synchronized lockstep round) and moves/turns continuously every tick rather than snapping once per round. moveUnitsPerSpeed is world units per SECOND now (was per old discrete round, at 100) — deliberately slowed down, not just time-converted, per Brian's explicit ask for a slower, more deliberate pace. turnRateScale converts each hull's turnRateBase (still degrees, still hand-tuned per hull, still living in the hulls block) into a per-second max angular velocity; spinUpSeconds is how long a ship takes to spin up to that max rate from a standing start, which is what gives turning real momentum instead of an instant snap. separationUnit/separationWeight tune the collision-avoidance steering (VegaCombatV2.js's computeSeparation) — separationUnit is the 'personal space' radius per point of a hull's sizeScale, so bigger ships keep proportionally more distance. beamRange/missileRange are unchanged by any of this (spatial, not temporal) — every other combat constant (hit-chance coefficients, cloakEvasion, singularityShieldPierce) is shared by reading rules.combat directly, since none of it is range/position/time-scaled; retreatAfterRound/disengageRound are reinterpreted as seconds (×turnSeconds) rather than duplicated here.", "combatV2": { "worldWidth": 3600, "worldHeight": 2400, "moveUnitsPerSpeed": 25, "beamRange": 220, "missileRange": 600, "turnSeconds": 2, "turnRateScale": 0.25, "spinUpSeconds": 1.5, "separationUnit": 70, "separationWeight": 1.2, "disengageFraction": 0.85 }, "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" ] }