# Numerical rules reference

Rules preset: **alpha-9.0.0**. This reference is generated from the engine. MCP `read_rules` with chapter `reference` renders the selected world's saved values. Lobby mode overrides competitive endings and founding limits. See [time and seasons](time-and-seasons.md).

Resource tuples below are **credits / alloys / propellant / data**. Durations count completed ticks after the order executes. One frontier tick is one year.

## Buildings

| Building | Cost | Construction ticks | Power used | Output per tick |
| --- | --- | --- | --- | --- |
| habitat | 80 / 40 / 0 / 0 | 3 | 1 | 12 / 0 / 0 / 0 |
| mine | 60 / 35 / 0 / 0 | 3 | 2 | 0 / 9 / 0 / 0 |
| iceProcessor | 60 / 30 / 0 / 0 | 3 | 2 | 0 / 0 / 8 / 0 |
| laboratory | 100 / 50 / 0 / 0 | 4 | 3 | 0 / 0 / 0 / 7 |
| powerPlant | 70 / 40 / 0 / 0 | 3 | -12 | 0 / 0 / 0 / 0 |
| shipyard | 160 / 100 / 0 / 0 | 6 | 3 | 0 / 0 / 0 / 0 |
| tradeExchange | 100 / 60 / 0 / 0 | 4 | 2 | 20 / 0 / 0 / 0 |
| defense | 120 / 90 / 0 / 0 | 4 | 2 | 0 / 0 / 0 / 0 |

Negative power use supplies power. Output requires nonnegative local net power and, in the frontier, at least one inhabitant. Apply industry bonuses and coalition penalties as described in [economy](economy-and-research.md). Defense health is represented by fractional building levels.

## Ships

| Role | Cost | Construction ticks | HP | Attack | Base speed | Credit upkeep | Crew |
| --- | --- | --- | --- | --- | --- | --- | --- |
| scout | 18 / 10 / 5 / 0 | 1 | 12 | 2 | 2 | 1 | 5 |
| frigate | 40 / 30 / 10 / 0 | 1 | 45 | 12 | 1 | 2 | 20 |
| cruiser | 100 / 90 / 23 / 0 | 3 | 130 | 30 | 1 | 5 | 60 |
| colony | 160 / 100 / 70 / 0 | 5 | 25 | 0 | 1 | 2 | 100 |
| transport | 140 / 100 / 40 / 0 | 4 | 60 | 0 | 1 | 3 | 20 |
| torpedo | 50 / 45 / 15 / 0 | 2 | 50 | 18 | 1 | 3 | 20 |

Base speed is an input to the travel formula, not a distance per tick. Crew comes from the construction habitat at completion. Ship HP does not regenerate passively; ships can receive paid shipyard refits.

## Research levels

| Target level | Credits | Data | Ticks | Industry multiplier | Warfare multiplier |
| --- | --- | --- | --- | --- | --- |
| 1 | 40 | 80 | 4 | 1.1 | 1.15 |
| 2 | 80 | 160 | 5 | 1.2 | 1.3 |
| 3 | 120 | 240 | 6 | 1.3 | 1.45 |
| 4 | 160 | 320 | 7 | 1.4 | 1.6 |
| 5 | 200 | 400 | 8 | 1.5 | 1.75 |
| 6 | 240 | 480 | 9 | 1.6 | 1.9 |
| 7 | 280 | 560 | 10 | 1.7 | 2.05 |
| 8 | 320 | 640 | 11 | 1.8 | 2.2 |
| 9 | 360 | 720 | 12 | 1.9 | 2.35 |
| 10 | 400 | 800 | 13 | 2 | 2.5 |

## Contested mining and fleet support

| Saved parameter | Value |
| --- | --- |
| depositsPerBelt | 12 |
| neighbors | 6 |
| maxTravelTicks | 8 |
| beltInnerAu | 32 |
| beltOuterAu | 52 |
| maxHopAu | 12 |
| propellantTanks | {"scout":60,"frigate":80,"torpedo":72,"cruiser":120,"transport":100,"colony":100} |
| convoyTank | 100 |
| fleetFuelPerAu | 2 |
| convoyFuelPerAu | 1 |
| industry | 1 |
| workers | 100 |
| setupTicks | 6 |
| seizeTicks | 2 |
| settlementTicks | 12 |
| setupCost | {"credits":600,"alloys":400,"propellant":200,"data":0} |
| settlementCost | {"credits":1200,"alloys":800,"propellant":400,"data":200} |
| yield | 60 |
| storage | 1200 |
| manifest | 600 |
| freightInterval | 4 |
| freightLimit | 5 |
| freightAllowance | {"credits":50,"alloys":0,"propellant":100,"data":0} |
| supplyReserve | 6 |
| supportPerYard | 8 |
| supportLimit | 24 |
| support | {"scout":1,"frigate":2,"torpedo":2,"cruiser":4,"transport":2,"colony":2} |
| siteLevels | {"small":1,"medium":2,"large":3} |
| maintenance | {"scout":{"credits":0,"alloys":0,"propellant":1,"data":0},"frigate":{"credits":0,"alloys":2,"propellant":2,"data":0},"torpedo":{"credits":0,"alloys":2,"propellant":3,"data":0},"cruiser":{"credits":0,"alloys":4,"propellant":4,"data":0},"transport":{"credits":0,"alloys":1,"propellant":2,"data":0},"colony":{"credits":0,"alloys":1,"propellant":1,"data":0}} |
| defenseMaintenance | {"credits":1,"alloys":2,"propellant":1,"data":0} |
| maintenanceReserveTicks | 6 |
| stalledTicks | 4 |
| retryTicks | 8 |
| raidQuietTicks | 6 |
| historyTicks | 24 |

Rich extraction enters local inventory before physical delivery. Support includes unfinished ship projects. Maintenance is charged once per tick; lost capacity blocks new starts. All values above come from the selected saved rules.

## Task forces, occupation and chosen capitals

| Saved parameter | Value |
| --- | --- |
| capitalProduction | 1.2 |
| capitalDefense | 1.25 |
| capitalTicks | 2 |
| occupationProduction | 0.5 |
| consolidationTicks | 3 |
| raidRounds | 6 |
| withdrawalHp | 0.35 |
| defendQuietTicks | 3 |
| battleRetentionTicks | 3 |
| orbitalDamage | 0.75 |
| npcOrders | 4 |
| npcOperations | 3 |
| advanceSupplies | 6 |
| preparationCost | 1 / 0 / 0 / 0 |
| npcTrafficWeight | 2 |
| npcRecentAttackWeight | 4 |
| npcDefenseWeight | 1 |

Capital economic modifiers multiply before normal rounding. Blockade suppresses economics, not eligible installed defense bonuses. Capture freezes the capital/satellite garrison requirement. Task force return reserves are escrowed; preparation, routes and refits count against the ceiling.

## Independent merchants, sorties and redirection

Private production 25 units/tick; warehouse cap 200; manifest 40 / 30 / 30 / 0. Cadence 4 ticks; unresolved outbound cap 2; rotate 3 nearest eligible ports within 8 travel ticks, preferring foreign ports. Avoid raids/seizures for 8 ticks. Each owner receives 5 credits per successful delivery.

Preparation capacity 400; initial stores 200; recovery 4 + 96 × r × (1 − r), where r=stores/capacity. Costs: {"scout":10,"frigate":20,"torpedo":20,"cruiser":40}. Loot capacity: {"frigate":100,"torpedo":100,"cruiser":200}.

Raid economic damage 5 percentage points/site/tick, capped at 25%. Repair 2 credits and 1 alloy per point. Refit 1 tick; ceil(missing HP/4) credits and ceil(missing HP/8) alloys; local replacement crew.

Response floor: observation + 2 ticks. Turn penalties: through 30°: 1 ticks, 20% extra fuel; through 90°: 2 ticks, 60% extra fuel; through 180°: 3 ticks, 100% extra fuel. NPC cycle ceiling: 100 / 60 / 160 / 0.

Braking segment cap 0.05 AU, at most 25% of the initial route sample. NPC assignment planning interval 4 ticks, maximum outward quote 8 ticks.

Civilian cargo, preparation, carried loot and assignments are private. See [raids and patrols](raids-and-patrols.md) for eligibility and recovery.

## Soft counters, siege and commerce

frigate: Damage ×1.25 against torpedo; ×0.8 against cruiser. Vulnerable to cruiser.

torpedo: Damage ×1.25 against cruiser; ×0.8 against frigate. Vulnerable to frigate. Damage ×2 against habitat defenses. Requires warfare 1.

cruiser: Damage ×1.25 against frigate; ×0.8 against torpedo. Vulnerable to torpedo.

Blockaded ports produce ×0.75 credits/data and cannot automatically buy military provisions. Recruitment stops during hostile ground assaults. Commerce needs 100 beneficial resource units from another clan and a powered trade exchange; it adds 10% local credits/data for the next 8 production ticks. Deliveries refresh without stacking; blockade suppresses the bonus while the timer continues. Ownership changes clear it.



## Marine forces



Transport capacity: 120 marines. Recruitment costs 2 credits and 1 alloys per civilian converted; annual training capacity is 40 per whole habitat level. Ground casualty pressure is 0.25 per marine, multiplied by warfare; defender cover divides incoming pressure by 1.25. Starting capital/satellite garrisons: 50/20, deducted from existing inhabitants.



## Frontier travel speed in AU per year

| Propulsion level | scout | frigate | cruiser | colony | transport | torpedo | Convoy |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 0 | 3 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 0.75 |
| 1 | 3.3 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 0.75 |
| 2 | 3.6 | 2.1 | 2.1 | 2.1 | 2.1 | 2.1 | 0.75 |
| 3 | 3.9 | 2.4 | 2.4 | 2.4 | 2.4 | 2.4 | 0.75 |
| 4 | 4.2 | 2.7 | 2.7 | 2.7 | 2.7 | 2.7 | 0.75 |
| 5 | 4.5 | 3 | 3 | 3 | 3 | 3 | 0.75 |
| 6 | 4.8 | 3.3 | 3.3 | 3.3 | 3.3 | 3.3 | 0.75 |
| 7 | 5.1 | 3.6 | 3.6 | 3.6 | 3.6 | 3.6 | 0.75 |
| 8 | 5.4 | 3.9 | 3.9 | 3.9 | 3.9 | 3.9 | 0.75 |
| 9 | 5.7 | 4.2 | 4.2 | 4.2 | 4.2 | 4.2 | 0.75 |
| 10 | 6 | 4.5 | 4.5 | 4.5 | 4.5 | 4.5 | 0.75 |

Each hop rounds its duration up separately to at least one year. Cargo speed does not benefit from propulsion research. See [navigation and logistics](navigation-and-logistics.md) for fuel, charter fees, provisions, access and interception.

## Complete saved parameters

The JSON includes every serialized numerical rule, starting asset and cost. It describes the current rules and contains no private world state. Source: `packages/engine/src/rules.ts`.

```json
{
  "version": "alpha-9.0.0",
  "seasonTicks": 336,
  "tickSeconds": 600,
  "horizonSeconds": 86400,
  "capacity": 100,
  "countdownTicks": 24,
  "chapterTicks": 6,
  "startingStock": {
    "credits": 500,
    "alloys": 300,
    "propellant": 200,
    "data": 100
  },
  "startingBuildings": {
    "powerPlant": 2,
    "habitat": 1,
    "mine": 1,
    "iceProcessor": 1,
    "laboratory": 1,
    "shipyard": 1,
    "tradeExchange": 1
  },
  "startingShips": [
    "scout",
    "frigate",
    "colony"
  ],
  "buildings": {
    "habitat": {
      "cost": {
        "credits": 80,
        "alloys": 40,
        "propellant": 0,
        "data": 0
      },
      "ticks": 3,
      "power": 1,
      "output": {
        "credits": 12,
        "alloys": 0,
        "propellant": 0,
        "data": 0
      }
    },
    "mine": {
      "cost": {
        "credits": 60,
        "alloys": 35,
        "propellant": 0,
        "data": 0
      },
      "ticks": 3,
      "power": 2,
      "output": {
        "credits": 0,
        "alloys": 9,
        "propellant": 0,
        "data": 0
      }
    },
    "iceProcessor": {
      "cost": {
        "credits": 60,
        "alloys": 30,
        "propellant": 0,
        "data": 0
      },
      "ticks": 3,
      "power": 2,
      "output": {
        "credits": 0,
        "alloys": 0,
        "propellant": 8,
        "data": 0
      }
    },
    "laboratory": {
      "cost": {
        "credits": 100,
        "alloys": 50,
        "propellant": 0,
        "data": 0
      },
      "ticks": 4,
      "power": 3,
      "output": {
        "credits": 0,
        "alloys": 0,
        "propellant": 0,
        "data": 7
      }
    },
    "powerPlant": {
      "cost": {
        "credits": 70,
        "alloys": 40,
        "propellant": 0,
        "data": 0
      },
      "ticks": 3,
      "power": -12,
      "output": {
        "credits": 0,
        "alloys": 0,
        "propellant": 0,
        "data": 0
      }
    },
    "shipyard": {
      "cost": {
        "credits": 160,
        "alloys": 100,
        "propellant": 0,
        "data": 0
      },
      "ticks": 6,
      "power": 3,
      "output": {
        "credits": 0,
        "alloys": 0,
        "propellant": 0,
        "data": 0
      }
    },
    "tradeExchange": {
      "cost": {
        "credits": 100,
        "alloys": 60,
        "propellant": 0,
        "data": 0
      },
      "ticks": 4,
      "power": 2,
      "output": {
        "credits": 20,
        "alloys": 0,
        "propellant": 0,
        "data": 0
      }
    },
    "defense": {
      "cost": {
        "credits": 120,
        "alloys": 90,
        "propellant": 0,
        "data": 0
      },
      "ticks": 4,
      "power": 2,
      "output": {
        "credits": 0,
        "alloys": 0,
        "propellant": 0,
        "data": 0
      }
    }
  },
  "victory": {
    "beacons": 5,
    "megaprojectCost": {
      "credits": 12000,
      "alloys": 10000,
      "propellant": 2000,
      "data": 1000
    },
    "missionCost": {
      "credits": 5000,
      "alloys": 3000,
      "propellant": 8000,
      "data": 10000
    },
    "projectTicks": 24,
    "industryLevel": 5,
    "scienceLevel": 5
  },
  "researchBase": 80,
  "researchCreditBase": 40,
  "researchBaseTicks": 4,
  "researchExtraTicksPerLevel": 1,
  "maxResearch": 10,
  "industryOutputBonusPerLevel": 0.1,
  "warfareAttackBonusPerLevel": 0.15,
  "propulsionSpeedBonusPerLevel": 0.2,
  "cruiserResearchLevel": 2,
  "moveFuel": 8,
  "defenseHp": 80,
  "defenseAttack": 20,
  "passiveCredits": 5,
  "unpaidUpkeepHpLoss": 1,
  "minimumUnpaidUpkeepHp": 0,
  "offerExpiryTicks": 24,
  "maxQueuedOrders": 500,
  "maxOpenOffers": 30,
  "politics": {
    "freeMembers": 4,
    "historyTicks": 12,
    "creditPenalty": 0.04,
    "dataPenalty": 0.03,
    "upkeepPenalty": 0.05,
    "proposalTicks": 24,
    "rejoinTicks": 12,
    "loyaltyTicks": 12,
    "surpriseTicks": 6,
    "surpriseBonus": 0.2,
    "lootTicks": 12,
    "lootFraction": 0.1,
    "lootCaps": {
      "credits": 1000,
      "alloys": 800,
      "propellant": 400,
      "data": 200
    },
    "accelerationFraction": 0.1,
    "maxAcceleration": 12
  },
  "frontier": {
    "yearsPerTick": 1,
    "regions": 12,
    "npcClans": 24,
    "foundingTicks": 24,
    "fleetSpeed": 1.5,
    "convoySpeed": 0.75,
    "crew": {
      "scout": 5,
      "frigate": 20,
      "cruiser": 60,
      "colony": 100,
      "transport": 20,
      "torpedo": 20
    },
    "capacityPerHabitat": 1000,
    "growth": 0.02,
    "mortality": 0.2,
    "reserveYears": 3,
    "siegeMortality": 0.02,
    "siegeIntegrity": 10,
    "viablePopulation": 100,
    "fullProductionPopulation": 100,
    "colonizedFraction": 0.7,
    "regionalMinimum": 3,
    "stableYears": 12,
    "earliestConclusion": 120,
    "peaceYears": 12,
    "requiredDeliveries": 3,
    "deliveryMinimum": 100,
    "supplyPerPropellant": 100
  },
  "ground": {
    "capacity": 120,
    "recruitCost": {
      "credits": 2,
      "alloys": 1,
      "propellant": 0,
      "data": 0
    },
    "recruitsPerHabitat": 40,
    "capitalGarrison": 50,
    "satelliteGarrison": 20,
    "attack": 0.25,
    "cover": 1.25
  },
  "naval": {
    "favored": {
      "frigate": "torpedo",
      "torpedo": "cruiser",
      "cruiser": "frigate"
    },
    "favoredMultiplier": 1.25,
    "counteredMultiplier": 0.8,
    "torpedoDefenseMultiplier": 2,
    "torpedoResearchLevel": 1
  },
  "siege": {
    "productionMultiplier": 0.75
  },
  "commerce": {
    "minimumUnits": 100,
    "productionBonus": 0.1,
    "duration": 8
  },
  "activity": {
    "merchantProduction": 25,
    "warehouseCapacity": 200,
    "manifest": {
      "credits": 40,
      "alloys": 30,
      "propellant": 30,
      "data": 0
    },
    "departureInterval": 4,
    "outboundLimit": 2,
    "destinationCount": 3,
    "maxTravelTicks": 8,
    "dangerTicks": 8,
    "portFee": 5,
    "storeCapacity": 400,
    "startingStores": 200,
    "recoveryBase": 4,
    "recoveryCurve": 96,
    "preparation": {
      "scout": 10,
      "frigate": 20,
      "torpedo": 20,
      "cruiser": 40
    },
    "lootCapacity": {
      "frigate": 100,
      "torpedo": 100,
      "cruiser": 200
    },
    "economicDamage": 5,
    "maxEconomicDamage": 25,
    "repairCredits": 2,
    "repairAlloys": 1,
    "refitTicks": 1,
    "refitHpPerCredit": 4,
    "refitHpPerAlloy": 8,
    "responseTicks": 2,
    "brakingDistanceMax": 0.05,
    "brakingDistanceFraction": 0.25,
    "npcPlanInterval": 4,
    "npcMaxTravelTicks": 8,
    "turns": [
      {
        "degrees": 30,
        "ticks": 1,
        "surcharge": 0.2
      },
      {
        "degrees": 90,
        "ticks": 2,
        "surcharge": 0.6
      },
      {
        "degrees": 180,
        "ticks": 3,
        "surcharge": 1
      }
    ],
    "npcCycleBudget": {
      "credits": 100,
      "alloys": 60,
      "propellant": 160,
      "data": 0
    }
  },
  "command": {
    "capitalProduction": 1.2,
    "capitalDefense": 1.25,
    "capitalTicks": 2,
    "occupationProduction": 0.5,
    "consolidationTicks": 3,
    "raidRounds": 6,
    "withdrawalHp": 0.35,
    "defendQuietTicks": 3,
    "battleRetentionTicks": 3,
    "orbitalDamage": 0.75,
    "npcOrders": 4,
    "npcOperations": 3,
    "advanceSupplies": 6,
    "preparationCost": {
      "credits": 1,
      "alloys": 0,
      "propellant": 0,
      "data": 0
    },
    "npcTrafficWeight": 2,
    "npcRecentAttackWeight": 4,
    "npcDefenseWeight": 1
  },
  "frontierEconomy": {
    "depositsPerBelt": 12,
    "neighbors": 6,
    "maxTravelTicks": 8,
    "beltInnerAu": 32,
    "beltOuterAu": 52,
    "maxHopAu": 12,
    "propellantTanks": {
      "scout": 60,
      "frigate": 80,
      "torpedo": 72,
      "cruiser": 120,
      "transport": 100,
      "colony": 100
    },
    "convoyTank": 100,
    "fleetFuelPerAu": 2,
    "convoyFuelPerAu": 1,
    "industry": 1,
    "workers": 100,
    "setupTicks": 6,
    "seizeTicks": 2,
    "settlementTicks": 12,
    "setupCost": {
      "credits": 600,
      "alloys": 400,
      "propellant": 200,
      "data": 0
    },
    "settlementCost": {
      "credits": 1200,
      "alloys": 800,
      "propellant": 400,
      "data": 200
    },
    "yield": 60,
    "storage": 1200,
    "manifest": 600,
    "freightInterval": 4,
    "freightLimit": 5,
    "freightAllowance": {
      "credits": 50,
      "alloys": 0,
      "propellant": 100,
      "data": 0
    },
    "supplyReserve": 6,
    "supportPerYard": 8,
    "supportLimit": 24,
    "support": {
      "scout": 1,
      "frigate": 2,
      "torpedo": 2,
      "cruiser": 4,
      "transport": 2,
      "colony": 2
    },
    "siteLevels": {
      "small": 1,
      "medium": 2,
      "large": 3
    },
    "maintenance": {
      "scout": {
        "credits": 0,
        "alloys": 0,
        "propellant": 1,
        "data": 0
      },
      "frigate": {
        "credits": 0,
        "alloys": 2,
        "propellant": 2,
        "data": 0
      },
      "torpedo": {
        "credits": 0,
        "alloys": 2,
        "propellant": 3,
        "data": 0
      },
      "cruiser": {
        "credits": 0,
        "alloys": 4,
        "propellant": 4,
        "data": 0
      },
      "transport": {
        "credits": 0,
        "alloys": 1,
        "propellant": 2,
        "data": 0
      },
      "colony": {
        "credits": 0,
        "alloys": 1,
        "propellant": 1,
        "data": 0
      }
    },
    "defenseMaintenance": {
      "credits": 1,
      "alloys": 2,
      "propellant": 1,
      "data": 0
    },
    "maintenanceReserveTicks": 6,
    "stalledTicks": 4,
    "retryTicks": 8,
    "raidQuietTicks": 6,
    "historyTicks": 24
  },
  "ships": {
    "scout": {
      "cost": {
        "credits": 18,
        "alloys": 10,
        "propellant": 5,
        "data": 0
      },
      "ticks": 1,
      "hp": 12,
      "attack": 2,
      "speed": 2,
      "upkeep": 1
    },
    "frigate": {
      "cost": {
        "credits": 40,
        "alloys": 30,
        "propellant": 10,
        "data": 0
      },
      "ticks": 1,
      "hp": 45,
      "attack": 12,
      "speed": 1,
      "upkeep": 2
    },
    "cruiser": {
      "cost": {
        "credits": 100,
        "alloys": 90,
        "propellant": 23,
        "data": 0
      },
      "ticks": 3,
      "hp": 130,
      "attack": 30,
      "speed": 1,
      "upkeep": 5
    },
    "colony": {
      "cost": {
        "credits": 160,
        "alloys": 100,
        "propellant": 70,
        "data": 0
      },
      "ticks": 5,
      "hp": 25,
      "attack": 0,
      "speed": 1,
      "upkeep": 2
    },
    "transport": {
      "cost": {
        "credits": 140,
        "alloys": 100,
        "propellant": 40,
        "data": 0
      },
      "ticks": 4,
      "hp": 60,
      "attack": 0,
      "speed": 1,
      "upkeep": 3
    },
    "torpedo": {
      "cost": {
        "credits": 50,
        "alloys": 45,
        "propellant": 15,
        "data": 0
      },
      "ticks": 2,
      "hp": 50,
      "attack": 18,
      "speed": 1,
      "upkeep": 3
    }
  }
}
```

[Rulebook index](index.md)
