Tactical cadence and entry points
Section titled “Tactical cadence and entry points”This page covers the NPR decisions below strategic planning, from the per-phase sensor, shield and weapon pass to the per-system fleet responses that rally, retreat, shadow, patrol, rescue and ram. NPR strategic planning owns the clocks, system valuation, threat classification, mission allocation and the ordered branch table of the local pass. NPR fleet readiness and recovery owns readiness ratings, mission availability and recovery destinations. Automatic combat configuration owns the weapon and fire-control rebuild that the NPR pass runs. Space combat resolution owns hit and damage resolution, and ship power, class and detection owns the detection equations. Boarding and ship capture owns the surrender roll that shares a decision with ramming.
Two separate drivers run the behaviour on this page. The first runs inside every combat phase. NPR AI processing is always on, and no window turns it off. The space-fire step of each combat phase first sets OpenFire to false on every fire-control assignment of every NPR ship. It then runs the race tactical pass for each NPR . An NPR therefore rebuilds its open-fire decisions from nothing in each phase.
The race tactical pass takes a snapshot of every race fleet and of every populated ground formation that holds a surface-to-orbit (STO) weapon element. It ends when both lists are empty. Its system list is the distinct union of the fleet systems and the STO population systems. Its hostile and neutral lists keep contacts detected by the race whose age is strictly below one year (31,536,000 seconds).
| Step | Systems visited | Contact input |
|---|---|---|
| Sensor policy, then shield policy | Every system with a race fleet or an STO population | One-year hostile and neutral lists |
| Early end | None, when the one-year hostile list is empty | None |
| Combat targeting | Systems that hold a hostile contact updated this instant with ContinualContactTime above 0 |
That continual current hostile list |
The second driver is the strategic and local planner. When recent hostile ships exist , the NPR strategic pass orders a retreat from each system with known hostile ships. Later it runs the local redeployment pass for each occupied system at the recent hostile ships threat level, or for every occupied system when the elapsed time of the pass exceeds 10,000 seconds. Invocation order and snapshots owns that cadence.
Active sensor policy
Section titled “Active sensor policy”The active sensor policy acts on the race fleets in its system that hold at least one ship whose class has ActiveSensorStrength above 0. For each such fleet it first sets ActiveSensorsOn to false on every sensor ship. It then computes a roll threshold out of 1,000. A d1000 roll at or below the threshold switches on the best sensor ships by resolution, as described below. A failed roll leaves every sensor in the fleet switched off for this phase.
The sensor range test uses the largest MaxSensorRange of any active search sensor in the designs of the fleet’s sensor ships, damaged ones included. A contact counts as within range at that distance or less. A current contact has a LastUpdate equal to the current game time.
| Fleet type | Condition, first match wins | Threshold | Chance per phase |
|---|---|---|---|
| No stealth sensor ship | Current hostile within sensor range | 1,000 | 100% |
| No stealth sensor ship | Current neutral within range and system value at least High | 1,000 | 100% |
| No stealth sensor ship | No neutral in range, no current hostile in system, no current neutral in system | 30 | 3% |
| No stealth sensor ship | No neutral in range, no current hostile in system, a current neutral elsewhere in system | 100 | 10% |
| No stealth sensor ship | Any other case | 250 | 25% |
| Stealth design present | Hostile or neutral in beam range, hostile in missile range, or a sensor ship damaged under 120 seconds ago | 1,000 | 100% |
| Stealth design present | Neutral in missile range and system value at least High | 100 | 10% |
| Stealth design present | A current hostile in the system | 25 | 2.5% |
| Stealth design present | Otherwise | 5 | 0.5% |
A fleet counts as stealth when the automated design of any sensor ship has a stealth design above None (StealthDesign in DIM_AutomatedClassDesign above 0). For such a fleet the policy measures the fleet’s longest beam range and its longest missile range against a target resolution of 100. A sensor ship damaged less than 120 seconds ago (LastShipDamageTime in FCT_Ship) skips the range counts entirely.
The best-sensor activation takes every distinct Resolution among the candidates’ active search sensors. For each one it ranks ships by their longest undamaged active search sensor range at exactly that resolution, longest first, then by construction date (Constructed), oldest first. It switches on the first two. Three distinct resolutions therefore activate between one and six ships.
The sensor refresh switches off every sensor ship of the fleet and runs the activation again, without any roll. The damage report step runs it for every NPR ship that took component, armour or shield damage this phase, and for destroyed ships. Damage therefore reactivates sensors at once, regardless of the threshold table.
Shield policy
Section titled “Shield policy”The shield policy acts on ships whose class ShieldStrength is above zero. The threat radius is race Xenophobia trait value x 2,000,000 km. Any race type other than a standard NPR uses 100 for that trait, so its radius is 200,000,000 km. A standard NPR uses the Xenophobia of its primary imperial species, or 50 when it has no such species.
A fleet keeps its shields raised when any of these conditions holds.
- A shield ship took damage less than 86,400 seconds ago (
LastShipDamageTime). - The fleet sits exactly on any jump point in the system, at distance 0.0.
- A current hostile contact lies within the threat radius.
- A current neutral lies within the radius and the system value is High or above.
- A current neutral lies within the radius and any current neutral in the system is a ship contact detected through its shields (
ContactMethod4, Shield).
When a condition holds, the policy sets ShieldsActive to true on every shield ship of the fleet. Otherwise it sets ShieldsActive to false and CurrentShieldStrength to zero on every shield ship of the fleet. Lowering shields therefore discards the stored charge, and the next activation recharges from zero under the rules in shield strength and recharge.
Combat targeting pass setup
Section titled “Combat targeting pass setup”The combat targeting pass runs for each system with a continual current hostile contact. It removes contacts whose ship belongs to a fleet in orbit with a planetary combat order (Provide Ground Support, Provide Ground CAP, Planetary Flak Suppression or Planetary Search and Destroy). It collects the race’s own STO weapon elements in the system that have fewer weapons recharging than their Units. It collects ready combat ships, whose class ProtectionValue is above 0 and whose FireDelay is 0, ordered by fleet ID and then by descending class size.
Ship and salvo contacts must have the contact method Active Sensor (ContactMethod 1). Planetary contacts are active-sensor STO ground unit and shipyard contacts, or population contacts by any method, and all need a population. Race filters then narrow the planetary list.
| Firing race | Planetary contacts kept |
|---|---|
Standard NPR with primary species Xenophobia below 50 |
STO units, shipyards, and populations with zero PopulationAmount |
| STO units and shipyards | |
Any race with primary species Xenophobia below 80 |
Also drops inhabited populations of the firing race’s own primary species |
Each population becomes one planetary fire target with at most one contact per contact type. A target is marked as having a friendly high-EM population on its body when the firing race’s populations on the same body sum to an EM signature above 1,000. Targets with zero priority or no valid contact drop out, and the rest sort by descending target priority.
Fleets with a ship that took penetrating damage less than 300 seconds ago (LastPenetratingDamageTime) mark every own fleet in the system within a 100,000 km square of them as near recent damage. Only those fleets may run a second or third assignment pass.
For each ready ship the pass stores its missile range data at target resolution 0, its longest beam range, and an engagement range equal to the larger of the two. It clears the ship’s reload hold and sets SyncFire to 0. It then sets SyncFire to 1 when the automated design’s missile type is standard missile (MissileType 4 in DIM_AutomatedClassDesign), the ship has no damaged components, and the fleet’s last damage (LastFleetDamageTime) is more than 900 seconds old. Ships with zero engagement range and zero squadron operating range leave the pass.
The missile range data uses the first launcher design with an undamaged instance, in descending launcher size (ComponentValue), and the longest-range non-decoy loaded missile that fits it. It also records the undamaged count of that launcher design, the total of all non-decoy loaded missiles and the speed of the fastest fitting missile. The missile fire control range caps the missile range. At resolution 0 the cap takes each undamaged missile fire control’s MaxSensorRange in turn, so the last one in class order sets the cap, not the largest.
Known alien ships that match an active ship contact get a base target value update and join an alien ship group. A group gathers ships whose fleet coordinates lie within a strict 50,000 km square of the group’s first ship. The group’s fastest speed starts from its first ship’s class MaxSpeed and rises only for later ships that are not carried by a mothership. Each ship whose alien class has observed energy point-defence shots (TotalEnergyPDShots above 0 in FCT_AlienClass) adds MaxEnergyPDShots x TotalEnergyPDHits / TotalEnergyPDShots to the group’s estimated point-defence hits. The group also counts the ships whose alien class shows ObservedMissileDefence.
| Group value | Rule |
|---|---|
| Estimated speed | int(total effective engine power / total class size x 1,000), where each ship’s effective engine power = undamaged engine capacity x OverhaulFactor, with a result of 0 replaced by 1 |
| Inbound salvos | Every salvo whose target ship is in the group |
| Near a charted jump point | The group lies closer than fastest ship speed x 30 km to a jump point charted by the firing race |
| Near a jump point with old inbound salvos | Also near such a point, and the earliest inbound salvo launched more than 30 seconds ago |
| Expected assigned missile hits | Sum over ready ships with the group inside missile range of min(undamaged count of the largest undamaged launcher type, all non-decoy loaded missiles) x min(1, fastest fitting missile speed / estimated speed x 10 / 100), with a multiplier of 1 when the estimated speed is 0 |
| Needs more missile fire | Expected hits below estimated point-defence hits |
| Skips first-pass long-range missiles | Not short of fire, and fewer than half the group’s ships show observed missile defence |
When a group needs more missile fire, every planetary target at exactly the group’s coordinates is marked to defer long-range missiles in favour of ship targets. The carrier squadron launch step can never launch. A fresh positive squadron operating range comes only from damaged squadron ships without weapon recharges, and the launch step skips exactly those carriers.
The carrier launch data reads the carrier’s squadron with ID 0. Squadron creation takes each ID from a game counter that increments before it hands the ID out, so a carrier whose squadrons all came from that creation step has no squadron with ID 0, so the game cannot find it. When the squadron is found but no damaged squadron ship lacks weapon recharges, the operating range (the smallest remaining range of those ships divided by 2.5) has no ship to measure, and that fails too. In both cases the game shows error Function #3857 and the carrier gets no launch data. The setup writes the squadron operating range only when launch data exists and never resets it, so a positive value from an earlier phase stays in place. The path with no squadron 0 cannot by itself leave a positive operating range, so the failure needs a range left over from an earlier phase in which squadron 0 had a ship to measure, followed by a phase with no ship to measure or without squadron 0. That stale value keeps the ship in the pass and in the carrier launch step. The launch step then reads the missing launch data and fails. The targeting pass then fails with error Function #59, and the targeting pass for that whole system ends there.
Target priority and kill requirements
Section titled “Target priority and kill requirements”The base target value update first refreshes the distant target priority fallback. It then sets the base target value to the actual class size, plus the summed cost x amount of observed weapons, plus the summed cost of observed sensors. The fallback starts at 0, becomes 50 when the alien class has any observed weapon, and then becomes 20 when its EngineType is not Commercial. The second test overwrites the first. An armed warship therefore falls back to 20, and only an armed commercial-engine hull keeps 50.
The per-shooter priority update measures the range between the two fleets’ coordinates and multiplies the base target value by a role and range factor.
| Range from firing ship | Slow beam (4) | Fast beam (3) | Anti-ship missile (2) | Anti-missile missile (1) | Other roles |
|---|---|---|---|---|---|
| Below 100,000 km | x 1,000 | x 500 | x 300 | unchanged | unchanged |
| 100,000 to below 500,000 km | unchanged | x 50 | x 30 | unchanged | unchanged |
| 500,000 to below 5,000,000 km | unchanged | unchanged | x 20 | x 10 | unchanged |
| 5,000,000 km and beyond | fallback | fallback | x 2 | x 6 | fallback |
The word “unchanged” is literal. The update does not write the target priority in those cells, so the ship keeps the priority set for an earlier firing ship or in an earlier phase. A freshly loaded game starts every such value at zero because the game does not save it. The role (AlienClassRole in FCT_AlienClass, values in the column headings) comes from intelligence on newly observed weapons. A launcher with a component size of at least the AMM threshold of 4 sets anti-missile missile whatever the current role, and a smaller one sets anti-ship missile only from Unknown (0). A beam whose power requirement exceeds twice its recharge rate sets fast beam whatever the role, and any other beam sets slow beam only from Unknown.
The required missile size to defeat a ship starts from round(class size + CurrentShieldStrength), which sends an exact half to the even neighbour. It divides by 10 for a commercial class. Inside a group it converts that size to a count of the race’s standard missile (MissileStandard in FCT_DesignPhilosophy) by dividing by that missile’s size. When the group’s estimated point-defence hits exceed that count, it multiplies the size by sqrt(hits / count).
The required beam damage to defeat a ship uses the same rounded size plus shield and the same commercial division, with no point-defence term.
Planetary targets use their own scale. The planetary priority starts from the alien population’s EMSignature, or 1 when it is zero. It picks STO ground units at x 20, else shipyards at x 5, else ground units at x 2, else the population at x 1. The last two require no friendly high-EM population on the body. Ground-unit contacts never reach this choice from the targeting pass, because the contact filter admits only STO units, shipyards and populations. The required missile size is EMSignature / 25 for a population, a tenth of that for a shipyard, and five times it for other contact types.
Missile selection and effective range
Section titled “Missile selection and effective range”The longest-range missile selection finds the first launcher design with an undamaged instance, in descending launcher ComponentValue. It then picks the loaded ordnance with the greatest total range whose size does not exceed that launcher. With the large-launchers-only option it first keeps launchers whose component Size is at least 2. A ship whose launchers are all damaged keeps a launcher size of zero and selects nothing.
The effective missile range update runs that selection and writes two values. The missile fire control range is the best undamaged missile fire control range against the given resolution. The effective missile range is zero with no missile or no control, and otherwise the smaller of the control range and the missile’s total range.
| Reach rule | Resolution used | Test or result |
|---|---|---|
| Ship-target reach test | The target’s current sensor cross-section | range below effective missile range - target class MaxSpeed x (effective missile range / missile speed) |
| General reach test | Fixed 1,000 | range below effective missile range |
| Shortest-range large-launcher ship | The value the requesting rule passes, large launchers only | Shortest positive effective range in the fleet |
| Longest-range missile ship | The value the requesting rule passes, all launchers | Longest positive effective range in the fleet, a rule that never runs in play (listed under fleet merging and unused helpers) |
The ship-target reach test stores the lead-adjusted value as the ship’s intercept range for the small-missile rule. With no launchable missile it reads the speed of a missile that does not exist. The game shows error Function #101 and the test reports that the target is out of reach.
The engagement order against an alien ship uses the shortest-range large-launcher ship for its standoff distance, effective missile range - target MaxSpeed x flight time, where the flight time is effective missile range / missile speed and the speed is the alien class’s observed MaxSpeed. A fleet with no positive-range large-launcher ship follows at 1.2 or 1.1 times the target’s longest observed beam range when its own beam range exceeds that multiple, and at zero otherwise. A fleet with neither such a ship nor any beam range gets no order. A fleet whose launchers all have a component Size below 2 therefore takes this beam rule. A fleet with embarked boarding formations queues a boarding order instead, before any of these tests. When hostile STO populations exist, the order first requests an avoidance waypoint toward the projected engagement position. Otherwise the fleet follows the target at the standoff distance, cut to a whole number.
Weapon assignment passes
Section titled “Weapon assignment passes”Ready ships are re-sorted by descending missile range. Each ship runs the automatic weapon assignment, which rebuilds its assignments as described in assignment state and destructive rebuild. A ship with no fire-control assignment afterwards is skipped.
A reload hold applies before targeting. The ship needs missile range, more undamaged launchers than loaded missiles, a fleet outside the recent-damage set, and a current move order of Load Ordnance from Colony. A ship with no beam range then skips the whole pass. A ship with beams holds its missile fire for the reload and fires beams only.
Ship targets are active ship contacts within the ship’s engagement range. The remaining known alien ships get a per-shooter priority and sort descending. Up to three passes follow. A later pass runs only when nothing was assigned and the fleet is in the recent-damage set.
Missile fire against a ship target requires missile range, no reload hold, and one of three conditions. The group must not need more missile fire, or the range must be below the long-range missile fire threshold of 500,000 km, or the pass must be later than the first. The ship then skips the target in any of these cases.
- The target group is near a jump point that is relevant for its race, and the fastest loaded missile
speed x 30is below the range. For an NPR target the point must have old inbound salvos, and for a player target any charted point counts. - The range exceeds the missile follow-up suppression range of 1,000,000 km, missiles are already inbound, the pass is below 3, and the target ship was hit by a missile (
LastMissileHitTime) less than 80 seconds ago. - The group skips first-pass long-range fire, the range exceeds 500,000 km, this is pass 1, and a salvo launched before now already targets the ship.
The remaining requirement is the required missile size, minus the size of missiles already inbound, minus the missile size that ready ships already assign. When the first non-decoy missile on the ship has a hit chance between 0% and 80% exclusive, the requirement scales by 80 / hit chance. A requirement at or below zero skips the target on pass 1 only.
After the ship-target reach test succeeds, a small-missile rule can still skip the target. It applies when the first non-decoy missile is smaller than 3, the group has no inbound salvos, the target is above 20 HS, and the range exceeds both 500,000 km and 0.75 x the ship's intercept range (the small-missile intercept range limit fraction). Otherwise every free missile fire control with non-recharging launchers gets the target and OpenFire. When a control’s summed launcher ComponentValue exceeds the requirement, the assignment removes the launcher assignments that remain after the requirement reaches zero. The requirement shrinks only inside such a control, so a control whose sum does not exceed it leaves the requirement unchanged. The assignment stops using further controls only after it removes a launcher assignment.
Beam fire applies when the ship’s beam range exceeds the target range. The pass compares the required beam damage to defeat the target with the beam damage already assigned by all ready ships. That damage is the sum of damage at the target range x NumberOfShots over non-electronic, non-recharging beams. A covered target is skipped. Otherwise each free direct fire control whose longest effective weapon range exceeds the target range opens fire. When more targets are in range than the pass number, the pass recomputes the assigned damage and stops adding controls once the target is covered.
With no ship target assigned, the ship tries planetary targets in priority order under the same three-pass rule. Planetary missile fire uses the 1,000-resolution reach test, the 80-second bombardment cooldown beyond 1,000,000 km, and the deferral mark. It subtracts launcher Size, not ComponentValue, from the requirement as it adds controls. Without any assignment the ship then turns beams on stationary salvos with zero MissileSpeed. A ship that still assigned nothing returns SyncFire to 0.
STO elements do not get fire-control targets here. Each available STO element switches its TargetSelection to Target Random Ship when any active ship target lies within its class MaxWeaponRange of its population, and to Ranged Defensive Fire otherwise.
Open-fire and recharge synchronisation
Section titled “Open-fire and recharge synchronisation”Two flags implement NPR fire synchronisation. SyncFire is the ordinary per-ship synchronisation flag that the targeting pass sets for healthy standard-missile ships. The NPR standard-missile recharge flag is a separate value. The weapon recharge step sets it to 1 for an NPR ship whose design missile type is standard missile while a missile launcher still has recharge remaining after the elapsed time. No rule sets it back to 0 during play.
A ship counts as open fire with recharge sync when it has any open fire control and that flag equals 1. The missile launch step first clears the colocated mark on every fleet. It then collects the fleets of ready ships that count, and it marks every other fleet of NPR standard-missile ships of the same race at the same coordinates in the same system.
A missile-firing ship with SyncFire 1 waits when another ship in its fleet with SyncFire 1 and an open fire control has a positive FireDelay. That wait logs an event with the ship name followed by “is waiting for other ships in the same fleet to confirm their readiness before firing.” The NPR colocated-fleet and launcher-recharge waits apply only when at least one such other ship exists. An NPR ship then waits when its fleet carries the colocated mark, or when another such ship that has not fired missiles this phase still has a launcher recharge entry. Beam fire waits on any other ship in the fleet with SyncFire 1 and a positive FireDelay, whether or not that ship has open fire. Launch readiness and ammunition owns the launch sequence itself.
Point-defence groups and local shot capacity
Section titled “Point-defence groups and local shot capacity”The automatic AMM launch step groups the salvos that an NPR defender sees by exact target coordinates into NPR target point-defence groups. Each group runs the coverage test below, and salvos marked covered leave the automatic AMM target list.
The local point-defence shot capacity estimates the defensive shots at one exact position against one target speed. Ships add min(1, hit chance) x NumberOfShots for weapons with a recharge cycle of 15 seconds or less on direct fire controls in Point Blank Defensive Fire or Ranged Defensive Fire mode. STO elements in those modes or Point Blank Defensive Fire (Self) add min(1, hit chance) x Units x NumberOfShots. The estimate is the total rounded down. The point-defence modes section lists the modes.
The group uses the fastest blueprint speed among its salvos and the average decoys per missile. A capacity of zero ends the test without marking anything. Otherwise each salvo goes into a group keyed by its arrival time, int(distance / speed) seconds. For every bucket the group sums the missiles arriving from that bucket’s time up to, but not including, 11 seconds later, and multiplies the sum by 1 + decoys per missile. The first window above capacity ends the test without marking. When every window fits, every salvo whose target type is not a waypoint is marked covered. A group with zero missiles skips the window test and marks every salvo.
The local planner uses a different capacity measure for missile escape. The fleet point-defence capacity sums each ship’s own capacity against the speed of the furthest threatening salvo. Point-defence summaries and capacity estimates gives the per-ship estimate.
Surface-to-orbit target priority
Section titled “Surface-to-orbit target priority”The NPR STO target score rates a candidate ship for an STO element. For a player attacker the score stays at 1. For an NPR attacker it sets 6 when the known alien class has observed weapons, then 2 when its EngineType is not Commercial, and multiplies by the ship’s actual class size. An unarmed commercial hull keeps the base of 1 before the size multiplier. A ship the attacker does not know sets 0, and reading its alien class then fails. The game shows error Function #2708 and the score stays at 0.
The STO fire step divides that score by max(1, range / 1,000), with the range in km, and sorts descending with a d1000 tie-break. When the first target is below 10 HS it fires one weapon per target, and below 20 HS it fires two. Surface-to-orbit ship and population fire owns the shot sequence.
Local system response order
Section titled “Local system response order”The local redeployment pass is the per-system pass that local combat and target selection describes as a branch table. This section lists only the tactical responses in their order.
| Order | Tactical response | Gate |
|---|---|---|
| 1 | Clear move orders and redeploy flags of available mobile military fleets | System threat level is recent hostile ships |
| 1 | ||
| 2 | Missile escape transit to the nearest charted jump point | Current salvos, a 60-second reach, and threatening missiles above fleet point-defence capacity |
| 3 | Local ordnance reload | Fleet ordnance below Partially Loaded |
| 4 | Ramming, surrender, counterattack or beam detachment | Fleet damaged under 120 seconds ago with recent hostile ships |
| 5 | Engage sensor-delayed ships inside speed x 120 + beam range |
Current hostile ship with SensorDelay above 0 |
| 6 | Overmatch and single-scout shadow | Exactly one current hostile alien ship |
| 7 | Strategic engagement table, rally or retreat, valued-population moves, one merge, scout shadowing | Not exactly one current known hostile alien ship, and at least one current hostile ship fleet |
| 8 | Hostile-adjacent jump point coverage, , lifepod rescue | Race type |
| 9 | Beam fighters follow their mothership, idle valued-population defence, POI patrols | Remaining fleets |
| 10 | Escaping fleets retreat, then idle fallback moves | EscapeTimeRemaining above 0, , then any remaining combat, scout or jump-defence fleet |
The missile escape test checks whether the fleet can reach any jump point within 60 seconds by comparing the jump point distance with Speed x 60 in whole-number multiplication. The salvo window keeps salvos closer than MissileSpeed x 60. Only the missiles at the coordinates of the furthest threatening salvo are compared with point-defence capacity.
A damaged fleet outside the compromised state described under ramming takes other responses. When one of its ships took a beam hit less than 120 seconds ago (LastBeamHitTime) and the fleet is faster than the nearest current hostile fleet, it engages the largest ship of that fleet. A damaged fleet that is not faster than the nearest hostile fleet, and whose operational group has MobileMilitary 0, detaches its fast, capable beam ships into a Beam-Only DD Squadron fleet (OperationalGroupID 26) and sends that squadron instead. A missile hit less than 120 seconds ago (LastMissileHitTime) triggers a counterattack, unless the fleet sits on a valued population that has point-defence STO elements or an Orbital Defences fleet (OperationalGroupID 4).
The idle fallback appends orders without clearing existing ones. Fleets go to the top valued population with Refuel from Colony, , else fleets go to the largest orbiting harvester fleet, else to the nearest planet.
Ramming decision and resolution
Section titled “Ramming decision and resolution”The ramming rule sits inside the damage responses. It considers a fleet damaged less than 120 seconds ago that is in a compromised state, meaning no nearby combat-capable ship, mission availability Unavailable, systems readiness Inoperable, or ordnance Empty. Nearby means a strict 1,000,000 km square, and capable means ProtectionValue above 0 with role capability above Incapable. The fleet also needs a ship hit by a beam less than 120 seconds ago. Other fleets go to the surrender roll owned by surrender as a separate entry path.
The ram candidates are the current hostile alien ships minus ships that already hold a formation of the ramming race. The ram order picks the nearest distinct fleet by Lagrange-aware distance. It clears move orders, queues an Attempt to Ram order (MoveActionID 216) against that fleet, and sets RedeployOrderGiven. A failed surrender roll that sets NoSurrender moves a later decision for the same fleet into the ramming rule.
Separately, the readiness planner detaches individual empty-ordnance ships into Ramming Force fleets (OperationalGroupID 27). No ramming rule keys on that operational group, so the name labels the fleet without adding a separate ram trigger. Reload destinations and failed searches owns that detachment.
The movement step runs the ram attempt when it dispatches an Attempt to Ram order at its destination, then zeroes the remaining sub-pulse time. That order is marked neither completed nor arrived, so it stays queued. The fleet keeps chasing and attempts again each time the order is dispatched. The order persists until the attempt finds the target in another system and clears all orders. Fleet removal also ends it, because removing a fleet clears the orders of every NPR fleet with an order that targets the removed fleet. Any other local rule that clears the rammer’s orders ends it too, such as the recent hostile ships reset. The move action catalogue lists the executor.
| Step of the ram attempt | Literal rule |
|---|---|
| Different system | Target fleet in another system clears all move orders and ends the attempt |
| Eligible rammers | Ships that have not attempted a ram this increment, each marked on its attempt |
| Target choice | Fresh d1000 roll for each independent target ship, and the lowest roll wins |
| Hit chance | 100% when the target fleet’s speed is 0, else (fleet Speed / target fleet Speed) x 5 (5 is the ramming hit chance speed multiplier) with whole-number division |
| Hit roll | d100 at or below the chance |
| Damage dealt to target | floor(rammer class size), then a further floor(/10) for a commercial rammer |
| Damage taken by rammer | floor(target class size), then a further floor(/10) for a commercial target |
| Speed bonus | Both values multiplied by 1 + (rammer effective maximum speed - target effective maximum speed) / 10,000 when the rammer is faster, then truncated to whole numbers |
| Miss | Logs a failed attempt for both races (“failed in its attempt to ram”) and stops, so later ships in the fleet do not attempt this time |
A fleet’s Speed is a whole number, so the speed ratio is whole-number division before it becomes a decimal value. A rammer fleet slower than its target has a ratio of 0 and a 0% chance, and a d100 never rolls at or below 0. Equal speeds give 5%.
A hit writes two combat attack records tagged with a ram collision direction. By Attacker (1) is the rammer’s record against the target and carries the damage to the target. By Target (2) is the target’s record against the rammer and carries the rammer’s self-inflicted damage. None (0) marks every other attack record. Aftermath processing admits both ram records to the ship damage step and applies one hit carrying the record’s damage through the ordinary incoming damage rules. A ram hit updates the damage timestamps but not LastBeamHitTime.
The ram-attempted mark clears in the ship combat tracking reset, which runs for every ship at increment start and for combat-system ships in the combat resolver.
Engagement paths and overmatch checks
Section titled “Engagement paths and overmatch checks”The path clearance check guards retreats and repositioning moves. It finds the smallest distance from any hostile fleet to the straight segment from the moving fleet to the destination. Separately, it finds the smallest distance from any hostile fleet to the moving fleet. It fails when the path distance is below the clearance and below 0.8 times the current distance. The two minima can come from different hostile fleets. It also fails when any hostile STO population lies closer than 1,000,000 km to the path and closer to the path than to the fleet. Every rule that runs this check passes the fleet retreat path clearance of 100,000,000 km, including the move to valued populations.
The engagement path check applies to the path from interceptor to target. Every other hostile fleet whose path distance is below the clearance and below 0.8 times its current distance adds its adjusted fleet size and speed rating to an intervening total. The check fails as soon as that total exceeds the limit. Its STO test matches the retreat check. The engagement allocator passes the fleet engagement path clearance of 60,000,000 km and a limit of the interceptor’s rating times the current strength ratio.
The overmatch rule handles a single current hostile ship. The threat is ClassCrossSection x MaxSpeed for a non-commercial class and zero for a commercial one. The nearest offensive fleet by straight-line distance with an adjusted rating strictly above twice that threat engages. The ascending-strength sort of the fleet list only breaks distance ties. The rule sets RedeployOrderGiven and reports success without checking the engagement order’s result.
Rally, retreat and system exit
Section titled “Rally, retreat and system exit”The defensive rally walks valued populations in descending AI value and stops at the first one at or below Developing (AIValue 2). A candidate needs a static defence fleet at its exact coordinates or a friendly STO element, and no hostile STO population on its body. The defence total is the mobile rating, plus ClassCrossSection x 5,000 per local static ship, plus class Size x 100 per local STO element regardless of Units. Local combat and target selection shows where this decision sits in the local decision order.
When the hostile rating is not above 1.5 times that total, the offensive and jump-defence fleets rally at the population, and every other non-static fleet retreats. A rally fleet already at the coordinates is only marked as redeployed. Other rally fleets append a Refuel from Colony order without clearing earlier orders. With no qualifying population, every non-static fleet retreats.
The retreat from a threatened system takes the system’s fleets. Unless it is told to take every fleet, it keeps fleets in the system whose operational group avoids danger (AvoidDanger in DIM_OperationalGroup) or whose mission availability is below mission capable (3). It drops fleets with a maximum speed of 1 or less and re-rolls the escape timer for every remaining candidate. The NPR consumers section of the system danger page lists which retreats apply that filter.
The escape timer roll sums ten d86400 rolls. It then multiplies by the largest ship’s species Xenophobia / 50 and by 50 / Determination. The movement increment subtracts the increment length and floors the timer at zero. A positive timer keeps raiders, scouts and FAC hunters off POI patrols. It also sends the fleet through the escaping-fleet retreat near the end of the local pass.
fleets retreat through the local jump point that links to an adjacent explored system, unstabilised links included. The allowed neighbours depend on the current system’s threat level, which runs from clear (1), adjacent to hostile system (2), hostile presence (3) and hostile ships known (4) to recent hostile ships (5).
| Current system threat | Neighbours allowed | Order of candidate jump points |
|---|---|---|
| Recent hostile ships | Threat at most hostile ships known | Threat ascending, then value descending |
| Hostile ships known | Threat at most hostile presence | Threat ascending, then value descending |
| Hostile presence | Threat at most adjacent to hostile system | Threat ascending, then value descending |
| Adjacent to hostile system | Clear only | Value descending |
| Clear | Clear and inside the connected valued network | Value descending |
| Any, with no candidates and a forced immediate exit | Every explored neighbour | Threat ascending, then value descending |
For each fleet and each candidate point, a point qualifies when it has a jump gate or the fleet can make an unstabilised transit, and the path is clear. A qualifying point clears move orders and queues a Standard Transit. The search does not stop after a match, so a later qualifying point replaces the earlier order. The fleet ends with the last qualifying point in list order, which is the most threatened or least valued neighbour that passed.
Fleets still without RedeployOrderGiven try own populations in the system on bodies with DustLevel 0, in descending AI value. The same last-match replacement applies, so the lowest-valued clear population wins. Remaining fleets move to a temporary “Escape Point” waypoint when current hostile ship fleets exist. That point lies on the line from the fleet away from the nearest hostile fleet, at ten times their separation. It lies 10,000,000 km away on a random bearing when the separation is zero. When hostile STO populations exist and the avoidance waypoint request succeeds for a fleet, the retreat stops there, and the remaining fleets get no escape order. NPR avoidance and escape points describes the waypoint itself.
A forced exit queues a transit when the gate cooldown is zero or the travel time is at least the cooldown. A forced exit that meets neither cooldown condition has already cleared its orders, so it leaves the fleet with no orders for the later population and escape stages. An unforced exit queues a plain Move to Location without RedeployOrderGiven, so the later population and escape stages can replace it.
The clear-path move to valued populations sends remaining offensive fleets to valued populations with a clear path. It uses the same search without a stop, so the last clear population in descending value order wins.
Avoidance waypoints
Section titled “Avoidance waypoints”The avoidance waypoint request tests the straight path from the fleet to a requested destination. The path is blocked when a hostile STO population lies closer than 500,000 km to it and strictly closer to the path than to the fleet. When the fleet’s avoidance turn timer is at or below zero, the request draws a random turn direction and sets the timer to 86,400 seconds. The movement step decrements that timer by the sub-pulse length.
Each blocked test turns the bearing by 10 degrees in the chosen direction and projects a new point 100,000,000 km from the fleet. The first test is the requested destination itself. The 36th blocked result stops the search, so the request tries the destination and 35 alternatives covering 350 degrees. An unblocked first test fails the request with no order. An unblocked alternative clears orders, queues a Move to Location to a temporary “Manoeuvre Point” waypoint, sets RedeployOrderGiven and succeeds.
The starting bearing is measured with the destination as the origin. The projection of each new point subtracts a further 90 degrees, so the base direction points from the fleet toward the destination. The counterclockwise turn adds 360 whenever the bearing is at or below 360, not only below 0, so the stored bearing leaves the 0 to 360 range without changing the projected point.
Jump point coverage
Section titled “Jump point coverage”The hostile-adjacent jump point coverage step proceeds only when the role list holds a fleet of the requested main function without RedeployOrderGiven. It then runs the coverage assignment twice with the whole system fleet list. The first run uses adjacency and the second uses Transit POI waypoints. Every system then requests Jump Point Defence (10), Attack and FAC Hunt (6) coverage.
| Phase of the coverage assignment | Rule |
|---|---|
| Points, adjacency mode | Local ends of links to explored neighbours that are also hostile ship systems, ordered by known hostile ship contact count, most first |
| Points, Transit POI mode | Jump points of the race’s Transit POI waypoints in this system |
| Existing coverage | Any Mission Capable fleet without a redeploy order at exactly the point covers it and is marked redeployed, whatever its main function |
| New coverage | For each uncovered point, the first Mission Capable fleet without a redeploy order of the requested main function clears orders and moves there |
A jump point’s coverage mark is not stored and is set again by each run. The strategic threatened-jump-point allocation is a separate rule described in strategic fleet and exploration allocation. Transit POI waypoints come from lost hostile contacts near charted jump points.
Shadowing scouts
Section titled “Shadowing scouts”The scout shadowing step for hostile fleets takes the hostile fleets in the order it receives them, without sorting them. For each hostile fleet the nearest unredeployed scout follows the largest ship of that fleet, until scouts run out. The single-ship shadow step does the same for one known alien ship. Both set RedeployOrderGiven whether or not the shadow order succeeds.
The shadow order clears orders first. It then follows at 0.95 times the fleet’s best active sensor range against the target’s current sensor cross-section, cut to a whole number. A fleet whose sensors are all damaged follows at range 0.
Patrols, rescue and auxiliary tasks
Section titled “Patrols, rescue and auxiliary tasks”For NPR observers, lost hostile ship tracks produce Urgent POI waypoints and lost non-hostile tracks produce POI waypoints. Environmental contacts outside banned-body exclusion radii produce POI waypoints. Destinations, interception and route planning owns that search. Reaching a POI, Urgent POI, Fleet Training or Temporary waypoint, or the arriving fleet’s own fleet waypoint, marks it for deletion. Unused POI and Temporary waypoints expire after three months, Urgent POI after a year, and Transit POI after two years. Waypoint types lists the stored values.
The uncovered-waypoint patrol step gathers the race’s POI and Urgent POI waypoints in the system. With the exclusion flag it drops points closer than 100,000,000 km to any current hostile fleet. A point is covered when a race fleet has a waypoint order to it that starts in this system, or when it lies within 50,000,000 km of a covered point. The covered list is not updated while fleets are handled, so every patrol fleet sees the same uncovered set and tries an Urgent POI route before a POI route.
The patrol route builder keeps waypoints of one type and clears the fleet’s orders. It chains nearest-neighbour Move to Location orders by Lagrange-aware distance from the previous stop. Its stop count runs from 1 to below the route limit, so the route limit of 20 queues at most 19 stops. NPR patrol routes gives the waypoint side of the same steps.
| Patrolling race | Fleets and exclusion flag |
|---|---|
| with scouts | Scouts with no escape timer, with the flag |
| without scouts | FAC Hunter Squadron fleets (OperationalGroupID 6) with no escape timer, without the flag |
The lifepod rescue step walks the lifepods in the system. It skips a pod within 100,000,000 km of the last pod assigned. It sends the fastest unredeployed preferred fleet, which is a scout . Without one it sends the weakest unredeployed offensive fleet by adjusted rating, preferring higher mission availability on ties. The walk stops at the first pod that no fleet can take.
The loading step runs before the rescue. It marks every remaining transport redeployed whenever an own populated colony exists, and the rescue skips redeployed fleets.
The mineral loading step then receives the unfiltered salvage list. When any own colony holds more than 1,000 tons, every Mission Capable salvage fleet, full ones included, clears its orders and loads all minerals at the nearest such colony. Without an available mobile military fleet in the system, both kinds return.
The idle valued-population defence step builds its own population list by AI value, mining score and logistics score, whatever list it receives. Its fleet ordering applies three separate sorts in sequence, and the last one applied decides first, so distance is the primary key, then mission availability descending, then adjusted rating descending. A population is skipped when a Mission Capable fleet already has a Move to Location order to it. The step itself queues Refuel from Colony, which that test does not count. A chosen fleet already at the top population clears its orders and is marked redeployed. Otherwise, when it has enough fuel to reach the candidate, it clears its orders and queues Refuel from Colony there.
Fleet merging and unused helpers
Section titled “Fleet merging and unused helpers”The colocated fleet merge sorts its list by descending adjusted rating and needs at least two fleets. Each receiver in that order looks for the strongest other fleet at exactly its coordinates that the operational group compatibility test accepts. It transfers all of that fleet’s ships, removes the empty source fleet, and stops after the first merge.
Compatibility is not symmetric. An Attack receiver accepts Attack or FAC Hunt fleets, and any other receiver accepts only its own main function. A player race never merges. The local pass runs the merge once with its remaining offensive list, which can include fighter groups. The strategic consolidation refreshes ratings and excludes fighters before its own merge.
Five rules in this area never run in play.
| Rule | Behaviour if it ran |
|---|---|
| Mission availability score | 0 for Unavailable, else the availability value divided by 4 as a decimal, so 0.5 for Available (2) and 0.75 for Mission Capable (3) |
| Ship shadow order | Like the alien-ship shadow order, but follows a ship directly and does not clear existing orders |
| Longest-range missile ship | The ship with the longest effective range across all launchers |
| Fleet reaction delay | 0 without a current hostile contact, else int((1 - average TFPoints / 500) x (1 - reaction bonus) x 60) seconds, where 60 is the base fleet reaction delay |
| Group engagement order | An engagement order for each fleet, with RedeployOrderGiven set whatever the result |
Worked examples
Section titled “Worked examples”Each example is a constructed case worked through the rules on this page.
| Inputs | Literal outcome |
|---|---|
| Non-stealth sensor fleet, no contact in sensor range, a current neutral elsewhere in system, system value Medium | Threshold 100. A d1000 of 100 or lower switches on up to two ships per resolution, a 10% chance each phase. Sensors stay off in the other phases. |
| Alien target 60 HS, shield 12, military, standard missile size 6, group point-defence hits 27 | Base round(72) = 72 and count 72 / 6 = 12. The multiplier sqrt(27 / 12) = 1.5 gives 108 required. |
| Same target, inbound size 24, assigned 12, first missile hit chance 40% | Remaining 108 - 24 - 12 = 72, scaled by 80 / 40 to 144. Four size-6 launchers sum to 24, not above 144, so none are trimmed. |
| Alien base value 210, fast beam role, range 300,000 km | Priority 210 x 50 = 10,500 |
| Same ship with Unknown role at 300,000 km | Priority keeps the value written for the previous shooter or phase |
| Rammer fleet speed 4,000, target fleet speed 1,500 | Whole-number 4,000 / 1,500 = 2, so the chance is 2 x 5 = 10%. A target fleet at 4,001 km/s gives 0%. |
| Rammer 40.6 HS military at effective speed 4,000, target 120 HS commercial at 1,500 | Multiplier 1 + 2,500 / 10,000 = 1.25. The target takes floor(40.6) = 40 x 1.25 = 50. The rammer takes floor(120 / 10) = 12 x 1.25 = 15. |
| Retreat from a recent hostile ships system with neighbour B Clear and Low and neighbour A hostile presence and High, both paths clear | Order is B then A. B is queued first and A replaces it, so the fleet transits toward A. |
| Escape roll sum 432,000, Xenophobia 75, Determination 60 | 432,000 x 1.5 x 50 / 60 = 540,000 seconds, which is 6.25 days |
| Hostile rating 400,000, mobile 100,000, one static ship of cross-section 30, one STO element of size 10 with 6 units | Total 100,000 + 150,000 + 1,000 = 251,000. Since 1.5 x 251,000 = 376,500 is below 400,000, there is no rally at that population. |
Point-defence capacity floor(12.6) = 12, salvos of 6 and 5 missiles arriving at 20 and 28 seconds, no decoys |
Window from 20 to before 31 holds 11 and window from 28 to before 39 holds 5, so both salvos are covered and no automatic AMMs launch at them |
| Same salvos with one decoy per missile | Window from 20 to before 31 becomes 22, above 12, so nothing is marked and AMMs may launch |
Persistence and reload
Section titled “Persistence and reload”The tactical layer stores few durable values. Most of its state is rebuilt in each phase or each local pass.
| State | Storage | On load |
|---|---|---|
ActiveSensorsOn, ShieldsActive, CurrentShieldStrength, SyncFire, damage and hit timestamps (LastShipDamageTime, LastBeamHitTime, LastMissileHitTime, LastPenetratingDamageTime) |
FCT_Ship columns |
Restored to the ship, and NPR ships get fresh ship AI state |
Fire-control TargetID, TargetType, OpenFire, PointDefenceMode |
FCT_FireControlAssignment |
Restored when the fire-control component exists, and otherwise the row is skipped. NPR OpenFire is cleared again at the next combat phase. |
STO element TargetSelection |
FCT_GroundUnitFormationElement |
Restored |
RedeployOrderGiven, NoSurrender, EscapeTimeRemaining, LastFleetDamageTime, NPROperationalGroupID |
FCT_Fleet |
Restored, with the redeploy flag placed on fresh fleet AI state for NPR fleets |
| Queued ram, shadow, rally, patrol and retreat orders | FCT_MoveOrders |
Restored as ordinary orders |
| Escape Point, Manoeuvre Point and POI waypoints | FCT_Waypoint with WaypointType |
Restored, and expiry continues from CreationTime |
| Alien class role, observed point-defence counters and the missile-defence flag | FCT_AlienClass (AlienClassRole, MaxEnergyPDShots, TotalEnergyPDHits, TotalEnergyPDShots, ObservedMissileDefence) |
Restored |
| Target priority, base target value, distant target priority fallback, range from the firing ship, alien ship group | Not among the FCT_AlienShip columns |
Zero or empty until the next targeting pass |
| NPR standard-missile recharge flag, ram-attempted mark, last surrender decision time, , avoidance turn direction and timer | Not among the stored ship or fleet columns | Default values, so the recharge flag returns to 0 and a surrender decision is eligible at once |
| Jump point coverage mark, salvo covered by NPR point defence, colocated recharge-sync fleet mark, ship AI range values | Not stored | Set again by the next rule that uses them |
A saved NPROperationalGroupID that matches no loaded operational group (DIM_OperationalGroup) leaves the fleet without an operational group. The local pass reads the group’s flags without checking that one exists, so such a fleet makes the local pass fail. The game shows error Function #64 and the local pass for that system ends there. A known alien ship whose ship did not resolve on load never matches an active ship contact, so targeting skips it. Fleet removal clears the orders of NPR fleets that target a removed fleet. The Attempt to Ram order therefore cannot find its target only when a target fleet leaves the game without that removal.
Concept map
Section titled “Concept map”- Tactical cadence and entry points, the combat-phase open-fire reset and the race tactical pass with its contact windows.
- Active sensor policy, the per-phase roll that switches active sensors on by resolution.
- Shield policy, the conditions that keep shields raised or drop their charge.
- Combat targeting pass setup, the ready ships, planetary targets and alien ship groups.
- Target priority and kill requirements, alien ship priority by role and range and the missile and beam requirements.
- Missile selection and effective range, launcher and missile choice, reach tests and engagement standoff.
- Weapon assignment passes, the three-pass weapon assignment and the STO target selection mode.
- Open-fire and recharge synchronisation, the sync flags and launch waits.
- Point-defence groups and local shot capacity, the windows that suppress automatic AMMs.
- Surface-to-orbit target priority, the NPR STO target score.
- Local system response order, the order of tactical responses in the local pass.
- Ramming decision and resolution, the ram trigger, order and collision arithmetic.
- Engagement paths and overmatch checks, path clearance and the single-ship overmatch.
- Rally, retreat and system exit, rally totals, retreat candidates and escape timers.
- Avoidance waypoints, the detour search around hostile STO populations.
- Jump point coverage, local coverage of hostile-adjacent and Transit POI jump points.
- Shadowing scouts, the scouts that follow hostile ships at sensor range.
- Patrols, rescue and auxiliary tasks, POI patrols, lifepod rescue .
- Fleet merging and unused helpers, the colocated merge and the rules that never run.
- Persistence and reload, what the game stores and what it rebuilds.
- NPR strategic planning, the clocks, threat levels and branch table above this page.
- NPR fleet readiness and recovery, mission availability, readiness and the Ramming Force detachment.
- Automatic combat configuration, the weapon rebuild each ready ship runs.
- Space combat resolution, the combat phase, launches, STO fire and damage.
- Point-defence modes, allocation and interception, the modes and the ship capacity estimate.
- Ship power, class and detection, detection equations, shields and effective engine power.
- Boarding and ship capture, the surrender roll beside the ram decision.
- System danger ratings and route avoidance, the retreat filter and the danger flags.
- Waypoints, points of interest and patrol routes, POI creation, expiry and patrol stops.
- Movement and logistics, lost-track waypoints and order execution.
- Move action catalogue and executors, the Attempt to Ram and other queued actions.
- Fleet organisation, sub-fleets, squadrons and detachment, squadrons, detachment and merging.
- Intelligence mechanics, the observed weapons that set alien class roles.
- Jump point network and galaxy topology, the jump points that retreats and coverage use.
- Ground combat and conquest, the STO formations that fire and block paths.
- Ownership, destruction and aftermath, fleet removal and the lifepods that rescues collect.
- NPR race generation and automated design, the automated designs whose missile type and stealth design the pass reads.
Resources
Section titled “Resources”Related community documentation and developer posts. These may describe a different game version.