Participants and combat contexts
Section titled “Participants and combat contexts”This page covers planetary ground combat, surrender and the shared transfer of population control. It follows how combat is selected, how casualties wait until the aftermath and what the strategic consequences are.
A ground unit’s size is the unit class size in tons (FCT_GroundUnitClass.Size) that formation totals use, not population in millions. Population ownership, the formation’s race, its species, the population a formation is stationed at and the ship that carries it are separate facts. Hostility comes from the acting race’s records of other races. A body can hold several populations and several hostile races. A ground combat context is one acting race on one system body, not a paired battle between two populations.
Ground force organisation covers headquarters, command propagation, support attachments and transport. Ground-unit class design covers weapon and unit class recipes. Ground force construction and replacements covers training and replacement manufacture. Space combat resolution owns surface-to-orbit (STO) fire, space-weapon impacts, ship damage and the bombardment damage to populations, which ground combat uses as well. Game time and state refresh owns the wider increment order. Colony and population lifecycle owns ongoing unrest and political progression. Boarding uses the same element combat and report model but has its own shipboard schedule and capture path. Boarding and ship capture covers it, and this page does not.
When the game builds the combat contexts, it first marks every existing battle record of each race inactive. It then collects the races toward which that race’s contact status is exactly Hostile. Candidate bodies are the bodies of the race’s own populations that pass the population-or-assets test below, plus the orbit bodies of the race’s fleets that hold an active planetary combat order (Provide Ground CAP, Planetary Search and Destroy or Planetary Flak Suppression). The game intersects those bodies with the bodies of each hostile race’s populations that also pass the test. It adds one context per acting race and body. A formation carried aboard a ship, with no population, therefore does not by itself bring its race into this planetary selection. Sharing map coordinates is not enough either. The test compares the system body itself.
A population passes the population-or-assets test when at least one of these holds. Its total population (surface and orbital) is above 0.01 million, it has any installation entry, any formation is stationed at exactly this population, its total minerals are above 0, it holds any prisoner group, or it holds any missile ordnance . The test does not need all of them. Each removal logs a defeat event for the acting race that ends “have been defeated. Our forces did not find any installations or useful materials.”
An existing battle record for the race and body (FCT_RaceGroundCombat) adds 1 to ConsecutiveCombatRounds and becomes active. A new record starts at 1. The increase happens once for each hostile race, even when the context already exists, so several hostile races on the same body can raise the counter more than once per update. The counter tracks intelligence progress for the hostile force estimate. It is not an exact count of executed attack rounds. Inactive records are then dropped. A race with no hostile races skips that final cleanup, so its old records stay, marked inactive.
During each round, the friendly formations of a context are all formations of the acting race stationed at populations on the body. The hostile formations are the formations of other races stationed at populations there toward which the acting race has a Hostile contact status. Allied races are not merged into the acting race’s attack list. Different hostile races can share its target pool. Friendly and hostile formations need not belong to the same population. There is no check that the hostility is mutual. The other race’s own context is selected on its own terms. A context with no friendly formations and no fleet holding an active planetary combat order at that body is skipped for the round.
Cadence and round execution
Section titled “Cadence and round execution”Each increment advances weapon and ground recharge timers, resolves space fire and its aftermath, clears fired flags, updates which races have detected STO units that fired, and advances fortification, all before ground rounds are considered. The game then takes elapsed = current game time - FCT_Game.LastGroundCombatTime, in seconds, and requires elapsed > FCT_Game.MinGroundCombatPeriod. Equality is not enough. The default period is 28,800 seconds (8 hours).
When contexts first appear while FCT_Game.CurrentGroundCombat is off, the game turns it on and sets the last ground combat time to the current game time. It does not fire a ground round at once. On later eligible updates with it already on, it updates NPR ground posture and organisation for the NPR populations on the NPR combat bodies, computes rounds = floor(elapsed / period), and reuses the same context list for up to that many rounds. It stops early when a round reports no success. Afterwards it advances the stored clock by the scheduled rounds times the period, even when the rounds stopped early. When there are no contexts, the game turns CurrentGroundCombat off. The strict comparison can delay a round at an exact period boundary.
Each round starts by clearing the list of combat attacks that wait for the aftermath. At every combat body it resets each formation’s per-round tallies of units destroyed by target class and units lost by class, and its fire-direction allocation. It resets each element’s attack reports, pending losses, hits, penetrations and morale change, and its anti-air fired flag. It clears the collateral damage potential of every population in the game. Element unit counts are not reduced here. Friendly and hostile lists are rebuilt for each context inside the round.
A round reports success when at least one Front Line formation obtains a target. A successful surrender alone does not count, and neither does the stand-alone Planetary Search and Destroy attack. A round without success can therefore stop the catch-up rounds although other work happened in it. Each completed round turns collateral potential into attack records and resolves them through the same combat aftermath that space combat uses. After a successful round, every player race redistributes its existing ground replacements before the next round. This moves units that already exist. It does not manufacture the losses on the spot. Replacement manufacture and existing-unit reinforcement covers the accounting.
Positions targeting and support
Section titled “Positions targeting and support”Hostile formations are ordered by field position. Front Line Defence comes first, then Front Line Attack, Support and Rear Echelon. Each formation’s selection weight is round(total size) in either Front Line position, round(total size / 4) in Support and round(total size / 20) in Rear Echelon. Any other position would use full size. Total size is sum over the formation's elements of unit class size x units. Each formation receives an inclusive interval that starts at previous cumulative weight + 1. The Front Line boundary ends before the first formation that is not in a Front Line position. A Front Line Attack formation rolls across all formations. A Front Line Defence formation rolls only across the Front Line interval and does not fire when that interval is 0. Support and Rear Echelon formations do not enter the Front Line attacker list themselves. A weight that rounds to 0 gives an empty interval.
The roll that picks a target formation covers the summed selection weights of the formations the attacker can choose from. It has fixed results for small sums. A sum of 0 gives 0, a sum of 1 gives 1 and a sum of 2 gives 1 or 2. Formation selection is therefore not a plain zero-based pick. Within the selected formation, an ordinary target element weighs whole-number(units x unit class size). For a unit class with the non-combat flag (FCT_GroundUnitClass.NonCombatClass), the weight is divided by 5 before the whole-number cut. Counterbattery element weights use whole-number(units x unit class size) without that discount.
For sums above 2, the roll takes a whole number from 0 to sum - 1 and rolls again on 0, so it returns 1 to sum - 1. The final point of the last nonempty formation interval can never be drawn. An n-sided die (dn) instead returns 1 to n inclusive and returns 0 for 0 sides. A die size with a fraction loses the fraction. Ordinary rounding sends an exact half to the even neighbour. Converting a decimal to a whole number truncates toward zero. A d10000 <= H test gives floor(H) successful faces when H lies between 0 and 10000. No general chance cap applies.
Each Front Line attack includes the attacking formation’s own damage-dealing elements. Support formations on the same body that are attached to it add their Light bombardment elements to direct fire. Support elements with at least Medium bombardment, and the elements of attached Rear Echelon formations with at least Heavy bombardment, enter the bombardment pool. Support attachment (FCT_GroundUnitFormation.AssignedFormationID) is separate from the command parent. Medium bombardment chooses between the target formation and the target’s attached Support bombardment elements, weighted by their selection totals. Heavy bombardment adds the target’s attached Rear Echelon heavy bombardment elements to that alternative pool. Medium and Heavy pool attacks are bombardment-only attacks. Ordinary direct fire and Light support attacks are not.
These tests apply to the unit class as a whole. A unit class with exactly Light bombardment that joins direct fire fires all its components with positive penetration. A unit class holding both an exactly Medium and a Heavy component enters both bombardment passes. A bombardment-only attack fires every component with any bombardment level other than None, not only the level that admitted the unit class. The route is drawn once per bombardment element attack. The Front Line route then chooses a target element for each firing unit. The counterbattery route draws one fixed enemy element that all firing units of that attack share.
Each round sets the Ground Combat Defence multiplier on hostile formations from their defending commanders. It sets the Ground Combat Offence, Ground Combat Logistics, Ground Combat Manoeuvre, Ground Combat Artillery and Ground Combat Anti-Aircraft multipliers on friendly formations from their commanders. Each multiplier is the commander’s effective ground command bonus, and a formation without a commander uses 1. A formation’s multipliers are set again each time a context that includes it runs, as a defender in another race’s context or as an attacker in its own. No single setting marks a race as the attacker or the defender of the whole battle. Organisation and commander-location rules are in HQ capacity and command bonuses.
Element attacks and damage
Section titled “Element attacks and damage”The shot, penetration and morale formulas follow, with the conditions under which each applies. A shot does not remove a unit from the target’s live unit count at once. Hits, penetrations, losses and morale changes accumulate until the aftermath. Units marked for destruction in other contexts of the same round can therefore still return fire, while attack and support state that changes during the round still affects later work.
An element attack first computes the environment divisor E, which starts at 1. Each unmet capability multiplies E by 2:
- gravity below the species minimum without Low Gravity Combat
- gravity above the species maximum without High Gravity Combat
- atmospheric pressure above the species maximum without Extreme Pressure Combat
- surface temperature outside the species range without Extreme Temperature Combat
Low pressure, atmospheric breathability and radiation are not tested. A desert dominant terrain (DIM_PlanetaryTerrain.DesertTerrain) with Desert Warfare divides E by 2, and a jungle dominant terrain (JungleTerrain) with Jungle Warfare divides E by 2. Mountain Warfare divides E by 2 on any dominant terrain whose base terrain type is not Barren, rather than on a mountain terrain. These factors stack.
Supply is attempted once per attack, before any unit fires. On failure only floor(units / 4) units fire. On success all units fire. Each firing unit selects one target element with a roll from 1 to the target formation’s summed element weights, in which every point can come up, unless the attack was given a fixed counterbattery element. All components and shots of that unit keep that target. Its initial d10000 threshold H uses base B = 2000, the dominant terrain’s hit multiplier T (DIM_PlanetaryTerrain.ToHitModifier) and the attacker’s morale M in raw points:
| Target state | Initial H | Omitted factor |
|---|---|---|
FortificationLevel exactly 1 |
B x T x target base type DIM_GroundUnitBaseType.ToHitModifier x M/100 / E |
Defender command bonus |
Any other FortificationLevel |
B x T x M/100 / (E x terrain DIM_PlanetaryTerrain.FortificationModifier x fortification level x target formation's Ground Combat Defence multiplier) |
Target base type DIM_GroundUnitBaseType.ToHitModifier |
An attacking unit class with the non-combat flag divides H by 5. These are exact equality tests, not a smooth blend of base type and fortification effects.
Components are visited in stored order. Modified penetration is round(component DIM_GroundComponentType.Penetration x unit class FCT_GroundUnitClass.WeaponStrengthModifier, 2) and modified damage is round(component DIM_GroundComponentType.Damage x WeaponStrengthModifier, 2). A component with modified penetration of 0 or less is skipped. Bombardment-only attacks also skip components whose BombardmentWeapon is None. For every shot of a component (DIM_GroundComponentType.Shots), the game first adds the raw component damage cubed to the target population’s collateral potential. It then multiplies the running H by the formation’s Ground Combat Offence multiplier for ordinary components, or by its Ground Combat Artillery multiplier for bombardment components, and rolls d10000 <= H. H is not restored between shots or components. It resets only for the next attacking unit. The bonuses therefore compound across one unit’s whole component sequence.
Each hit adds one pending hit to the target element and one hit to the attacker’s report. Effective armour A is round(armour DIM_GroundUnitArmour.ArmourStrength x unit class FCT_GroundUnitClass.ArmourStrengthModifier, 1). If A > penetration, penetration needs d100 <= 100 x (penetration / A)^2. Otherwise penetration is automatic. Effective hit points HP are round(base type DIM_GroundUnitBaseType.HitPoints x ArmourStrengthModifier, 1). For Infantry this is also multiplied by the highest positive DIM_GroundUnitCapability.HPEnhancement among the unit class’s capabilities, without another rounding. If HP > damage, destruction needs d100 <= 100 x (damage / HP)^2. Otherwise destruction is automatic. A failed check adds 0 destroyed size. A kill adds the unit class size. Surviving units keep no partial hit point or armour damage.
Pending kills can exceed the unit count, because a hit neither lowers the live unit count nor stops at the element’s pending loss count. A kill lowers the defender’s pending morale by morale / units / 2 if the target formation is in Front Line Attack and a ground element made the attack, and by morale / units / 4 otherwise. An attacking ground element gains 1 / (5 x target units) morale points in the first case or 1 / (10 x target units) otherwise, . A ship attacker gets no element reward. Ship strikes never use the larger morale loss that applies when the target is in Front Line Attack. Every pending hit uses the live morale and unit counts, which do not change until the aftermath.
A destroyed HQ unit can kill its formation commander at once. Let h be the largest DIM_GroundComponentType.HQMaxSize among this unit class’s components, and C the formation’s sum of units x each unit class's largest HQMaxSize. The commander dies when d1000 < (h / C x 0.25 x 1000), with a strict less-than, and retires as Killed in Ground Combat (health, retirement and casualties). Pending losses do not lower C yet. Ground attacks also add up destroyed size and, after every hit, apply a diplomatic change of -(cumulative destroyed size / 100) toward the attacking race with the forced hostility threshold. Later hits in the same attack can therefore reapply the effect of earlier kills. Ground-unit attack accumulation covers the diplomatic side.
Supply fortification and recovery
Section titled “Supply fortification and recovery”Combat supply is separate from colony maintenance supplies (MSP), fuel and the production mineral recipe. Normal demand is FCT_GroundUnitClass.UnitSupplyCost x units x 0.1 supply points. A unit class with zero supply cost always succeeds. A Ground Combat Logistics multiplier above 1 can waive the consumption on d100 <= whole-number((multiplier - 1) x 100). The game searches the formation’s organisation supply chain and the matching leaf logistics formations before it uses internal supply. A successful internal use spends one of ten CurrentSupply steps. An element at 0 reports failure. Refill demand is UnitSupplyCost x units x (10 - CurrentSupply) x 0.1.
External logistics supply requires that the supplying formation is stationed at the same population as the consumer, which is stricter than the same-body rule for combat and support. A formation supplying another formation may use only Light Vehicle logistics elements. A formation supplying itself may use logistics elements of any base type. Logistics elements are tried by descending unit count. One element must cover the whole demand from its logistics points per unit x units, with the points per unit from DIM_GroundComponentType.LogisticsPoints. Elements that cannot are skipped rather than pooled. When the demand exceeds one unit’s points, floor(demand / points per unit) whole units are spent and their points are taken off the demand. A d1000 roll at or below (remaining demand / points per unit) x 1000 then spends one more unit. The search does not stop after a success, so several eligible logistics elements can be consumed. Emptied elements are removed. For elements below full supply in formations stationed at populations, the construction-cycle resupply multiplies the demand by Logistics bonus - 2, using the commander’s own Logistics bonus value (bonus 24 in DIM_CommanderBonusType), and rounds to one decimal (an exact half goes to the even neighbour), when the formation has a commander. Without a commander the demand is unchanged. A demand of 0 or less can succeed without consumption. Upkeep, supply and recovery has the full accounting and the weighted averages of replacement transfer.
The organisation chain search visits the greatest depth first, which is the top-most ancestor. After a leaf logistics formation of a chain member succeeds, the chain formation itself always makes its own supply attempt, and that result replaces the success. Logistics units can therefore be consumed from a leaf while the attack still goes on to spend internal supply or reports failure. Restoring full supply has the same replaced leaf success. When combat supply succeeds with internal supply below 10, the element also tries a full refill directly from the chain formations, without their leaf children.
Fortification advances once per increment, before ground rounds, for elements of formations stationed at populations. Elements in any position other than Front Line Attack fortify themselves while they are below their base type’s DIM_GroundUnitBaseType.MaxSelfFortification, when that maximum is above 1. The gain is (MaxSelfFortification - 1) x elapsed seconds / 2,592,000 (one 30-day month), capped at that maximum. Setting a formation to Front Line Attack through the normal position change resets each element’s fortification level to 1. Fortification levels restored when a game is loaded are not reset this way.
Engineer targets must be in a position other than Front Line Attack, at or above the self-fortification maximum and below DIM_GroundUnitBaseType.MaxFortification. Construction elements (unit class ConstructionRating above 0) are visited by descending ConstructionRating x units. Available targets come from the engineer formation’s own organisation when it has child formations. A leaf formation with a parent uses its parent’s organisation, and a formation with neither uses its own. Targets must share the engineer’s system body and must not have been processed yet this increment. An engineer that finds targets is assigned to fortification work and receives a work budget of effective construction rating x race construction production x 100, with the race value from FCT_Race.ConstructionProduction. The effective construction rating is units x ConstructionRating, multiplied by the commander’s own Production bonus when the formation has a commander. For target size S = unit class size x units, the work fraction is 1 if S < remaining work, and remaining work / S otherwise. The gain is (MaxFortification - MaxSelfFortification) x elapsed seconds / 7,776,000 x work fraction, capped at the maximum, where 7,776,000 seconds are three 30-day months. The engineer stops when its work budget reaches 0. The targets are not sorted. They are visited in the order of the organisation’s element list. Each target is marked processed even after partial work.
Remaining STO recharge times (FCT_ElementRecharge.RechargeRemaining) are in seconds. Each increment keeps the entries strictly greater than the elapsed seconds and subtracts the elapsed value from them. Entries equal to the elapsed time expire. This timer is separate from the coarse ground round schedule. Ordinary element combat uses its own supply and weapon checks. Surface-to-orbit ship and population fire covers STO mechanics.
The construction cycle runs morale recovery with the elapsed years for formations stationed at populations that have commanders. Let b be the commander’s effective Ground Combat Training multiplier and y the elapsed years. Below morale 100, the element gains 100 x b x y, capped at 100. That case does not also train above 100 in the same pass. At or above 100, an element at exactly morale 100 with b exactly 1 is skipped. Otherwise the training bonus percent is p = (b - 1) x 100 and the ceiling is C = 100 + 5p. Above C, the adjustment is -10 x y. Otherwise, if C > 100, the adjustment is p x y x (1 - (morale - 100) / (C - 100)). The game applies the adjustment and caps the result at C. The cap can drop morale above the ceiling to C at once, even when the nominal decay would leave it higher. Formations without commanders and formations aboard ships are left out of this recovery.
Breakthrough and air support
Section titled “Breakthrough and air support”After the primary attacks, each hostile formation’s morale-adjusted loss size is sum over its elements of unit class size x units lost this round x 100 / morale. Dividing it by the formation’s total size before the aftermath gives the loss fraction. A total size of 0 or less gives fraction 1, while zero loss size on a formation with positive size skips the check. An attacker currently targeting that formation breaks through when mobile modifier x loss fraction x Ground Combat Manoeuvre multiplier >= 0.3, using its own manoeuvre multiplier.
Mobile modifier = weighted mobile morale size / total formation size. Each element whose base type is not Static adds unit class size x units x morale / 100, halved for Infantry. Static units count only in the denominator. Front Line Attack doubles the numerator. Support and Rear Echelon formations return 0, and so does a formation of total size 0. A breakthrough logs an event, draws a new target across all hostile positions, rebuilds that target’s element weights with the non-combat divide by 5, and gives each attacking element another ordinary attack. It does not repeat the attached support attacks. If any element of the defending formation has morale 0, the loss calculation shows a Function #1792 error and returns 0, so the breakthrough check for that formation is skipped.
The extra attack uses every element of the formation, because the filter for damage-dealing elements is not applied. Even an element with no firing component can attempt supply. Retargeting changes the formation’s current target. If the new target is a later hostile formation in the breakthrough pass, the formation can be checked again against that formation’s losses. Nothing limits a formation to one breakthrough per round.
Ships with a support assignment are checked largest class first. A ship keeps its assignment only when the supported formation is stationed at a population in the same system, the ship’s fleet is at that population’s exact X and Y coordinates, and the fleet’s current order is Provide Ground Support or Provide Orbital Bombardment Support. Fire-direction capacity is 6 x sum over the formation's elements of units x class FireDirection, where the class value is the unit class’s total DIM_GroundComponentType.FireDirection. A ground support ship takes 1 point and an orbital bombardment ship takes 6. An orbital ship that finds some capacity left but less than six enters reassignment. Reassignment checks the original formation’s insufficient capacity again, so it never succeeds through the normal queue and the assignment is cleared, with an event saying the ship can no longer provide support. Ships checked after the capacity is already full are not cleared by that capacity check. Aircraft and orbital bombardment support covers how ships are assigned.
For an attacking formation, the assigned ships whose fleet orbits the formation’s body and holds a Provide Ground Support or Provide Orbital Bombardment Support order give support. Support requires required fire direction = ground support ships / 6 + orbital ships, in raw direction points. When the raw capacity is smaller, the support multiplier is capacity / requirement. Otherwise it is 1. These ships choose between the primary target and the heavy counterbattery pool and make a ground support strike or an orbital bombardment direct fire attack. Ships that keep an assignment after the capacity is full still count toward the requirement in such unusual states.
Own ships orbiting the body in fleets with a Planetary Search and Destroy order each choose a hostile formation across all positions and attack at multiplier 0.33 as a search and destroy strike. The same ships then make an anti-air suppression strike at 0.5. AA fire follows only when the race has at least one planetary combat ship at the body, meaning a ship in a fleet orbiting it with a Provide Ground Support, Provide Ground CAP, Planetary Flak Suppression or Planetary Search and Destroy order. AA fire uses formations that ships have attacked this round. Their elements with at least Light AA (DIM_GroundComponentType.AAWeapon) defend that formation. Parent formations without attackers of their own use their elements with at least Medium AA against the collected attackers of their children. The remaining elements with at least Heavy AA that have not fired this round fire against all planetary combat ships, but they pass Medium as the required level. Full ship weapon eligibility, ordnance, altitude and AA rules, and space damage are in space combat resolution.
A ship ground attack rebuilds the ordinary element weights, with the non-combat divide by 5, for a search and destroy strike, or only the weights of elements with at least Light AA for an anti-air suppression strike. Attached support ship attacks use intervals prepared earlier in the round. The suppression strike still searches every element of the formation for the roll and takes the first match in element order. An element without AA keeps the selection range it was given earlier in the round, so it can be picked when that old range contains the roll. Every mode other than orbital bombardment records the ship as an attacker of the target formation. This includes a suppression strike that finds no AA element, which records the ship and ends without firing. A ship recorded more than once is more likely to be chosen by later AA fire. The ship threshold H uses the same fortification split, replaces attacker morale by crew performance x effective Ground Support commander bonus x passed hit modifier, and has no environment divisor. Crew performance is (1 + round((square root of FCT_Ship.GradePoints) - 10) / 100) x CrewMorale x OverhaulFactor.
Orbital bombardment direct fire takes the weapons linked to direct fire controls that have not fired this phase and drops the weapons that are recharging. Each weapon assignment selects one element, applies the weapon’s to-hit modifier only if it is strictly between 0 and 1, and uses the weapon’s damage at range 1. Ground damage = floor(20 x square root of weapon damage) and penetration = floor(ground damage / 2). Standard races can suffer firing failure when maintenance applies, that is when the No Maintenance Required game option (FCT_Game.NoOverhauls) is off. Each of the weapon’s shots adds (ground damage / 5)^3 collateral, rolls d10000 and resolves the hit without the larger morale loss that applies when the target is in Front Line Attack. H does not compound per shot here. This attack respects existing recharge and fired state, but it does not start a recharge or mark the fire control as fired.
The other ship modes use the missile assignments whose missile has FCT_MissileType.GroundDamage above 0. Each assignment selects one element and fires shots 1 to GroundShots, which gives floor(GroundShots) shots. Penetration is GroundAP, damage is GroundDamage and collateral per shot is GroundBaseDamage^3. This attack does not reduce missile stock, remove assignments, mark anything as fired or start a recharge. Ordinary space-launch accounting does not apply to it.
AA fire attempts supply once but discards the floor(units / 4) result of a shortage, so all units still fire. It uses the four environment penalties above without the warfare terrain bonuses. Each unit chooses one ship from the given list. Each component meeting the required AA level then makes one d10000 roll and ignores the component’s shots. The threshold is 1000 x min(1, FCT_GroundUnitClass.TrackingSpeed / target effective maximum speed) x morale / 100 x Ground Combat Anti-Aircraft multiplier / E. Damage is floor(round(component damage x WeaponStrengthModifier / 20, 2)^2). Zero damage is ignored. Hits are grouped by damage value and go to normal ship damage. The parent AA layer uses one combined list of the attackers of all qualifying children, rather than one list per parent.
Reports and deferred aftermath
Section titled “Reports and deferred aftermath”The report step writes element-versus-class shots, hits, penetrations and destruction, merges unit class, formation and body summaries and processes orbital support records. The ground combat aftermath runs that report step before it applies casualties. It selects elements with positive losses, hits or penetrations, or a morale change whose absolute value is strictly greater than 0.1. Hits and penetrations are capped at the current unit count. Losses at or above the unit count are capped, the element is removed, and a formation left empty is removed from the game. Smaller losses are subtracted.
Morale changes only when the absolute pending change is above 0.1 and the element still has units. No limit is applied to morale in this step. Other races with formations on the same body, or aboard the exact same ship, receive combat observations. That list is not limited to hostile races. Element, formation and location loss events follow, and the per-round counters are reset. Removed units are real losses. Production and replacement templates do not bring a deleted formation back automatically (ground force construction and replacements).
Collateral damage potential is turned into hits per population and attacking race. Hits = floor(potential x intact target size / (intact target size + FCT_Population.DestroyedInstallationSize) / 50000), only when the total target size is not 0. Intact target size = sum of installation amount x DIM_PlanetaryInstallation.TargetSize. The records use damage per hit 2 and go through the same population damage rules as space bombardment. Ground combat can therefore destroy population assets through the same combat aftermath. Full population bombardment impact math belongs to space combat resolution.
Surrender and occupation strength
Section titled “Surrender and occupation strength”The surrender step runs when a context has no hostile formations and at least one friendly formation. It considers the hostile populations on the same body that pass the population-or-assets test. It chooses one occupying population of the acting race on that body, the one with the largest summed formation size stationed at exactly that population. The chosen population supplies the occupation strength. Friendly formations at other populations on the same body do not all add to it automatically. A defender with no formations can still refuse to surrender. After its attempts the step moves on to the next context instead of making normal attacks.
The surrender test computes r = (Determination + Militancy + Xenophobia) / 300 from the species of the surrendering population (FCT_Species), with decimal division, and required = r x population amount, where the population amount is the surface population in millions (FCT_Population.Population). It succeeds when the occupying population’s total occupation strength >= required, so equality succeeds. The status occupation modifier (DIM_PopPoliticalStatus.OccupationForceMod) does not enter this initial surrender threshold. On success the game logs an event and hands the population over through the population control transfer with status Conquered, technology capture when the New Tech from Conquest game option (FCT_Game.TechFromConquest) is on, wealth looting and forced local ship surrender. Liberation, surrender and the occupation of an empty colony change only the event wording. The transfer decides the resulting status.
| Case | Event text after “Enemy forces on (body)” |
|---|---|
| Occupier is the population’s recorded original race, population above 0 | “have been defeated and the population has been liberated.” |
| Occupier is the population’s recorded original race, population 0 | “have been defeated and the colony has been liberated.” |
| Any other occupier, population above 0 | “have been defeated and the enemy population has surrendered.” |
| Any other occupier, population 0 | “have been defeated and the enemy colony has been occupied.” |
| Strength below the requirement | “have been defeated but the population refuses to surrender. Current occupation strength is (strength). Required strength to force surrender is (required).” |
Formation occupation strength depends on the order of accumulation. Start with s = 0. For each element in the order the formation holds them, add square root of unit class size x units x morale / 10000. Then, if the formation has a commander, multiply the whole running s by the commander’s own Ground Combat Occupation bonus value. The result is s rounded to a whole number. It is not one final commander multiplication over a sum. The population adds those already rounded formation results and rounds again. It counts every formation stationed at exactly that population, without a separate check of the formation’s race.
When the occupier is an NPR and the transfer succeeds, a captured population above 0 receives all of the NPR’s friendly formations on the body, which move to it. Every other population on the same body with total population 0 and no installation entries has its invasion staging flag cleared and goes to the NPR’s empty-population removal, which also retargets the NPR’s fleet orders. That list of empty populations does not check the race. An empty captured population is instead absorbed with its assets into the occupying population, . Player conquest does not take these extra NPR consolidation steps.
Population control transfer
Section titled “Population control transfer”The control transfer is shared by ground surrender and other handovers. Its options govern technology capture, wealth looting and forced local ship surrender. It does not recheck victory, occupation strength or hostility. Much of its work happens while the population still belongs to the old owner. It changes the existing population rather than creating a new merged population. Colony conquest and control transfer puts the sequence beside the other ownership changes.
When the new owner differs from the population’s recorded original race (FCT_Population.OriginalRaceID), the new owner records species knowledge of the old owner’s species. A population above 0 reveals the old owner’s portrait. Only an empty population takes the new owner’s primary species. Technology capture also requires the technology option and an old owner that is a standard race rather than a special race. An Imperial Population transfer grants every nonracial technology the old owner knows that the recipient lacks and that is not marked FCT_TechSystem.NoTechScan. A Conquered transfer tests each such technology with d100 <= number of research labs, when the population has any labs. There is no separate probability cap, so at least 100 labs pass every d100. Civilian mining complexes become Ex-Civilian Mining Complexes inside this technology-enabled Conquered case, not as an unconditional conquest cleanup. Colony capture and research and scientific personnel cover the research consequences.
Under the same condition on the original race, looting requires positive old-owner wealth, a standard old owner and the looting option. Loot = old race wealth x population amount / sum of the population amounts of all the old race's populations. The new race records it as income under Looted from Conquered Population (wealth use 30). The old race records an expense under Lost due to Conquered Population (wealth use 31). Each race gets an event. The formula has no guard against a zero total. If it fails, the transfer shows a Function #2179 error and ends there, and none of the later transfer steps run.
The remaining transfer effects are not limited to that condition:
- Clear local research projects, industrial projects, ground unit training and installation demands. Remove the old owner’s queued research at this population, its sector commands here and the naval administration commands here. Existing installations, local minerals and other population stocks stay with the transferred population unless a specific step changes them.
- An observer keeps its intelligence on the population only when it has a contact on the population updated at the current game time and knows the new owner. It then gets an event saying the population has been transferred, and its record moves to the new owner. Every other observer loses its record of the population. All actual contacts for this population are removed. Old-owner fleet orders aimed at this population or at its former contacts are cleared, and civilian freighters and colony ships also lose their cargo. Every fleet assigned to this population loses the assignment.
- Set total population to the surface population amount and turn off civilian mineral purchase (
FCT_Population.PurchaseCivilianMinerals). Delete local shipyard tasks. Shipyards pass to the new owner with build class, retool class, default fleet, upgrade task and capacity target cleared. - Rescue the new owner’s commanders held here by clearing their prisoner, processed and location state and returning them to active service, with an event for each. Prisoners of the new owner’s race held here are added to its academy crewmen (
FCT_Race.AcademyCrewmen), with an event. The transfer does not remove those prisoner groups. Old-owner commanders assigned here as population, colony or academy staff lose their assignments. - Remove all ground formations stationed at exactly this population, clearing their commanders’ assignments first. This removal does not check the formation’s race. With forced local ship surrender and a population amount of at least 10 million, old-owner ships in the same system at the population’s exact X and Y coordinates surrender to the new owner.
- If the population was the capital, pick a replacement from the old owner’s populations by descending total population and clear this population’s capital flag. The pick happens before ownership changes and does not exclude this population, so the chosen candidate can be the transferring population itself.
- If the new owner differs from the recorded original race and the population amount is not 0, assign the requested resulting status. Otherwise assign Imperial Population. Reset status points (
StatusPoints) and unrest (UnrestPoints) to 0 and clear the mass driver destination. Remove the population AI for a player recipient, or create one when a player population passes to an NPR. Remove missile salvos aimed at this population as a population, ground unit, shipyard or STO ground unit target. - If the old owner is a standard NPR whose summed total population equals this population amount, each of its remaining ships at the population’s location asks its AI whether to surrender, and the ones that agree surrender. This is independent of the forced surrender above. Finally the population takes the recipient’s survey of the system, is renamed to the body’s name as the recipient knows it, records the old owner as its original race, and then passes to the new owner. The recorded original race is therefore the immediately previous owner after each transfer. It is not kept as a fixed founding owner.
The political status catalogue lists the statuses a transfer can assign.
Occupation and political interface
Section titled “Occupation and political interface”Initial surrender and ongoing occupation use different thresholds. The ongoing values are resistance = r x population amount, required occupation = resistance x OccupationForceMod, actual occupation = population's total occupation strength, and net police = actual - required, where OccupationForceMod is the value of the population’s status. For a population above 0, the annual unrest reduction rate is net police / resistance when resistance is positive, and its starting value 1 otherwise. The game keeps these values for the population and also shows them on the Summary tab of the Economics window as “Occupation Required / Actual” (for any status other than Imperial Population) and, for a population above 0, “Police Strength / Resistance” and “Annual Unrest Reduction” as a percentage. When the rows are not shown, the values are still calculated.
The transfer resets unrest and status progress, but conquest does not mean instant political assimilation. Ongoing occupation shortfall, unrest and stability, protection and status advancement are in occupation, protection, unrest and stability. The progression formulas mix whole-number and decimal steps differently. The political resistance modifier and natural unrest reduction do not use exactly the same decimal calculation as surrender.
Persistence and reload
Section titled “Persistence and reload”A save stores FCT_Game.LastGroundCombatTime, MinGroundCombatPeriod and CurrentGroundCombat. FCT_RaceGroundCombat stores RaceID, SystemBodyID and ConsecutiveCombatRounds. The game does not store which battle records were active this update or the per-update battle lists, and rebuilds them. Formation rows (FCT_GroundUnitFormation) keep owner and location, field position, parent and support links and replacement references. Element rows (FCT_GroundUnitFormationElement) keep Units, unit class and species, Morale, FortificationLevel, CurrentSupply, TargetSelection and FiringDistribution. FCT_ElementRecharge keeps each remaining recharge timer as its own row, and FCT_STODetected keeps which races have detected each STO element. Pending round counters and report summaries are not columns of the element rows.
A control transfer survives a save through the ordinary population, formation, shipyard and ship ownership records. There is no separate pending conquest record. Contexts rebuilt after a load use the loaded ownership and locations and the current hostility. Save load and creation dates covers the line between saved state and later refresh.
Worked examples
Section titled “Worked examples”These are synthetic inputs that show the rules. They do not describe particular species or designs in the game database.
Formation targeting. Enemy Front Line size 400, Support size 400 and Rear Echelon size 400 give weights 400, 100 and 20, total 520. A Front Line Attack formation can select all three. A Front Line Defence formation selects only within the first 400 interval. Within a target, 10 combat units of size 4 weigh 40, while 10 non-combat units of size 4 weigh 8 after the divide by 5. Equal raw tonnage therefore does not give them equal target chances.
Breakthrough. A full-morale all-vehicle Front Line Attack formation has mobile modifier 2. If its target’s morale-adjusted loss fraction is 0.15 and its manoeuvre multiplier is 1, the product 0.30 meets the threshold and grants the extra attack. An otherwise identical all-infantry formation has modifier 1 and product 0.15, so it does not.
Compounded shots and two damage checks. With terrain and base hit factors 1, morale 100, E = 1 and offence multiplier 1.2, a unit’s two ordinary shots use thresholds 2400 then 2880. A following artillery component with multiplier 1.1 uses 3168, while the next unit starts again from 2000. If a hit has penetration 10 against armour 20 and damage 20 against 40 hit points, penetration and destruction each need a separate d100 <= 25, which gives 6.25% destruction per hit before whole-number threshold effects. No 20-point wound carries over after a failure.
Shortage and collateral. Seven ground units without any supply fire only floor(7/4) = 1 unit. Seven AA units still all fire, because their shortage result is discarded. Collateral potential 1,000,000 with intact target size 80 and destroyed size 20 produces floor(1,000,000 x 0.8 / 50,000) = 16 population hits of damage 2, whatever the tactical hit results. These ground collateral records carry radiation damage per hit 0. Radiation is not a tactical hit penalty in the ground, ship and AA attacks described here.
Surrender refusal and equality. Species values 100/100/100 give r = 1. A 20-million population without defending formations requires strength 20. A chosen occupying population with strength 19 fails despite winning the fighting, and strength 20 succeeds. Garrison strength at a separate friendly population on the same body does not add to the chosen population’s occupation strength.
Occupation rounding and order. An element of size 100, 100 units and morale 100 contributes 10 strength. Two such elements with a commander occupation multiplier of 1.2 produce (10 x 1.2 + 10) x 1.2 = 26.4, rounded to 26, rather than (10 + 10) x 1.2 = 24. When the elements contribute different amounts, the order in which they are counted matters as well.
Captured research and wealth. A standard old owner with 1,000 wealth and populations of 20 and 80 million loses the 20-million colony. The loot is 200 wealth. With technology capture on, five research labs give each missing eligible nonracial technology a separate d100 <= 5 test. This is not five randomly selected technologies, and racial or NoTechScan technologies are not transferred.
Cadence. With period 28,800 seconds and ground combat active, elapsed exactly 28,800 fails the strict check. At elapsed 57,601, floor division schedules two rounds and keeps one second of clock remainder. First discovery with CurrentGroundCombat off sets a new clock instead of spending the accumulated elapsed time on attacks.
Concept map
Section titled “Concept map”- Participants and combat contexts, which bodies and races fight, hostility and the battle records.
- Cadence and round execution, the ground round schedule and what each round resets.
- Positions targeting and support, selection weights, support attachment and bombardment pools.
- Element attacks and damage, hit thresholds, penetration, kills, morale and commander deaths.
- Supply fortification and recovery, combat supply, fortification, STO recharge and morale recovery.
- Breakthrough and air support, extra attacks, ship support, search and destroy and AA fire.
- Reports and deferred aftermath, reports, deferred casualties and collateral hits.
- Surrender and occupation strength, the surrender threshold and occupation strength.
- Population control transfer, the shared handover of a population to a new owner.
- Occupation and political interface, ongoing occupation values after the transfer.
- Persistence and reload, saved versus rebuilt combat state.
- Ground force organisation, headquarters, command bonuses, support attachments and transport.
- Organisation supply chains, the chain the combat supply search walks.
- Aircraft and orbital bombardment support, how ships are attached to formations.
- Ground-unit class design, the unit class values that combat reads.
- Ground force construction and replacements, training, replacements and supply accounting.
- Space combat resolution, STO fire, ship damage and population impact.
- Boarding and ship capture, the shipboard use of the same element combat model.
- End of increment and ground rounds, where ground rounds sit in the increment.
- Occupation, protection, unrest and stability, ongoing unrest after conquest.
- Political status catalogue, the statuses a transfer assigns.
- Ground-class observations and force estimates, what other races learn from the fighting.
- Colony conquest and control transfer, conquest beside other ownership changes.
- Health, retirement and casualties, commander deaths in ground combat.
- Ground combat and detection consumers, the terrain values used in hit thresholds.
- Empty populations after ground conquest, NPR consolidation after a surrender.
- Conquest, independence and initial funding, the treasury side of looting.
- Research and scientific personnel, technology gained from conquest.
- Planetary installation catalogue, the Ex-Civilian Mining Complex conversion.
- Move action catalogue and executors, the ground support and planetary combat orders.
- Game rule options and effects, New Tech from Conquest and the ground combat period.
Resources
Section titled “Resources”Related community documentation and developer posts. These may describe a different game version.